Слепцов Н В

реклама
Слепцов Н.В.
ПГУ,Пенза
ЭВОЛЮЦИОННАЯ ГЕНЕРАЦИЯ СЕТЕЙ НА ОСНОВЕ КОДИРОВАНИЯ СВЯЗЕЙ
Использование эволюционных и генетических алгоритмов (ЭА и ГА) [1] для генерации сетей рассмотрено в ряде работ, исследующих возможностиэволюционных механизмов для представления, генерации и развития представлений вычислительных структур на основе графо – сетевых отображений.
Наиболее интересны с практической точки зрения здесь были работы, анализирующие применение
эволюционных методов создания и оптимизации искусственных нейронных сетей [3,4]. В частности,
известны подходы по эволюционной настройке весов для неизменной топологии, изменение количества
узловс полным отображением структуры сети в хромосоме, рассмотрение сети как множества правил
функционирования, а не соединений [2]. Можно отметить применение разновидностиэволюционных методов – генетического программирования (ГП)для создания нейросетей, например, прямым кодированиемузлов и связей, а также клеточные методы кодирования сетей [3].
Последние применяют кодированиев хромосоме дерева операторов узлов сети; развитие сети основывается на использованиикаждым оператором своего узла-предка, модификации его и, возможно, создание сетевых узлов и связей. Операторы выполняются в соответствии с фиксированными правилами обхода дерева. Применяются два вида операторов – терминальные – не имеющие потомков, и нетерминальные
– имеющие потомство.По окончании процесса модификации сети нетерминальные операторы перемещаются
из своего узла в один из узлов потомков для его последующей модификации. Обычно развитие сети
начинается с одного узла.
Преимущества клеточного кодирования: во – первых, оно позволяет описывать все возможные ИНС;
во-вторых, оно основано на модульном принципе – специальные операторы многократно используют одни
и те же группы правил при развитии сети, в – третьих, применяются генотипы, аналогичныеструктурамдеревьевв ГП для получения фенотипов ИНС неограниченного размера и для реализации механизмов
кроссовера между сетями с различной топологией.
Некоторые недостатки клеточного кодирования могут быть сведены к следующим. Фиксированный порядок обхода хромосоми жестко определенный порядок выполнения операторовприводит к формированию
деревьев, фенотип потомков которых очень существенно отличается от фенотипа предков, что для ряда
приложение осложняет поиск в пространстве фенотипов. Другой недостаток связан с явной ориентацией
на развитие узлов часто в ущерб развитию связей в сети. Наконец, кодировкасоздает сети с высоким
уровнем связанности – что приемлемо для ряда сетей прямого распространения, сетей Хопфилда, но в
большинстве случаев является недостатком.
В некотором смысле альтернативой клеточному кодированию является подход, который может быть
назван кодированием связей. Подход принципиально основан на применении операторов, действующих не
на узлы сети, а на связи, что избавляет от основного недостатка клеточного кодирования и улучшает
комбинационную динамику процесса. Для ряда приложений является предпочтительной именно ориентация
на оптимальное число связей сети. Наконец, и кодирование связей, и клеточное кодированиеобеспечивают генерацию полного множества возможных графов, являются в этом смысле полными и поэтому показывают преимущества в различных областях приложений.
Принципы кодирования связей
Кодирование связей основано на применении хромосомы древовидного типа, фенотипическим представлением которой является ориентированный граф, включающей функции либо метки , связанные с
конкретными узлами и связями. Отличия от клеточного кодирования:
Модификация графа основана на изменении связей, а не узлов;
Принцип развития сети различен – при клеточным кодировании сеть начинает с развития в ширину –
с развития узлов, при кодировании связей развитие идет в глубину – первоначально формируются новые связи. Обеспечивается независимость отпорядка выполнения – действия над предками выполняются
всегда раньшеманипуляций с потомками.
Кодирования связей предполагает хранение данные в виде деревьев, аналогично обычному хранению
данных в ЭП и ГП в виде хромосом. Узлами каждого дереваявляются операторы, действующие на связи в
фенотипа графа.Оператор в качестве исходной получает от предка одну связь, возможно с некоторыми
дополнительными данными (обычно – со стеком узлов). В зависимости от своего типа, он изменяет или
удаляет или саму связь, или ее начальные либо конечные узлы. В результате могут появиться новые
связи и узлы. Если исходная связь не удалена, оператор передает и ее, и все новые связи потомкам в
дереве кодирования, по одной связи для потомка. В отличие от ГП операторы выполняются в предопределенном порядке, а именно, операторы – предки выполняются сначала, что исключает влияние потомков на предков, как часто происходит при анализе деревьев символьных выражений в ГП. Например,
рассмотримэлементарный оператор дублирования – рисунок 1. В дереве кодирования он имеет двух потомков, от предка получает единственную связь E(a,b), a – конец связи, b – начало.Из E(a,b) оператор формирует дополнительную связь F(a,b), и обе передаются операторам потомков для дальнейшей
модификации: E(a,b) – соответственно левому, F(a,b) – правому потомку.
Рисунок 1 - Действие оператора Удвоить а. Положение оператора относительно предка и потомков,
б. Начальная связь к Удвоить от предка, в. Передача связей потомкам
Операторы для кодировании связей можно разделить на две части. Первая включает операторы, изменяющие топологию графа добавлением\удалением связей\узлов. Вторая связывает с узлами\связями семантику: маркирование, назначение функций преобразования и т.д.
Рассмотрим простейший набор базовых операторов, достаточный для построения недерминированного конечного автомата (НКА). Каждый из них от предков получает только одну связь и передает потомкам в
большинстве случаев две.Выполнение
Выполнение моет проводиться в любом порядке, при условии, что операторы –
предки выполняются раньше порожденных потомков. Операторы топологии графа:
Оператор
Число потомков
Действие
Удвоение
2
Создать связь F (a, b).
Ядро
2
Создать узел c и связьF(b,c).
Расщепление 2
Создать узел c. Изменить E на E (a, c).
Создать связь F (c, b).
Цикл 2
Создать петлюF
петлю (b, b).
Обратить
1
Изменить E на E (b, a).
Приведенных операторов достаточно для разработки топологии НДА, достаточно для распознавания
любого регулярного выражения.
выражения Для возможности представления полного НДА, необходимы семантические
операторы, определяющие начальное
начальное\конечное состояние автомата и разметку связей маркерами.
Рисунок 2Дерево кодирования
Семантические операторы
ОператорЧисло потомков
Действие
S
1
Назначить начало E (a, b) (узел b)в качестве начального.
A
1
Назначить начало E (a, b) (узел b) в качестве конечного.Допустимо
Допустимо использовать одновременно и в качестве начального для последующих.
1 0
Пометить связь 1. (Активизируется только по «1»).
0 2
Пометить связь 0. (Активизируется только по «0»).
Ε1
Пометить связь ε . (Может быть активизирована без маркера).
маркера)
На рисунок 2 представлено дерево кодирования хромосомы для НДА, обрабатывающего регулярное выражение ((0|1) *101). Используя Лисп – подобную нотацию, его можно записать как (Удвоение (Обратить
(Цикл e (S 0))) (Ядро 1 (Расщепление
Расщепление 0(А 1)))). На рисунок 3. показано развитие НДА из такой хромосомы.
. 2. После применения Удвоения
Рисунок 3Развитие НДА от кодировки рисунок 2. 1. Начальная связь.
3. Обращение 4. Цикл, S, e,
, и 0. Без затенения – начальное состояние . 5. Ядро и 1. 6. Расщепление, 0, A, и 1. Темный узел - принимающее состояние
Дополнительно в качестве операторов, помимо базовых, могут быть введены такие, как Расщепление
узлов, Слияние узлов, Ограничить
Ограничить, Модульные операторы, операторы работы со стеком. Не останавливаясь на описании их действия, отметим основные преимущества предлагаемого кодирования.
кодирования
И кодирование связей, и клеточное кодированиеуспешно описывают произвольные графы. Однако, эти
типы кодирования сильно отличаются по предпочтениям при эволюционном поиске:
поиске клеточное кодирование
обеспечивает предпочтительное развитие графов с высоким показателем отношения связь/узел и чтобы
удалить большинство связей приходится выполнять сложные манипуляции, связанные
связа
с увеличивает и
последующим удалением узлов.
узлов Кодирование связей, напротив, отдает предпочтение графам с низким
показателем отношения связь/узел,
связь
соответственно, создание насыщенных соединений требует сложной
комбинации операторов.
Размер кодировок. Чаще всего кодирование связей дает больший размер по сравнению с клеточным,
поскольку манипуляция связями всегда требует по крайней мере одного оператора на связь. Однако,
если маркеры связей должны быть закодированы четко отличающимся образом (например, аналогично
весам нейросети), размеры обеих кодировокблизки, поскольку и клеточное кодирование должно использовать для маркировки связей один или более операторов. Дополнительно, время создания фенотипа
определяется размером графа,
графа,а не размера кодировки.
И наконец,степеньиспольз
использования стандартных блоков при конструировании сети. Ограничением клеточного кодирования в этом смысле является более разрушительный механизм действия оператора кроссовера. Предлагаемый подход ограничивает действие данного оператора и характеристики
х
ранее полученных подсетей сохраняются
храняются в большей степени.
ЛИТЕРАТУРА
1. Емельянов В.В., Курейчик В.В., Курейчик В.М. Теория и практика эволюционного моделирования. М.: ФМЛ, 2003.
2. Chambers, L.D. Practical handbook of genetic algorithms v 3 Complex coding systems 2 ed/
L.D. Chambers.- Chapman, Hall, , 2001.-520p.
2001.
3. Gruau, F. 1992. Genetic Synthesis of Boolean Neural Networks with a Cell Rewriting
Developmental Process. In Proceedings of the International Workshop on Combinations of Genetic
Algorithms
lgorithms and Neural Networks (COGANN-92),
(COGANN
L. Darrell Whitley and J. David Schaffer, editors.
55–74.IEEE Press.
4. Kitano, H. 1990. Designing Neural Networks
Generation System. InComplex Systems 4. 461–476.
Using
a
Genetic
Algorithm
with
a
Graph
Скачать