Алгоритмы обратного распространения 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Алгоритмы обратного распространения



Сложнее обстоит дело с многослойными сетями, так как изначально неизвестны желаемые выходы слоев сети (за исключением последнего) и их невозможно обучить, руководствуясь только величиной ошибок на выходе сети, как это было с однослойной сетью.

Наиболее приемлемым вариантом решения проблемы стала идея распространения сигнала ошибки от выхода сети к ее входу, слой за слоем. Алгоритмы, реализующие обучение сети по этой схеме, получили название алгоритмов обратного распространения. Наиболее распространенный вариант этого алгоритма мы и рассмотрим.

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

Рассматриваем «классический вариант» многослойной сети, где синаптические связи могут определяться любыми действительными числами, а выход нейрона – действительными числами из интервала от 0 до 1. В качестве активационной функции используем сигмоид. Число слоев произвольное.

 

1. Определяем M матриц весовых коэффициентов W размером NxN, где M – число слоев, N – число нейронов в одном слое. Wi, j, k будет обозначать вес j-го входа k-го нейрона в i-м слое. Инициализируем матрицы некоторыми малыми случайными (не одинаковыми) значениями.

2. Подаем на входы сети определенные значения X, для которых известны правильные значения выходов сети Y*.

3. Вычисляем значения выходов сети для текущего состояния матриц W. То есть для входного вектора X вычисляется выходной вектор Y. Для этого необходимо последовательно вычислить выход для каждого слоя сети с первого по последний. Для i-го слоя в векторном виде это можно записать так:

Oi=F(ХWi), если i – не первый слой.

Oi=F(Oi-1Wi), если i – не первый слой.

где Oi – вектор выхода i-го слоя, F – активационная функция, X – вектор входов, Oi-1 – вектор выхода (i-1)-го слоя, Wi – матрица весовых коэффициентов i-го слоя.

4. Вычисляем вектор ΔY=Y-Y*

5. Если ΔY меньше заданной погрешности, переходим к шагу 9.

6. Для слоя с номером M (т.е. в последнем слое) производим следующие операции:

6.1. Для всех нейронов в слое с номера 1 по N производим следующие операции:

6.1.1. Для всех весов нейрона с номера 1 по N производим следующие операции:

6.1.1.1. Рассчитываем вектор δM=X(1-X)ΔY

6.1.1.2. Рассчитываем величину ΔWM,j,k=ηδM,kOi-1,j,

где η – коэффициент скорости обучения (от 0.01 до 1.0)

6.1.1.3. Корректируем величину весового коэффициента, добавляя к WM, j, k величину ΔWM,j,k

7. Для слоев с номером M-1 по первый последовательно производим следующие операции:

7.1. Для всех нейронов в слое с номера 1 по N производим следующие операции:

7.1.1. Для всех весов нейрона с номера 1 по N производим следующие операции:

7.1.1.1. Рассчитываем вектор

  N  
δi=Oi+1(1-Oi+1)[ δi+1,jWi+1, j, k]
  k=1  

7.1.1.2. Рассчитываем величину ΔWi,j,k= ηδi,kOi-1,j, где Δ – коэффициент скорости обучения (от 0.01 до 1.0)

7.1.1.3. Корректируем величину весового коэффициента, добавляя к WM, j, k величину ΔWM,j,k

8. Переход к шагу 3.

9. Конец (обучение окончено).

 

Описанный алгоритм применяется достаточное количество раз, чтобы все варианты выходных значений могли правильно выходить при задании произвольных значений входа с заданной вероятностью ошибки.

Это алгоритм может быть усовершенствован. Например, выяснилось, что обычный диапазон для входов и выходов от 0 до 1 не является оптимальным. Из за того, что ΔWi,j,k прямо пропорционален выходному уровню нейрона, нулевой выходной уровень приводит к нулевому значению ΔWi,j,k, то есть величина веса не изменяется и обучение не происходит. Выход состоит в приведении входов к значениям от -0.5 до 0.5. Активационная функция должна приобрести вид:

F(S) = (-0.5)+1/(1+e-s).

После того, как сеть будет надлежащим образом обучена, она может быть использована для распознавания, в том числе, для распознавания звуков. Подаем на вход сети параметры звукового сигнала и получаем на выходе последовательность значений от -0.5 до 0.5 (или – после обратной корректировки – от 0 до 1), по которым и определяем звук (каждому звуку сопоставляется уникальная комбинация выходов до начала процесса обучения, и, собственно по ней мы на этапе обучения и определяем, правильно ли определен звук).


 

Лекция 8

Тема. Построение классификаторов распознавания речевых сигналов на основе алгоритма динамического искажения времени DTW для распознавания речевых команд.

 



Поделиться:


Последнее изменение этой страницы: 2022-09-03; просмотров: 20; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.156.250 (0.004 с.)