Опубликован: 13.09.2006 | Уровень: специалист | Доступ: платный | ВУЗ: Новосибирский Государственный Университет
Лекция 6:

Многослойные сети сигмоидального типа

< Лекция 5 || Лекция 6: 1234 || Лекция 7 >

Компоненты градиента рассчитываются дифференцированием зависимости (2). В первую очередь определяются веса нейронов выходного слоя. Для выходных весов получаем:

\partial E/ \partial w_{ij}^{(2)} = (y_i - d_i)[df(u_i^{(2)})/du_i^{(2)}]v_j,

где

u_i^{(2)} = \sum_{j=0}^K w_{ij}^{(2)}v_j

Если ввести обозначение

\partial_i^{(2)} = (y_i - d_i)[df(u_i^{(2)})/du_i^{(2)}],

то соответствующую компоненту градиента относительно весов выходного слоя можно представить в виде

\begin{equation}
  \partial E/ \partial w_{ij}^{(2)} = \partial_i^{(2)}v_j.
\end{equation} ( 3)

Компоненты градиента относительно нейронов скрытого слоя определяются так же, но описываются более сложной зависимостью, следующей из существования функции, которая задана в виде

\partial E/ \partial w_{ij}^{(1)} =  \sum_{k=1}^M (y_k -
d_k)[dy_k/dv_i][dv_i/dw_{ij}^{(1)}].

Отсюда получаем

\partial E/ \partial w_{ij}^{(1)} =
  \sum_{k=1}^M (y_k - d_k)[df(u_k^{(2)}) / du_k^{(2)}] w_{ki}^{(2)}
[df(u_i^{(1)}) / du_i^{(1)}] x_j,

Если ввести обозначение

\partial_i^{(1)} =  \sum_{k=1}^M (y_k -
d_k)[df(u_k^{(2)})/du_k^{(2)}]w_{ki}^{(2)}[df(u_i^{(1)})/du_i^{(1)}],

то получим выражение, определяющее компоненты градиента относительно весов нейронов входного слоя в виде

\begin{equation}
  \partial E / w_{ij}^{(1)} =  \partial_i^{(1)} x_j.
\end{equation} ( 4)

В обоих случаях (формулы (3) и (4)) описания градиента имеют аналогичную структуру и представляются произведением двух сигналов: первый соответствует начальному узлу данной взвешенной связи, а второй — величине погрешности, перенесенной на узел, с которым эта связь установлена. Определение вектора градиента важно для последующего процесса уточнения весов. В классическом алгоритме обратного распространения ошибки вектор s(w) в выражении (1) задает направление антиградиента (метод наискорейшего спуска), поэтому

\Delta w = -\alpha\nabla E(w).

В соответствии с алгоритмом обратного распространения ошибки в каждом цикле обучения выделяются следующие этапы:

1. Анализ нейронной сети в прямом направлении передачи информации при генерации входных сигналов, составляющих очередной вектор x. В результате такого анализа рассчитываются значения выходных сигналов нейронов скрытых слоев и выходного слоя, а также соответствующие производные df(u_i^{(1)})/du_i^{(1)}, df(u_i^{(2)})/du_i^{(2)}, \ldots,
df(u_i^{(m)})/du_i^{(m)} функций активации каждого слоя ( m - количество слоев сети).

2. Создание сети обратного распространения ошибок путем изменения направлений передачи сигналов на обратные, замена функций активации их производными и подача на бывший выход (а в настоящий момент - вход) сети сигнала в виде разности между фактическим и ожидаемым значением. Для определенной таким образом сети необходимо рассчитать значения требуемых обратных разностей.

Сеть обратного распространения ошибки

Рис. 2. Сеть обратного распространения ошибки

3. Уточнение весов (обучение сети) производится по предложенным выше формулам для оригинальной сети и для сети обратного распространения ошибки.

4. Описанный процесс следует повторить для всех обучающих примеров задачника, продолжая его вплоть до выполнения условия остановки алгоритма. Действие алгоритма завершается в момент, когда норма градиента упадет ниже априори заданного значения, характеризующего точность процесса обучения.

Руководствуясь рис. 2, можно легко определить все компоненты градиента целевой функции, т.е. все частные производные функции E по весам сети. Для этого, двигаясь от входов сети (бывших выходов), нужно перемножить все встречающиеся на пути величины (кроме весов w_{ij}^{(k)}, для которых рассчитывается частная производная \partial E / w_{ij}^{(k)} ). Кроме того, там, где дуги сходятся к одной вершине, нужно выполнить сложение произведений, полученных на этих дугах.

Так, например, чтобы посчитать производную \partial E/
w_{12}^{(2)}, нужно перемножить величины y_2 - d_2, df(u_2^{(2)}) / du_2^{(2)},
v_1, а для вычисления производной \partial E / w_{21}^{(1)} нужно посчитать произведения

\pi_1=(y_1 - d_1)\times[\partial f(u_1^{(2)})
/\partial
u_1^{(2)}] w_{12}^{(2)}

и

\pi_2=(y_2 - d_2) [\partial
f(u_2^{(2)}) /
\partial u_2^{(2)}] w_{22}^{(2)}

и затем сложить эти произведения и результат умножить на \partial f(u_2^{(2)}) / \partial u_2^{(2)} и x_1.

Таким образом, получим

\partial E / \partial w_{12}^{(1)}=(\pi_1+\pi_2)[\partial f(u_2^{(1)}) /
\partial u_2^{(1)}] x_1
 =\\
=[(y_1-d_1)[\partial f(u_1^{(2)})/\partial u_1^{(2)}]w_{12}^{(2)} + (y_2
-d_2)
[\partial f(u_2^{(2)})/\partial u_2^{(2)})]w_{22}^{(2)}]\times\\
\times [ \partial f(u_2^{(1)})/\partial u_2^{(1)}] x_1 = x_1
\sum^2_{k=1} (y_k-d_k)[\partial f(u_k^{(2)})/
\partial u_k^{(2)}]w_{k2}^{(2)} [\partial f(u_2^{(1)})/ \partial
u_2^{(1)}].
< Лекция 5 || Лекция 6: 1234 || Лекция 7 >
Ирина Ткаченко
Ирина Ткаченко
Россия, Москва
Николай Ткаченко
Николай Ткаченко
Россия