Алгоритм обратного распространения
Согласно методу наименьших квадратов, минимизируемой целевой функцией ошибки НС является величина:
где – реальное выходное состояние нейрона j выходного слоя N нейронной сети при подаче на ее входы p-го образа; djp – идеальное (желаемое) выходное состояние этого нейрона. Суммирование ведется по всем нейронам выходного слоя и по всем обрабатываемым сетью образам. Минимизация ведется методом градиентного спуска, что означает подстройку весовых коэффициентов следующим образом:
Здесь wij – весовой коэффициент синаптической связи, соединяющей i-ый нейрон слоя n-1 с j-ым нейроном слоя n, h – коэффициент скорости обучения, 0<h<1.
Здесь под yj, подразумевается выход нейрона j, а под sj – взвешенная сумма его входных сигналов, то есть аргумент активационной функции. Так как множитель dyj/dsj является производной этой функции по ее аргументу, из этого следует, что производная активационной функция должна быть определена на всей оси абсцисс. В связи с этим функция единичного скачка и прочие активационные функции с неоднородностями не подходят для рассматриваемых НС. В них применяются такие гладкие функции, как гиперболический тангенс или классический сигмоид с экспонентой. Третий множитель ¶sj/¶wij, очевидно, равен выходу нейрона предыдущего слоя yi(n-1). Что касается первого множителя, он легко раскладывается следующим образом:
Здесь суммирование по k выполняется среди нейронов слоя n+1. Введя новую переменную
мы получим рекурсивную формулу для расчетов величин dj(n) слоя n из величин dk(n+1) более старшего слоя n+1. (3) Для выходного же слоя
(4)
В данном случае производная вычисляется по формуле (2) Теперь мы можем записать в раскрытом виде:
(5)
Иногда для придания процессу коррекции весов некоторой инерционности, сглаживающей резкие скачки при перемещении по поверхности целевой функции, дополняется значением изменения веса на предыдущей итерации
(6) где m – коэффициент инерционности, t – номер текущей итерации. Таким образом, полный алгоритм обучения НС с помощью процедуры обратного распространения строится так: Шаг 1. Подать на входы сети один из возможных образов и рассчитать результат. (Каждый нейрон вычисляет значение по формуле (1), в качестве функции активации использовать сигмоид.) Шаг 2. Рассчитать d(N) для выходного слоя по формуле (4). Рассчитать по формуле (5) или (6) изменения весов Dw(N) слоя N. Шаг 3. Рассчитать по формулам (3) и (5) (или (3) и (6)) соответственно d(n) и Dw(n) для всех остальных слоев, n=N-1,...1. Шаг 4. Скорректировать все веса в НС
(7)
где t – номер текущей итерации. Шаг 5. Если ошибка сети существенна, перейти на Шаг 1. В противном случае – конец. m – коэффициент инерционности принять равным 0.5 h – коэффициент скорости обучения принять равным 0.5
|