Сегодня нейронные сети и технологии глубокого обучения лежат в основе большинства передовых интеллектуальных приложений. В этой статье доктор Сунь Фей (Danfeng), эксперт по алгоритмам высокого уровня из отдела поиска Alibaba, представит краткий обзор эволюции нейронных сетей и обсудит последние подходы в этой области. Статья в основном сосредоточена на следующих пяти пунктах:

  • Эволюция нейронных сетей
  • Модели датчиков
  • Нейронные сети с прямой связью
  • Обратное распространение
  • Основы глубокого обучения

1. Эволюция нейронных сетей

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

На временной шкале ниже показана эволюция нейронных сетей:

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

Нейроны нейронной сети первого поколения работали как верификаторы. Разработчики этих нейронов просто хотели подтвердить, что они могут создавать нейронные сети для вычислений. Эти сети нельзя использовать для обучения или обучения; они просто действовали как схемы логических вентилей. Их ввод и вывод были бинарными, а веса были предопределены.

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

2. Модели датчиков

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

Мы можем думать о входном значении (x1…, xn) как о координате в N-мерном пространстве, а wTx-w0 = 0 — это гиперплоскость в N-мерном пространстве. Очевидно, что если wTx-w0 ‹ 0, то точка падает ниже гиперплоскости, а если wTx-w0 > 0, то точка падает выше гиперплоскости.

Модель датчика соответствует гиперплоскости классификатора и способна разделять разные типы точек в N-мерном пространстве. Глядя на рисунок ниже, мы видим, что модель датчика представляет собой линейный классификатор.

Модель датчика способна легко выполнять классификацию для основных логических операций, таких как И, ИЛИ и НЕ.

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

На самом деле такие авторы, как Мински, указали, что можно реализовать операции «Исключающее ИЛИ» с помощью нескольких уровней сенсорных моделей; однако, поскольку в академическом мире в то время не было эффективных методов изучения моделей многослойных датчиков, развитие нейронных сетей достигло своего первого низкого уровня.

На рисунке ниже наглядно показано, как несколько уровней моделей датчиков могут выполнять операции «Исключающее ИЛИ»:

3. Нейронные сети с прямой связью

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

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

Мы можем выразить любую логическую операцию с помощью модели многослойного датчика, но это вводит проблему взвешенного обучения между тремя слоями. Когда xk передается из входного слоя во взвешенное значение vkj на скрытом слое, а затем проходит через алгоритм активации, такой как сигмоид, мы можем получить соответствующее значение hj из скрытого слоя. Точно так же мы можем использовать аналогичную операцию для получения значения узла yi из выходного слоя, используя значение hj. Для обучения нам нужна взвешенная информация из матриц w и v, чтобы мы могли окончательно получить оценочное значение y и фактическое значение d.

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

В примере используется потеря квадратного корня и делается попытка закрыть разрыв между смоделированным значением y и реальным значением d. Для удобства вычислений в большинстве ситуаций мы используем корневое соотношение E = 1/2 (d-y)² = 1/2 (d-f(x))².

В соответствии с принципом градиентного спуска скорость цикла обновления взвешивания составляет: wj ← wi + α(d − f(x))f′(x)xi, где α — скорость обучения, которую мы можем настроить вручную.

4. Обратное распространение

Как узнать все параметры многослойной нейронной сети с прямой связью? Параметры верхнего слоя получить очень легко. Можно получить параметры, сравнив разницу между оценочными и реальными значениями, выдаваемыми вычислительной моделью, и используя принципы градиентного спуска для получения результатов параметров. Проблема возникает, когда мы пытаемся получить параметры из скрытого слоя. Несмотря на то, что мы можем вычислить выходные данные модели, у нас нет возможности узнать, каково ожидаемое значение, поэтому у нас нет способа эффективно обучить многослойную нейронную сеть. Эта проблема долгое время мучила исследователей, что привело к отсутствию развития нейронных сетей после 1960-х годов.

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

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

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

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

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

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

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

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

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

Академический мир глубоко изучил эту проблему и пришел к выводу, что проще всего с ней справиться, изменив алгоритм активации. Вначале мы пытались использовать алгоритм активации Rectified, поскольку сигмовидный алгоритм является индексным методом, который может легко привести к проблеме потери градиента. Rectified, с другой стороны, заменяет сигмовидную функцию и заменяет max (0,x). На рисунке ниже видно, что градиент для оценок выше 0 равен 1, что предотвращает проблему исчезновения градиента. Однако, когда оценка ниже 0, мы видим, что градиент снова равен 0, поэтому алгоритм ReLU должен быть несовершенным. Позже появился ряд улучшенных алгоритмов, в том числе Leaky ReLU и Parametric Rectifier (PReLU). Когда оценка x меньше 0, мы можем преобразовать ее в коэффициент, например 0,01 или α, чтобы на самом деле она не равнялась 0.

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

Продолжить чтение части 2 статьи.

Ссылка:

https://www.alibabacloud.com/blog/all-you-need-to-know-about-neural-networks-%E2%80%93-part-1_593835?spm=a2c41.11798765.0.0