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

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

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

Нейронные сети 101 резюме

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

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

Проход вперед

Давайте теперь погрузимся в математику, стоящую за этим.

Во-первых, как вход обрабатывается нейронной сетью:

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

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

Фундаментальный вопрос в нейронных сетях:

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

Цель (поражение)

Знание того, как изменить веса, зависит от того, что мы подразумеваем под «Что я хочу, чтобы сеть делала». Спецификация этой цели осуществляется через целевую функцию, обычно называемую убытком. Потери (обозначаемые L или J) ​​являются функцией параметров нейронной сети (весов и смещений, обозначаемых тета), которые описывают, как сравнивать выходные данные нашей нейронной сети с ожидаемыми выходными данными. По сути, это количественная оценка того, насколько неправильной была сеть, и поэтому она должна быть сведена к минимуму. Например, в бинарной классификации распространенной потерей является бинарная кросс-энтропия:

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

Как изменить веса, чтобы нейросеть минимизировала потери?

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

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

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

Теперь применим ту же схему к другим слоям:

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

Так в чем проблема с обратным распространением?

Хотя этот процесс работает, он не обходится без недостатков:

  • Обратное распространение — это последовательный процесс: нам нужно вычислить градиент последнего слоя перед вычислением градиента для предыдущего слоя, который затем необходим для вычисления градиента для предыдущего слоя и т. д. Для более глубоких сетей , это делает процесс очень медленным
  • Вычисление градиента требует перестановки матриц: это дорогостоящее вычисление (со сложностью O(n^2)) и требует много памяти. Для больших сетей это может быстро стать проблемой.

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

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

Источник : случайные веса обратной связи поддерживают обучение в глубоких нейронных сетях, Т. П. Лилликрап, Д. Каунден, Д. Б. Твид и К. Дж. Акерман, 2014 г.

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

Итак, можем ли мы устранить недостатки обратного распространения?

Настройка прямой обратной связи

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

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

Вуаля, у нас есть выражение, которое не требует каких-либо последовательных вычислений благодаря отсутствию зависимостей между слоями, как только мы вычислили ошибку последнего слоя, мы можем одновременно вычислить обновление всех других слоев. И мы также убрали транспонирование матриц, что должно еще больше ускорить вычисления! Это обновление называется Direct Feedback Alignment (DFA):

DFA является частью семейства подобных методов:

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

Глубинная магия

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

Это очень хороший вопрос! Во-первых, давайте посмотрим, как это сравнивается с обратным распространением:

Удивительно, не так ли?

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

Но как?

Это здорово, но… как? Давайте попробуем понять, почему наше, казалось бы, сломанное обновление все еще несет значимый сигнал для нашей сети.

Авторы оригинальной статьи объясняют, что сеть «учится учиться». Mhhh, мы видели яснее. Они заявляют, что, поскольку обратная связь теперь является фиксированной и случайно изменяемой ошибкой, веса прямой связи должны адаптироваться сами по себе. Обратная связь более не явная, она неявная.

«Сеть учится учиться — она постепенно узнает, как использовать B (случайную матрицу), что затем позволяет эффективно модифицировать скрытые единицы. Поначалу обновления скрытого слоя бесполезны, но они быстро улучшаются за счет неявного процесса обратной связи, который изменяет W так, что eT WBe > 0. Чтобы показать это, мы построили угол между обновлениями скрытых единиц, заданными выравниванием с обратной связью и обратным распространением, ∆hFA]∆hBP Первоначально углы в среднем составляют около 90°. Но вскоре они уменьшаются, так как алгоритм начинает делать шаги, которые ближе к шагам обратного распространения. Такое выравнивание ∆h подразумевает, что B начал вести себя как W^T. А поскольку B фиксировано, выравнивание управляется изменениями прямых весов W. Таким образом, случайные веса обратной связи передают полезные обучающие сигналы нейронам глубоко в сети. »

Источник: Случайные веса обратной связи поддерживают обучение в глубоких нейронных сетях, Т. П. Лилликрап, Д. Каунден, Д. Б. Твид и К. Дж. Акерман, 2014 г.

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

Обновления DFA «колеблются» вокруг истинных обновлений BP.

Интуиция

Давайте попробуем построить некоторую интуицию о том, почему это происходит (Большая часть этой интуиции исходит из видео Янника Килчера о статье с оберткой моего собственного понимания).

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

Давайте попробуем визуализировать это, начав с последнего слоя. Для примера предположим, что в задаче классификации есть 3 возможных класса: c1, c2 и c3. Наша сеть делает прогноз для каждого примера (y hat), а обновление сообщает нам, в каком направлении и насколько мы должны изменить веса, чтобы правильно отнести пример к его классу. Другими словами, мы хотим согласовать предсказание (y hat, вектор вероятностей по различным классам, например [0,7,0,1,0,2]) с правильным классом (например, c1:[1,0,0]). В этом случае изменение будет [0,3,-0,1,-0,2].

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

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

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

Взгляд на эти представления подтверждает, что этот подход «кластеризации» приводит к результатам, аналогичным результатам, полученным в представлениях, построенных BP. Другими словами, мы достигаем того же результата другим и более простым способом, поскольку кажется, что скрытым слоям не нужно явно сопоставлять примеры с определенной частью пространства, им нужно только их кластеризовать. Скрытые слои создают преобразования, которые позволяют легко отделить последний слой в обоих методах. Важны скрытые функции, а не способ их получения. DFA — это более слабая версия обновления BP, которая сохраняет свойство кластеризации и, следовательно, свойство обучения. DFA "достаточно хорош", чтобы работать.

Теперь, когда у нас есть более четкое представление о том, почему это работает, давайте вернемся к его характеристикам.

Почему я должен использовать DFA?

Как мы видели, при таком же количестве примеров DFA сходится так же быстро (с точки зрения примеров), как и обратное распространение ошибки.

Однако обновление сети с использованием DFA должно выполняться намного быстрее, чем с обратным распространением, благодаря отсутствию транспонирования и возможности распараллелить обновление всех слоев. Хотя точные цифры мы увидим позже, сложно сравнивать DFA с BP с точки зрения скорости из-за следующего пункта.

Если DFA работает быстрее при сохранении производительности, почему тогда мы его не используем?

Обратное распространение существует и активно изучается с 1986 года. По сути, все существующие методы глубокого обучения вращаются вокруг него. Авторы утверждают, что отсутствие оптимизированной реализации DFA и привычки исследователей и практиков препятствуют внедрению DFA. Однако еще одна хитрость должна помочь DFA победить…

ЛАЗЕРЫ

Лазеры, да, лазеры.

До сих пор мы сравнивали DFA и BP на стандартном оборудовании (CPU или GPU). Однако специфика обновления DFA, основанная на случайном умножении матриц, позволяет нам использовать очень интересное физическое явление: динамическое рассеяние света.

« Монохроматический лазер с длиной волны 532 нм расширяется с помощью телескопа, а затем освещает цифровое микрозеркальное устройство (DMD), способное пространственно кодировать цифровую информацию о световом луче с помощью амплитудной модуляции, как описано в разделе III B. Луч света, несущий сигнал, затем фокусируется на случайной среде с помощью линзы. Здесь среда представляет собой толстый (несколько десятков микрон) слой наночастиц T iO2 (диоксида титана) (пигментов белой краски, нанесенных на предметное стекло микроскопа). Проходящий свет собирается на дальней стороне второй линзой, проходит через поляризатор и измеряется стандартной монохромной ПЗС-камерой. »

Источник: Случайные проекции посредством многократного оптического рассеяния: аппроксимация ядер со скоростью света, А. Сааде, Ф. Кальтаджироне, И. Каррон, Л. Доде, А. Дремо, С. Гиган, Ф. Крзакала, 2015

Другими словами :

Мы физически вычисляем случайное умножение матриц с буквальной скоростью света.

Вы можете сказать, что эта технология ограничена только лабораториями и исследовательскими работами… но нет, она уже существует! Французский стартап LightOn уже разрабатывает и продает блоки оптической обработки (OPU), которые делают именно это (случайное матричное умножение также может использоваться и в других приложениях).

« Компания LightOn, основанная в 2016 году, работала в партнерстве с парижским поставщиком услуг облачных вычислений OVH Group и заявляет об улучшении производительности для определенных задач машинного обучения.

OPU использует лазерный свет, который направляется на цифровое микрозеркальное устройство (DMD) для кодирования 1 и 0 с помощью света, затем перенаправляется через линзу и случайно Сборка рассеивающей средыперед поляризацией и считыванием с помощью обычной камеры. Это позволяет параллельно манипулировать очень большими матрицами. Одной из операций, которые можно выполнить, является классификация ядра. Обычно DMD может обрабатывать матрицы порядка 1k на 1k.

В задаче под названием передача обучения OPU продемонстрировал шестикратное ускорение при пятикратном повышении энергоэффективности по сравнению с решением на основе графического процессора. Это означает, что потребляемая мощность в 30 раз меньше. Другой тест анализа временных рядов с рекуррентной нейронной сетью продемонстрировал 200-кратное ускорение по сравнению с обычными процессорами с большим объемом оперативной памяти. »

Источник: https://www.eenewsanalog.com/en/startup-integrates-optical-processing-within-data-center-2/

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

Заключение

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

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

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

Ресурсы

Видео Янника Килчера о DFA: https://www.youtube.com/watch?v=Hdo81GtLC_4&ab_channel=YannicKilcher

Оригинальная статья FA и DFA: Случайные веса обратной связи поддерживают обучение в глубоких нейронных сетях, Т. П. Лилликрап, Д. Каунден, Д. Б. Твид и К. Дж. Акерман, 2014 г.

Еще одна интересная статья по DFA: Выравнивание с прямой обратной связью обеспечивает обучение в глубоких нейронных сетях, Арильд Нёкланд, 2016 г.

Дополнительный документ о выступлениях DFA: Шкала согласования прямой обратной связи с современными задачами и архитектурами глубокого обучения, Дж. Лоней, И. Поли, Ф. Бонифаций и Ф. Крзакала, 2020 г.

Статья о динамическом рассеянии света: Случайные проекции посредством многократного оптического рассеяния: аппроксимация ядер со скоростью света, А. Сааде, Ф. Кальтаджироне, И. Каррон, Л. Доде, А. Дремо, С. Гиган, Ф. Крзакала, 2015 г.

Сайт LightOn по OPU: https://lighton.ai/photonic-computing-for-ai/

Особая благодарность Бенджамину Фарси за рецензирование этой статьи.