Основные идеи нейронных сетей не новы, но в последние годы их стали использовать для решения проблем, с которыми раньше боролись компьютеры. Отчасти это связано с законом Мура. Вычислительная мощность теперь дешевле и быстрее, чем раньше, а также сейчас существует множество цифровых данных, которые раньше было намного сложнее и дороже получить. Таким образом, можно обучить даже алгоритмы с медленным обучением.
Одним из часто используемых подходов является алгоритм обратного распространения. В этом посте мы представляем математическое объяснение того, почему это работает.
Предположим, у нас есть входной вектор 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.
После этого нахождение оптимального θ с использованием градиентного спуска будет так же просто, как скатиться с холма.
Примечание: приведенное выше изображение основано на схеме нейронной сети в Википедии, которая затем была изменена автором.