Самый популярный метод обучения искусственных нейронных сетей (ИНС) - на момент написания этого эссе - это использование некоторой формы градиентного спуска (GD) в сочетании с обратным распространением ошибок по целевой функции, определяющей нашу цель обучения. Эта методология была изобретена около 30 лет назад Джеффри Хинтоном и стала основой всей современной исследовательской деятельности в области машинного обучения (ML) и искусственного интеллекта (AI). Но, несмотря на то, что он дает силу в области распознавания образов (обучение признаков или представлений), у него есть значительный недостаток:

  • топология сети должна быть полностью спроектирована вручную до начала обучения, и только веса соединений инкапсулируют полученные знания, топология сети остается прежней
  • в результате он может ввести перенасыщенные нейронные блоки, которые не участвуют в процессе обучения / вывода, а просто потребляют вычислительные ресурсы.
  • должны применяться специальные методы, чтобы избежать попадания в локальные оптимумы, такие как L1 / L2-норма, регуляризации отсева и т. д.
  • взрывные или уменьшающиеся проблемы градиента обучения во время обратного / прямого распространения
  • реализованные решения могут быть обобщены только в узком объеме, полученном из предоставленных обучающих выборок.

Популярные статьи об ИИ:

Чтобы преодолеть некоторые недостатки обучения на основе GD, было предложено использовать альтернативные методы для обучения / развития нейронных сетей с группой алгоритмов, вдохновленных естественным отбором и генетической эволюцией. Ему было дано название Генетические алгоритмы (GA), чтобы обратиться к источнику вдохновения и из-за его попытки имитировать естественный процесс генетических мутаций, кроссовера и отбора при попытке решить проблему оптимизации целевой функции. За последние годы было изобретено множество типов таких алгоритмов.

Пример кроссовера и мутации в GA (источник изображения)

Но мой главный интерес в этом эссе состоит в том, чтобы представить своего рода ГА, который можно применить для развития ИНС от самых простых форм до сложных, чтобы найти решение для оптимизации целевой функции не только путем изменения весов связей между нейронными единицами, но и путем развития топологии самого сетевого графа.

Я хотел бы рассмотреть алгоритм Нейроэволюция дополненных топологий (NEAT), изобретенный Кеннетом О. Стэнли в рамках его докторской диссертации в 2002–2004 годах. С помощью этого метода развития ИНС поиск сложных решений стал возможным за счет постепенной усложнения топологии сети. Начав с минимальной ИНС, NEAT с большей вероятностью найдет эффективное и надежное решение, избегая привязки к локальным оптимумам, как в случаях с другими методами GA, которые начинаются с сложных сетевых графов и видоизменяют их во время обучения.

При использовании метода NEAT обучение начинается с очень простой топологии ИНС, состоящей только из входных, выходных и смещенных нейронных блоков - никаких скрытых блоков в начале. Таким образом, это гарантирует, что система будет искать решение в минимально возможном весовом пространстве в течение всех поколений. Цель состоит не в том, чтобы минимизировать только конечный продукт, но и все промежуточные сети на этом пути. Эта идея является ключом к получению преимущества от эволюции топологии: она позволяет нам минимизировать пространство поиска, что приводит к значительному увеличению производительности.

Пример сопоставления генотипа с фенотипом. Изображен генотип, который дает указанный фенотип.

В алгоритме NEAT присутствуют два основных типа структурных мутаций: добавление связи между узлами или добавление нового узла. При выполнении мутации новому добавленному гену (гену соединения или гену узла) будет присвоен возрастающий номер инновации.

При добавлении соединения один новый ген соединения добавляется в конец генома и получает следующий доступный номер инновации. При добавлении нового узла расщепляемый ген соединения отключается, и в конец генома добавляются два новых гена соединения. Новый узел находится между двумя новыми соединениями.

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

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

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

Исторические маркеры дают NEAT возможность отслеживать, какие гены с какими совпадают. Таким образом, во время кроссовера система будет точно знать, как выстраивать гены из геномов обоих родителей. Гены с совпадающими номерами инноваций будут называться совпадающими генами. Несовпадающие гены являются либо непересекающимися, либо избыточными, в зависимости от того, находятся ли они в пределах или за пределами диапазона значений инноваций другого родителя. Они представляют собой структуру, которой нет в геноме другого родителя. При формировании потомства гены случайным образом выбираются из любого родителя из совпадающих генов, тогда как все лишние или непересекающиеся гены всегда включаются из более подходящего родителя. Таким образом, историческая маркировка позволяет NEAT выполнять кроссовер с использованием линейного кодирования геномов без необходимости дорогостоящего топологического анализа.

Во время кроссовера гены потомства случайным образом выбираются из совпадающих генов одного из родителей и непересекающихся / избыточных генов, взятых у наиболее подходящего родителя. Все диаграммы из оригинальной бумаги NEAT, настоятельно рекомендуется к прочтению!

Используя предложенный метод, популяция организмов может развиваться по разным топологиям, но бывает, что такая популяция не может развиваться и поддерживать топологические инновации самостоятельно. Меньшие структуры оптимизируются быстрее, чем большие. Таким образом, добавляя новые узлы и соединения в какую-либо топологию, мы искусственно снижаем ее шансы на выживание. У недавно расширенных топологий обычно наблюдается первоначальное снижение пригодности, даже несмотря на то, что инновации, которые они представляют, могут привести к выигрышному решению в долгосрочной перспективе.

Эту проблему можно решить, введя в популяцию видообразование, которое дополнительно ограничивает круг организмов, способных к спариванию. С видообразованием можно организовать кроссовер таким образом, что организмы будут соревноваться только в узких нишах, а не на всей популяции в целом. Идея состоит в том, чтобы разделить популяцию так, чтобы похожие топологии принадлежали одному виду.

Со всеми конкретными настройками общего GA, представленными в NEAT, можно создавать сложные ИНС для решения задач оптимизации управления среди других задач неконтролируемого обучения. Из-за специфики расширения топологии ИНС путем комплексирования и спецификации найденные решения имеют тенденцию быть оптимизированными как с точки зрения поезда, так и с точки зрения логического вывода. Результирующая топология ИНС растет точно в соответствии с задачей, которую предстоит решить, без каких-либо лишних слоев скрытых блоков, представленных традиционным подходом ручного проектирования топологии ИНС.

Благодаря этому можно создавать сложные ансамбли конкретных ИНС для решения самых сложных проблем, возникающих при попытке построить системы ИИ. Такие ансамбли узкоспециализированных небольших ИНС могут быть объединены в нейронные сети, объединенные в человеческом мозгу, где каждая конкретная часть отвечает за обработку определенного стимула или специализированной деятельности.

Недавно мы провели эксперимент, в котором алгоритм NEAT с функцией оптимизации приспособленности поиска новинок применяется для создания автономных агентов с искусственным интеллектом, способных решать навигационные задачи в сложных средах лабиринта. Подробнее об этом эксперименте читайте в статье Поиск новинок для выращивания автономных агентов искусственного интеллекта ».

Еще одно применение ансамблей ИНС - создание решателей для игр с несовершенной информацией путем применения стратегии решения подигровых игр, предложенной в этой исследовательской статье.

Существует ряд реализаций алгоритма NEAT на разных языках программирования.

Автор также представил собственную реализацию NEAT на языке программирования GO с расширенными тестами проверки: XOR, одно- и двухполюсной балансировкой. Исходный код реализации доступен на GitHub: https://github.com/yaricom/goNEAT

Соответствующий исследовательский проект можно найти на сайте ResearchGate: https://www.researchgate.net/project/NeuroEvolution-of-Augmented-Topologies

ОБ АВТОРЕ:

Ярослав Омельяненко - технический директор и директор по исследованиям в NewGround Advanced Research LLC. Его исследовательские интересы включают взаимодействие человека и компьютера, генетические алгоритмы, нейроэволюцию расширенных топологий, обучение с подкреплением, управление и оптимизацию, а также нейробиологию.

Https://twitter.com/NewgroundAI