Pull to refresh

Comments 46

Истину глаголет! Всё было ране, ничего не ново, кроме возросших вычислительных возможностей позволяющих играться в чёрные ящики не утруждаясь поиском смысла происходящего и даже достигать каких-то результатов :-)

Хочется добавить лишь один нюанс, когда заходит речь о научных публикациях, мне всегда вспоминаются Гарри Марковиц, обладатель Нобелевской премии за экономическую теорию портфелей, на столько простую и очевидную, но никем ранее не озвученную из чисто шкурных соображений…
… так же и с нейро сетями вообще и глубокими в частности, имейте ввиду что задачка классификации картиночек, сложна и прикольна, но классификация состояний рынков куда проще и в хозяйстве полезней, ибо получить какой-либо прок от классификации картиночек в одиночку тяжело, один в поле не воин, чего не скажешь про биржевые баталии :-) so получив какой-либо значимый результат, вольный исследователь имеет веские причины о нём принципиально промолчать.
Скажем так, от «классификации состояний рынков» общественной пользы тоже не ахти. Там и так достаточно страждущих что-то поклассифицировать и попредсказывать.
Небольшой вопрос от студента-профана, начавшего изучение НС и имеющего желание на основе данных вещей написать научную работу (естественно, имеется математическая база).
Вспоминая ту новость про выигрыш команды в конкурсе по написанию бота для DOOM, который должен был уметь ориентироваться на новых картах, успешно сражаться и собирать вещи: авторы сказали, что использовали несколько нейронных сетей.
Ну а вопрос, собственно, именно про целесообразность такого подхода: как уже известно, сети с большим количеством слоёв (на примере многослойного перцептрона) часто ошибаются, а с малым количеством могут банально не «понять» способ решения задачи. А если подобрать некое оптимальное значение количества слоёв, а затем использовать множество нейронных сетей с малым количеством выходов, но которые были бы специализированы на чём-то одном, а затем уже отдельные выводы шли как входные данные некоей новой обобщающей НС.
В принципе, идея на поверхности лежит, есть ли исследования реализаций?
Вы как раз и обрисовали современное положение вещей (озвученное и в статье): лидеры ИИ-гонки из нейросетей строят специализированные на конкретных (под-)задачах «чёрные ящички», которые объединяются инженерами (с их опытом и интуициями относительно прикладной задачи) в различные архитектуры, которые к биологическим нейросетям уже как бы и не имеют никакого отношения, это всего лишь чисто математические инструменты, «минимизаторы целевых функций», присыпанные кучей ручных эвристик и настроек. «Само» оно всё ещё не работает, главным архитектором решения остаётся человек, и отобрать у него эту роль, построив «универсальный чёрный ящик», до сих пор не удалось.

Хорошо, что хайп спадает. А то последнее время из-за маркетоидной лажи трудно было найти информацию по существу дела. К этой статье можно порекомендовать недавний сжатый классификатор нейросетей (тыц, тыц)


Кстати, не является ли докладчик родственником Олегу Бартунову, который PostgreSQL?

Упомянутый конкурс ImageNet и набор данных для него состоит из 14 миллионов размеченных объектов в 21 тысяче категорий.

А когда ImageNet успел настолько подрасти? Вроде бы он как был ~1.2M картинок из 1000 классов, так и сейчас продолжает оставаться таких же размеров.

То, что вы называете ImageNet-ом — это ILSVRC2012, сабсет настоящего ImageNet-а.

А сам ImageNet — иерархическая база знаний, а-ля wordnet для картинок. Отсюда и название.

Спасибо за замечание. Как-то никогда не задумывался, что этот датасет настолько огромен.

Кстати, а есть работы, где тренируются на полном датасете? В статьях вроде бы все пользуются этим самым 1000-классовым сабсетом, да и большинство статей у меня с этим датасетом воспроизводился.

Я ни разу не видел, да и не думаю, что есть — слишком уж здоровый.

К тому же уже столько работ на ilsvrc2012, что что-то новое на большем количестве данных будет не совсем честно сравнивать с существующими работами.

Тут было бы интересно посмотреть не в плане сравнения с уже имеющимися методами, а в целом понять: можно ли получить существенный буст качества методом "грубой силы". Типа потренировать тот-же ResNet-1001 на полном датасете, а потом приляпать его к Faster-RCNN и посмотреть, можно ли получить таким методом state of the art.

Мне думается, что переход от 1кк к 10кк картинок не даст принципиального улучшения. Конечно, будет определенный прирост качества, но не такой как при переходе с 10к на 1кк картинок. Хотя я запросто могу быть неправ — очень тяжко предугадать поведение сетей не поставив эксперимента, так что я бы хотел увидеть статью, в которой обучают на полном imagenet-е.
Для интересующихся настоящими нейросетями предлагаю посмотреть курс Химия Мозга Вячеслава Дубинина ( МФК МГУ ). Эти 12 лекций по 1,5 часа типа бегом по основному функционалу мозга. Ну хотя бы первые 5 надо осилить, чтобы понять, что такое настоящая нейросеть, как она работает и примерно к чему надо стремиться.
Слушать интересно. Детали тоже полезные, особенно, если не ас в глубинном обучении. Но сам посыл он не нов. Об этом уже говорилось и подмечалось. Теория и первые разработки уже давно есть, а на рынок технология вышла недавно из-за роста мощностей.
Посыл не нов, но мало кто верит, как не странно…
… и вот уже новое поколение пускается во все тяжкие, начиная почему-то с разу с больших задач, хотя куда логичней изучать свойства и подходы на элементарных примерах, когда и эксперимент-то не всегда нужен, всё тупо математически выводится
Соглашусь. И лучше начать с самого легкого метода. Например, сделать линейную аппроксимацию процесса. При кажущейся примитивности, такие модели показывают хорошую устойчивость с точки зрения воспроизводимости результата на новых данных, ибо они underfit (недоученные). А глубокие сети это апофеоз технологий — несколько видов регуляризвации, самописные функции потери, генерация входных признаков, стохастические методы сходимости… Короче, весь этот паровоз должен быть оправдан.
Если вы хотите построить очень совершенного чат-бота, вам где-то надо найти обучающую выборку. И возможно, вам придется вложить много денег в ее разметку.

Мне казалось, что как раз глубокие сети(точнее методы их обучения) и не требуют большого количества размеченных данных.
Как раз наоборот, для Deep Learning важно чтобы данных было много. Иначе велик шанс получить переобученную модель.
Не совсем так. С помощью RBM или Autoencoder'ом глубокую сеть обучают без учителя на большом объеме НЕ размеченных данных. Потом сеть тюнингуется с помощью небольшого объема размеченных данных.
Виноват, не понял что в вашем сообщении акцент на разметке.

Если честно, то мне казалось, что предобучение в основном использовалось чтобы ускорить обучение (и сейчас так уже делают редко).
А есть ли какие-нить бенчмарки которые бы сравнивали качество предобученных моделей + тюннинг и моделей обученных «честно»?
Предобучение на неразмеченных данных практически не используется — в основном люди берут сеть, обученную на imagenet-е и тюнят ее для своих задач.

То, о чем вы спрашиваете, живет под именем semi-supervised learning, и работает в общем-то довольно таки неплохо — на том же mnist-е имея 100 размеченных картинок и все остальное неразмеченное, можно получить около 1% ошибки [1]. Для сравнения — лучшие результаты с 50000 размеченных картинок это 0.5-0.3%. Для больших сетей не используется — слишком уж накладно по вычислениям.

[1] https://arxiv.org/abs/1606.03498, таблица 1.
в основном люди берут сеть, обученную на imagenet-е и тюнят ее для своих задач

Так это и есть предобученная сеть.
Сеть, обученная на imagenet-е, обучена с учетелем (supervised). Вы выше писали про обученные без учителя (unsupervised) сети для инициализации, что уже практически сошло на нет. Самое близкое — semi-supervised.
Сверхглубокие сети обратным распространением ошибки (это вы, видимо, называете «честным» способом) вообще не обучить из-за эффекта затухания градиента.
Ну, а чем еще их учат то? Backprop (т.е. получение градиента) и разные варианты SGD. С затуханием борются с использованием незатухающих ф-ий (ReLU) и штук типа Batch Normalization, если я не ошибаюсь, конечно.
Тот же ResNet (в том числе и его версию из 1000 слоев), вполне обучили.

Под «честным», я имею ввиду обучение на всех размеченных данных без предобучения
Размеченные данные данные нужны для обучения «с учителем». Все современные сети предобучают алгоритмами «без учителя». Все они являются различными комбинациями ограниченной машины Больцмана (RBM) и/или Autoencoder'а (есть весьма затейливые комбинации).

Насколько я понимаю, ReLU помогает против паралича сети. От затухания градиента не помогает. Методы увеличивающие learning rate тоже не про это (это про Batch Normalization)

Про ResNet знаю очень мало.

Мне кажется, что будущее как раз за обучением с минимумом размеченных данных, т.е. без учителя.

Про ResNet знаю очень мало.

Там вся идея в том, чтобы как можно дальше по сети пропихивать "остатки" полезного синала, тем самым увеличивая общую глубину сети, получая более сложные иерархические фичи.

Мне нравится думать, что ResNet это такой себе каскад, в котором мы обучаем одновременно все этапы, а не только текущий
Как я понимаю, еще используют хитрую инициализацию
http://www.jmlr.org/proceedings/papers/v28/sutskever13.pdf
Статью я сам пока не осилил, но
>More recently, Martens (2010)… is capable of training DNNs from certain random initializations without the use of pre-training, and can achieve lower errors for the various auto-encoding tasks considered by Hinton & Salakhutdinov (2006).

В целом интересно. Хотя в данной фразе есть фактическая ошибка. Если речь идет про основополагающую статья Хинтона «Reducing the Dimensionality of
Data with Neural Networks», то в ней для предобучения использовалась RBM, а не AE.
Современные сети уже пару лет как не предобучают ограниченными машинами Больцмана или автокодировщиками. Их обучают end-to-end обычным (с миллионом разных хаков вроде подбора шага, нормализации, аугментации, правильной инициализации) градиентным спуском. Хинтон говорит, что раньше оно не работало потому что
  • Our labeled datasets were thousands of times too small.
  • Our computers were millions of times too slow.
  • We initialized the weights in a stupid way.
  • We used the wrong type of non-linearity.


Batch Normalization (как и Layer Normalization, Weight Normalization и множество других) не имеет отношения к learning rates. ReLU помогает тем, что у него, в отличие от насыщающихся нелинейностей вроде сигмоиды или гиперболического тангенса, градиент существенно отличен от нуля в гораздо большей части пространства.

ResNet'ы как раз борются с затухающими градиентами, идея там внутри такая же, как и в LSTM (Шмитдхубер даже назвал ResNet'ы частным случаем LSTM)
в том числе и его версию из 1000 слоев

А разве обучили? Насколько я помню из оригинальной статьи, авторы её попробовали тренировать, а потом сказали, что в ImageNet картинок мало, поэтому сетка недотренировалась.

Я абсолютно не спец в Deep Learning, поэтому могу не совсем верно использовать термины
Отсюда https://arxiv.org/pdf/1512.03385v1.pdf
>Our method shows no optimization difficulty
В пункте про обучение 1к сетки
>The testing result of this 1202-layer network is worse than that of our 110-layer network, although both have similar training error. We argue that this is because of overfitting.
Ну я это понял как обучить смогли, но получили оверфит из-за слишком сложной модели при малом числе данных.
Если переобученную сеть нельзя считать за обученную сеть, то тогда я неправ.

Пример с этой сеткой я привел для того, чтобы показать, что проблема затухающих градиентов для сверхглубоких сетей может и не стоять, при правильно подобранной архитектуре.

Ну да, что-то такое, "фокус не удался", но в целом идея тащит, в достаточно больших сетях куда втыкаешь Residual connections — дает буст :-)

А в «обычные» типа VGG-16 тоже проброс связей будет давать прирост? Обязательно ли использовать batch norm слои в этом случае?

Чисто теоретически этому ничего не препятствует, но без BN нынче вроде бы никто не тренируется, т.ч. таких результатов экспериментов у меня на руках нету, но можно ченить такое попробовать потренировать)

Хм, про RBM'ы последние пару-тройку лет что-то вообще не слышно в вижене (последнее что я слышал — это как на RBM'ах делали инвариантные к повороту фичи). В основном сейчас исопльзуют предтренированные на ImageNet сети, а потом уже да, файнтюнят, но там тоже датасеты не вот чтобы очень маленькие для тюнинга.

А как вы думаете их подтренировывают то? Каким алгоритмом?
В основном сейчас исопльзуют предтренированные на ImageNet сети

Вот я и спрашиваю, — а каким алгоритмом их предтренировывают?

Обычный supervised learning с обычныи back prop'ом.

Все верно. RBM ушел из моды с появлением denoising autoencoder-а. И вообще все ушло из моды с появлением AlexNet-а.
Совершенно верно, — RBM мало кто использует, хотя Хинтон по-прежнему считает, что у машины Больцмана есть потенциал. Разряженный энкодер очень популярен.

AlexNet это обычная CNN из 8 уровней. Сделана учеником Хинтона. Алгоритм обучения, к сожалению, не совсем ясен. Вот кто делал CNN тот знает, что на 8 уровнях back prop работает плохо.

Вы легко можете повторить эксперимент с тренировкой AlexNet с нуля, для этой сети вообще никакой магии и подбора параметров у солвера не требуется, чтобы получить статейные значения.

Sign up to leave a comment.