Нелинейный классификатор. Многослойный персептрон
5.4. Построение нейронной сети
Существует два подхода к задаче построения нейронной сети-классификатора. Первый подход заключается в построении сети, варьируя архитектуру. Данный метод основан на точной классификации прецедентов. Второй подход состоит в подборке параметров (весов и порогов) для сети с заданной архитектурой.
5.4.1 Алгоритм, основанный на точной классификации множества прецедентов. Опишем общую идею метода. За основу берется один нейрон. Далее наращиваем нейрон, пока не получим правильную классификацию всех прецедентов.
Рассмотрим более подробно алгоритм. Начинаем с одного нейрона , называемого мастером. После его тренировки получаем разделение
множества
на
и
. Если
содержит вектора из двух классов, то
вводим новый узел
, называемый последователем.
Таким образом, на первом слое нейронов находится один мастер и несколько последователей. Никакие вектора из разных классов не имеют одинакового выхода из первого слоя.
![X_1=\{y:y=f_1(x),x\in X\},](/sites/default/files/tex_cache/98f7e7901415c847267f68c57b4d3eed.png)
![f_1](/sites/default/files/tex_cache/c354bdd39692a0ba3f80f7c733f4e0eb.png)
Аналогичным образом строим второй слой, третий слой и т.д.
Утверждение. При правильном выборе весов каждый очередной слой правильно классифицирует все вектора, которые правильно классифицировал мастер и еще хотя бы один вектор.
Таким образом, получаем архитектуру, имеющую конечное число слоев, правильно классифицирующие все прецеденты.
Нейроны первого слоя – это биссекторы, разделяющие пары. Второй
слой – нейроны , определяющие полиэдры. Третий слой – нейроны
,
определяющие классы.
Основным недостатком данного метода является слишком большое количество нейронов.
5.4.2. Алгоритм, основанный на подборе весов для сети с заданной архитектурой. Идея данного метода состоит в том, чтобы ввести критерий в виде функции стоимости, которую необходимо минимизировать.
Пусть
-
– число слоев в сети;
-
– число нейронов в слое
, где
;
-
– число выходных нейронов;
-
– размер входа;
-
– входной вектор признаков;
-
a – выходной вектор, который должен быть правильно классифицирован.
Текущем состоянии сеть при обучении дает результат
не совпадающий с
. Обозначим:
![J=\sum_{i=1}^N\varepsilon(i)](/sites/default/files/tex_cache/0931fe6b7dda688891cc2ba3d835fc63.png)
![N](/sites/default/files/tex_cache/8d9c307cb7f3c4a32822a51922d1ceaa.png)
![\varepsilon(i)](/sites/default/files/tex_cache/dc977c50c9f93fd37b3b57811b0a2b6c.png)
![i](/sites/default/files/tex_cache/865c0c0b4ab0e063e5caa3387c1a8741.png)
![\varepsilon(i)=\frac12\sum_{m=1}^{k_L}e_m^2(i)=\frac12\sum_{m=1}^{k_L}(y_m(i)-\widehat{y}_m(i))^2,](/sites/default/files/tex_cache/71d0ef186eb546fee82143886f73daee.png)
![i=1,2,\ldots,N](/sites/default/files/tex_cache/e0906de9adfb9c44af703d9e1f7c9455.png)
![J](/sites/default/files/tex_cache/ff44570aca8241914870afbc310cdb85.png)
![J(W)\rightarrow\min,](/sites/default/files/tex_cache/25fd4f67f3ee9080935e2d1c3951ab21.png)
![W](/sites/default/files/tex_cache/61e9c06ea9a85a5088a499df6458d276.png)
Пусть – выход
-ого нейрона
-ого слоя;
– весовой вектор (включая порог)
-ого нейрона в
-ом слое,
т.е.
, где
а – число
нейронов в
-ом слое. Таким образом,
– разрывная функция
переменных, где
![M=\sum_{r=1}^L k_{r-1}k_r](/sites/default/files/tex_cache/729d23ecf79e8907a819fa3ec0755b00.png)
![J](/sites/default/files/tex_cache/ff44570aca8241914870afbc310cdb85.png)
![f](/sites/default/files/tex_cache/8fa14cdd754f91cc6554c9e71929cce7.png)
![f(x)=
\left\{
\begin{aligned}
& 1, x>0\\
& 0, x<0
\end{aligned}
\right.](/sites/default/files/tex_cache/d64817cffd5510a325a66ef16abe037b.png)