Как глубоко обучение NNS различного сейчас (2016) от тех, которые я изучал только 4 года назад (2012)?

13

В Википедии и deeplearning4j сказано, что NN с глубоким обучением (DLNN) - это NN, которые имеют> 1 скрытый слой.

Подобные NN были стандартными в университете для меня, в то время как DLNN сейчас очень популярны. Был там, сделал это - в чем дело?

Я также слышал, что сложенные NN считаются глубоко изучаемыми. Как на самом деле определяется глубокое обучение?

Мой опыт работы в NN в основном в университете, а не на работе:

  • изучал применение NN в промышленности
  • было около 5 курсов по искусству. Intel. & Mach. учиться. - хотя, может быть, 2 из них на NN
  • NN используется для малого, простого проекта на распознавании образов - используются 3 слой опережающего Н.Н.
  • не делать реальные исследования (как в докторской диссертации) на них
Make42
источник
@NeilSlater: я изучал их наиболее интенсивно в 2012 году.
Make42

Ответы:

23

Вы правы в том, что базовая концепция глубокого NN не изменилась с 2012 года. Но было множество улучшений в способах обучения глубоких NN, которые сделали их качественно более мощными. Есть также более широкое разнообразие архитектур, доступных сегодня. Я перечислил некоторые разработки с 2012 года, сгруппированные по улучшениям обучения и улучшениям архитектуры:

Улучшения в обучении глубоким НС

  • Аппаратное обеспечение : наиболее очевидное изменение - это неумолимая прогрессия закона Мура. Сегодня доступно больше вычислительных мощностей. Облачные вычисления также позволяют людям обучать большие NN без необходимости покупать огромную буровую установку.

  • Программное обеспечение : Программное обеспечение с открытым исходным кодом для глубокого обучения действительно значительно улучшилось с 2012 года. Еще в 2012 году появился Theano, возможно, и Caffe. Я уверен, что есть и другие. Но сегодня у нас также есть TensorFlow, Torch, Paddle и CNTK, которые поддерживаются крупными технологическими компаниями. Это тесно связано с пунктами аппаратного обеспечения, поскольку многие из этих платформ облегчают обучение на графических процессорах, что значительно ускоряет время обучения.

  • Функции активации : использование функций активации ReLU в наши дни, вероятно, более распространено, что облегчает обучение очень глубоким сетям. Что касается исследований, то здесь изучается более широкий спектр функций активации, в том числе протекающий ReLU , параметрический ReLU и блоки maxout .

  • Алгоритмы оптимизации : сегодня существует больше алгоритмов оптимизации. Adagrad и Adadelta только что были введены в 2011 и 2012 годах соответственно. Но теперь у нас также есть оптимизатор Adam, и он стал очень популярным выбором.

  • Отсев : В последние несколько лет отсев стал стандартным инструментом регуляризации при обучении нейронных сетей. Выпадение - это вычислительно недорогая форма ансамбля для NN. В целом, набор моделей, обученных на случайных выборках набора данных, превзойдет одну модель, обученную на всем наборе данных. Это сложно сделать явно для NN, потому что они очень дороги в обучении. Но подобный эффект может быть аппроксимирован просто случайным «выключением» нейронов на каждом шаге. Различные подграфы в NN заканчиваются обучением различным наборам данных и, таким образом, изучают разные вещи. Как и в случае ансамбля, это делает общую NN более устойчивой к переоснащению. Dropout - это простая техника, которая, по-видимому, улучшает производительность почти в каждом случае, поэтому

  • Пакетная нормализация : Некоторое время назад было известно, что NN лучше всего обучаются на данных, которые нормализуются, т. Е. Существует нулевое среднее значение и единичная дисперсия. В очень глубокой сети, когда данные проходят через каждый уровень, входные данные преобразуются и, как правило, переходят к распределению, в котором отсутствует это замечательное нормализованное свойство. Это делает обучение в этих более глубоких слоях более трудным, потому что, с его точки зрения, его входные данные не имеют нулевого среднего значения и единицы измерения. Среднее значение может быть очень большим, а дисперсия может быть очень маленькой. Пакетная нормализация решает эту проблему путем преобразования входов в слой, чтобы иметь нулевое среднее значение и единичную дисперсию. Это кажется чрезвычайно эффективным при обучении очень глубоких НН.

  • Теория : До самого недавнего времени считалось, что причина, по которой глубокие NN трудно обучать, состоит в том, что алгоритмы оптимизации застряли в локальных минимумах и испытывают трудности с выходом и поиском глобальных минимумов. За последние четыре года было проведено несколько исследований, которые указывают на то, что эта интуиция была неправильной (например, Goodfellow et al. 2014). В пространстве очень больших размерностей глубокого NN локальные минимумы, как правило, не намного хуже глобальных минимумов. Проблема на самом деле в том, что во время тренировок НН может оказаться на длинном широком плато. Кроме того, эти плато могут резко обрываться крутой скалой. Если NN предпринимает небольшие шаги, обучение занимает очень много времени. Но если шаги слишком велики, он сталкивается с огромным градиентом, когда сталкивается с обрывом, что отменяет всю предыдущую работу. (Этого можно избежать с помощью градиентного отсечения, еще одной инновации после 2012 года.)

Новые архитектуры

  • Остаточные сети : исследователи смогли обучать невероятно глубокие сети (более 1000 уровней!), Используя остаточные сети . Идея заключается в том, что каждый слой получает не только выходные данные с предыдущего слоя, но также и исходные данные. При правильном обучении это поощряет каждый уровень изучать что-то отличное от предыдущих уровней, так что каждый дополнительный уровень добавляет информацию.

  • Широкие и глубокие сети . Широкие, неглубокие сети имеют тенденцию просто запоминать отображение между их входами и выходами. Глубокие сети обобщают намного лучше. Обычно требуется хорошее обобщение, но в некоторых ситуациях, таких как системы рекомендаций, важна также простая запоминание без обобщения. В этих случаях вы хотите предоставить хорошие, содержательные решения, когда пользователь делает общий запрос, но очень точные решения, когда пользователь делает очень конкретный запрос. Широкие и глубокие сети способны прекрасно выполнить эту задачу.

  • Нейронная машина Тьюринга . Недостаток традиционных рекуррентных NN (будь то стандартные RNN или что-то более сложное, например, LSTM) заключается в том, что их память несколько «интуитивна». Им удается запомнить прошлые данные, сохранив скрытые активации слоев, которые они производят в будущем. Однако иногда имеет смысл явно хранить некоторые данные. (Это может быть разница между записью телефонного номера на листе бумаги и запоминанием того, что номер имел около 7 цифр, и там было пара 3-х и, возможно, тире где-то посередине.) Нейронная машина Тьюрингаэто способ попытаться решить эту проблему. Идея состоит в том, что сеть может научиться явно фиксировать определенные факты в банке памяти. Это не так просто сделать, потому что алгоритмы backprop требуют дифференцируемых функций, но фиксация данных в адресе памяти является по своей сути дискретной операцией. Следовательно, нейронные машины Тьюринга обходят это, передавая немного данных в распределение разных адресов памяти. Эти архитектуры пока еще не работают очень хорошо, но идея очень важна. Некоторые из них, вероятно, станут широко распространенными в будущем.

  • Генеративные состязательные сети : GAN - очень захватывающая идея, которая, кажется, уже находит практическое применение. Идея здесь состоит в том, чтобы обучить два NN одновременно: один, который пытается генерировать выборки из базового распределения вероятностей (генератор), и другой, который пытается различить реальные точки данных и фальшивые точки данных, генерируемые генератором (дискриминатор). Так, например, если ваш набор данных представляет собой коллекцию фотографий спаленГенератор попытается сделать свои собственные изображения спален, а дискриминатор попытается выяснить, смотрит ли он на реальные фотографии спален или на поддельные изображения спален. В конце концов, у вас есть два очень полезных NN: один действительно хорош для классификации изображений как спальни или не спальни, а другой действительно хорош для создания реалистичных изображений спален.

Дж. О'Брайен Антогнини
источник
Хорошая точка зрения! Я не понял , что отсев был таким недавним развитием! Я добавил его сейчас. Спасибо!
J. O'Brien Antognini
0

Глубокое обучение (и, в частности, глубокие извилистые нейронные сети) сейчас очень популярно из-за недавних существенных улучшений в различных задачах машинного зрения / обнаружения объектов. В частности, глубокие соглашения были использованы для уменьшения ошибок классификации ImageNet с 28% в 2010 году до 7% в 2014 году. Глубокое обучение, конечно, преувеличено, но это не должно умалять тот факт, что в области машинного зрения произошли существенные улучшения.

Райан Зотти
источник
DLNN существует уже довольно давно, но в последнее время они настроены на хорошую работу. Это оно?
Make42
Кроме того, каково определение тогда?
Make42
Да, они были вокруг некоторое время, но они стали популярными, потому что теперь они настроены более эффективно. Как сказал Нил Слэйтер, DL широко определен, потому что это немного модного слова. Я бы определил его как любую сеть с более чем 3 скрытыми слоями. DL также включает в себя полностью подключенные сети, авто кодеры и извилистые сети. Периодические сети также могут попадать в категорию DL в зависимости от того, кого вы спрашиваете
Райан Зотти
0

Аналогичный вопрос был задан в CV: разница между нейронной сетью и глубоким обучением :

Глубокое обучение = глубокие искусственные нейронные сети + другие виды глубоких моделей .

Глубокие искусственные нейронные сети = искусственные нейронные сети с более чем одним слоем. (см. минимальное количество слоев в глубокой нейронной сети )

К вашему сведению: насколько правдивым является этот слайд о глубоком обучении, утверждающий, что все улучшения 1980-х годов связаны только с большим объемом данных и гораздо более быстрыми компьютерами?

Франк Дернонкур
источник