NeuroPro

нейронные сети
и анализ данных

Начало
Новости
Услуги
Нейронные сети
Программы
Статьи
Заметки
Ссылки
Вопросы и ответы
Об авторе / контакты
Заметки

Применение генетических и эволюционных алгоритмов оптимизации

Генетические и эволюционные алгоритмы оптимизации являются алгоритмами случайно-направленного поиска и применяются в основном там, где сложно или невозможно сформулировать задачу в виде, пригодном для более быстрых алгоритмов локальной оптимизации (например, для градиентных алгоритмов, где возможно, вдобавок, "мгновенное" вычисление градиента представленной в виде нейронной сети функции с помощью алгоритма обратного распространения ошибки), либо если стоит задача оптимизации недифференцируемой функции или задача многоэкстремальной глобальной оптимизации. Заметка описывает 2 задачи, для решения которых 10 лет назад были применены генетические алгоритмы, чтобы показать, что в настоящее время, на гораздо более мощной персональной вычислительной технике, можно с помощью генетических и эволюционных алгоритмов находить околооптимальные решения чуть ли не 99% задач принятия решения.

Первый пример - создание команды роботов для разминирования территории, описанный в статье [1]. Генетическим алгоритмом оптимизировалась многослойная нейронная сеть, управляющая движением робота и выдающая, кроме этого, сигнал другим роботам команды. Т.о, кроме параметрической оптимизации нейромодели выполнялось еще и неявное "создание" некоторого языка коммуникации между роботами. Результаты показали преимущество команды однотипных коммуницирующих между собой роботов перед командой не обменивающихся сигналами роботов и перед командой случайно двигающихся роботов.

Второй пример - известное создание нейросетевого игрока в шашки, который достиг мастерского уровня [2-4]. Внутри поколения генетического алгоритма нейросети-особи играли сами с собой, и по итогам игр отбирались лучшие для следующего поколения.

Оба примера требовали довольно долгого вычисления значения фитнес-функции для особи. Для роботов-минеров надо было оценить качество разминирования, достигнутое после моделирования некоторого времени работы и передвижений команды однотипных роботов (а не одного робота - целью ведь было повышение качества от возникновения коммуникаций в команде), для нейроигрока в шашки нужно было сыграть партию, причем каждый делаемый ход выбирался после перебора всех возможных для данной позиции двух полных ходов (двух своих ходов и двух ходов противника), и качество этих возможных ходов как раз и прогнозировалось нейронной сетью. Т.е. время, затрачиваемое на вычисление значения фитнес-функции, было сравнимо с длительностью эпохи обычного обучения нейросети для довольно объемной задачи.

В настоящее время скорость работы современных процессоров даже персональных компьютеров выросла как минимум в 10-20 раз по сравнению с концом 1990х годов, а многоядерность процессоров позволяет эффективно распараллеливать вычисления внутри поколения генетического алгоритма. Более того, в 1999г появилась статья с рецептом аппроксимации вычислений функции exp(), нужной при вычислении значения гиперболического тангенса (наиболее часто используемой нелинейной функции нейронов для многослойных нейронных сетей) - аппроксимация ускоряет вычисление гиперболического тангенса в 4.4 раза и время срабатывания (именно срабатывания - генетическому алгоритму нужно именно оно, а не результат работы алгоритма обратного распространения) нейронной сети - в 1.5-2 и более раза в зависимости от размера нейросети (экспериментальные результаты приведены в заметке про ускорение вычислений гиперболического тангенса). Т.е. не только компьютеры стали работать быстрее, но и некоторые оптимизируемые нейросетевые модели (например, многослойные персептроны) можно существенно ускорить.

Отсюда можно сделать вывод, что генетические алгоритмы сейчас можно использовать практически всюду, препятствий в виде неприемлемых вычислительных затрат не осталось. Главное - суметь правильно или нетривиально поставить задачу и запрограммировать быструю реализацию оптимизируемой модели (я уже писал, что моя программа реализации сверточной нейронной сети работает на порядок быстрее другой - бывают программы быстрые и медленные, и быстрота достигается не только использованными алгоритмами, но и особенностями программирования).

Литература
1. Божич В.И., Кононенко Р.Н., Абияка А.А. Нейросетевое управление в мультиагентной системе с самоорганизующейся коммуникацией // Материалы Всеросс. конф. "Нейроинформатика-99", М.: МИФИ, 1999. Часть 3. - С.239-246.
2. Chellapilla K., Fogel D.B. Evolution, neural networks, games and intelligence / Proc. IEEE, 1999. Vol.87, No.9. - pp.1471-1496.
3. Chellapilla K., Fogel D.B. Evolving neural networks to play checkers without expert knowledge / IEEE Trans. Neural Networks, 1999. Vol.10, No.6. - pp.1382-1391.
4. Chellapilla K., Fogel D.B. Evolving an expert checkers playing program without using human expertise / IEEE Trans. Evolutionary Computation, 2001. Vol.5, No.4. - pp.422-428.