УДК 519.95
РАЗРАБОТКА ЭВОЛЮЦИОННОГО АЛГОРИТМА, ИСПОЛЬЗУЮЩЕГО В КАЧЕСТВЕ ШАБЛОНА БИОЛОГИЧЕСКУЮ МОДЕЛЬ РАЗВИТИЯ ПОПУЛЯЦИИ
© О.А. Кожевникова, В.П. Рыков, В.В. Хлебников
Ключевые слова: эволюционные алгоритмы; биологическая модель развития популяции; модель «Жизнь»; искусственные нейронные сети.
Рассматривается новый подход к реализации эволюционных алгоритмов, основанный на использовании в качестве шаблона биологических моделей развития популяции.
ВВЕДЕНИЕ
Эволюционные и генетические алгоритмы представляют собой эвристические методы решения оптимизационных задач, основанные на механизмах работы, которые напоминают биологическую эволюцию [1]. На сегодняшний день данные алгоритмы широко применяются в таких задачах как обучение и настройка искусственных нейронных сетей (ИНС), оптимизация функций и запросов баз данных, задачи на графах и др.
Существует множество разновидностей, модификаций и улучшений эволюционных алгоритмов, призванных повысить эффективность их использования. Однако всех их объединяет определенная общая схема -эволюционные алгоритмы моделируют развитие жизненного цикла некоторой популяции особей, т. е. производят скрещивание существующих особей (также возможно применение оператора мутации), в результате получая популяцию потомков и далее производя селекцию, в ходе которой выбираются лучшие представители из всех.
Данная схема эволюционного алгоритма представлена на рис. 1.
Скрещквание
4
Мутации
4
Селекция
Рис. 1. Схема работы эволюционного алгоритма
Итак, эволюционный алгоритм представляет собой упрощенную имитацию развития биологической популяции. В связи с этим возникает идея нового подхода к реализации эволюционных алгоритмов, основанного на использовании в качестве шаблона некоторой существующей, биологической модели развития популяции (например, модель «Жизнь», модель «Хищник - жертва»).
Таким образом, целью данной работы является предложение нового подхода к реализации эволюционных алгоритмов, основанного на использовании в качестве шаблона биологических моделей развития популяции, сравнение предложенного подхода с другими популярными численными алгоритмами.
В данной статье в качестве такой модели будет рассматриваться модель-игра «Жизнь», предложенная Дж. Конвеем.
ОПИСАНИЕ АЛГОРИТМА
Рассмотрим подробнее общий смысл биологической модели «Жизнь», которую мы в дальнейшем будем использовать для построения эволюционного алгоритма. Представим себе прямоугольное клетчатое поле, в каждой клетке которого может жить некоторое существо (особь). Клетка также может быть пустой, т. е. в ней на данный момент никто не живет. Функционирование модели «Жизнь» задается следующими параметрами [2]:
- начальной конфигурацией особей популяции (сюда относится количество особей, а также их расположение на поле);
- некоторыми правилами - своего рода простыми биологическими законами, которые регулируют развитие популяции;
- работа прекращается, если на поле не останется ни одной особи, если при очередном шаге ни одна из клеток не меняет своего состояния (складывается стабильная конфигурация) или если конфигурация на очередном шаге в точности (без сдвигов и поворотов) повторит себя же на одном из более ранних шагов (складывается периодическая конфигурация).
Следует отметить, что данные параметры не являются жесткими, т. е. они могут быть варьируемыми,
например, можно придумать множество биологических законов, регулирующих развитие популяции, и тем самым получить несколько иную биологическую модель. Кроме того, можно варьировать условие остановки.
На каждом шаге функционирования модели случайным образом выбирается клетка на поле, и к ней применяются биологические законы.
Так, модель-игра «Жизнь», предложенная Дж. Конвеем, оперирует следующими законами [2-3]:
- если у существующей особи имеются два или три соседа, то она выживает;
- если у особи больше трех или меньше двух соседей, она погибает;
- если у пустой клетки имеется ровно три соседа, то на данной клетке рождается новая особь.
Блок-схема классической модели «Жизнь» представлена на рис. 2.
Следует отметить, что, используя данную модель в качестве основы эволюционного алгоритма, нужно определиться, как формализовать числовые данные в виде особей для работы с этой моделью.
Первый вариант заключается в том, чтобы использовать в качестве особи одно некоторое число, тем самым как бы генерируя отдельные «гены» для результирующей функции.
Второй вариант заключается в использовании в качестве особи линейного массива чисел. В этом случае мы сможем оперировать большим количеством генов результирующей функции, т. е. каждая особь будет иметь такое количество чисел-генов, которое равно
размерности рассматриваемой функции. Кроме того, данный вариант предоставляет больший простор для скрещивания.
Еще один вопрос, связанный с эволюционными алгоритмами, - каким образом осуществлять рождение новой особи, т. е. каким образом производить операцию скрещивания. Так как в рассматриваемом случае рождение новой особи происходит только при наличии трех соседей, то здесь могут использоваться несколько вариантов:
- новая особь будет представлять собой среднее значение окружающих ее соседей;
- можно получать новую особь в соответствии с формулой, используемой в алгоритме дифференциальной эволюции:
¥ = Уу +Р-(у2 -Уз),
(1)
Рис. 2. Схема работы модели «Жизнь» 1424
где V - новое значение; уь г2, у3 - значения соседних клеток; F - некоторая положительная действительная константа в интервале [0; 2].
Комбинация обоих данных вариантов может дать более «хороший» эффект.
Кроме того, следует помнить о такой важной составляющей эволюционного алгоритма, как оператор мутации. Важность этого элемента алгоритма заключается в следующем: дело в том, что главной ахиллесовой пятой многих эволюционных алгоритмов является недостаток разнообразия в особях. Данная проблема может иметь место и в нашем случае, когда мы будем осуществлять скрещивание особей путем нахождения среднего значения из трех. Может сложиться ситуация, когда мы будем получать крайне близкие друг к другу числа и в итоге застрянем в локальном экстремуме. Решением данной проблемы может стать комбинация следующих схем: с одной стороны, мы разнообразим процесс эволюции использованием наряду со скрещиванием путем нахождения среднего значения оператора скрещивания, позаимствованного из алгоритма дифференциальной эволюции (1); с другой стороны, к некоторому количеству рожденных на данном шаге особей мы будем применять оператор мутации, который будет радикально менять числовые значения особей (например, путем смены знака). Количество мутирующих особей также является варьируемым параметром алгоритма.
Также в модели «Жизнь», предложенной Дж. Конвеем, изменения происходят на всем поле одновременно в отличие от алгоритма, показанного на рис. 2, где изменения будут происходить только тогда, когда на клетку укажет генератор случайных чисел, т. е. в модели Дж. Конвея гибель старых и рождение новых особей происходят одновременно на всем доступном пространстве. При разработке алгоритма данный факт также необходимо учитывать.
Таким образом, на каждом шаге эволюционного алгоритма, построенного на основе модели «Жизнь», будут происходить следующие операции:
- сканировать каждую клетку поля, проверить, является ли она пустой;
- подсчитать количество соседей;
- если клетка пуста и число соседей равняется трем, то создать в данной клетке новую особь одним из описанных выше способов;
- если клетка не пуста и число соседей меньше двух или больше трех, то удаляем данную особь;
- после того, как произошло изменение всех клеток на поле (создалось новое поколение), произвести над некоторыми особями мутацию;
- выбрать из всего поколения лучшие гены и подставить их в функцию.
Блок-схема данного процесса представлена на рис. 3.
При реализации алгоритма остановимся на следующих допущениях:
- одной особи будет соответствовать одно десятичное дробной число (для упрощения реализации);
- операция скрещивания будет производиться обоими способами, описанными выше, выбор способа для данной клетки осуществляется случайным образом;
- начальную популяцию составляют случайные величины, сгенерированные в заданном диапазоне, в среднем - одна особь на четыре клетки поля;
- на каждой итерации будем подвергать мутации от 0 до 5,5 % особей, мутация осуществляется сменой знака данного числа.
ПРОГРАММНАЯ РЕАЛИЗАЦИЯ АЛГОРИТМА
Эволюционный алгоритм, использующий в качестве шаблона биологическую модель развития популяции «Жизнь», правила, предложенные Дж. Конвеем, а так же допущения, описанные выше, реализуем в качестве метода обучения искусственных нейронных сетей в программном комплексе для моделирования ИНС с поддержкой модульного принципа обучения [4]. В качестве языка программирования и среды разработки
будем использовать соответственно «C++» и «Qt Creator». Затем докажем работоспособность и состоятельность разработанного алгоритма на примере вычислительного эксперимента.
Вычислительный эксперимент проведем на персональном компьютере под управлением ОС GNU/Linux.
ВЫЧИСЛИТЕЛЬНЫЙ ЭКСПЕРИМЕНТ
Финансовое прогнозирование является одной из основных задач, решаемых при помощи нейронных сетей, поэтому в качестве задачи для проверки работоспособности разработанного алгоритма было выбрано прогнозирование валютного курса евро по отношению к рублю (использование выбранной валюты не имеет принципиального значения) [5].
Исходными данными для эксперимента послужили значения курса евро в период с 1 августа по 12 октября 2012 г.
Вычислительный эксперимент будет состоять из нескольких этапов:
- формирование обучающей выборки. На данном этапе определяется вид представления исторических и прогнозируемых данных, происходит формирование наборов, подаваемых на входы и соответствующих им наборов выходов сети;
- выбор структуры нейронной сети (рис. 4). Была выбрана топология нейронной сети Ворда, наилучшие результаты были показаны сетью, состоящей из трех слоев: входной слой содержит 3 нейрона, скрытый - 6 нейронов, на выходе - 1 нейрон. В скрытом слое 3 нейрона используют квадратичную функцию активации, другие 3 - синусоидальную;
- настройка параметров обучения ИНС и обучение. Обучать нейронную сеть будем независимо с помощью трех методов: собственно применяя разработанный алгоритм обучения нейронной сети, основанный на использовании эволюционной модели «Жизнь», метод Монте-Карло и метод покоординатного спуска. Это необходимо, чтобы оценить эффективность разработанного метода в сравнении с популярными существующими алгоритмами;
- симуляция прогнозирования. На входы нейронной сети подавались примеры, которые не были внесены в обучающую выборку, но результат по ним был известен.
Рис. 3. Схема работы алгоритма
Рис. 4. Структура нейронной сети для прогнозирования
Попытка прогнозирования была осуществлена на 10 значений валютного курса евро по отношению к рублю вперед, начиная с последнего примера обучающей выборки. Результаты, показанные используемыми алгоритмами обучения, приведены в табл. 1.
На рис. 5 показаны результаты прогнозирования нейронной сети с использованием трех методов обучения.
Рис. 6 отображает значения ошибки, допущенной тем или иным методом на каждом шаге прогнозирования.
Средние значения ошибок представлены в табл. 2.
Следует отметить, что для обучения данной нейронной сети метод Монте-Карло произвел 1856 итераций с шагом 0,001, метод покоординатного спуска использовал только 4 итерации, а модель «Жизнь» - всего лишь 2. При использовании методов покоординатного спуска и модели «Жизнь» поиск весовых коэффициентов осуществлялся в диапазоне [0; 1].
Из приведенных выше данных видно, что из трех применявшихся алгоритмов наилучший прогноз валютного курса был получен при использовании эволюционного алгоритма, основанного на модели «Жизнь».
Таблица 1
Результаты прогноза
Реальное значение Модель «Жизнь» Метод Монте-Карло Метод покоординатного спуска
40,3525 40,21234121 40,3992444 39,99479744
40,264 40,25298567 40,30087472 40,20022665
40,214 40,28512468 40,25028994 40,15767994
40,3416 40,42934345 40,26330754 40,14635847
40,5798 40,3613519 40,26304438 40,24663383
40,6544 40,30401858 40,16038116 40,56462429
40,6311 40,38128979 40,12133806 40,85796474
40,6948 40,57810892 40,19152549 41,08476748
40,6233 40,64607385 40,23467434 41,24710811
40,7148 40,6188076 40,22250991 41,14942137
3 4 5 6
День прогноза
Рис. 5. Прогноз валютного курса евро по отношению к рублю
1 23456789 10
День прогноза
Рис. 6. Ошибка прогнозирования
Таблица 2
Средняя ошибка
Модель «Жизнь» Метод Монте-Карло Метод покоординатного спуска
0,136413831 0,290292818 0,2771244108
Кроме того, для данной задачи разработанный алгоритм потребовал наименьшее количество итераций. Поэтому можно сделать вывод об эффективности целесообразности использования разработанного алгоритма для решения оптимизационных задач, в частности, для обучения искусственных нейронных сетей.
ВЫВОДЫ
1. Описана идея использования в качестве эволюционных алгоритмов существующих биологических моделей.
2. Реализован эволюционный алгоритм, использующий в качестве шаблона биологическую модель развития популяции «Жизнь» Дж. Конвея.
3. Рассмотрен вычислительный эксперимент, доказывающий эффективность разработанного алгоритма
и целесообразность его применения для решения практических задач.
ЛИТЕРАТУРА
1. Генетические и эволюционные алгоритмы. URL: http://www.aipo-rtal.ru/articles/genetic-algorithms/gen-evo-algorithms.html. Загл. с экрана.
2. Мозговой М.В. Занимательное программирование: самоучитель. СПб.: Питер, 2004. 208 с.
3. Правила «Жизни». URL: http://famlife.narod.ru/rules.html. Загл. с экрана.
4. Арзамасцев А.А., Рыков В.П. Модель искусственной нейронной сети (ИНС) с реализацией модульного принципа обучения // Вестник Тамбовского университета. Серия Естественные и технические науки. Тамбов, 2012. Т. 17. Вып. 4. С. 1219-1224.
5. Нейронные сети. URL: http://www.neuroproject.ru/neuro.php. Загл. с экрана.
Поступила в редакцию 8 апреля 2013 г.
Kozhevnikova O.A., Rykov V.P., Khlebnikov V.V. DEVELOPMENT OF EVOLUTION ALGORITHM USING THE BIOLOGICAL MODEL OF POPULATION DEVELOPMENT AS EXAMPLE
A new approach to realization of evolution algorithms based on use of biological models of population development as an example is considered.
Key words: evolution algorithms; biological model of population development; model “Life”; artificial neuron networks.