Изменения

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

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

1686 байт добавлено, 22:20, 8 апреля 2019
Алгоритм
== Алгоритм ==
Пример реализации алгоритма * <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 на Pythonвход сети и возвращающая выходные значения всех ее узлов* <math>layers</math> {{---}} количество слоев в сети* <math>layer_i</math> {{---}} множество нейронов в слое i* <math>output</math> {{---}} множество нейронов в выходном слое
  def backward_propagate_error'''fun''' BackPropagation<math>(network\eta, \alpha, \{x_i^d, t^d\}_{i=1,d=1}^{n,m}, expected\textrm{steps})</math>: '''init''' <math>\{w_{ij}\}_{i,j} </math> '''repeat''' <math>\textrm{steps}</math>: '''for i in reversed(range(len(network)))''' <math>d</math> = <math>1</math> to <math>m</math>: layer <math>o</math> = <math>network[i](\{x_i^d\}) </math> '''for''' <math>k \in output</math>: errors <math>\delta _k</math> = list<math>\sigma'(o_k)(t_k - o_k)</math> if '''for''' <math>i !</math> = len(network)<math>layers -1</math> to <math>1</math>: '''for ''' <math>j \in range(len(layer))layer_i</math>: error <math>\delta _j</math> = 0.0 for neuron <math>\sigma'(o_j)\sum_{k \in network[layer_{i + 1]:}} \delta _k w_{j,k}</math> error += (neuron[ '''weightsfor'][j] * neuron['delta']) errors.append(error) else<math>\forall w_{i,j}</math>: for <math>\Delta w_{i,j in range(len(layer)): neuron }^{n}</math> = layer[<math>\alpha \Delta w_{i,j] errors.append}^{n-1} + (expected[j] 1 - neuron['output']\alpha )\eta \delta _j o_{i}</math> for <math>w_{i,j in range(len(layer)): neuron }^{n}</math> = layer[<math>w_{i,j]}^{n-1} + \Delta w_{i,j}^{n}</math> neuron[ 'delta'] = errors[j] * transfer_derivative(neuron['outputreturn'''])<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]
==См. также==
*[[:Нейронные_сети,_перцептрон|Нейронные_сетиНейронные сети,_перцептронперцептрон]]
*[[:Стохастический градиентный спуск|Стохастический градиентный спуск]]
*[[:Настройка_глубокой_сети|Настройка глубокой сети]]
*[[:Практики_реализации_нейронных_сетей|Практики реализации нейронных сетей]]
== Источники информации ==
32
правки

Навигация