В библиотеку Портал магистров ДонНТУ ДонНТУ
Искуственный интеллект

Введение в генетические алгоритмы

Мелани Митчелл

Лондон, Кэмбридж 1999

Автор перевода: Збыковский Иван Eвгеньевич

Глава 2.3 ЭВОЛЮЦИЯ НЕЙРОННЫХ СЕТЕЙ

Нейронные сети - биологически мотивированные подходы к машинному обучению, вдохновленные идеями от нейронауки. Недавно некоторые усилия были предприняты, чтобы использовать генетические алгоритмы, чтобы развить аспекты нейронных сетей. В его самой простой форме "прямого распространения" (рис 2.16). нейронная сеть - набор связанных активирующихся единиц ("нейроны"), в которых подключения являются взвешенными, обычно с вещественными весами. Сеть представляется с активационным образом на его входных модулях, таким набором чисел, представляющих особенности изображения, которое будет классифицировано (например, пиксели в изображении рукописной буквы алфавита). Активация распространяет в прямом направлении через один или более слоёв средних ("скрытых") модулей на выходные модули через взвешенные соединения. Как правило, активационный сигнал, приходя в модуль от других единиц, умножается на веса связей, по которым он распространяется, и затем складывается вместе с другими поступающими активационными сигналами. Результат - обычно ограничивается (то есть, модуль "включается", если результирующая активация - выше порога модуля). Этот процесс предназначается для примерного подражания пути распространения активации через сети нейронов в мозге. В сети прямого распространения сигналы распространяются только в прямом направлении, начиная с входного слоя через скрытые слои к выходному слою. Много людей также экспериментировали с "рекуррентными" сетями, в которых есть обратное связи так же как и прямое распространение между слоями.

Иллюстрация 2.16: схематическая диаграмма простой нейронной сети прямого распространения и процессом обратного распространения ошибки, по которому откорректированы значения веса.

После того, как сигнал распространился через сеть прямого распространения, результирующий образец сигнала на выходе сети кодирует "ответ" сети на вход (например, классификация входного образца как символ A). В большинстве приложений, сеть учится правильно отображать связь между образцами входа и выхода через алгоритм обучения. Обычно веса первоначально устанавливаются как маленькие случайные значения. После этого множество обучающих входов представляются последовательно сети. В процедуре обучения обратного распространения ошибки (Rumelhart, Hinton, и 1986 Williams), после этого каждый вход распространяется через сеть, и генерирует выход, "учитель" сравнивает значения в каждом выходном модуле с правильными значениями, и веса в сети корректируются, в порядке уменьшения различия между выходом сети и желаемым выходом. Каждую итерацию этой процедуры называют "циклом обучения", а полный проход циклов обучения через множество обучающих входов, называется " эпохой обучения " (Обычно много эпох обучения необходимо для сети, чтобы обучить успешно классифицировать данный набор обучающих входов.) Этот тип процедуры известен как "обучение с учителем", так как учитель контролирует обучение, обеспечивая правильные значения выхода, чтобы управлять процессом обучения. В "обучении без учителя" нет никакого учителя, и обучающая система должна учиться на собственном использовании менее детализированной (и иногда менее надежной) обратной связи из окружающей среды. Есть много способов применить ГА к нейронным сетям. Некоторые аспекты, которые могут быть развиты, - веса в фиксированной сети, сетевая архитектура (то есть, число модулей и их соединений, которые можно изменить), и правило обучения, используемое сетью. Здесь я опишу четыре различных проекта, каждый из которых использует генетический алгоритм, чтобы развить один из этих аспектов. (Два подхода для выбора сетевой архитектуры будут описаны.) (Для сборника статей о различных комбинациях генетических алгоритмов и нейронных сетей, см. Whitley и 1992 Schaffer.)

Эволюция Весов в Фиксированной Сети

Дэвид Монтана и Лоренс Дэвис (1989) изобрели первый метод - подбор весов в фиксированной сети. Таким образом, Монтана и Дэвис использовали GA вместо обратного распространения ошибки как способ поиска подходящего набора весов для постоянного набора соединений. Несколько проблем связались с алгоритмом обратного распространения ошибки (например, тенденция застревать в локальных оптимумах в пространстве весов, или отсутствии "учителя", чтобы контролировать обучение в некоторых задачах), часто делают желательным, чтобы найти альтернативу схемам обучения весов. Монтана и Дэвис интересовались использованием нейронных сетей, чтобы классифицировать под водой звуковые "лофаграммы" (подобные спектрограммам) в два класса: "интересующие" и "не интересующие" Полная цель состояла в том, чтобы "обнаружить и распознать интересующие сигналах посреди широкого разнообразия акустического шума и помех, которые существуют в океане." Сети должны были обучаться из базы данных, содержащей лофаграммы и классификации, сделанные экспертами относительно того, действительно ли данный lofargram "интересующий." Каждая сеть имела четыре входных нейрона, представляя четыре параметра, используемые экспертной системой, которая выполнила ту же самую классификацию. Каждая сеть имела один выходной нейрон и два слоя скрытых нейронов (первый с семью модулями и второй с десятью нейронами). Сети были полносвязными, то есть каждый нейрон был связан с каждым нейроном в следующем более высоком уровне. Всего между модулями было 108 взвешенных соединений между нейронами. Кроме того, было 18 взвешенных соединений между невходными модулями и "пороговым модулем", чьи исходящие связи осуществили пороговое значение для каждого из невходных модулей, для в общей сложности 126 весов. GA использовался следующим образом. Каждая хромосома была списком (или "вектор") из 126 весов. Иллюстрация 2.17 показывает (для намного меньшей сети), как было сделано кодирование: веса были считаны из сети в определённом порядке (слева направо и сверху вниз) и помещены в список. Обратите внимание, что каждый "ген" в хромосоме - вещественное число скорее чем бит. Чтобы вычислить фитнесс функцию данной хромосомы, весам в хромосоме были назначены ссылки в соответствующей сети, сеть была обучена на обучающей выборке (236 примеров от базы данных lofargrams), и была возвращена сумма квадратов ошибок (суммарная по всем циклам обучения). Здесь, "ошибка" была различием между желательным значением выхода и фактическим значением выхода. Низкая ошибка означала высокую пригодность.

Иллюстрация 2.17: Иллюстрация кодирования Монтаны и Дэвиса сетевых весов в список, который служит хромосомой для GA. Модули в сети пронумерованы для более поздней ссылки. Вещественные числа на связях - веса.

Иллюстрация 2.18: Иллюстрация метода мутации Монтаны и Дэвиса. Здесь мутируют веса на входных связях к модулю 5


Начальная популяция 50 весовых векторов была выбрана случайно, с каждым весом, являющимся между 0 и + 1.0. Монтана и Дэвис пробовали множество различных генетических операторов в различных экспериментах. Операторы мутации и скрещивания, которые они использовали для сравнения ГA с обратным распространением, проиллюстрированы на рис 2.18 и рис 2.19. Оператор мутации выбирает n невходных модулей и, для каждого входящей связи к этим модулям, добавляет случайное значение между 0 и + 1.0 к весу на связи. Оператор скрещивания берет два родительских весовых вектора и, для каждого невходного модуля в векторе потомства, выбирает одного из родителей наугад и копирует веса на входных связях от родителя к потомку. Обратите внимание, что создано только одно потомство. Производительность ГA, использующего эти операторы сравнивалась с работой алгоритма обратного распространения. ГA имел популяцию из 50 векторов веса, и использовался метод селекции - ранжирование. ГA позволили выполниться для 200 поколений (то есть, 10 000 сетевых вычислений). Алгоритм обратного распространения позволил выполнить 5000 итераций, где одна итерация - полная эпоха (полное прохождение всей обучающей выборки). Монтана и Дэвис доказывали, что два вычиления сети с помощью генетического алгоритма – эквивалентно одной итерации обратного распространения ошибки, так как обратное распространение на данной обучающей выборке состоит из двух частей - прямое распространение сигнала (и вычисление ошибок в выходных модулях) и обратное распространении ошибки (и корректировка весов).

Рис 2.19 Иллюстрация метода скрещивания Монтаны и Дэвиса. Потомство создаётся таким образом: : для каждого невходного модуля случайно выбирается родитель, и веса на входящих связях к этому модулю копируются от выбранного родителя. В дочерней сети, показанной здесь, входящие связи к модулю 4 приходящей от родителя 1 и входящая связь к модулям 5 и 6 приходит от родителя 2.

ГA выполняет только первую часть. Так как вторая часть требует большего количества вычисления, два вычиления ГA забирает меньше чем половину вычисления единственной итерации обратного распространения. Результаты сравнения отображены на рис 2.20. Здесь одна итерация обратного распространения изображена для каждых двух вычислений ГA. Ось X дает число итераций, и ось Y дает лучшее вычисление (самая низкая сумма квадратов ошибок) найденное к этому времени. Можно заметить, что ГA значительно превосходит по быстродействию обратное распространение в этой задаче, получая лучшие весовые вектора более быстро. Эксперимент показывает, что в некоторых ситуациях ГA - лучший метод обучения для сетей чем простое обратное распространение. Это не означает, что ГA превзойдет по быстродействию обратное распространение во всех случаях. Также возможно, что расширения обратного распространения могли бы помочь преодолевать некоторые из проблем, которые препятствовали ему выполняться так же, как ГA в этом эксперименте.


Иллюстрация 2.20: результаты Монтаны и Дэвиса, сравнивающие работу GA с обратным распространением. Иллюстрация составляет график лучшего вычисления (ниже лучше), найденного в данной итерации. Сплошная линия: генетический алгоритм. Прерывистая линия: обратное распространение. (Перепечатанный из Материалов Международной Совместной Конференции по Искусственному интеллекту; © 1989 Morgan Kaufmann Publishers, Inc. Перепечатанный в соответствии с разрешением издателя.)

Schaffer, Whitley, и Eshelman (1992) указали, что ГA не превосходит по быстродействию лучшие методы настройки весов (например, "quickprop") на задачах обучения с учителем, но они предсказывают, что ГA будет самым полезным в нахождении весов в задачах, где обратное распространение и его вариации не могут использоваться, в том числе в задачах обучения без учителя, в которых ошибка в каждом выходном модуле не доступна для обучающей системы, или в ситуациях, в которых доступно только разбросанное пополнение. Это часто имеет место для задач "нейроконтроля", в которых нейронные сети используются, чтобы управлять сложными системами, таких как роботы, перемещающихся в незнакомых средах.

Эволюция сетевой архитектуры

ГА Монтаны и Дэвиса эволюционировал веса в фиксированой сети. Как в большинстве приложений нейронных сетей, архитектура сети - число модулей и их связей - ранеее опеределялись догадками программистов, часто которым помогало немного эвристики (например, "больше скрытых модулей требует более сложных проблем"), испытаний и ошибок. Исследователи нейронной сети знают слишком хорошо, что специфическая выбранная архитектура может определить успех или отказ приложения, таким образом они бы очень хотели уметь автоматически оптимизировать процедуру проектирования архитектуры для специфического приложения. Многие полагают, что ГА хорошо удовлетворяют для этой задачи. Было несколько попыток в этих направлениях, большинство которых относится к одной из двух категорий: прямое кодирование и грамматическое кодирование. При прямом кодировании, сетевая архитектура непосредственно закодирована в хромосому ГA. При грамматическом кодировании, ГA не развивает сетевые архитектуры: он развивает грамматику, которая может использоваться для разработки сетевой архитектуры.

Иллюстрация 2.21: иллюстрация схемы представления Миллера, Тодда, и Хегда. Каждый вход в матрице представляет тип соединения на связи между "от модуля" (столбец) и "к модулю" (строка). Строки матрицы связаны вместе, чтобы сделать кодирование битовой строки сети, представленной внизу рисунка. Результирующая сети показана справа. (Упрощенно от Миллера, Тодда, и Хегда 1989.)

В библиотеку Портал магистров ДонНТУ ДонНТУ