5.1.4. Использование алгоритма обратного распространения ошибкиПоскольку обсуждаемая нами структура представляет собой многослойную сеть и, как уже отмечалось, алгоритм обратного распространения ошибки можно обобщить на любую сеть с прямым распространением сигнала, то ничто не препятствует тому, чтобы предлагаемый модуль нечеткого управления обучать также, как и обычную нейронную сеть. Для этого потребуется обучающая выборка в виде пар , где - это входной вектор, a - эталонный сигнал. Задача заключается в такой модификации (коррекции) параметров модуля нечеткого управления, описанного выражением (5.13), чтобы мера погрешности, задаваемая выражением (5.14) была минимальной. Значение выходного сигнала для заданного входного сигнала будем для упрощения обозначать . Допустим, что количество правил известно (его можно задать). В этом случае остается подобрать три параметра: , и для . Начнем с весов в слое L3. Напомним (разд. 2.5), что алгоритм обратного распространения ошибки относится к классу так называемых градиентных алгоритмов. Их идея заключается в уменьшении предыдущего значения веса на величину производной от меры погрешности (5.14), умноженную на некоторый коэффициент. Процесс должен длиться так долго, чтобы погрешность на выходе системы достигла априорно установленной минимальной величины. Для веса выражение, определяющее способ модификации, будет иметь вид , (5.15) где обозначает номер итерации ( - начальное значение веса), а константа интерпретируется как коэффициент, определяющий скорость обучения (он также называется шагом коррекции). В формуле (5.14), задающей меру погрешности, содержится выходной сигнал системы (модуля управления). Представим уравнение (5.13) в виде , где . (5.16) Легко заметить, что значение и, следовательно, также мера погрешности зависит от веса только в числителе (т.е. в части ). Если применить правило дифференцирования сложной функции, то можно рассчитать производную меры погрешности относительно веса . (5.17) Исключение зависимости (5.17). При подстановке выражения (5.14) в формулу (5.17) получаем выражение . Поскольку эталонный сигнал не зависит от веса , то можно рассматривать его в качестве константы: . Применяя формулу для расчета производной от сложной функции, получаем . С учетом того, что , можно определить производную в виде . Отдельные веса сети независимы друг от друга, поэтому . Следовательно, . И окончательно . При подстановке полученной формулы в выражение (5.15), определяющее способ модификации веса , получаем алгоритм обучения , (5.18) который с учетом выведенных выше зависимостей представляется в виде . Для упрощения записи в приведенной формуле зависимость отдельных ее параметров от номера итерации , обозначена символически. Процесс обучения подразделяется на два этапа. Вначале на вход модуля управления подается значение сигнала , входящее в обучающую выборку; на его основе формируется выходное управляющее воздействие. Этот сигнал распространяется по сети в прямом направлении, и последовательно рассчитываются значения , , и, наконец, . Затем выполняется второй этап: обратное распространение ошибки. При этом выходная реакция сравнивается с эталонным значением , и по результатам сравнения модифицируются значения весов . Аналогично рассчитываются остальные параметры: и . Для применяется рекурсия , (5.19) где , , . Из уравнения (5.16) следует, что выходная величина (и, соответственно, мера погрешности ) зависит от только через . При использовании, как и прежде, формулы для расчета производной от составной функции, получаем . (5.20) Исключение зависимости (5.20). Так же как и в случае с формулой (5.17), будем основываться на уравнении, определяющем производную от меры погрешности . С учетом того, что от параметра зависит только значение выходного сигнала , согласно формуле для расчета производной от сложной функции имеем . Поскольку , причем и зависят от , определим первую из производных в виде . После подстановки вместо и соответствующих выражений и взятия производных получаем . В результате замены , где можно рассчитать и далее , а также . После этого , что в итоге приводит к формуле . При подстановке равенства (5.20) в выражение (5.19), получаем алгоритм обучения для параметра в виде , (5.21) где и определяются по формуле (5.16). При использовании такой же методики можно получить алгоритм обучения для параметра в виде . (5.22) Представленные зависимости (5.18), (5.21) и (5.22) определяют способ модификации весов и параметров на основе алгоритма обратного распространения ошибки. На первом этапе входной вектор распространяется по сети в прямом направлении, и последовательно рассчитываются значения , , и, наконец, . На втором этапе с использованием представленных формул рассчитываются новые значения весов связей , и для ; , после чего старые значения заменяются новыми, и счетчик количества итераций увеличивается на 1. Такая последовательность имеет существенное значение, поскольку, например, в формуле расчета «нового» значения веса содержатся «старые» (точнее - рассчитанные на предыдущем шаге) значения весов , и . Заметим, что во всех формулах фигурирует «нормализованная» погрешность . Она распространяется в обратном направлении до третьего слоя (L3), в котором находятся веса связей (см. рис. 5.1). Впоследствии каждый вес модифицируется согласно алгоритму (5.18), причем следует отметить, что значения уже определены ранее на первом этапе (это сигналы, выходящие из предыдущего слоя). Для обучения параметров и та же «нормализованная» погрешность умножается на разность и на значение , после чего распространяется в обратном направлении до первого слоя (L1). Параметры и модифицируются по алгоритмам (5.21) и (5.22) соответственно. Это доказывает, что они с полным основанием могут называться «алгоритмами обратного распространения ошибки». Алгоритм обучения обсуждаемой сети представлен на рис. 5.2 в виде блок-схемы. В принципе, он не требует дополнительных комментариев, можно добавить лишь несколько слов о принятых на этом рисунке упрощениях. Рис. 52. Алгоритм обучения модуля нечеткого управления, заданного выражением (5.13). Во-первых, как определить, насколько корректно обучена сеть? Для этого созданы различные методы, и одним из простейших считается расчет значения средней погрешности для всех эпох (epoch) с последующим сравнением результата с некоторым заданным значением. Напомним, что эпохой называется количество итераций, равное числу пар векторов входных и эталонных сигналов (т.е. один цикл предъявления обучающей выборки). Во-вторых, на схеме предполагается, что обучающие эталоны предъявляются строго последовательно. В принципе, для простейших сетей это не имеет особого значения, однако в общем случае выдвигается условие, чтобы в рамках каждой эпохи данные выбирались случайным образом. Программная реализация приведенного алгоритма не представляет проблему даже для начинающего программиста. Однако следует помнить очень важное правило: на каждом шаге вначале рассчитываются поправки для всех весов в каждом слое, и только после этого корректируются значения самих весов. Следует обратить внимание на то, что в формулах для расчета очередных значений параметров и имеются «старые» значения , и из предыдущей итерации; их преждевременное изменение могло бы ухудшить качество обучения сети.
|