Применение генетических алгоритмов для обучения нейронных сетей
Мысль о том, что нейронные сети могут обучаться с помощью генетического алгоритма, высказывалась различными исследователями. Первые работы на эту тему касались применения генетического алгоритма в качестве метода обучения небольших однонаправленных нейронных сетей, но в последующем было реализовано применение этого алгоритма для сетей с большей размерностью.
Как правило, задача заключается в оптимизации весов нейронной сети, имеющей априори заданную топологию. Веса кодируются в виде двоичных последовательностей (хромосом). Каждая особь популяции характеризуется полным множеством весов нейронной сети. Оценка приспособленности особей определяется функцией приспособленности, задаваемой в виде суммы квадратов погрешностей, т.е. разностей между ожидаемыми (эталонными) и фактически получаемыми значениями на выходе сети для различных входных данных.
Приведем два важнейших аргумента в пользу применения генетических алгоритмов для оптимизации весов нейронной сети. Прежде всего, генетические алгоритмы обеспечивают глобальный просмотр пространства весов и позволяют избегать локальные минимумы. Кроме того, они могут использоваться в задачах, для которых информацию о градиентах получить очень сложно либо она оказывается слишком дорогостоящей.
В качестве наиболее очевидного способа объединения генетического алгоритма с нейронной сетью интуитивно воспринимается попытка закодировать в генотипе топологию объекта (в рассматриваемом случае - нейронной сети) с указанием количества нейронов и связей между ними при последующем определении весов сети с помощью любого известного метода. Проектирование оптимальной топологии нейронной сети может быть представлено в виде поиска такой архитектуры, которая обеспечивает наилучшее (относительно выбранного критерия) решение конкретной задачи. Такой подход предполагает перебор пространства архитектур, составленного из всех возможных вариантов, и выбор точки этого пространства, наилучшей относительно заданного критерия оптимальности. С учетом достоинств эволюционного проектирования архитектуры в последние годы было выполнено большое количество исследований, в которых основное внимание уделялось эволюции соединений нейронной сети, т.е. количества нейронов и топологии связей между ними. Лишь в некоторых работах рассматривалась эволюция функций переходов, хотя эти функции считаются важным элементом архитектуры и оказывают существенное влияние на функционирование нейронной сети. Также, как и в случае эволюционного обучения, первый шаг эволюционного проектирования архитектуры заключается в формировании исходного множества рассматриваемых вариантов.
Пример 1
Пусть у нас есть нейронная сеть (персептрон) с некоторым набором коэффициентов w = [w1,w2… wn]. Данный вектор и будет являться хромосомой нейронной сети, где wi - есть ген нашей хромосомы. Дальше скрещивание будет происходить по отработанной схеме. Остаётся только определиться с генетическим оператором. В данной работе использовался одноточечный кроссинговер. Пример результата оператора кроссинговер, когда значение точки деления равно 4. т.е. после 4 коэффициента берём веса другой сети
Пример 2.
У нас имеется n особей в текущей популяции. Все особи этой популяции сходны между собой по своей структуре, т.е. они имеют одинаковое число слоёв и нейронов в каждом слое. Если в качестве хромосомы нейросети представить каждый весовой коэффициент, то скрещивание двух сетей будет представлять собой скрещивание соответствующих весовых коэффициентов. Т.е. данный способ слияния двух сетей сводится к скрещиванию двух вещественных чисел. Для которых, в свою очередь применяются стандартные методы.
Выводы
Если на некотором множестве задана сложная функция от нескольких переменных, то генетический алгоритм – это программа, которая за разумное время находит точку, где значение функции достаточно близко к максимально возможному. Выбирая приемлемое время расчета, мы получим одно из лучших решений, которые вообще возможно получить за это время.