Вы правы в том, что базовая концепция глубокого 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: один действительно хорош для классификации изображений как спальни или не спальни, а другой действительно хорош для создания реалистичных изображений спален.