Структура и обучение простейшего персептрона
дата публикации: 2016-06-29

Не вдаваясь в подробности, позволю себе сразу привести математическую модель простейшего персептрона с сигмоидальной функцией активации. Модель представлена на рисунке ниже.

Персептрон

Входные сигналы модели (дендриты) u_i(n), i \in (0..N), весовые коэффициенты w_i, i \in (0..N), выходной сигнал модели (аксон) x(n) , выходной сигнал после преобразования функцией активации y(n), эталонный выходной сигнал d(n), невязка выходного сигнала \varepsilon(n) , n = 1,2... - дискретное время. Функция активации и ее производная имеют следующий вид:

f(x) = \frac{1}{1 + e^{- \beta x}}, f'(x) = \beta \cdot \frac{e^{- \beta x}}{ \left( 1 + e^{- \beta x} \right)^2 } = \beta \cdot f(x) \cdot \left( 1 - f(x) \right).

Исходя из схемы персептрона, очевидны следующие соотношения:

\begin{aligned} & \varepsilon(n) = d(n) - y(n), \\ & y(n) = f(x(n)), \\ & x(n) = \sum_{i = 0}^N w_i \cdot u_i(n). \end{aligned}

где u_0(n) = 1 и w_0 = v по сути моделируют сдвиг на постоянную величину.

Построим функционал, который необходимо минимизировать для настройки весов персептрона, однако сначала несколько слов. Необходимо ввести понятие меры, которая бы отвечала за качество настройки. Для этого будем предполагать, что ошибка настройки имеет нормальное распределение и нулевое математическое ожидание E \{ \varepsilon(n) \} = 0 по ансамблю обучающей выборки. Таким образом, в качестве функционала можно рассматривать дисперсию.

J(\widehat{w}) = E \{ \varepsilon^2(n) \} = E \left\{ \left[ d(n) - f \left( \sum_{i = 0}^N \widehat{w}_i \cdot u_i(n) \right) \right] ^2 \right\},

где \widehat{w} оценка вектора весов.

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

\widehat{w}_{i}^{\langle k+1 \rangle} = \widehat{w}_{i}^{\langle k \rangle} - \frac{\eta}{2} \cdot \frac{\partial J(\widehat{w}^{\langle k \rangle})}{\partial \widehat{w}_{i}^{\langle k \rangle}}.

где k - номер итерации, \eta - коэффициент спуска.

Выведем формулу для производной функционала, упустив индекс итерации, упрощая запись.

\frac{\partial J(\widehat{w})}{\partial \widehat{w}_{i}} = 2 \cdot E \left\{ \varepsilon(n) \cdot \frac{\partial \varepsilon(n)}{\partial \widehat{w}_{i}} \right\} = -2 \cdot E \left\{ \varepsilon(n) \cdot f'(x(n)) \cdot \frac{\partial x(n)}{\partial \widehat{w}_{i}} \right\},

таким образом, формула для определения весов примет вид:

\widehat{w}_{i}^{\langle k+1 \rangle} = \widehat{w}_{i}^{\langle k \rangle} + \eta \cdot E \left\{ \varepsilon(n) \cdot f'(x(n)) \cdot u_i(n) \right\}.

Вот и все в общем то. Получена формула, которая позволяет рассчитать веса простейшего пресептрона. Обучение проводится следующим образом:

1. Берется ансамбль входных u_i(n), i \in (0..N), n = 1,2... и выходных сигналов d(n), n = 1,2... ;

2. Выбирается коэффициент спуска \eta;

3. Определяются начальные значения весов \widehat{w}_{i}^{\langle 0 \rangle}, i \in (0..N);

4. Последовательно рассчитываются x(n), y(n), f'(x(n)), \varepsilon(n) для всего ансамбля;

5. Вычисляется математическое ожидание, умножается на коэффициент спуска и складывается с предыдущим значением весов, далее выполняем пункт 4 до тех пор, пока полученное решение не удовлетворит нашим требованиям.