Нелинейный классификатор. Многослойный персептрон
5.4.2.1 Алгоритм обратной волны. Суть – аппроксимация непрерывной дифференцируемой функцией за счет замены функции активации "сигмовидной" функцией:



5.4.2.2. Метод градиентного спуска решения задачи минимизации.
Пусть .
Тогда метод градиентного спуска выглядит так:



5.4.2.3. Вычисление градиента. Аргумент функции активации -ого
нейрона
-ого слоя


Во входном слое, при .
В выходном слое, при
.






Рассмотрим скрытый слой . Имеется зависимость:
![\begin{gathered}
V_k^r=V_k^r(V_j^{r-1}) \\
\frac{\partial\varepsilon(i)}{\partial V_j^{r-1}(i)}=\sum_{k-1}^{k_r}
\frac{\partial\varepsilon(i)}{\partial V_k^r(i)}\cdot
\frac{\partial V_k^r(i)}{\partial V_j^{r-1}(i)} \\
\frac{\partial V_k^r(i)}{\partial V_j^{r-1}(i)}=
\frac{\partial}{\partial V_j^{r-1}(i)}
\left[\sum_{m=0}^{k_{r-1}}W_{km}^r y_m^{r-1}(i)\right],
\end{gathered}](/sites/default/files/tex_cache/247a62903b3c2a287f5b967f7d009809.png)

![\begin{gathered}
\frac{\partial V_k^r(i)}{\partial V_j^{r-1}(i)}=W_{kj}^r
\frac{\partial y_j^{r-1}(i)}{\partial V_j^{r-1}(i)}=
W_{kj}^r f'(V_j^{r-1}(i)) \\
\frac{\partial\varepsilon(i)}{\partial V_j^{r-1}(i)}=
\left[\sum_{k-1}^{k_r}\frac{\partial\varepsilon(i)}{\partial V_k^r(i)}W_{kj}^r\right]
\cdot f'(V_j^{r-1}(i))
\end{gathered}](/sites/default/files/tex_cache/5c971085b92c19ead2490d347506173c.png)
5.4.2.4. Описание алгоритма.
0. Начальное приближение. Случайно выбираются веса небольших значений: .
1. Прямой проход. Для каждого вектора прецедента ,
вычисляются все
.
Вычисляется текущее значение ценовой функции
:

2. Обратный проход. Для каждого значения
и
вычисляется
.
Затем последовательно необходимо вычислить
для всех
и
:

3. Пересчет весов.
Для всех и
,
где
.
- Останов алгоритма может происходить по двум критериям: либо
стала меньше порога, либо градиент стал очень мал.
- От выбора
зависит скорость сходимости. Если
мало, то скорость сходимости также мала. Если
велико, то и скорость сходимости высока, но при такой скорости можно пропустить
.
- В силу многоэкстремальности существует возможность спустить в локальный минимум. Если данный минимум по каким-то причинам не подходит, надо начинать алгоритм с другой случайной точки.
- Данный алгоритм быстрее, чем алгоритм с обучением.