В чем разница между нейронной сетью и глубокой нейронной сетью, и почему глубокие работают лучше?


114

Я не видел вопроса, сформулированного именно в этих терминах, и поэтому я задаю новый вопрос.

Что мне интересно знать, так это не определение нейронной сети, а понимание реальной разницы с глубокой нейронной сетью.

Для большего контекста: я знаю, что такое нейронная сеть и как работает обратное распространение. Я знаю, что DNN должен иметь несколько скрытых слоев. Однако 10 лет назад в классе я узнал, что наличие нескольких слоев или одного слоя (не считая входного и выходного слоев) было эквивалентно с точки зрения функций, которые может представлять нейронная сеть (см. Теорему Кибенко об универсальном приближении ), и что больше слоев сделали его более сложным для анализа без увеличения производительности. Очевидно, что это уже не так.

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



Если функция, которую вы хотите аппроксимировать, является композиционной функцией (обычно в обработке изображений и во многих естественных областях из-за закона физики). Можно доказать, что глубокие сети могут использовать эту композиционность и достичь того же уровня ошибки аппроксимации с экспоненциально меньшим числом нейронов (по сравнению с сетью с одним скрытым слоем). Ref: Poggio, Tomaso, et al. «Почему и когда глубокие, но не мелкие сети могут избежать проклятия размерности: обзор». Международный журнал по автоматизации и вычислительной технике (2017)
DataHungry

Возможно, вы захотите взглянуть на эту статью
agcala

Ответы:


152

Давайте начнем с тривиализации: глубокая нейронная сеть - это просто сеть прямой связи со многими скрытыми слоями.

Это более или менее все, что можно сказать об определении. Нейронные сети могут быть периодическими или связанными; Те, у которых есть прямая связь, не имеют никаких петель на графике и могут быть организованы в слои. Если есть «много» слоев, то мы говорим, что сеть глубокая .

Как много слоев делает сеть должна иметь для того , чтобы квалифицировать в качестве глубоко? На это нет однозначного ответа (это немного похоже на вопрос, сколько зерен образует кучу ), но обычно наличие двух или более скрытых слоев считается глубоким. Напротив, сеть только с одним скрытым слоем обычно называется «мелкой». Я подозреваю, что здесь будет происходить некоторая инфляция, и через десять лет люди могут подумать, что что-нибудь с менее чем, скажем, десятью слоями будет мелким и пригодным только для упражнений в детском саду. Неформально «глубокий» говорит о том, что с сетью сложно справиться.

Вот иллюстрация, адаптированная отсюда :

Глубокая против неглубокой нейронной сети

Но реальный вопрос, который вы задаете, - это, конечно, почему было бы полезно иметь много слоев?

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

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

Я основываю свое обсуждение на Deep Learning книги Гудфельего, Bengio и Courville , который вышел в 2017 году и широко считается книгой по глубокому обучению. (Он свободно доступен в Интернете.) Соответствующий раздел - 6.4.1 Свойства и глубина универсальной аппроксимации .

Вы написали это

10 лет назад в классе я узнал, что наличие нескольких слоев или одного слоя (не считая входного и выходного слоев) было эквивалентно с точки зрения функций, которые нейронная сеть может представлять [...]

Вы, должно быть, имеете в виду так называемую теорему универсального приближения , доказанную Цибенко в 1989 году и обобщенную различными людьми в 1990-х годах. В основном это говорит о том, что мелкая нейронная сеть (с 1 скрытым слоем) может аппроксимировать любую функцию, т.е. может в принципе чему-то научиться . Это верно для различных нелинейных активационных функций, включая выпрямленные линейные единицы, которые большинство нейронных сетей используют сегодня ( для этого результата в учебнике упоминается Leshno et al. 1993 ).

Если так, то почему все используют глубокие сети?

Ну, наивный ответ таков: они работают лучше. Вот рисунок из книги « Deep Learning», показывающий, что в одной конкретной задаче может быть больше слоев, но одно и то же явление часто наблюдается в разных задачах и областях:

Больше слоев это хорошо

Мы знаем, что мелкая сеть может работать так же хорошо, как и более глубокие. Но это не так; и они обычно не делают. Вопрос --- почему? Возможные ответы:

  1. Может быть, мелкой сети потребуется больше нейронов, чем глубокой?
  2. Может быть, мелкую сеть труднее обучать с помощью наших современных алгоритмов (например, она имеет более неприятные локальные минимумы, или скорость сходимости медленнее, или что-то еще)?
  3. Может быть, поверхностная архитектура не подходит для тех проблем, которые мы обычно пытаемся решить (например, распознавание объектов является типичным «глубоким», иерархическим процессом)?
  4. Что-то другое?

Книга Глубокого Обучения приводит аргументы в пользу пунктов № 1 и № 3. Во-первых, утверждается, что количество устройств в мелкой сети растет экспоненциально с ростом сложности задач. Таким образом, чтобы быть полезной, мелкая сеть может быть очень большой; возможно, намного больше, чем глубокая сеть. Это основано на ряде работ, доказывающих, что мелким сетям в некоторых случаях требуется экспоненциально много нейронов; но неясно, например, классификация MNIST или игра в Go. Во-вторых, книга говорит это:

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

Я думаю, что текущий «консенсус» заключается в том, что это комбинация пунктов № 1 и № 3: для задач реального мира глубокая архитектура часто выгодна, а поверхностная архитектура будет неэффективной и потребует намного больше нейронов для той же производительности.

Но это далеко не доказано. Рассмотрим, например, Загоруйко и Комодакис, 2016, Широкие остаточные сети . Остаточные сети со 150+ слоями появились в 2015 году и выиграли различные конкурсы по распознаванию изображений. Это был большой успех и выглядело как убедительный аргумент в пользу глубины; Вот один рисунок из презентации первого автора на остаточном сетевом документе (обратите внимание, что здесь время сбивает с толку налево):

глубокие остаточные сети

Но статья, приведенная выше, показывает, что «широкая» остаточная сеть с «только» 16 слоями может превзойти «глубокие» с более чем 150 слоями. Если это правда, то весь смысл приведенного выше рисунка рушится.

Или рассмотрим Ba и Caruana, 2014: действительно ли глубокие сети должны быть глубокими? :

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

Если это правда, это будет означать, что правильное объяснение - это скорее моя пуля № 2, а не № 1 или № 3.

Как я уже сказал, никто пока точно не знает.


Заключительные замечания

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

Возрождение глубокого обучения началось в 2006 году, когда Джеффри Хинтон (который работал над нейронными сетями более 20 лет без особого интереса со стороны кого-либо) опубликовал пару прорывных работ, предлагающих эффективный способ обучения глубоким сетям ( научная статья , статья по нейронным вычислениям ) , Хитрость заключалась в том, чтобы использовать предварительную подготовку без присмотра перед началом градиентного спуска. Эти документы произвели революцию в этой области, и в течение нескольких лет люди думали, что неконтролируемая предварительная подготовка является ключевым фактором.

Затем в 2010 году Мартенс показал, что глубокие нейронные сети можно обучать с помощью методов второго порядка (так называемых методов без гессиана) и могут превзойти сети, обученные с помощью предварительного обучения: глубокое обучение с помощью оптимизации без гессиана . Затем в 2013 году Sutskever et al. показал, что стохастический градиентный спуск с некоторыми очень умными уловками может превзойти методы без гессиана: о важности инициализации и импульса в глубоком обучении . Кроме того, около 2010 года люди поняли, что использование выпрямленных линейных единиц вместо сигмовидных единиц имеет огромное значение для градиентного спуска. Dropout появился в 2014 году. Остаточные сети появились в 2015 году. Люди продолжают придумывать все более и более эффективные способы обучения глубоких сетей ито, что казалось ключевой идеей 10 лет назад, сегодня часто считается неприятностью. Все это в значительной степени обусловлено методом проб и ошибок, и мало кто понимает, что заставляет некоторые вещи работать так хорошо, а другие - нет. Обучение глубоким сетям похоже на большую хитрость. Удачные трюки обычно рационализируются постфактум.

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

Обновление: это более или менее тема беседы Али Рахими NIPS 2017 о машинном обучении как алхимии: https://www.youtube.com/watch?v=Qi1Yry33TQE .


[Этот ответ был полностью переписан в апреле 2017 года, поэтому некоторые из приведенных ниже комментариев больше не применяются.]


2
Хороший ответ! 1) Как уже упоминалось @Nicolas, оказывается, что существует теорема ( en.wikipedia.org/wiki/Universal_approximation_theorem ), которая утверждает, что нейронная сеть с прямой связью с одним скрытым слоем и конечным числом нейронов может быть приближена любая непрерывная функция (включая DNN) в единичном гиперкубе. Утверждается, что этот результат не зависит от выбора функции активации. 2) Я не уверен, относится ли ваше последнее замечание (то есть, что Хинтон присоединился к Google) к недавнему успеху DNN; Хинтон присоединился к Google намного позже эпидемии DNN!
Соби

4
Может быть, мы используем терминологию по-другому. Перцептроны не имеют скрытого слоя - их ввод - данные, их вывод - классификация. Многослойная сеть состоит из группы перцептронов, соединенных вместе так, что выходной сигнал из уровня формирует входной сигнал для слоя . Таким образом, сеть с одним скрытым слоем имеет три слоя (входной, скрытый, выходной). Этот скрытый слой является ключом для универсального приближения: перцептроны, в которых его нет, не могут вычислять такие вещи, как XOR, но многослойные сети могут. nn1n
Мэтт Краузе

2
Линейность кажется сочетанием двух вопросов. Персептроны могут вычислять только линейные границы решения - он может рисовать только прямые линии, чтобы разделить два класса. Многослойные сети могут «рисовать» более сложные границы. Но ни перцептроны, ни многослойные сети не используют функции линейной активации, за исключением выходного уровня многослойной сети. Функция активации персептрона является тяжелой (1, если x> 0, 0 в противном случае); Многослойные сети часто используют сигмоиды, но ограничения для универсального ок. довольно мягкие: непостоянные, ограниченные и монотонно возрастающие.
Мэтт Краузе

2
@amoeba отличный ответ, картинка с самого начала заставляла меня читать остальные, но это было к лучшему. Перцептрон является аналогом линейной регрессии для классификации, поэтому, когда люди используют решение в закрытой форме (псевдообратное) для решения проблемы вместо онлайновых (sgd) методов, это называется логистической регрессией из-за логистики (сигмоидальной функции) = персептрон. Персептрон / логистическая регрессия может «рисовать» только линейные границы решения, и поэтому она называется линейной.
сюрикен х синий

2
Тем не менее, многослойный персептрон (то, что вы нарисовали на своем первом рисунке слева) может комбинировать несколько таких линейных границ решения и, таким образом, может разделить пространство для решения (нелинейной) проблемы XOR, такой как упомянутый @Matt. Таким образом, многие из множества комбинированных линейных границ принятия решений могут образовать круг, например, если вы прищурите глаза. Это зависит от того, как вы думаете об этом - решение все еще линейно в более высоком пространстве, если вы знакомы с ядрами, это своего рода одно и то же.
сюрикен х синий

8

Хороший ответ до сих пор, хотя здесь есть пара вещей, о которых никто не упомянул, вот мои 0.02 $

Я просто отвечу в форме рассказа, должен сделать вещи веселее и понятнее. Нет TLDR здесь. В процессе вы должны быть в состоянии понять, в чем разница.

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

Одной из причин является доступность данных, много данных (помеченных данных). Если вы хотите иметь возможность обобщать и изучать что-то вроде «универсальных априоров» или «универсальных априоров» (то есть базовых строительных блоков, которые можно повторно использовать между задачами / приложениями), то вам нужно много данных. И дикие данные, могу добавить, а не стерильные наборы данных, тщательно записанные в лаборатории с контролируемым освещением и все такое. Механический турок сделал это (маркировка) возможным.

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

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

Что замедлило ситуацию, так это исчезнувшая проблема градиента . Люди ходили как: Вау, это далеко, чувак! Короче говоря, это означает, что было трудно отрегулировать ошибку на слоях ближе к входам. Когда вы добавляете больше слоев на торт, становится слишком шатким. Вы не можете распространять значимую ошибку обратно на первые слои. Чем больше слоев, тем хуже становится. Облом.

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

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

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

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

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

Так что же тут делать? Посмотрите на край экрана и попробуйте прочитать этот текст. Проблема? Как бы глупо это не звучало, вам нужно посмотреть, что вы читаете. В противном случае это слишком нечетко / недостаточно разрешения / детализации. Давайте назовем зону фокусировки восприимчивым полем. Сети должны быть в состоянии сосредоточиться тоже. По сути, вместо использования всего изображения в качестве входных данных, вы перемещаете скользящее окно вдоль изображения и затем используете его в качестве входных данных для сети (немного менее стохастично, чем то, что делают люди). Теперь у вас также есть возможность фиксировать корреляции между пикселями и, следовательно, объектами, и вы также можете различить сонного кота, сидящего на диване, и перевернутого банджи-джампа. Аккуратная, вера в человечество восстановлена. Сеть может изучать локальные абстракции в изображении на нескольких уровнях. Сеть изучает фильтры,

Итак, подведем итоги: рецептивные поля / свертки, неконтролируемая инициализация, выпрямленные линейные единицы, выпадение или другие методы регуляризации. Если вы очень серьезно относитесь к этому, я рекомендую вам взглянуть на глубокое обучение Шмидхубера в нейронных сетях: обзор, вот URL для препринта http://arxiv.org/abs/1404.7828

И помните: большое обучение, глубокие данные. Слово.


Привет, Флорин, спасибо за хороший ответ! Мне нравится стиль письма. Когда вы говорите о скользящих окнах, обращаетесь ли вы к тому, как сверточные слои сверточного NN наблюдают разные части изображения и проецируют свои активации на пространство меньшего размера?
Николас

почти да, свертки не нужны, но они быстрее в вычислительном отношении, так как весовые коэффициенты ограничены. проверьте этот документ, где они не используют свертки и используют локальные рецептивные поля. важные ключевые слова являются локальными / иерархическими: arxiv.org/pdf/1112.6209.pdf
сюрикен х синий

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

6

С точки зрения непрофессионала, основное отличие от классических нейронных сетей состоит в том, что они имеют гораздо больше скрытых слоев.

Идея состоит в том, чтобы добавить метки к слоям, чтобы создать несколько слоев абстракции:

Например, глубокая нейронная сеть для распознавания объектов :

  • Слой 1: отдельные пиксели
  • Слой 2: края
  • Слой 3: Формы (круги, квадраты)
  • Уровень n: весь объект

Вы можете найти хорошее объяснение на этот вопрос в Quora .

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


1
Спасибо Дэвид, но я не вижу, как просто добавить ярлыки, чтобы они отличались. Я также помню, что было трудно понять и разложить, как функция была закодирована нейронной сетью. Там должно быть что-то еще, чем просто иметь больше слоев. Что касается приведенного вами примера, я считаю, что вы можете обучать нейронные сети (старой школы) индивидуально для выполнения каждой из задач.
Николас

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

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

2
Несмотря на то, что указанный ресурс интересен, ответ на этот вопрос не отвечает.
Николас

Можете ли вы указать на пример, где слои помечены (кроме чисто описательного характера)? Конечно, верно, что скрытые слои кажутся последовательно более сложными функциями в каждом скрытом слое, но «добавление меток», похоже, подразумевает, что они специально обучены этому.
Мэтт Краузе

2

В начале меня также немного смутило различие между нейронными сетями (NN) и глубокими нейронными сетями (DNN), однако, к сожалению, «глубина» относится только к числу параметров и слоев. Вы можете воспринимать это как своего рода ребрендинг в рамках так называемой «канадской мафии».

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

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

Как указано на странице глубокого обучения в Википедии , «глубокая» часть относится, главным образом, к тому, что функции взаимодействуют нелинейным образом на нескольких слоях, следовательно, выполняя извлечение и преобразование объектов. Это также было сделано в стандартных NN, но в меньшем масштабе.

На той же странице, здесь у вас есть определение "глубокая нейронная сеть (DNN) является искусственной нейронной сети (ИНС) с несколькими скрытыми слоями блоков между входным и выходным слоями.


Привет Мттк, спасибо за ваш ответ, он пролил больше света на этот вопрос. Что касается вашего последнего замечания, да, структурно очень легко объяснить разницу (1 против нескольких слоев), но разница в том, как используются эти несколько слоев, кажется, что имеет значение, и она гораздо менее ясна. Вот почему я сфокусировал вопрос не на структуре ..
Николас

Честно говоря, я не согласен с последним определением, на которое я ссылался - поскольку ANN / NN с одним скрытым слоем не очень эффективны, и вам нужно было несколько для любого более сложного предсказания (я говорю это, потому что я думаю, что DNN был бесполезное модное слово, добавленное к уже хорошему термину, NN). Я думаю, что вы можете использовать NN и DNN взаимозаменяемо (потому что в настоящее время никто не использует NN с одним скрытым слоем), в то время как использование уровней отличается между типами DNN (CNN, RBM, RNN, LSTM, CW-RNN, ...) а не идея самой ДНН.
МТТК

2

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

Другой вопрос, который может быть задан: почему нейронные сети (в частности DNN) стали такими популярными внезапно. Насколько я понимаю, магические ингредиенты, которые сделали DNN такими популярными в последнее время, заключаются в следующем:

A. Улучшенные наборы данных и возможности обработки данных

1. Стали доступны крупномасштабные наборы данных с миллионами разнообразных изображений.

2. Быстрая реализация GPU стала общедоступной

B. Улучшенные алгоритмы обучения и сетевые архитектуры

1. Выпрямленные линейные единицы (ReLU) вместо сигмовидной или tanh

2. Глубокие сетевые архитектуры развивались на протяжении многих лет


A-1) До недавнего времени, по крайней мере в Computer Vision, мы не могли обучать модели миллионам помеченных изображений; просто потому, что маркированные наборы данных такого размера не существовали. Оказывается, что помимо количества изображений, гранулярность набора меток также является очень важным фактором успеха DNN (см. Рисунок 8 в этой статье , Azizpour et al.).

A-2) Много инженерных усилий было направлено на то, чтобы сделать возможным обучение DNN, которые хорошо работают на практике, в частности, появлением реализаций графических процессоров. Одна из первых успешных реализаций DNN на GPU работает на двух параллельных GPU; тем не менее, требуется около недели, чтобы обучить DNN на 1,2 миллиона изображений 1000 категорий с использованием высокопроизводительных графических процессоров (см. эту статью, Крижевский и др.).

B-1) Использование простых выпрямленных линейных единиц (ReLU) вместо сигмоидальных и танховых функций, вероятно, является самым большим строительным блоком в обеспечении возможности обучения DNN. Обратите внимание, что функции сигмоида и танга почти везде имеют почти нулевой градиент , в зависимости от того, как быстро они переходят с низкого уровня активации на высокий; в крайнем случае, когда переход происходит внезапно, мы получаем ступенчатую функцию с нулевым наклоном везде, кроме одной точки, где происходит переход.

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


3
+1. Первый ответ в этой теме, который обеспечивает адекватный ответ на вопросы ОП. Здесь много хороших моментов. Единственное, что я могу прокомментировать, это то, что в дополнение к вашим A и B, есть также C: значительное увеличение размера доступных наборов обучающих данных. Кажется, это по крайней мере так же важно, как А и Б.
амеба

1
Я не думаю, что relu так важен: статья Алекса Крижевского утверждала, что она делает обучение в 6 раз быстрее. Большинство других изменений структуры сети, о которых вы упомянули, относится к сверточным nns, которые просто копируют стандартные конвейеры обработки изображений (хорошо, но без новых идей)
seanv507

1
@amoeba: размер набора данных находится под A. Я обновил текст, чтобы выделить его.
Соби

@ seanv507: действительно, я имел в виду сверточные сети (ConvNets), когда писал ответ. Если есть другие важные факторы (не связанные с ConvNets), которые я пропустил, я был бы признателен, если бы вы упомянули их. Я был бы рад обновить мой ответ соответственно. Что касается ReLU, обучение nns с tanh и сигмоидом значительно сложнее, чем с ReLU из-за проблемы исчезающих градиентов: юниты легко насыщаются, и, как только это происходит, требуется много времени, чтобы снова стать ненасыщенными (градиенты очень малы, когда юнит насыщен)
Соби

2

Разница между «Глубоким» NN и стандартным NN является чисто качественной: нет определения того, что означает «Глубокий». «Глубокий» может означать что угодно, от чрезвычайно сложных архитектур, используемых Google, Facebook и другими компаниями, которые имеют 50-80 или более слоев, до 2 скрытых (всего 4 слоя) архитектур. Я не удивлюсь, если вы даже найдете статьи, в которых утверждается, что вы углубляете обучение с помощью одного скрытого слоя, потому что «глубокий» не значит много.

«Нейронная сеть» - это также слово, которое не имеет очень точного значения. Он охватывает чрезвычайно большой ансамбль моделей, от случайных машин Больцмана (которые являются неориентированными графами) до последовательных архитектур с различными функциями активации. Большинство NN будут обучаться с использованием backprop, но это не обязательно так, даже алгоритмы обучения не очень однородны.

В целом, глубокое изучение, глубокие NN и NN - все стали всеобъемлющими словами, которые охватывают множество подходов.

Для хороших вводных ссылок на «что изменилось»: Углубленное изучение представлений: взгляд вперед , Bengio, 2013 - хороший обзор + перспектива на будущее. Также посмотрите, действительно ли глубокие сети должны быть глубокими? Ba & Caruana, 2013, которые иллюстрируют, что глубокое понимание может быть полезно не для представления, а для обучения.


Ссылки, которые вы даете, очень полезны, но остальная часть ответа в текущей форме (которая читается как «NN ничего не значит, DNN ничего не значит, NN и DNN может многое сделать») не так много, будет вы думаете пересмотреть это?
Николас

1

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

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

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


1

NN:

  • достаточно одного скрытого слоя, но, тем не менее, он может иметь несколько слоев, в порядке слева направо (модель: прямая передача NN)
  • тренируется только под надзором (обратное распространение)
  • при использовании нескольких слоев, тренируйте все слои одновременно (один и тот же алгоритм: обратное распространение), большее количество слоев затрудняет использование, так как ошибки становятся слишком маленькими
  • трудно понять, что изучается на каждом слое

DNN:

  • требуется несколько слоев, ненаправленные края (модель: ограниченная машина Больцмана)
  • сначала обучаются неконтролируемым образом, где сети изучают соответствующие функции, учась воспроизводить свой вклад, а затем обучаются контролируемым образом, который тонко настраивает функции для классификации
  • обучать слои один за другим от входного до выходного слоя (алгоритм: контрастное расхождение)
  • каждый слой четко содержит особенности увеличения абстракции

Переход на DNN связан с тремя независимыми прорывами, которые произошли в 2006 году.

Относительно теорем о NN вопрос, на который ссылается вопрос, таков:

  • теорема универсального приближения или теорема Кибенко: прямая нейронная сеть с одним скрытым слоем может аппроксимировать любую непрерывную функцию. Однако на практике может потребоваться гораздо больше нейронов, если используется один скрытый слой.

2
-1? В самом деле? Я прочитал все это в литературе и сделал поэтапное сравнение обоих подходов! Пожалуйста, по крайней мере, укажите, что не правильно ...
Николас

3
Я не понизил голосование (возможно, ответчик не хотел, чтобы вы ответили на свой вопрос? Но это, конечно, совершенно нормально), но здесь есть одна вещь, которая не совсем верна. То, что вы перечислите в качестве свойств DNN: то, что ребра являются ненаправленными, что они сначала обучаются неконтролируемым образом, что слои обучаются один за другим - все это относится только к сетям глубокого убеждения, предложенным Хинтоном в 2006 году. Это не обязательно верно для глубоких нейронных сетей в целом, и на самом деле сейчас есть много способов обучить глубокую сеть без всего этого. Смотри мой ответ.
амеба

1

O(n)

Я думаю, вам следует отступить назад и увидеть, что это привело к возрождению мелкого ИИ - например, мешок слов для анализа настроений и других языковых приложений и визуальный пакет слов были ведущим подходом к распознаванию изображений до DNN. Никто не говорит, что мешок слов - это настоящая модель языка, но это эффективное инженерное решение. Так что я бы сказал, что DNN - лучший «визуальный пакет слов» - см., Например, Szegedy et al. 2013 Интригующие свойства нейронных сетей и Nguyen et al. Глубокие нейронные сети легко одурачить: предсказания с высокой степенью достоверности для неузнаваемых изображений, когда ясно, что не изучаются структуры более высокого порядка и т. Д. (Или что-либо, что заявлено для DNN).


@amoeba, этот другой документ - почти компаньон к первому (снова с большим количеством изображений!)
seanv507

0

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

Источник: Арно Кандель

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.