Россия |
Процедура обратного распространения (описание алгоритма)
Подстройка весов
скрытого слоя. Рассмотрим один нейрон в
скрытом слое, предшествующем выходному слою. При проходе вперед этот
нейрон передает свой выходной сигнал нейронам в выходном слое через
соединяющие их веса. Во время обучения эти веса функционируют в
обратном порядке, пропуская величину от выходного слоя
назад к
скрытому слою. Каждый из этих весов умножается на величину
нейрона, к которому он присоединен в выходном слое. Величина
,
необходимая для нейрона скрытого слоя, получается суммированием всех
таких произведений и умножением на производную сжимающей функции
(см. рис. 4.4):
![]() |
( 7) |
Когда значение получено, веса, питающие первый скрытый
уровень,
могут быть подкорректированы с помощью уравнений (5) и (6), где индексы
модифицируются в соответствии со слоем.
Для каждого нейрона в данном скрытом слое должно быть вычислено и подстроены все веса, ассоциированные с этим слоем. Этот
процесс
повторяется слой за слоем по направлению к входу, пока все веса не будут
подкорректированы.
С помощью векторных обозначений операция обратного распространения ошибки
может быть записана значительно компактнее. Обозначим множество величин выходного слоя через
и множество весов
выходного слоя как массив
Чтобы получить
,
-вектор выходного слоя, достаточно следующих двух операций:
- Умножить о-вектор выходного слоя
на транспонированную матрицу весов
, соединяющую скрытый уровень с выходным уровнем.
- Умножить каждую компоненту полученного произведения на производную сжимающей функции соответствующего нейрона в скрытом слое.
Добавление
нейронного смещения. Во многих случаях желательно наделять каждый
нейрон обучаемым смещением. Это позволяет сдвигать начало отсчета
логистической функции, давая эффект, аналогичный
подстройке порога персептронного нейрона, и приводит к ускорению процесса
обучения. Такая возможность может быть легко введена в обучающий
алгоритм с помощью добавляемого к каждому нейрону веса, который присоединен к Этот вес обучается так же, как и все остальные веса, за
исключением того, что подаваемый на него сигнал всегда равен
,
а не выходу нейрона предыдущего слоя.
Импульс. Существует метод ускорения обучения для алгоритма обратного распространения, увеличивающий также устойчивость процесса. Этот метод, названный импульсом, заключается в добавлении к коррекции веса члена, пропорционального величине предыдущего изменения веса. Как только происходит коррекция, она "запоминается" и служит для модификации всех последующих коррекций. Уравнения коррекции модифицируются следующим образом:
![\begin{gathered}
\Delta w_{pq,k}(n+1)=\eta\delta_{q,k} OUT_{p,j}+\alpha\Delta
w_{pq,k}(n),\\
w_{pq,k}(n+1)=w_{pq,k}(n)+\Delta w_{pq,k}(n+1),
\end{gathered}](/sites/default/files/tex_cache/52caab298d1f4a8e291d02217472517e.png)
где — коэффициент импульса, который обычно
устанавливается около 0,9.
Используя метод импульса, сеть стремится идти по дну "узких оврагов" поверхности ошибки (если таковые имеются), а не двигаться "от склона к склону". Этот метод, по-видимому, хорошо работает на некоторых задачах, но дает слабый или даже отрицательный эффект на других.
Существует сходный метод, основанный на экспоненциальном сглаживании, который может иметь преимущество в ряде приложений.
![\Delta w_{pq,k}(n+1)=(1-\alpha)\delta_{q,k}OUT_{p,j}+\alpha\Delta w_{pq,k}(n).](/sites/default/files/tex_cache/e3a80dd64ca91af2c4a0e268845e45a0.png)
Затем вычисляется изменение веса
![w_{pq,k}(n+1)=w_{pq,k}(n)+\eta\Delta w_{pq,k}(n+1),](/sites/default/files/tex_cache/9c9b6baff051c374692a22154f8a6238.png)
где — коэффициент сглаживания, варьируемый в диапазоне
от 0,0
до 1,0. Если
равен 1,0, то новая коррекция игнорируется и
повторяется предыдущая. В области между 0 и 1 коррекция веса сглаживается
величиной, пропорциональной
По-прежнему,
является коэффициентом скорости обучения, служащим для
управления средней величиной изменения веса.