Рассмотрим булеву функцию $$xor(x_1,x_2)$$ как некий классификатор. Вектор признаков имеет вид $$x=(x_1,x_2)$$. В данном случае имеется четыре прецедента и два класса. Напомним таблицу значений функции $$xor(x_1,x_2)$$.
| № прецедента | $$x_1$$ | $$x_2$$ | $$xor(x_1,x_2)$$ | Класс |
| 1 | 0 | 0 | 0 | $$\Omega_1$$ |
| 2 | 0 | 1 | 1 | $$\Omega_0$$ |
| 3 | 1 | 0 | 1 | $$\Omega_0$$ |
| 4 | 1 | 1 | 0 | $$\Omega_1$$ |

Как видно из рисунка тут нельзя построить разделяющую прямую,
поскольку
Рассмотрим две вспомогательные булевы функции $$or(x_1,x_2)$$ и $$and(x_1,x_2)$$. Напомним таблицы значений этих функций:
| № прецедента | $$x_1$$ | $$x_2$$ | $$and(x_1,x_2)$$ | $$or(x_1,x_2)$$ |
| 1 | 0 | 0 | 0 | 0 |
| 2 | 0 | 1 | 0 | 1 |
| 3 | 1 | 0 | 0 | 1 |
| 4 | 1 | 1 | 1 | 1 |
5.1.1. Построение линейного классификатора функции $$or(x_1,x_2)$$. Очевидно, что разделяющей прямой является линия:$$x_1+x_2=\frac12$$

Соответствующий персептрон имеет вид:

5.1.2. Построение линейного классификатора функции $$and(x_1,x_2)$$. Здесь также можно построить разделяющую прямую:$$x_1+x_2=\frac32$$

Соответствующий персептрон имеет вид:

5.1.3. Построение нелинейного классификатора функции $$xor(x_1,x_2)$$. Пусть на выходе персептрона для функции $$or(x_1,x_2)$$ - $$y_1$$, а на выходе персептрона для функции $$and(x_1,x_2)$$ – $$y_2$$. Посмотрим, какие значения принимает вектор $$(y_1,y_2)$$.
| Исходные вектора | OR | AND | XOR | ||
| $$x_1$$ | $$x_2$$ | $$y_1$$ | $$y_2$$ | Класс | |
| 0 | 0 | 0 | 0 | 1 | $$\Omega_1$$ |
| 0 | 1 | 1 | 0 | 0 | $$\Omega_0$$ |
| 1 | 0 | 1 | 0 | 0 | $$\Omega_0$$ |
| 1 | 1 | 1 | 1 | 1 | $$\Omega_1$$ |

Обозначив классы как показано в таблице, получаем разделяющую прямую, изображенную на рисунке и соответствующий линейный классификатор:$$y_1-y_2=\frac12$$
Учитывая вышеизложенное, получаем нелинейный классификатор, который задается через два линейных классификатора, как показано на рисунке слева:$$x_1+x_2=\frac12 \text{ и } x_1+x_2=\frac32$$
Соответствующий двухслойный персептрон изображен на рисунке справа.


Рассмотрим общий случай двухслойного персептрона. Пусть $$x\in R^l$$ и в
скрытом слое $$p$$ нейронов. Скрытый слой нейронов отображает $$R^l$$ в $$H_p\in R^p$$, где $$H_p=\{(y_1,y_2,\ldots,y_p)\in R_p,\; y_i\in[0,1],\;1\leq i\leq p\}$$
– гиперкуб. Другими словами, каждый нейрон задает гиперплоскость,
которая разделяет пространство пополам, т.е. скрытый слой нейронов
делит пространство $$R_l$$ на

Пример. Рассмотрим нейронную сеть с двумя входами $$(l=2)$$ и тремя нейронами $$(k=3)$$. Тогда пространство $$R^l=R^2$$. Пусть первый слой нейронов задает разбиение признакового пространства (плоскости) как показано на рисунке. В каждом многоугольнике (возможно, бесконечном) все точки соответствуют одному классу (A или B). При этом в каждом многоугольнике знаки линейных функционалов $$g_1, g_2, g_3$$ остаются постоянными. Следовательно, с каждым многоугольником связано определенное значение вектора выходов нейронов первого слоя, причем для разных многоугольников эти значения различны. Поскольку значениями компонент этого вектора являются 0 либо 1, получаем, что каждому многоугольнику соответствует некоторая вершина единичного куба $$H^3$$ в пространстве $$R^3$$. При этом каждой вершине куба сопоставлен один класс A или B. На рисунке изображен единичный куб $$H^3$$, у которого закрашенные вершины относятся к классу $$A$$, а не закрашенные – к классу $$B$$. Задача нейрона второго слоя состоит в разделении вершин этого куба. Нетрудно видеть, что в нашем примере плоскость $$y_1+y_2-y_3=\frac12$$ является разделяющей для куба $$H^3$$. Она и задает параметры нейрона второго слоя. Заметим, что вершина $$(1,0,1)$$ в кубе не загружена, т.е. в нее не отображается ни один многоугольник.
Внешний (

Утверждение. Трехслойная нейронная сеть позволяет описать любые разделения объединений полиэдров.
Доказательство. Рассмотрим первый слой из $$p$$ нейронов. На
первом формируются гиперплоскости, т.к. строится полиэдральное
разбиение пространства гиперплоскостями. Очевидно, что для заданного
конечного множества прецедентов всегда можно построить разбиение
пространства признаков на
Каждый нейрон второго слоя описывает сечение полученного
гиперкуба. Выберем в качестве таких сечений гиперплоскости, отсекающие
ровно одну вершину гиперкуба. Поскольку число вершин в гиперкубе равно $$2^p$$, число нейронов второго слоя также равно $$2^p$$. Таким образом, выход
нейронов второго слоя имеет следующий вид. Это вектор размерности $$2^p$$,
у которого всегда лишь одно значение равно 1, а остальные равны нулю.
Назовем нейроны второго слоя нейронами класса A или B в соответствии с
классом вершины гиперкуба, которую отсекает этот нейрон. Теперь
становится понятно, каким образом строить третий слой нейронной сети.
Нужно в выходном нейроне третьего слоя реализовать оператор
логического сложения выходов нейронов второго слоя, относящихся к
классу A. Таким образом разделяющая гиперплоскость
Таким образом, можно построить трехслойный персептрон следующим
образом. Нейроны первого слоя разделяют
Рассмотрим, как строится уравнение гиперплоскости, отсекающей вершину $$p$$ -мерного единичного гиперкуба. Диагональ куба имеет длину $$\sqrt{p}$$. Длины диагоналей $$(p-1)$$ -мерных единичных гиперкубов, являющихся боковыми гранями $$p$$ -мерного куба, равны $$\sqrt{p-1}$$. Центр куба находится в точке $$\left(\frac12,\frac12,\ldots,\frac12\right)$$. Расстояние от центра куба до любой вершины равно $$\frac{\sqrt{p}}{2}$$. Плоскость проводим перпендикулярно главной диагонали куба, инцидентной вершине, которую надо отсечь, так, чтобы расстояние от этой вершины до секущей плоскости было равно $$\frac{\sqrt{p}-\sqrt{p-1}}{2}$$, причем данная точка должна находиться на диагонали куба, проведенной к отсекаемой вершине.
Пусть $$V$$ – отделяемая вершина, $$\overline{V}$$ – диагонально противоположная
вершина ( $$\overline{V}=E-V$$, где $$E$$ обозначает $$p$$ -мерный вектор, состоящий из единиц).
Следовательно, $$W=V-\overline{V}$$ –
Существует два подхода к задаче построения нейронной сети-классификатора. Первый подход заключается в построении сети, варьируя архитектуру. Данный метод основан на точной классификации прецедентов. Второй подход состоит в подборке параметров (весов и порогов) для сети с заданной архитектурой.
5.4.1 Алгоритм, основанный на точной классификации множества прецедентов. Опишем общую идею метода. За основу берется один нейрон. Далее наращиваем нейрон, пока не получим правильную классификацию всех прецедентов.


Рассмотрим более подробно алгоритм. Начинаем с одного нейрона $$n(X)$$, называемого мастером. После его тренировки получаем разделение множества $$X$$ на $$X^+$$ и $$X^-$$. Если $$X^+$$ содержит вектора из двух классов, то вводим новый узел $$n(X^+)$$, называемый последователем.
Таким образом, на первом слое нейронов находится один мастер и несколько последователей. Никакие вектора из разных классов не имеют одинакового выхода из первого слоя.$$X_1=\{y:y=f_1(x),x\in X\},$$ где $$f_1$$ – отображение, задаваемое первым слоем.
Аналогичным образом строим второй слой, третий слой и т.д.
Утверждение. При правильном выборе весов каждый очередной слой правильно классифицирует все вектора, которые правильно классифицировал мастер и еще хотя бы один вектор.
Таким образом, получаем архитектуру, имеющую конечное число слоев, правильно классифицирующие все прецеденты.
Нейроны первого слоя – это биссекторы, разделяющие пары. Второй
слой – нейроны $$and$$, определяющие
Основным недостатком данного метода является слишком большое количество нейронов.
5.4.2. Алгоритм, основанный на подборе весов для сети с заданной архитектурой. Идея данного метода состоит в том, чтобы ввести критерий в виде функции стоимости, которую необходимо минимизировать.
Пусть
Текущем состоянии сеть при обучении дает результат $$\widehat{y}(i)$$ не совпадающий с $$y(i)$$. Обозначим:$$J=\sum_{i=1}^N\varepsilon(i)$$ где $$N$$ – число прецедентов; $$\varepsilon(i)$$ – ошибка на $$i$$ -ом прецеденте;$$\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,$$ где $$i=1,2,\ldots,N$$. $$J$$ – функция всех синоптических весов и порогов. Таким образом, целью обучения является решение оптимизационной задачи:$$J(W)\rightarrow\min,$$ где $$W$$ – множество синоптических весов.

Пусть $$y_k^{r-1}$$ – выход $$k$$ -ого нейрона $$(r-1)$$ -ого слоя; $$W-j^r$$ – весовой вектор (включая порог) $$j$$ -ого нейрона в $$r$$ -ом слое, т.е. $$W-j^r=(W_{j0}^r,W_{j1}^r,\ldots,W_{jk_{r-1}}^r)$$, где $$k_{r-1}$$ а – число нейронов в $$(r-1)$$ -ом слое. Таким образом, $$J$$ – разрывная функция $$M$$ переменных, где$$M=\sum_{r=1}^L k_{r-1}k_r$$ $$J$$ разрывна, т.к. разрывна функция активации $$f$$:$$f(x)= \left\{ \begin{aligned} 1, x>0\\ 0, x<0 \end{aligned} \right.$$
5.4.2.1 Алгоритм обратной волны. Суть – аппроксимация непрерывной дифференцируемой функцией за счет замены функции активации "сигмовидной" функцией:$$f(x)=\frac{1}{1+e^{-ax}}$$ Вычислим производную функции:$$f'(x)=\frac{1}{(1+e^{-ax})^2}\cdot ae^{-ax}=a\left(\frac{1}{1+e^{-ax}}-\frac{1}{1+e^{-ax}}\right)=af(x)(1-f(x))$$ При данном чисто формальном приеме вектора признаков уже могут отображаться не только в вершины, но и внутрь гиперкуба. Необходимо решить задачу минимизации:$$J(W)\rightarrow\min$$
5.4.2.2. Метод градиентного спуска решения задачи минимизации.
Пусть $$W=\{W-j^k;\;j=1,2,\ldots,k_r;\;r=1,2,\ldots,L\}$$.
Тогда
5.4.2.3. Вычисление градиента. Аргумент функции активации $$j$$ -ого нейрона $$r$$ -ого слоя$$V_j^r=\sum_{k=1}^{k_{r-1}}W_{jk}^r y_k^{r-1}(i)+W_{j0}^r=\sum_{k=0}^{k_{r-1}}W_{jk}^r y_k^{r-1}(i)$$ принимает различные значения в зависимости от индекса прецедента. В данном случае $$y_0^{r-1}(i)=1$$.
Во входном слое, при $$r=1\quad y_k^{r-1}(i)=x_k(i),\;k=1,2,\ldots,k_0$$. В выходном слое, при $$r=L\quad y_k^r(i)=\widehat{y}_k(i),\;k=1,2,\ldots,k_L$$.
Рассмотрим выходной слой $$r=L$$.$$\begin{gathered} \varepsilon(i)=\frac12\sum_{m=1}^{k_L}(e_m(i))^2=\frac12\sum_{m=1}^{k_L}(f(V_m^L(i))-y_m(i))^2= \varepsilon(V_m^L(i))=\varepsilon(V_m^L(W_m^L),i)\\ \frac{\partial\varepsilon(i)}{\partial W_j^L}= \frac{\partial\varepsilon(i)}{\partial V_j^L}\cdot \frac{\partial V_j^L}{\partial W_j^L} \end{gathered}$$ $$\frac{\partial V_j^L}{\partial W_j^L}=y^{r-1}(i)$$ – не зависит от $$j$$ -ого номера нейрона в слое, т.е. имеем одинаковый вектор производных для всех нейронов $$(r-1)$$ -ого слоя.$$\frac{\partial\varepsilon(i)}{\partial V_j^L}=(f(V_j^L(i))-y_j(i))\cdot f'(V_j^L(i))=e_j(i)\cdot f'(V_j^L(i))$$ Следовательно, для последнего слоя $$\frac{\partial\varepsilon(i)}{\partial V_j^L}=y^{r-1}(i)\cdot e_j(i)\cdot f'(V_j^L(i))$$
Рассмотрим скрытый слой $$r<L$$. Имеется зависимость:$$\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}$$ но $$y_m^{r-1}(i)=f(V_m^{r-1}(i))$$, следовательно:$$\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}$$ Сумма, заключенная в квадратных скобках, известна из предыдущего шага.
5.4.2.4. Описание алгоритма.
0. Начальное приближение. Случайно выбираются веса небольших значений: $$W_{jk}^r,\;r=1,2,\ldots,L,\;j=1,2,\ldots,k_r,\;k=0,1,2,\ldots,k_{r-1}$$.
1. Прямой проход. Для каждого вектора прецедента $$x(i), i=1,2,\ldots,N$$, вычисляются все $$V_j^r(i),\;y_j^r(i)=f(V_j^r(i)),\;j=1,2,\ldots,k_r,\;r=1,2,\ldots,L$$. Вычисляется текущее значение ценовой функции $$J(W)$$:$$\begin{aligned} \text{Цикл по } i=1,2,\ldots,N \text{ (по прецедентам):} \\ \qquad\text{Вычислить:} \\ \qquad y_k^0(i)=x_k(i), \; k=1,2,\ldots,k_0 \\ \qquad y_0^0(i)=1. \\ \qquad\text{Цикл по } r=1,2,\ldots,L \text{ (по слоям):} \\ \qquad\qquad\text{Цикл по } j=1,2,\ldots,k_r \text{ (по нейронам в слое):} \\ \qquad\qquad\qquad V_j^r(i)=\sum_{k=0}^{k_{r-1}}W_{jk}^r y_k^{r-1}(i) \\ \qquad\qquad\qquad y_j^r(i)=f(V_j^r(i)) \\ \qquad\qquad\text{Конец цикла по } j. \\ \qquad\text{Конец цикла по } r. \\ \text{Конец цикла по } i. \\ J(W)=\sum_{i=1}^N\frac12(y_j^L(i)-y_j(i))^2 \end{aligned}$$
2. Обратный проход. Для каждого значения $$i=1,2,\ldots,N$$ и $$j=1,2,\ldots,k_L$$ вычисляется $$\frac{\partial\varepsilon(i)}{\partial V_j^L(i)}$$. Затем последовательно необходимо вычислить $$\frac{\partial\varepsilon(i)}{\partial V_j^r(i)}$$ для всех $$r=L-1,\ldots,1$$ и $$j=1,2,\ldots,k_r$$:$$\begin{aligned} \text{Цикл по } i=1,2,\ldots,k_r \text{ (по нейронам в слое):} \\ \qquad\text{Вычислить:} \\ \qquad e_j(i)=y_j^L(i)-y_j(i) \\ \qquad \delta_j^L(i)=e_j(i)\cdot f'(V_j^{r-1}(i)) \\ \qquad\text{Цикл по } r=L,L-1,\ldots,2 \text{ (по слоям):} \\ \qquad\qquad\text{Цикл по } j=1,2,\ldots,k_r \text{ (по нейронам в слое):} \\ \qquad\qquad\qquad e_j^{r-1}(i)=\sum_{k=1}^(k_r}\delta_k^r(i)\cdot W_{kj}^r \\ \qquad\qquad\qquad \delta_j^{r-1}(i)=e_j^{r-1}(i)\cdot f'(V_j^{r-1}(i)) \\ \qquad\qquad\text{Конец цикла по } j. \\ \qquad\text{Конец цикла по } r. \\ \text{Конец цикла по } i. \end{aligned}$$
3. Пересчет весов. Для всех $$r=1,2,\ldots,L$$ и $$j=1,2,\ldots,k_r \;W_j^r(new)=W_j^r(old)+\Delta W_j^r$$, где $$\Delta W_j^r=-\mu\sum_{i=1}^N\frac{\partial\varepsilon(i)}{\partial V_j^r(i)}y^{r-1}(i)$$.
Рассмотрим булеву функцию $$xor(x_1,x_2)$$ как некий классификатор. Вектор признаков имеет вид $$x=(x_1,x_2)$$. В данном случае имеется четыре прецедента и два класса. Напомним таблицу значений функции $$xor(x_1,x_2)$$.
| № прецедента | $$x_1$$ | $$x_2$$ | $$xor(x_1,x_2)$$ | Класс |
| 1 | 0 | 0 | 0 | $$\Omega_1$$ |
| 2 | 0 | 1 | 1 | $$\Omega_0$$ |
| 3 | 1 | 0 | 1 | $$\Omega_0$$ |
| 4 | 1 | 1 | 0 | $$\Omega_1$$ |

Как видно из рисунка тут нельзя построить разделяющую прямую,
поскольку
Рассмотрим две вспомогательные булевы функции $$or(x_1,x_2)$$ и $$and(x_1,x_2)$$. Напомним таблицы значений этих функций:
| № прецедента | $$x_1$$ | $$x_2$$ | $$and(x_1,x_2)$$ | $$or(x_1,x_2)$$ |
| 1 | 0 | 0 | 0 | 0 |
| 2 | 0 | 1 | 0 | 1 |
| 3 | 1 | 0 | 0 | 1 |
| 4 | 1 | 1 | 1 | 1 |
5.1.1. Построение линейного классификатора функции $$or(x_1,x_2)$$. Очевидно, что разделяющей прямой является линия:$$x_1+x_2=\frac12$$

Соответствующий персептрон имеет вид:

5.1.2. Построение линейного классификатора функции $$and(x_1,x_2)$$. Здесь также можно построить разделяющую прямую:$$x_1+x_2=\frac32$$

Соответствующий персептрон имеет вид:

5.1.3. Построение нелинейного классификатора функции $$xor(x_1,x_2)$$. Пусть на выходе персептрона для функции $$or(x_1,x_2)$$ - $$y_1$$, а на выходе персептрона для функции $$and(x_1,x_2)$$ – $$y_2$$. Посмотрим, какие значения принимает вектор $$(y_1,y_2)$$.
| Исходные вектора | OR | AND | XOR | ||
| $$x_1$$ | $$x_2$$ | $$y_1$$ | $$y_2$$ | Класс | |
| 0 | 0 | 0 | 0 | 1 | $$\Omega_1$$ |
| 0 | 1 | 1 | 0 | 0 | $$\Omega_0$$ |
| 1 | 0 | 1 | 0 | 0 | $$\Omega_0$$ |
| 1 | 1 | 1 | 1 | 1 | $$\Omega_1$$ |

Обозначив классы как показано в таблице, получаем разделяющую прямую, изображенную на рисунке и соответствующий линейный классификатор:$$y_1-y_2=\frac12$$
Учитывая вышеизложенное, получаем нелинейный классификатор, который задается через два линейных классификатора, как показано на рисунке слева:$$x_1+x_2=\frac12 \text{ и } x_1+x_2=\frac32$$
Соответствующий двухслойный персептрон изображен на рисунке справа.


Рассмотрим общий случай двухслойного персептрона. Пусть $$x\in R^l$$ и в
скрытом слое $$p$$ нейронов. Скрытый слой нейронов отображает $$R^l$$ в $$H_p\in R^p$$, где $$H_p=\{(y_1,y_2,\ldots,y_p)\in R_p,\; y_i\in[0,1],\;1\leq i\leq p\}$$
– гиперкуб. Другими словами, каждый нейрон задает гиперплоскость,
которая разделяет пространство пополам, т.е. скрытый слой нейронов
делит пространство $$R_l$$ на

Пример. Рассмотрим нейронную сеть с двумя входами $$(l=2)$$ и тремя нейронами $$(k=3)$$. Тогда пространство $$R^l=R^2$$. Пусть первый слой нейронов задает разбиение признакового пространства (плоскости) как показано на рисунке. В каждом многоугольнике (возможно, бесконечном) все точки соответствуют одному классу (A или B). При этом в каждом многоугольнике знаки линейных функционалов $$g_1, g_2, g_3$$ остаются постоянными. Следовательно, с каждым многоугольником связано определенное значение вектора выходов нейронов первого слоя, причем для разных многоугольников эти значения различны. Поскольку значениями компонент этого вектора являются 0 либо 1, получаем, что каждому многоугольнику соответствует некоторая вершина единичного куба $$H^3$$ в пространстве $$R^3$$. При этом каждой вершине куба сопоставлен один класс A или B. На рисунке изображен единичный куб $$H^3$$, у которого закрашенные вершины относятся к классу $$A$$, а не закрашенные – к классу $$B$$. Задача нейрона второго слоя состоит в разделении вершин этого куба. Нетрудно видеть, что в нашем примере плоскость $$y_1+y_2-y_3=\frac12$$ является разделяющей для куба $$H^3$$. Она и задает параметры нейрона второго слоя. Заметим, что вершина $$(1,0,1)$$ в кубе не загружена, т.е. в нее не отображается ни один многоугольник.
Внешний (

Утверждение. Трехслойная нейронная сеть позволяет описать любые разделения объединений полиэдров.
Доказательство. Рассмотрим первый слой из $$p$$ нейронов. На
первом формируются гиперплоскости, т.к. строится полиэдральное
разбиение пространства гиперплоскостями. Очевидно, что для заданного
конечного множества прецедентов всегда можно построить разбиение
пространства признаков на
Каждый нейрон второго слоя описывает сечение полученного
гиперкуба. Выберем в качестве таких сечений гиперплоскости, отсекающие
ровно одну вершину гиперкуба. Поскольку число вершин в гиперкубе равно $$2^p$$, число нейронов второго слоя также равно $$2^p$$. Таким образом, выход
нейронов второго слоя имеет следующий вид. Это вектор размерности $$2^p$$,
у которого всегда лишь одно значение равно 1, а остальные равны нулю.
Назовем нейроны второго слоя нейронами класса A или B в соответствии с
классом вершины гиперкуба, которую отсекает этот нейрон. Теперь
становится понятно, каким образом строить третий слой нейронной сети.
Нужно в выходном нейроне третьего слоя реализовать оператор
логического сложения выходов нейронов второго слоя, относящихся к
классу A. Таким образом разделяющая гиперплоскость
Таким образом, можно построить трехслойный персептрон следующим
образом. Нейроны первого слоя разделяют
Рассмотрим, как строится уравнение гиперплоскости, отсекающей вершину $$p$$ -мерного единичного гиперкуба. Диагональ куба имеет длину $$\sqrt{p}$$. Длины диагоналей $$(p-1)$$ -мерных единичных гиперкубов, являющихся боковыми гранями $$p$$ -мерного куба, равны $$\sqrt{p-1}$$. Центр куба находится в точке $$\left(\frac12,\frac12,\ldots,\frac12\right)$$. Расстояние от центра куба до любой вершины равно $$\frac{\sqrt{p}}{2}$$. Плоскость проводим перпендикулярно главной диагонали куба, инцидентной вершине, которую надо отсечь, так, чтобы расстояние от этой вершины до секущей плоскости было равно $$\frac{\sqrt{p}-\sqrt{p-1}}{2}$$, причем данная точка должна находиться на диагонали куба, проведенной к отсекаемой вершине.
Пусть $$V$$ – отделяемая вершина, $$\overline{V}$$ – диагонально противоположная
вершина ( $$\overline{V}=E-V$$, где $$E$$ обозначает $$p$$ -мерный вектор, состоящий из единиц).
Следовательно, $$W=V-\overline{V}$$ –
Существует два подхода к задаче построения нейронной сети-классификатора. Первый подход заключается в построении сети, варьируя архитектуру. Данный метод основан на точной классификации прецедентов. Второй подход состоит в подборке параметров (весов и порогов) для сети с заданной архитектурой.
5.4.1 Алгоритм, основанный на точной классификации множества прецедентов. Опишем общую идею метода. За основу берется один нейрон. Далее наращиваем нейрон, пока не получим правильную классификацию всех прецедентов.


Рассмотрим более подробно алгоритм. Начинаем с одного нейрона $$n(X)$$, называемого мастером. После его тренировки получаем разделение множества $$X$$ на $$X^+$$ и $$X^-$$. Если $$X^+$$ содержит вектора из двух классов, то вводим новый узел $$n(X^+)$$, называемый последователем.
Таким образом, на первом слое нейронов находится один мастер и несколько последователей. Никакие вектора из разных классов не имеют одинакового выхода из первого слоя.$$X_1=\{y:y=f_1(x),x\in X\},$$ где $$f_1$$ – отображение, задаваемое первым слоем.
Аналогичным образом строим второй слой, третий слой и т.д.
Утверждение. При правильном выборе весов каждый очередной слой правильно классифицирует все вектора, которые правильно классифицировал мастер и еще хотя бы один вектор.
Таким образом, получаем архитектуру, имеющую конечное число слоев, правильно классифицирующие все прецеденты.
Нейроны первого слоя – это биссекторы, разделяющие пары. Второй
слой – нейроны $$and$$, определяющие
Основным недостатком данного метода является слишком большое количество нейронов.
5.4.2. Алгоритм, основанный на подборе весов для сети с заданной архитектурой. Идея данного метода состоит в том, чтобы ввести критерий в виде функции стоимости, которую необходимо минимизировать.
Пусть
Текущем состоянии сеть при обучении дает результат $$\widehat{y}(i)$$ не совпадающий с $$y(i)$$. Обозначим:$$J=\sum_{i=1}^N\varepsilon(i)$$ где $$N$$ – число прецедентов; $$\varepsilon(i)$$ – ошибка на $$i$$ -ом прецеденте;$$\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,$$ где $$i=1,2,\ldots,N$$. $$J$$ – функция всех синоптических весов и порогов. Таким образом, целью обучения является решение оптимизационной задачи:$$J(W)\rightarrow\min,$$ где $$W$$ – множество синоптических весов.

Пусть $$y_k^{r-1}$$ – выход $$k$$ -ого нейрона $$(r-1)$$ -ого слоя; $$W-j^r$$ – весовой вектор (включая порог) $$j$$ -ого нейрона в $$r$$ -ом слое, т.е. $$W-j^r=(W_{j0}^r,W_{j1}^r,\ldots,W_{jk_{r-1}}^r)$$, где $$k_{r-1}$$ а – число нейронов в $$(r-1)$$ -ом слое. Таким образом, $$J$$ – разрывная функция $$M$$ переменных, где$$M=\sum_{r=1}^L k_{r-1}k_r$$ $$J$$ разрывна, т.к. разрывна функция активации $$f$$:$$f(x)= \left\{ \begin{aligned} 1, x>0\\ 0, x<0 \end{aligned} \right.$$
5.4.2.1 Алгоритм обратной волны. Суть – аппроксимация непрерывной дифференцируемой функцией за счет замены функции активации "сигмовидной" функцией:$$f(x)=\frac{1}{1+e^{-ax}}$$ Вычислим производную функции:$$f'(x)=\frac{1}{(1+e^{-ax})^2}\cdot ae^{-ax}=a\left(\frac{1}{1+e^{-ax}}-\frac{1}{1+e^{-ax}}\right)=af(x)(1-f(x))$$ При данном чисто формальном приеме вектора признаков уже могут отображаться не только в вершины, но и внутрь гиперкуба. Необходимо решить задачу минимизации:$$J(W)\rightarrow\min$$
5.4.2.2. Метод градиентного спуска решения задачи минимизации.
Пусть $$W=\{W-j^k;\;j=1,2,\ldots,k_r;\;r=1,2,\ldots,L\}$$.
Тогда
5.4.2.3. Вычисление градиента. Аргумент функции активации $$j$$ -ого нейрона $$r$$ -ого слоя$$V_j^r=\sum_{k=1}^{k_{r-1}}W_{jk}^r y_k^{r-1}(i)+W_{j0}^r=\sum_{k=0}^{k_{r-1}}W_{jk}^r y_k^{r-1}(i)$$ принимает различные значения в зависимости от индекса прецедента. В данном случае $$y_0^{r-1}(i)=1$$.
Во входном слое, при $$r=1\quad y_k^{r-1}(i)=x_k(i),\;k=1,2,\ldots,k_0$$. В выходном слое, при $$r=L\quad y_k^r(i)=\widehat{y}_k(i),\;k=1,2,\ldots,k_L$$.
Рассмотрим выходной слой $$r=L$$.$$\begin{gathered} \varepsilon(i)=\frac12\sum_{m=1}^{k_L}(e_m(i))^2=\frac12\sum_{m=1}^{k_L}(f(V_m^L(i))-y_m(i))^2= \varepsilon(V_m^L(i))=\varepsilon(V_m^L(W_m^L),i)\\ \frac{\partial\varepsilon(i)}{\partial W_j^L}= \frac{\partial\varepsilon(i)}{\partial V_j^L}\cdot \frac{\partial V_j^L}{\partial W_j^L} \end{gathered}$$ $$\frac{\partial V_j^L}{\partial W_j^L}=y^{r-1}(i)$$ – не зависит от $$j$$ -ого номера нейрона в слое, т.е. имеем одинаковый вектор производных для всех нейронов $$(r-1)$$ -ого слоя.$$\frac{\partial\varepsilon(i)}{\partial V_j^L}=(f(V_j^L(i))-y_j(i))\cdot f'(V_j^L(i))=e_j(i)\cdot f'(V_j^L(i))$$ Следовательно, для последнего слоя $$\frac{\partial\varepsilon(i)}{\partial V_j^L}=y^{r-1}(i)\cdot e_j(i)\cdot f'(V_j^L(i))$$
Рассмотрим скрытый слой $$r<L$$. Имеется зависимость:$$\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}$$ но $$y_m^{r-1}(i)=f(V_m^{r-1}(i))$$, следовательно:$$\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}$$ Сумма, заключенная в квадратных скобках, известна из предыдущего шага.
5.4.2.4. Описание алгоритма.
0. Начальное приближение. Случайно выбираются веса небольших значений: $$W_{jk}^r,\;r=1,2,\ldots,L,\;j=1,2,\ldots,k_r,\;k=0,1,2,\ldots,k_{r-1}$$.
1. Прямой проход. Для каждого вектора прецедента $$x(i), i=1,2,\ldots,N$$, вычисляются все $$V_j^r(i),\;y_j^r(i)=f(V_j^r(i)),\;j=1,2,\ldots,k_r,\;r=1,2,\ldots,L$$. Вычисляется текущее значение ценовой функции $$J(W)$$:$$\begin{aligned} \text{Цикл по } i=1,2,\ldots,N \text{ (по прецедентам):} \\ \qquad\text{Вычислить:} \\ \qquad y_k^0(i)=x_k(i), \; k=1,2,\ldots,k_0 \\ \qquad y_0^0(i)=1. \\ \qquad\text{Цикл по } r=1,2,\ldots,L \text{ (по слоям):} \\ \qquad\qquad\text{Цикл по } j=1,2,\ldots,k_r \text{ (по нейронам в слое):} \\ \qquad\qquad\qquad V_j^r(i)=\sum_{k=0}^{k_{r-1}}W_{jk}^r y_k^{r-1}(i) \\ \qquad\qquad\qquad y_j^r(i)=f(V_j^r(i)) \\ \qquad\qquad\text{Конец цикла по } j. \\ \qquad\text{Конец цикла по } r. \\ \text{Конец цикла по } i. \\ J(W)=\sum_{i=1}^N\frac12(y_j^L(i)-y_j(i))^2 \end{aligned}$$
2. Обратный проход. Для каждого значения $$i=1,2,\ldots,N$$ и $$j=1,2,\ldots,k_L$$ вычисляется $$\frac{\partial\varepsilon(i)}{\partial V_j^L(i)}$$. Затем последовательно необходимо вычислить $$\frac{\partial\varepsilon(i)}{\partial V_j^r(i)}$$ для всех $$r=L-1,\ldots,1$$ и $$j=1,2,\ldots,k_r$$:$$\begin{aligned} \text{Цикл по } i=1,2,\ldots,k_r \text{ (по нейронам в слое):} \\ \qquad\text{Вычислить:} \\ \qquad e_j(i)=y_j^L(i)-y_j(i) \\ \qquad \delta_j^L(i)=e_j(i)\cdot f'(V_j^{r-1}(i)) \\ \qquad\text{Цикл по } r=L,L-1,\ldots,2 \text{ (по слоям):} \\ \qquad\qquad\text{Цикл по } j=1,2,\ldots,k_r \text{ (по нейронам в слое):} \\ \qquad\qquad\qquad e_j^{r-1}(i)=\sum_{k=1}^(k_r}\delta_k^r(i)\cdot W_{kj}^r \\ \qquad\qquad\qquad \delta_j^{r-1}(i)=e_j^{r-1}(i)\cdot f'(V_j^{r-1}(i)) \\ \qquad\qquad\text{Конец цикла по } j. \\ \qquad\text{Конец цикла по } r. \\ \text{Конец цикла по } i. \end{aligned}$$
3. Пересчет весов. Для всех $$r=1,2,\ldots,L$$ и $$j=1,2,\ldots,k_r \;W_j^r(new)=W_j^r(old)+\Delta W_j^r$$, где $$\Delta W_j^r=-\mu\sum_{i=1}^N\frac{\partial\varepsilon(i)}{\partial V_j^r(i)}y^{r-1}(i)$$.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.