4.12.7.1. Эволюция весов связейЭволюционный подход к обучению нейронных сетей состоит из двух основных этапов. Как указывалось во введении к п. 4.12.7, первый из них - это выбор соответствующей схемы представления весов связей. Он заключается в принятии решения - можно ли кодировать эти веса двоичными последовательностями или требуется какая-то другая форма. На втором этапе уже осуществляется сам процесс эволюции, основанный на генетическом алгоритме. После выбора схемы хромосомного представления генетический алгоритм применяется к популяции особей (хромосом, содержащих закодированное множество весов нейронной сети) с реализацией типового цикла эволюции, состоящего из четырех шагов. 1) Декодирование каждой особи (хромосомы) текущего поколения для восстановления множества весов и конструирование соответствующей этому множеству нейронной сети с априорно заданной архитектурой и правилом обучения. 2) Расчет общей среднеквадратичной погрешности между фактическими и заданными значениями на всех выходах сети при подаче на ее входы обучающих образов. Эта погрешность определяет приспособленность особи (сконструированной сети); в зависимости от вида сети функция приспособленности может быть задана и другим образом. 3) Репродукция особей с вероятностью, соответствующей их приспособленности, либо согласно их рангу (в зависимости от способа селекции - например, по методу рулетки или ранговому методу). 4) Применение генетических операторов - таких как скрещивание, мутация и/или инверсия для получения нового поколения. Блок-схема, иллюстрирующая эволюцию весов, представлена на рис. 4.119. В соответствии с этой схемой были рассчитаны веса для нейронной сети, реализующей систему XOR с помощью программы Evolver (примеры 4.23 - 4.27) и с помощью программы FlexTool (пример 4.20). В соответствии с первым этапом типового цикла эволюции априорно задаются и остаются неизменными архитектура сети, определяющая количество слоев, число нейронов в каждом слое и топологию межнейронных связей, а также правило обучения сети. Приспособленность каждой особи (генотипа) оценивается значением среднеквадратичной погрешности, рассчитанной по соответствующей этой особи нейронной сети (фенотипу). Рис. 4.119. Блок-схема генетического алгоритма поиска наилучшего набора весов нейронной сети (случай эволюции весов). В представленном процессе эволюционного обучения реализуется режим так называемого пакетного обучения (batch training mode), при котором значения весов изменяются только после предъявления сети всех обучающих образов. Такой прием отличается от применяемого в большинстве последовательных алгоритмов обучения - например, в методе обратного распространения ошибки веса уточняются после предъявления сети каждой обучающей выборки. Рассмотрим более подробно первый этап эволюционного подхода к обучению, связанный с фиксацией схемы представления весов. Как уже отмечалось, необходимо выбрать между бинарным представлением и кодированием весов действительными числами. Помимо традиционного двоичного кода, может применяться код Грея, логарифмическое кодирование (см. п. 4.8.4) либо другие более сложные формы записи данных [3]. В роли ограничителя выступает требуемая точность представления значений весов. Если для записи каждого веса используется слишком мало битов, то обучение может продолжаться слишком долго и не принести никакого эффекта, поскольку точность аппроксимации отдельных комбинаций действительных значений весов дискретными значениями часто оказывается недостаточной. С другой стороны, если используется слишком много битов, то двоичные последовательности, представляющие нейронные сети большой размерности, оказываются очень длинными, что сильно удлиняет процесс эволюции и делает эволюционный подход к обучению нерациональным с практической точки зрения. Вопрос оптимизации количества битов для представления конкретных весов все еще остается открытым [47]. Для устранения недостатков схемы двоичного представления данных было предложено задавать значения весов действительными числами, точнее - каждый вес описывать отдельным действительным числом [2, 12, 35]. Такой способ кодирования реализован, в частности, в программе Evolver [49]. Он использовался при решении примеров 4.23 - 4.27. Стандартные генетические операторы, разработанные для схемы двоичного представления данных, могут применяться и в случае задания весов двоичными числами, однако для большей эффективности эволюционного алгоритма и ускорения его выполнения созданы специальные генетические операторы.
|