Курсовая работа: Распознавание слов естественного языка с использованием нейросетей
Рассмотрим алгоритм сети обратного распространения ошибки подробнее.
Входной набор данных, на котором сеть должна быть обучена, подается на входной слой сети (рисунок3), и сеть функционирует в нормальном режиме (т.е. вычисляет выходные данные).
| ||||||||
| ||||||||
| ||||||||
![]() | ||||||||
|
| |||||||
| ||||||||
| ||||||||
| ||||||||
![]() |
Рисунок 3 - Прямое распространение сигнала
Полученные данные сравниваются с известными выходными данными для рассматриваемого входного набора. Разница между полученными и известными (опытными) данными - вектор ошибки.
Вектор ошибки используется для модифицирования весовых коэффициентов выходного слоя с тем, чтобы при повторной подаче (рисунок 4) того же набора входных данных вектор ошибки уменьшался.
![]() | ||
![]() |
Рисунок 4 - Модифицирование весовых коэффициентов выходного слоя (обратное распространение ошибки)
Затем таким же образом модифицируются весовые коэффициенты скрытого слоя, на этот раз сравниваются выходные сигналы нейронов скрытого слоя и входные сигналы нейронов выходного слоя (рисунок 5), целью данного сравнения является формирование вектора ошибки для скрытого слоя.
Рисунок 5 - Модифицирование весовых коэффициентов скрытого слоя (обратное распространение ошибки)
Если в сети существует входной слой (именно слой, а не ряд входных значений), то проводятся аналогичные действия и с ним.
Следует заметить, что ошибка может быть распространена на любой желаемый уровень (т.е. в нейронной сети может быть неограниченное количество скрытых слоев, для которых рассчитывается вектор ошибки по одной и той же схеме).
Сеть обучается путем предъявления каждого входного набора данных и последующего распространения ошибки. Этот цикл повторяется много раз. Например, для распознавания цифры от 0 до 9, сначала обрабатывается символ "0", символ "1" и так далее до "9", затем весь цикл повторяется много раз. Не следует поступать иначе, а именно, обучать сеть по отдельности сначала символу "0" (n-ое количество раз), потом "1", потом "2" и т.д., т.к. сеть вырабатывает очень "четкие" весовые коэффициенты для последнего входного набора (то есть для "9"), "забывая" предыдущие. Например, к тысячному повтору обучения символу "1" теряются весовые коэффициенты для распознавания символа "0". Повторяя весь цикл для всего набора входных данных, мы предполагаем, что каждый символ оказывает равноправное влияние на значения весовых коэффициентов.
Таким образом, полный алгоритм обучения НС с помощью процедуры обратного распространения строится так:
1. Инициализировать пороговые значения и весовые коэффициенты небольшими случайными величинами (не более 0.4).
2.Подать на входы сети один из возможных образов и в режиме обычного функционирования НС, когда сигналы распространяются от входов к выходам.
3.Вычислить ошибки для выходного слоя. При этом используем следующую формулу для каждого i-ого значения выходного слоя:
Ei = (ti - ai ).ai .(1 - ai ) (7)
Здесь Ei - ошибка для i-ого узла выходного слоя,
ai - активность данного узла,
ti - требуемая активность для него же (т.е. требуемое выходное значение).
Используем значения ошибок выходного слоя для определения ошибок в скрытом слое. Формула практически та же, но теперь не определены желаемые выходные значения. Вычислить взвешенную сумму значений ошибок выходного слоя по формуле:
Ei = ai . (1 - ai ). Σj Ej .wij (8)
Смысл переменных по сравнению с формулой (9) изменился незначительно. индекс i используется для нейронов скрытого слоя (а не выходного), Ei , следовательно, значение ошибки для нейрона скрытого слоя, и ai - сигнал на выходе нейрона. Индекс j относится к нейронам выходного слоя: wij - вес (весовой коэффициент) связи между i-ым скрытым нейроном и j-ым выходным нейроном, а Ej - значение ошибки для выходного нейрона j. Суммирование проводится для всех весов связей между отдельно взятым i-ым нейроном и всеми нейронами выходного слоя.
Обратим внимание, что сумма включает в себя взвешенные связи только между рассматриваемым в данный момент нейроном скрытого слоя и всеми нейронами выходного слоя.
Полученные значения ошибок для выходного слоя будем использовать для изменения весовых коэффициентов между скрытым и выходным слоями. Вычислить все значения ошибок до модификации весовых коэффициентов, так как в формуле присутствуют и старые значения весов.
Применяем уравнение:
new wij = old wij + ηδj .xi (9)
где wij - вес связи между нейроном i скрытого слоя и нейроном j выходного;
δj - приращение ошибки для выходного нейрона j;