Изменения

Перейти к: навигация, поиск

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

653 байта добавлено, 18:25, 4 апреля 2019
Нет описания правки
'''Метод обратного распространения ошибок''' (англ. ''backpropagation'') {{- --}} метод вычисления градиента, который используется при обновлении весов в нейронной сети.
==Обучение как задача оптимизации==
]]
Изначально, до обучения, веса будут заданы случайно. Затем, нейрон обучается с помощью тренировочного множества, которое в этом случае состоит из множества троек <math>(x_1, x_2, t)</math> где <math>x_1</math> и <math>x_2</math> это входные данные сети и <math>t</math> {{- --}} правильный ответ. Начальная сеть, приняв на вход <math>x_1</math> и <math>x_2</math>, вычислит ответ <math>y</math>, который вероятно отличается от <math>t</math>. Общепринятый метод вычисления несоответствия между ожидаемым <math>t</math> и получившимся <math>y</math> ответом {{--- }} квадратичная функция потерь:
:<math>E=(t-y)^2, </math> где <math>E</math> ошибка.
:<math>y=x_1w_1 + x_2w_2,</math>
где <math>w_1</math> и <math>w_2</math> {{- --}} веса на ребрах, соединяющих входные вершины с выходной. Следовательно, ошибка зависит от весов, входящих в нейрон. И именно это нужно менять в процессе обучения. Распространенный алгоритм для поиска набора весов, минимизирующего ошибку это градиентный спуск. Метод обратного распространения ошибки используется для вычисления самого "крутого" направления для спуска.
==Дифференцирование для однослойной сети==
Метод градиентного спуска включает в себя вычисление дифференциала квадратичной функции ошибки относительно весов сети. Обычно это делается с помощью метода обратного распространения ошибки. Предположим, что выходной нейрон один,<ref group="заметка">Их может быть несколько, тогда ошибка это квадратичная норма вектора разницы.</ref> тогда квадратичная функция ошибки:
: <math>E = \tfrac 1 2 (t - y)^2,</math> где <math>E</math> {{- --}} квадратичная ошибка, <math>t</math> {{--- }} требуемый ответ для обучающего образца, <math>y</math> {{--- }} действительный ответ сети.
Множитель <math>\textstyle\frac{1}{2}</math> добавлен чтобы предотвратить возникновение экспоненты во время дифференцирования. Позже, выражение будет умножено на произвольную величину скорости обучения, так что не имеет значения на какую константу мы умножим сейчас.
Входные значения <math>\text{net}_j</math> нейрона это взвешенная сумма выходных значений <math>o_k</math> предыдущих нейронов. Если нейрон в первом слове после входного слоя, то <math>o_k</math> входного слоя это просто входные значения <math>x_k</math> сети. Количество входных значений нейрона <math>n</math>. Переменная <math>w_{kj}</math> обозначает вес на ребре между нейроном <math>k</math> предыдущего слоя и нейроном <math>j</math> текущего слоя.
Функция активации <math>\varphi</math> нелинейна и дифференцируема. Одна из распространенных функций активации {{- --}} сигмоида:
: <math> \varphi(z) = \frac 1 {1+e^{-z}}</math>
==Заметки==
<references group="заметка" />
 
==См. также==
*[[:Нейронные_сети,_перцептрон|Нейронные_сети,_перцептрон]]
*[[:Стохастический градиентный спуск|Стохастический градиентный спуск]]
 
== Источники информации ==
* https://en.wikipedia.org/wiki/Backpropagation
* https://ru.wikipedia.org/wiki/Метод_обратного_распространения_ошибки
 
[[Категория: Машинное обучение]]
[[Категория: Нейронные сети]]
32
правки

Навигация