Заброшенный Джеффри Хинтоном, почему обратное распространение ставится под сомнение? (с выводом BP)

искусственный интеллект глубокое обучение алгоритм Нейронные сети

Сердце машины

Сердце Машины Редакционный отдел


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


Подозрение обратного распространения


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


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


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


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


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


Карта-путеводитель, чтобы не заблудиться


Синтетические градиенты, изученные DeepMind, представляют собой подход с разделенными слоями, поэтому нам не всегда нужно обратное распространение, или вычисление градиента можно отложить. Этот метод также очень эффективен. Открытие также может быть намеком на то, что более общий подход находится на подходе. Кажется, что любой апгрейд в этом направлении был бы полезен (случайное упоминание о синтетических градиентах), независимо от того, тот же эффект или нет.


Существует также типичная проблема с использованием целевых функций: обратное распространение вычисляется относительно целевой функции. Как правило, целевая функция является мерой разницы между прогнозируемым распределением и фактическим распределением. Обычно его получают из расхождения Кульбака-Либлера или других чисел распределения подобия, таких как Вассертсейн. Однако в этих вычислениях сходства «метки» являются неотъемлемой частью контролируемого обучения. В то время как Хинтон выбросил замечания об обратном распространении, он также высказал свое мнение об обучении с учителем: «Я думаю, что это означает отказ от обратного распространения... Нам действительно не нужно, чтобы все данные имели метки».


Короче говоря, обратное распространение невозможно без целевой функции. Если вы не можете оценить прогнозируемое значение и значение метки (фактические или обучающие данные), у вас нет целевой функции. Итак, чтобы добиться «обучения без учителя», нужно отказаться от возможности вычислять градиенты.


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


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


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


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




Хинтон и его коллеги из Google Сара Сабур и Николас Фросс завершили статью «Динамическая маршрутизация между капсулами», принятую на конференции NIPS 2017. Концепция капсулы, предложенная в их исследовании, представляет собой исследование Хинтоном будущей формы искусственного интеллекта. Нельзя отрицать, что нам еще предстоит пройти долгий путь по пути неконтролируемого обучения.


Процесс вывода обратного распространения


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


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


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


Основные принципы алгоритма обратного распространения


Наша конечная цель при обучении нейронной сети — найти градиент функции потерь по отношению к каждому весу:

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

Обычно в каждом блоке общей нейронной сети возникают следующие ситуации:


  • Нейрон имеет ровно один вход и один выход

  • Этот нейрон имеет несколько входов

  • Этот нейрон имеет несколько выходов

  • Нейрон имеет несколько входов и выходов


Поскольку несколько входов и несколько выходов независимы, мы можем свободно комбинировать количество входных и выходных нейронов.


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


Нейрон с одним входом и одним выходом



В приведенной выше нейронной сети каждая переменная может быть записана точно.




Обратите внимание, что в приведенном выше уравнении x — вход, w — вес, а Sigamm — функция активации нейрона. s — это данные, передаваемые от предыдущего нейрона к следующему через вес, равный выходному сигналу предыдущего нейрона, умноженному на силу связи двух нейронов, то есть вес w. z — результат, полученный после вычисления входа нейрона с помощью функции активации Sigamma.


Для такого простого случая мы можем легко найти член частной производной. Теперь давайте раскрасим дифференцированную часть синим цветом и посмотрим, сможем ли мы вывести шаблон, который можно использовать в итеративном алгоритме. Во-первых, нам нужно понять вес между слоем k и слоем o (w_k→o), который также можно понимать как силу связи между этими двумя нейронами. Если наш выход представляет собой линейную единицу, то ():



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


Затем обновление веса от j до k и от i до j осуществляется теми же шагами.




Приведенный выше вывод показывает частную производную функции потерь по весам между слоями j и k, а следующий вывод показывает частные производные функции потерь по весам между слоями i и j:




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



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


несколько входов


Представьте немного более сложную нейронную сеть, в которой нейрон будет иметь несколько входов:



Что, если нейрон имеет несколько входов, влияет ли правило обновления веса с j на k на правило обновления веса с i на k? Чтобы понять это, мы можем вручную дифференцировать веса от i до k.



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


несколько выходов


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



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



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


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


сигнал ошибки


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


Мы определяем итеративный сигнал ошибки для нейрона j как:

Он измеряет, насколько изменяется ошибка нейронной сети при вводе данных в нейрон j. Использование сигнала ошибки имеет хорошую производительность, т.е. мы можем выразить обратное распространение в более компактной форме. Чтобы понять, как это меняется, мы можем расширить уравнение.


Если нейрон j является выходным узлом, это также означает(если функция активации нейрона j равна f_j(⋅)), поэтомуможно просто записать как, так что можно найти.


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



Обратите внимание на окончательную частную производную ∂y^ /∂zj, мультинейрон зависит от z_j, а точнее от всех нейронов k∈outs(j). В разделе с несколькими выходами мы видим, что веса, которые приводят к появлению нескольких выходных нейронов, действительно влияют на эти выходные нейроны. Но для каждого нейрона k мы имеем, каждый s_k не зависит ни от каких других узлов того же уровня. Следовательно, мы можем снова использовать цепное правило и просуммировать выходные вершины k ∈ out(j):



Приведите это уравнение к, мы получили:



Основываясь на нашем определении сигнала ошибки, мы уже знаем, поэтому, если мы подставим (y ^ −y) в суммирование, мы получим следующее рекуррентное соотношение:



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


Общий вид алгоритма обратного распространения


Вспомним простую нейросеть из первой части:

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



В этой нейронной сети точный шаблон обновления веса представляет собой следующее уравнение:



Если вместо этого мы используем сигнал ошибки, мы можем получить следующую форму:

Есть еще одна более сложная нейронная сеть с несколькими выходными нейронами:

Опять же, мы можем получить все сигналы ошибок:



Затем снова подставляем ошибку в уравнение обновления веса:



Теперь, возможно, мы можем вывести простую общую форму обновления веса:



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



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


1. Пересылать обучающие выборки по всей сети и записывать каждую.

2. Вычислить сигнал ошибки для всех нейронов j и каждой обучающей выборки y_i, если j — выходной нейрон, то:



Если j не выходной нейрон, то:



3. Обновите веса по следующему правилу обновления:



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


Оригинальная ссылка:


  • https://medium.com/intuitionmachine/the-deeply-suspicious-nature-of-backpropagation-9bed5e2b085e

  • http://briandolhansky.com/blog/2013/9/27/artificial-neural-networks-backpropagation-part-4



  • Эта статья составлена ​​для ядра машины, пожалуйста, свяжитесь с этой общедоступной учетной записью для разрешения на перепечатку.