BC/NW 2017 № 1 (30):10.3
ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКОГО АЛГОРИТМА В НЕЙРОННЫХ СЕТЯХ
Курников Д.М., Петров С.А.
Генетический алгоритм (genetic algorithm) – это алгоритм, используемый в нейронных сетях для решения задач оптимизации и моделирования путём стохастического подбора и комбинации искомых параметров с использованием механизмов, похожих на биологическую эволюцию. Он состоит из следующих этапов:
1. создание начальной популяции;
2. выполнение операций скрещивания (селекция);
3. мутация и формирование новой, следующей популяции.
Генетический алгоритм обладает концептуальными свойствами, дающими ему ряд преимуществ при решении практических задач. Одним из них является высокая адаптируемость к условиям окружающей среды. Повседневные задачи практической деятельности могут обладать высокой динамикой в процессе своего решения. При использовании традиционных методов решение таких активно меняющихся задач приводит к большим затратам времени и ресурсов, что не является оптимальным. Эволюционный подход дает возможность гибкого анализа и изменения популяции применительно к динамическим условиям. При этом не всегда может использоваться полный перебор. Другое преимущество генетического алгоритма для решения задач состоит в способности быстрой генерации достаточно оптимальных решений.
Популяцией называется набор хромосом (решений). Эволюция популяций – это естественный процесс чередования поколений, в которых хромосомы изменяют свои признаки, чтобы каждая новая, следующая популяция наилучшим способом приспосабливалась к условиям внешней среды.
При решении практических задач с использованием генетического алгоритма обычно выполняют четыре предварительных этапа:
· выбор способа представления решения;
· разработка операторов случайных изменений;
· определение способов «выживания» решений;
· создание начальной популяции альтернативных решений.
При работе с генетическими алгоритмами выполняются следующие действия:
1. генерируем начальную популяцию из N хромосом;
2. измеряем для каждой хромосомы ее пригодность;
3. отбираем пару хромосом-родителей с помощью способов отбора;
4. совершаем рекомбинацию двух родителей, производя двух потомков;
5. проводим мутацию потомков;
6. повторяем шаги 3-5, пока не будет сгенерировано новое поколение популяции, содержащее N хромосом;
7. Повторяем шаги 2-6 до окончания процесса.
Схема выполнения этапов генетического алгоритма приведена на рисунке 1.
Рисунок 1. Схема выполнения генетического алгоритма
В сравнении с большинством других алгоритмов обучения, для генетических алгоритмов требуется несколько наборов начальных значений параметров вместо одного, которые называются популяцией хромосом.
Популяция обрабатывается с помощью различных механизмов. К ним можно отнести алгоритмы самовоспроизведения, мутации(изменчивости), генетической композиции. Они обладают достаточно высокой результативностью в условиях случайных воздействий на популяцию. При этом за счет случайных изменений генов в отдельных хромосомах и рекомбинации генетического материала некоторые гены способны мигрировать между хромосомами.
Эффективность алгоритма зависит от параметров (размер начальной популяции, тип отбора, уровень мутации и др.), подбираемых опытным путём.
У генетических алгоритмов имеются следующие особенности:
· данные алгоритмы оперируют множеством параметров в закодированной форме;
· данные алгоритмы ведут поиск множеств-популяций точек, а не отдельную точку;
· данные алгоритмы не являются методом градиентного спуска. Это означает, что он не использует значение производных, гессианов, вейвлетов или других вспомогательных параметров функции;
· в данных алгоритмах правила принятия решения носят вероятностный, а не детерминированный характер.
Приведенная детализация организации генетического алгоритма существенно отличают его от традиционных подходов, характерной для классической оптимизации.
В плане использования можно выделить следующие достоинства:
- широкая область применения – обуславливается возможностью проблемно-ориентированного, функционального кодирования решений;
- генетические алгоритмы могут комбинироваться с другими видами алгоритмов – возможно сочетание как эволюционных, так и неэволюционных алгоритмов;
- генетические алгоритмы просты в реализации при поиске в пространстве решений большой размерности и независимы от его структуры;
- генетические алгоритмы инвариантны относительно вида целевой функции (функции приспособленности).
Из недостатков можно выделить следующие:
- ввиду эвристичности генетических алгоритмов нет гарантии наличия критериев оптимальности полученного решения;
- относительно высокая вычислительная трудоемкость. Она обуславливается оценкой как перспектив, так и ретроспектив для процесса моделирования эволюции;
- невысокая эффективность генетических алгоритмов на заключительных фазах поиска, т.к. отсутствуют механизмы, ориентированные на быстрое попадание в локальный оптимум.
Основной трудностью решения инженерных оптимизационных задач с большим количеством локальных оптимумов является предварительная сходимость алгоритмов. Она состоит в том, что для мультимодальной функции решением может оказаться локальный оптимум, доставляющий неоптимальное значение. На уровне генетического алгоритма проблема сходимости частично решается использованием различных вариантов параметров и их модификации.
Общей тенденцией в исследовании данных алгоритмов все в большей степени является применение комбинированных методов параметров. При этом важно сочетание предварительных знаний о решаемых задачах и предварительных результаты, как при алгоритме обратного спуска.
Главное достоинство генетических алгоритмов состоит именно в том, что они позволяют в значительной мере преодолеть данные трудности.
Рассмотрим стратегию обучения нейронных сетей с применением генетических алгоритмов. Первой проблемой реализации алгоритмов генетической является кодировка информации, содержащейся в модели нейронной сети.
Зададим топологию сети. В топологии нейронных сетей некоторые связи между нейронами различных слоев могут отсутствовать или существовать перекрестные связи между нейронами в слоях, не являющихся соседними (рисунок 2).
Рисунок 2. Вид популяции из нейронных сетей
Как видно из рисунка 2, для фиксированной топологии нейронной сети генетическая информация полностью содержится в значениях синаптических (от сл. «синапс») весов (W) и смещений (B). Таким образом, вектор (W, B) рассматривается как хромосома. Блок-схема применения генетического алгоритма при обучении сети приведена на рисунке 3.
Рисунок 3. Схема применения генетического алгоритма к обучению нейронной сети
Генетический алгоритм может быть переработан для различных задач. Применимость генетического алгоритма проявляется в задачах как со статическими величинами, не меняющимися во времени, так и с динамическими. Данный алгоритм применим для поиска закономерностей, получения статистического анализа и обработки, распознавания изображений.
Генетический алгоритм заложен в основу некоторых программных решений, реализующих нейронные сети. Например, эволюционная модификация данного алгоритма является частью самообучающейся системы IBM Watson. Широкого распространения и применения в прикладных задачах с использованием нейронных сетей генетический алгоритм ещё не получил, т.к. является достаточно сложным для реализации и адаптации в определённых областях.
Стоит отметить, что генетический алгоритм является эвристическим, т.е. он не является гарантированно точным или оптимальным. Однако применение данного алгоритма считается достаточным для решения определённых задач. В основе генетического алгоритма лежит практический подход, поэтому он часто подвергается критике. Так известный исследователь алгоритмов Стивен С. Скиена, профессор кафедры вычислительной техники университета Стоуни—Брук и лауреат премии института IEEE, писал, что не находил такой задачи, для решения которой генетические алгоритмы были бы самым подходящим и оптимальным средством.
Список использованной литературы
1. Хайкин С. Нейронные сети: полный курс, 2¬e издание.:Пер. с анrл. – М. Издательский дом "Вильямс", 2006.
2. Курейчик В.М. Генетические алгоритмы. Обзор и состояние // Новости искусственного интеллекта. — 1998.
3. Стивен С. Скиена Алгоритмы. Руководство по разработке – СПб: БХВ-Петербург, 2011