Нейрокомпьютерные системы



     Мебельная Кромка из натурального шпона от производителя. | лучшая йогуртница |          

Алгоритм обратного распространения ошибки


Возьмем двухслойную сеть (рис. 1) (входной слой не рассматривается). Веса нейронов первого (скрытого) слоя пометим верхним индексом (1), а выходного слоя - верхним индексом (2). Выходные сигналы скрытого слоя обозначим

v_j, j=1,2,\ldots,K
, а выходного слоя -
y_j, j=1,2, \ldots, M
. Будем считать, что функция активации нейронов задана в сигмоидальной униполярной или биполярной форме. Для упрощения описания будем использовать расширенное обозначение входного вектора сети в виде
x=[x_0,x_1, \ldots, x_N]^T
, где
x_0=1
соответствует порогу. С вектором
x
связаны два выходных вектора сети: вектор фактических выходных сигналов
y=[y_0,y_1, \ldots, y_M]^T
и вектор ожидаемых выходных сигналов
d=[d_0,d_1, \ldots, d_M]^T
.

Цель обучения состоит в подборе таких значений весов

w_{ij}^{(1)}
и
w_{ij}^{(2)}
для всех слоев сети, чтобы при заданном входном векторе
x
получить на выходе значения сигналов
y_i
, которые с требуемой точностью будут совпадать с ожидаемыми значениями
d_i
для
i=1,2, \ldots, M
. Выходной сигнал
i
-го нейрона скрытого слоя описывается функцией

 v_i=f(\sum_{j=0}^{N} w_{ij}^{(1)}x_j).

Пример двухслойной нейронной сети

Рис. 1.  Пример двухслойной нейронной сети

В выходном слое

k
-й нейрон вырабатывает выходной сигнал

 y_k = f(\sum_{i=0}^{K} w_{ki}^{(2)}v_i)=f(\sum_{i=0}^{K} w_{ki}^{(2)}f(\sum_{j=0}^{N} w_{ij}^{(1)}x_j))

Из формулы следует, что на значение выходного сигнала влияют веса обоих слоев, тогда как сигналы, вырабатываемые в скрытом слое, не зависят от весов выходного слоя.

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

p
примеров, целевая функция имеет вид

 E(w) = [ \sum_{j=1}^p \sum_{k=1}^M (y_k^{(j)} - d_k^{(j)})^2]/2

Минимизация целевой функции достигается уточнением вектора весов (обучением) по формуле

 w(t+1) = w(t) + \Delta w,

где

 \begin{equation} \Delta w = \alpha s(w), \end{equation}

(1)

\alpha
- коэффициент обучения, а
s(w)
- направление в пространстве весов
w
. Выбор этого направления обычно основан на определении градиента целевой функции относительно весов всех слоев сети. Для весов выходного слоя задача имеет очевидное решение. Для других слоев используется алгоритм обратного распространения ошибки. Рассмотрим его на примере двухслойной сети. В этом случае при
p=1
целевая функция определяется выражением

 \begin{equation} E(w) = \sum_{k=1}^M[f( \sum_{i=0}^K w_{ki}^{(2)}v_i)- d_k]^2/2 = \sum_{k=1}^M[f( \sum_{i=0}^K w_{ki}^{(2)} f( \sum_{j=0}^N w_{ij}^{(1)}x_j))- d_k]^2/2 \end{equation}

(2)

Компоненты градиента рассчитываются дифференцированием зависимости (2).


Содержание  Назад  Вперед