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

Предположим, у нас есть входной вектор x̲, и мы хотим сделать прогноз для результирующего вектора y̲. Начнем с определения нулевого уровня активации:

Мы определяем

а θ — это веса, которые будут установлены в процессе обучения.
Мы используем некоторую нелинейную функцию активации, которую будем называть S(z) . Это может быть ReLU или даже сигмовидная функция. Он используется для оценки следующего уровня активации:

Когда у нас есть a⁰, мы можем использовать уравнения 1 и 2 для вычисления a¹.
Затем мы снова используем уравнения 1 и 2 для вычисления a², а затем a³ вплоть до уровня L.

Наш прогноз для y̲ — уровень активации L:

Предположим, нам дан обучающий набор T входных векторов:

и соответствующий набор результирующих векторов:

где 1≤t≤T,
то для каждого входного вектора будет соответствующий уровень активации L:

Мы можем измерить несоответствие между результирующими векторами в нашем обучающем наборе и конечными уровнями активации. Обозначим это несоответствие буквой D:

Мы могли бы иметь:

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

Суммируем все расхождения и назовем результат функцией стоимости:

Мы заинтересованы в нахождении θ, которые минимизируют эту функцию стоимости и, таким образом, дают нам точные прогнозы.
Для этого мы могли бы сначала найти частные производные:

для всех i,j,k, а затем использовать метод градиентного спуска, чтобы найти θ, которые минимизируют J.

Сейчас мы сосредоточимся на термине:

Для простоты мы опустим верхний индекс t. Итак, мы напишем:

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

Мы определяем

и когда мы применяем цепное правило к правой части, мы получаем:

мы подставляем в

и находим:

Теперь мы хотим оценить последний член

для этого мы сначала объединяем уравнения 1 и 2, чтобы получить:

и так

где

и

Итак, возвращаясь к уравнению 6, мы обнаруживаем, что в сумме сохраняется только один член, т. е. когда l = j.
Следовательно, уравнение 6 принимает вид:

Когда мы подставляем это в уравнение 5, мы находим

Из уравнения 1 следует, что:

По цепному правилу находим:

Подставляем в уравнение 9, и мы находим, что выживает только один элемент суммы, и мы получаем:

Таким образом, мы можем двигаться вперед (увеличивая k), используя уравнения 1 и 2 для оценки

а затем, используя уравнение 8, вернитесь назад (уменьшая k), чтобы оценить:

Затем мы сможем использовать уравнение 10 для расчета всех частных производных от D по θ.
Помните, что в уравнении 10 подразумевается верхний индекс t. И чтобы вычислить частные производные от J, нам нужно будет просуммировать все t, как показано в уравнении 3.
После этого нахождение оптимального θ с использованием градиентного спуска будет так же просто, как скатиться с холма.

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