Изменения

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

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

1122 байта добавлено, 19:32, 4 сентября 2022
м
rollbackEdits.php mass rollback
== Алгоритм ==
'''Алгоритм:'''
'''''BackPropagation''''' <math>(\eta, \alpha, \{x_i^d, t^d\}_{i=1,d=1}^{n,m}, \textrm{steps})</math>
# Инициализировать <math>\{w_{ij}\}_{i,j} </math> маленькими случайными значениями, <math>\{\Delta w_{ij}\}_{i,j} = 0</math>
# Повторить <math>steps</math> раз:
#: .Для всех d от 1 до m:
## Подать <math>\{x_i^d\}</math> на вход сети и подсчитать выходы <math>o_i</math> каждого узла.
## Для всех <math>k \in Outputs</math>
##: <math>\delta _k = o_k(1 - o_k)(t_k - o_k)</math>.
## Для каждого уровня l, начиная с предпоследнего:
##: Для каждого узла j уровня l вычислить
##: <math>\delta _j = o_j(1 - o_j)\sum_{k \in Children(j)} \delta _k w_{j,k}</math>.
## Для каждого ребра сети {i, j}
##: <math>\Delta w_{i,j}(n) = \alpha \Delta w_{i,j}(n-1) + ( 1 - \alpha ) \eta \delta _j o_{i}</math>.
##: <math>w_{i,j}(n) = w_{i,j}(n-1) + \Delta w_{i,j}(n)</math>.
# Выдать значения <math>w_{ij}</math>.
где * <math>\eta</math> - скорость обучения* <math>\alpha</math> — - коэффициент инерциальности для сглаживания резких скачков при перемещении по поверхности целевой функции* <math>\{x_i^d, t^d\}_{i=1,d=1}^{n,m}</math> {{---}} обучающее множество* <math>\textrm{steps}</math> {{---}} количество повторений* <math>network(x)</math> {{---}} функция, подающая x на вход сети и возвращающая выходные значения всех ее узлов* <math>layers</math> {{---}} количество слоев в сети* <math>layer_i</math> {{---}} множество нейронов в слое i* <math>output</math> {{---}} множество нейронов в выходном слое
'''fun''' BackPropagation<math>(\eta, \alpha, \{x_i^d, t^d\}_{i=1,d=1}^{n,m}, \textrm{steps})</math>:
'''init''' <math>\{w_{ij}\}_{i,j} </math>
'''repeat''' <math>\textrm{steps}</math>:
'''for''' <math>d</math> = <math>1</math> to <math>m</math>:
<math>o</math> = <math>network(\{x_i^d\}) </math>
'''for''' <math>k \in output</math>:
<math>\delta _k</math> = <math>\sigma'(o_k)(t_k - o_k)</math>
'''for''' <math>i</math> = <math>layers - 1</math> to <math>1</math>:
'''for''' <math>j \in layer_i</math>:
<math>\delta _j</math> = <math>\sigma'(o_j)\sum_{k \in layer_{i + 1}} \delta _k w_{j,k}</math>
'''for''' <math>\forall w_{i,j}</math>:
<math>\Delta w_{i,j}^{n}</math> = <math>\alpha \Delta w_{i,j}^{n-1} + ( 1 - \alpha ) \eta \delta _j o_{i}</math>
<math>w_{i,j}^{n}</math> = <math>w_{i,j}^{n-1} + \Delta w_{i,j}^{n}</math>
'''return''' <math>w_{ij}</math>
== Недостатки алгоритма ==
==Примечания==
<references *[https:/>/habr.com/ru/post/198268/ Алгоритм обучения многослойной нейронной сети методом обратного распространения ошибки]*[https://frnsys.com/ai_notes/machine_learning/neural_nets.html Neural Nets]*[http://cs231n.stanford.edu/slides/2018/cs231n_2018_lecture04.pdf Understanding backpropagation]
==См. также==
*[[:Нейронные_сети,_перцептрон|Нейронные_сетиНейронные сети,_перцептронперцептрон]]
*[[:Стохастический градиентный спуск|Стохастический градиентный спуск]]
*[[:Настройка_глубокой_сети|Настройка глубокой сети]]
*[[:Практики_реализации_нейронных_сетей|Практики реализации нейронных сетей]]
== Источники информации ==
1632
правки

Навигация