Вступление

В этом посте мы рассмотрим обзорную статью по глубокому обучению, написанную Хинтоном, ЛеКуном и Бенжио - все они известны своей плодотворной работой в этой области. Эта статья была опубликована в 2015 году, поэтому этот обзор может показаться немного устаревшим, но, тем не менее, я нашел в статье большую ценность. В этом документе содержится отличная работа по обобщению тенденций в области глубокого обучения, а также проблем, связанных с текущими методами. В отличие от других статей, которые я освещал в прошлом, в этой статье конкретно не говорится о системе, а дается интуитивное понимание глубокого обучения и положения дел около 2015 года. Я бы ожидал некоторого знакомства с классическим машинным обучением, прежде чем идти дальше. впереди, но вы, вероятно, можете пропустить эти детали.

Мотивация к глубокому обучению

В наши дни ML используется во многих приложениях, таких как веб-поиск, классификация / фильтрация контента, рекомендации продуктов для электронной коммерции и т. Д. Традиционные методы контролируемого обучения, такие как регрессия или SVM, были эффективны, но также требуют много инженерных усилий. Чтобы создать успешное приложение, необходимо тщательно идентифицировать функции с помощью специалиста в предметной области, необработанные данные необходимо очистить и преобразовать в векторы функций, которые затем система может использовать для классификации / прогнозирования.

Глубокое обучение пытается преодолеть эти проблемы. Он попадает в категорию репрезентативных методов обучения, в которых необработанные данные могут быть переданы в сеть, а затем он может автоматически обнаруживать внутренние представления (функции). Новые и более сложные представления формируются по мере добавления в систему большего количества нелинейных слоев обучения. Хорошим примером этого является обнаружение объектов на изображениях. В модели с глубокими слоями первые слои могут идентифицировать края, а последующие слои могут идентифицировать мотивы, образованные краями. Следующие наборы слоев могут фактически представлять части объектов, а последние слои фактически обнаруживают знакомые объекты. На каждом слое сеть глубокого обучения не полагается на очень точное представление характеристик, то есть края могут быть ориентированы по-разному, они могут появляться где-то еще на изображении, освещение может быть выключено в разных местах изображения. Модели глубокого обучения могут начинаться с необработанных пикселей, а затем строить эти промежуточные представления без большой настройки функций и с использованием общих методов. Благодаря этому модели глубокого обучения также могут работать лучше, поскольку вычисления и данные становятся более доступными.

Мелкое против глубокого обучения

Давайте сравним эти два предмета в деталях, пройдя сначала по обычным методам обучения.

Обычное поверхностное обучение

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

Процесс настройки весов выполняется с использованием алгоритма стохастического градиентного спуска. Градиенты (частные производные, используемые для локального минимизации ошибок) используются в этих комбинациях весовых коэффициентов признаков для уменьшения ошибки. Это выполняется итеративно до тех пор, пока модель больше не сможет уменьшить ошибку. Этот метод оказался очень эффективным для уменьшения общей ошибки по всем выборкам в обычном машинном обучении. Что делают такие линейные классификаторы, так это то, что они делят пространство на простые области, разделенные гиперплоскостью. Чтобы добиться большей нелинейности, можно использовать нелинейные ядра, такие как ядро ​​Гаусса, но исследования показали, что они не всегда могут хорошо обобщаться.

Глубокое обучение

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

Архитектуры глубокого обучения состоят из нескольких уровней модулей, каждый из которых представляет некоторую функцию, которую необходимо изучить. Эти модули обычно используют отображение нелинейных функций. С несколькими нелинейными слоями глубиной 5–20, системы могут распознавать незначительные существенные различия (собака против волка), а также могут научиться игнорировать несущественные различия, такие как изменение положения, фона или освещения.

История и обоснование обратного распространения

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

Многослойная нейронная сеть состоит из нескольких входных слоев, некоторых скрытых слоев, а затем выходного слоя. Входной слой представляет входной, а выходной слой представляет результат, достигнутый нейронной сетью, например, содержит ли данное изображение собаку, кошку или лошадь. Скрытые слои добавляют нелинейные гладкие функции, такие как ReLU (relu (z) = max (0, z)). Эти функции могут преобразовывать входные данные меньшего размера в пространства более высоких измерений, что позволяет более четко разделять данные.

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

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

Исторические проблемы с многоуровневым обучением: в случае многомерных пространств с большим количеством холмистых областей и долин одна из проблем, которые считались проблемой для градиентного спуска, заключалась в том, что он мог попасть в ловушку локальные минимумы, т. е. в некоторой небольшой местной долине, в отличие от самой глубокой долины в мире. Эмпирические результаты и дальнейшие исследования, кажется, предполагают, что это не такая уж большая проблема, поскольку система в большинстве случаев достигает хороших минимумов. Другая проблема заключалась в том, что обучение таких больших многослойных сетей с миллионами весов заняло бы много времени. В этом отношении помогло появление графических процессоров, распараллеленных алгоритмов.

Чтобы решить одну из более ранних проблем тщательной инженерии функций, исследователи в 2000-х годах разработали неконтролируемое обучение (предварительное обучение) на данных без пометки, которое будет действовать как разумный экстрактор признаков. Эти автоматически извлеченные функции затем могут быть возвращены в традиционные нейронные сети, которые можно обучить с использованием стандартных схем обратного распространения. Обнаружение рукописных цифр и обработка речи выиграли от этого. Один из типов сетей с прямой связью, которые действительно хорошо работают с изображениями, называется сверточными нейронными сетями (ConvNet), которые будут рассмотрены в следующем разделе.

ConvNet

ConvNet - это тип сети глубокого обучения, которая особенно эффективна для обнаружения закономерностей в изображениях. Интуиция, лежащая в основе архитектуры, заключается в том, что изображения состоят из локальных фрагментов значений, которые могут быть сильно коррелированы, и такие фрагменты могут быть независимыми от положения. Изображения формируются путем композиции более мелких объектов, то есть краев, образующих мотивы, мотивов, образующих части объектов, и так далее. Подобные композиционные атрибуты присутствуют и в обработке речи. Сети глубокого обучения хорошо используют эту композиционную природу, создавая несколько глубоких слоев - каждый новый слой создает более сложную структуру, используя слой под ним. Типичная архитектура ConvNet состоит из следующих уровней:

  1. Слой свертки: этот слой состоит из создания меньших скользящих окон на изображениях, а затем их использования для подключения к нейронам. Результатом является умножение весов и соответствующий ввод в скользящем окне. Затем слой ReLU применяет к нему нелинейную функцию. Скользящее окно может перемещаться с определенным размером шага, например 1 или 2, для захвата различных рисунков, которые могут присутствовать на изображении.
  2. Слой объединения: слой объединения затем выполняет субдискретизацию и уменьшает размер данных из сверточного слоя и создает меньшую выборку. Например. слой пула может применять максимальное объединение, используя окно 2x2 пикселя, а затем выбирать только максимальное значение как репрезентативное для этого региона. Таким образом, изображение 4 x 4 можно преобразовать в 2x2 с помощью такого максимального объединения пулов с шагом 2.
  3. Полностью связанный слой: это то же самое, что и традиционный полносвязный слой, который преобразует эти промежуточные слои в конечный результат - например, классификацию для данного входа.

Несмотря на предыдущие успехи, ConvNets в значительной степени не пользовались популярностью в основном сообществе машинного обучения. Ситуация начала меняться, когда в 2012 году прошел конкурс ImageNet. Некоторые из авторов этой статьи использовали ConvNets для классификации миллионов изображений по тысячам категорий объектов, что снизило количество ошибок более чем наполовину по сравнению со всеми другими современными технологиями. подходит в то время. Традиционно считается, что их тренировать очень дорого. Но появление графических процессоров, эффективных методов регуляризации, таких как выпадение, ReLU и использование одного существующего входа для создания множества слегка деформированных входных выборок, существенно сократило время обучения. Точно так же ConvNets, похоже, также хорошо работают с FPGA. ConvNets были очень полезны в таких приложениях, как: обнаружение лиц на изображении, обнаружение уличных знаков, проверка чтения, обнаружение закономерностей на биологических изображениях и т. Д.

Рекуррентные нейронные сети

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

Хотя традиционно было сложно объединить градиенты с использованием обратного распространения для RNN (поскольку они либо исчезли, либо взорвались со временем), новые методы сделали возможным комплексное использование RNN. Теперь RNN можно использовать для извлечения «мыслей», выраженных изображением или предложением, а затем передать их в другой RNN для перевода на другой язык.

Скрытые блоки в RNN в конечном итоге неявно фиксируют прошлое состояние в системе. По мере развертывания RNN их можно рассматривать как нейронные сети с большим количеством слоев, в которых все слои имеют одинаковые веса. Исследование, похоже, предполагает, что очень трудно сохранить состояние, которое отражает реальные долгосрочные зависимости. Это привело к появлению LSTM - сетей на основе долговременной краткосрочной памяти.

LSTM

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

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

Будущее глубокого обучения на 2015 год

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

Что касается компьютерного зрения, то, похоже, есть потенциал для дальнейших достижений в сочетании ConvNets, RNN и обучения с подкреплением. В то время исследование находилось на начальной стадии и до сих пор показало впечатляющие результаты. Многие проблемы в категории «понимание языка» могут выиграть от достижений в RNN.

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

Получайте лучшие предложения по программному обеспечению прямо в свой почтовый ящик