Как учится машина. Революция в области нейронных сетей и глубокого обучения - Ян Лекун
Вскоре Джеффри столкнулся с трудностями, связанными с машинами Больцмана. Поэтому он в дальнейшем сосредоточился на идее Дэйва Рамелхарта 1982 г. об обратном распространении, которую ему и удалось воплотить в жизнь. Это случилось весной 1985 г., сразу же после Лез-Уш. Вскоре я встретился с Джеффри в Париже, где он поделился со мной своими результатами. Я уже начал менять свою программу HLM, чтобы учесть обратное распространение, но у меня не было времени протестировать ее, пока Джеффри не закончил свою работу. Поэтому в сентябре 1985 г. он опубликовал технический отчет с Рамелхартом и Уильямсом, а затем вставил его как главу в книгу, опубликованную в 1986 г.[54]
Там он процитировал и мою статью о методе HLM. Он – Великий Маниту, я – маленькое перышко! Я упустил возможность предоставить ему новую версию, но все равно был счастлив.
Грааль… и немного математики
Обратное распространение градиента, о которым мы говорим, является эффективным методом вычисления градиента функции стоимости, то есть направления наибольшего наклона в сетях, состоящих из нескольких слоев нейронов. Принцип его состоит в том, чтобы распространять сигнал в сети в обратном направлении, но вместо распространения целей, как в HLM, мы распространяем градиенты, то есть частные производные.
Чтобы объяснить это, необходимо рассматривать линейные и нелинейные функции по отдельности.
Математическое понятие, на котором основано обратное распространение, есть не что иное, как правило вывода сложных функций. Как известно из школьной программы, сложная функция – это применение одной функции к выходу другой функции. К x применяется сначала функция f, а затем – к ее выходу – функция h. Почему это важно? Поскольку два последовательных слоя, линейный и нелинейный, можно рассматривать как применение двух функций, например, f для первой и h для второй. Если есть несколько слоев, будут и несколько вложений функций. В результате уравнения упрощаются. Вот в чем прелесть математики!
Рис. 5.5. Обратное распространение градиента через передаточную функцию
Производная стоимости по отношению к входу передаточной функции равна производной стоимости по отношению к выходу передаточной функции, умноженной на производную передаточной функции: dc_ds = dc_dz * hʼ(s).
Представьте себе сложную сеть из нескольких слоев, природа которых нам неизвестна (рис. 5.5). На выходе этой сети стоимость измеряет разницу между выходом сети и желаемым выходом. Рассмотрим конкретную единицу в этой сети. Она вычисляет взвешенную сумму своих входов и передает эту сумму s через передаточную функцию h и выдает выход z = h(s). Если бы мы знали производную функции стоимости по отношению к выходу передаточной функции dc_dz (то есть отношение dc/dz между изменением dc стоимости c в результате изменения dz к z), то это означало бы, что если z изменится на незначительную величину dz, стоимость c изменится на незначительную величину dc = dz * dc_dz.
Какова будет производная c по отношению к s, которую мы обозначим как dc_ds?
Если мы изменим s на незначительную величину ds, выходной сигнал передаточной функции изменится на незначительную величину dz = ds * hʼ(s), где hʼ(s) – производная h в точке s. Значит, стоимость изменится на сумму dc = ds * hʼ(s) * dc_dz. Другими словами:
dc_ds = hʼ (s) * dc_dz.
Рис. 5.6. Обратное распространение градиента через взвешенную сумму
Производная стоимости по отношению к выходу z единицы представляет собой сумму производных стоимости по отношению к последующим единицам, взвешенных по весам, соединяющим рассматриваемую единицу с этими последующими единицами:
dc_dz = w[0] * dc_ds[0] + w[1] * dc_ds[1] + w[2] * dc_ds[2]
Итак, если мы знаем производную c по отношению к z, мы можем вычислить производную c по отношению к s, умножив на производную h в точке s. Таким образом мы возвращаем градиенты через передаточную функцию.
Теперь разберемся с обратным распространением через взвешенную сумму. Рассмотрим выход единицы z, который направляется к нескольким нижестоящим единицам для вычисления взвешенных сумм. Этот выходной сигнал z направляется к нижестоящим единицам с помощью весов w[0], w[1], w[2], которые используются для вычисления взвешенных сумм s[0], s[1], s[2], как показано на рисунке 5.6.
Предположим, мы знаем производные c по отношению к нижележащим единицам dc_ds[0], dc_ds[1], dc_ds[2]
Если мы изменим z на незначительную величину, взвешенная сумма s[0] изменится на w[0] * dz.
Следовательно, стоимость изменится на dz * w[0] * dc_ds[0].
Но изменение dz также вызовет две цепочки изменений.
Первая, где s[1] изменяется на значение w[1] * dz, что само по себе вызывает изменение стоимости значения dz * w[1] * dc_ds[1].
Вторая, где s[2] изменяется на значение w[2] * dz, вызывая изменение стоимости dz * w[2] * dc_ds[2].
В итоге стоимость будет изменена на сумму всех этих помех:
dc = dz * w[0] * dc_ds[0] + dz * w[1] * dc_ds[1] + dz * w[2] * dc_ds[2]
Это – способ доказать, что производная dc/dz равна:
dc_dz = w[0] * dc_ds[0] + w[1] * dc_ds[1] + w[2] * dc_ds[2]
Это и есть формула обратного распространения градиента через линейный слой (вычисление взвешенных сумм).
Чтобы рассчитать производную стоимости по отношению к входу слоя, берутся производные стоимости по отношению к выходам слоя и вычисляется сумма, взвешенная по весам, связывающим вход с этими выходами. Другими словами, мы рассчитываем взвешенные суммы с использованием весов в обратном порядке, как и в случае с HLM.
Таким образом, для обратного распространения производных через слой передаточных функций и слои, вычисляющие взвешенные суммы, используются две формулы.
1. Cлой передаточных функций:
a) распространение с прямой связью
z[i] = h(s[i]);
b) обратное распространение
dc_ds[i] = hʼ(s[i]) * dc_dz[i].
2. Cлой взвешенных сумм:
a) распространение с прямой связью
b) обратное распространение:
Нам остается теперь вычислить производные стоимости по сравнению с весами. Когда мы изменяем вес w[i, j] на незначительную величину dw[i, j], взвешенная сумма, в которую он вносится, изменится на
dw[i, j] * z[j]
Стоимость изменится на
dc = dw[i, j] * z[j] * dc_ds[i].
Следовательно, градиент стоимости относительно веса w[i, j] будет равен:
dc_dw[i, j] = z[j] * dc_ds[i]
Мы располагаем тремя формулами обратного распространения градиента в классических многослойных нейронных сетях!
Используя производную стоимости по отношению к весам, мы можем
Откройте для себя мир чтения на siteknig.com - месте, где каждая книга оживает прямо в браузере. Здесь вас уже ждёт произведение Как учится машина. Революция в области нейронных сетей и глубокого обучения - Ян Лекун, относящееся к жанру Зарубежная образовательная литература / Науки: разное. Никаких регистраций, никаких преград - только вы и история, доступная в полном формате. Наш литературный портал создан для тех, кто любит комфорт: хотите читать с телефона - пожалуйста; предпочитаете ноутбук - идеально! Все книги открываются моментально и представлены полностью, без сокращений и скрытых страниц. Каталог жанров поможет вам быстро найти что-то по настроению: увлекательный роман, динамичное фэнтези, глубокую классику или лёгкое чтение перед сном. Мы ежедневно расширяем библиотеку, добавляя новые произведения, чтобы вам всегда было что открыть "на потом". Сегодня на siteknig.com доступно более 200000 книг - и каждая готова стать вашей новой любимой. Просто выбирайте, открывайте и наслаждайтесь чтением там, где вам удобно.


