Нейроэволюция дополняющих топологий - Neuroevolution of augmenting topologies
Нейроэволюция дополнительных топологий (АККУРАТНЫЙ) это генетический алгоритм (GA) для генерации развивающихся искусственные нейронные сети (а нейроэволюция техника), разработанная Кеном Стэнли в 2002 г. Техасский университет в Остине. Он изменяет как весовые параметры, так и структуру сетей, пытаясь найти баланс между пригодностью разработанных решений и их разнообразием. Он основан на применении трех ключевых методов: отслеживание генов с помощью маркеров истории, позволяющих пересечение топологий, применение видообразования (эволюция видов) для сохранения инноваций и постепенная разработка топологий из простых исходных структур («комплексирование»).
Спектакль
В простых задачах управления алгоритм NEAT часто достигает эффективных сетей быстрее, чем другие современные нейроэволюционные методы и обучение с подкреплением методы.[1][2]
Алгоритм
Традиционно топология нейронной сети выбирается человеком-экспериментатором, а эффективные значения веса соединения изучаются в процессе обучения. Это приводит к ситуации, когда может потребоваться процесс проб и ошибок для определения подходящей топологии. NEAT - это пример искусственной нейронной сети с изменяющейся топологией и весами (TWEANN), которая пытается одновременно изучать значения весов и соответствующую топологию нейронной сети.
Чтобы закодировать сеть в фенотип для GA, NEAT использует схему прямого кодирования, которая означает, что каждое соединение и нейрон явно представлены. Это контрастирует со схемами косвенного кодирования, которые определяют правила, которые позволяют строить сеть без явного представления каждого соединения и нейрона, что позволяет более компактное представление.
Подход NEAT начинается с перцептрон -подобная сеть прямой связи только из входных и выходных нейронов. По мере того, как эволюция проходит через дискретные шаги, сложность топологии сети может расти, либо путем вставки нового нейрона в путь соединения, либо путем создания нового соединения между (ранее не связанными) нейронами.
Конкурирующие соглашения
Проблема конкурирующих конвенций возникает, когда существует более одного способа представления информации в фенотипе. Например, если в геноме есть нейроны А, B и C и представлен как [ABC], если этот геном скрещен с идентичным геномом (с точки зрения функциональности), но упорядоченный кроссовер [CBA] приведет к дочерним элементам, у которых отсутствует информация ([ABA] или [CBC]), фактически 1 / В этом примере потеряно 3 информации. NEAT решает эту проблему, отслеживая историю генов с помощью глобального числа инноваций, которое увеличивается по мере добавления новых генов. При добавлении нового гена номер глобальной инновации увеличивается и присваивается этому гену. Таким образом, чем выше число, тем позже был добавлен ген. Для определенного поколения, если идентичная мутация встречается более чем в одном геноме, им обоим дается один и тот же номер, однако, кроме этого, номер мутации будет оставаться неизменным на неопределенный срок.
Эти цифры инноваций позволяют NEAT сопоставлять гены, которые можно скрещивать друг с другом.[1]
Выполнение
Оригинальная реализация Кена Стэнли опубликована под GPL. Он интегрируется с Хитрость, GNU схема устный переводчик. Эта реализация NEAT считается обычной базовой отправной точкой для реализации алгоритма NEAT.
Расширения
rtNEAT
В 2003 году Стэнли разработал расширение NEAT, которое позволяет эволюции происходить в реальном времени, а не через итерацию поколений, как это используется в большинстве генетических алгоритмов. Основная идея состоит в том, чтобы постоянно оценивать популяцию с помощью таймера «жизни» для каждого человека в популяции. Когда таймер сети истекает, его текущая мера пригодности проверяется, чтобы увидеть, находится ли она в нижней части популяции, и если да, она отбрасывается и заменяется новой сетью, полученной от двух родителей с высокой пригодностью. Для новой сети устанавливается таймер, и он помещается в совокупность для участия в текущих оценках.
Первое приложение rtNEAT - видеоигра под названием Neuro-Evolving Robotic Operatives, или NERO. На первом этапе игры отдельные игроки размещают роботов в «песочнице» и обучают их определенной тактической доктрине. После того, как группа роботов обучена, вторая фаза игры позволяет игрокам выставить своих роботов в битве против роботов, обученных другим игроком, чтобы увидеть, насколько хорошо их режимы обучения подготовили своих роботов к битве.
Поэтапная обрезка
Расширение NEAT Кена Стэнли, разработанное Колином Грином, добавляет периодическое сокращение сетевых топологий возможных решений в процессе эволюции. Это дополнение решило опасения, что неограниченный автоматический рост приведет к созданию ненужной структуры.
HyperNEAT
HyperNEAT специализируется на разработке крупномасштабных структур. Первоначально он был основан на CPPN теории и является активной областью исследований.
cgNEAT
Content-Generating NEAT (cgNEAT) развивает пользовательский контент видеоигр на основе предпочтений пользователя. Первая видеоигра, использующая cgNEAT, - это Галактическая гонка вооружений, космический шутер, в котором уникальное оружие системы частиц развивается на основе статистики использования игрока.[3] Каждое оружие системы частиц в игре контролируется развитым CPPN, аналогично технике эволюции в NEAT частицы интерактивная художественная программа.
odNEAT
odNEAT - это онлайн-децентрализованная версия NEAT, разработанная для систем с несколькими роботами.[4] odNEAT выполняется самими роботами во время выполнения задачи для непрерывной оптимизации параметров и топологии контроллеров на основе искусственных нейронных сетей. Таким образом, роботы, выполняющие odNEAT, могут адаптироваться к изменяющимся условиям и изучать новые модели поведения при выполнении своих задач. Онлайн-эволюционный процесс реализуется по модели физически распределенного острова. Каждый робот оптимизирует внутреннюю популяцию возможных решений (внутриостровная вариация), и два или более робота обмениваются возможными решениями при встрече (межостровная миграция). Таким образом, каждый робот потенциально самодостаточен, и эволюционный процесс извлекает выгоду из обмена контроллерами между несколькими роботами для более быстрого синтеза эффективных контроллеров.
Смотрите также
Рекомендации
- ^ а б Кеннет О. Стэнли и Ристо Мииккулайнен (2002). «Развитие нейронных сетей путем расширения топологий». Эволюционные вычисления 10 (2): 99-127
- ^ Мэтью Э. Тейлор, Шимон Уайтсон и Питер Стоун (2006). «Сравнение эволюционных и временных разностных методов в области обучения с подкреплением». GECCO 2006: Труды конференции по генетическим и эволюционным вычислениям.
- ^ Эрин Дж. Хастингс, Ратан К. Гуха и Кеннет О. Стэнли (2009). «Автоматическая генерация контента в видеоигре« Галактическая гонка вооружений »». IEEE Transactions on Computational Intelligence and AI in Games, volume 4, number 1, pages 245-263, New York: IEEE Press, 2009.
- ^ Сильва, Фернандо; Урбано, Пауло; Коррейя, Луис; Кристенсен, Андерс Лайн (15.09.2015). «odNEAT: алгоритм децентрализованной онлайн-эволюции роботизированных контроллеров». Эволюционные вычисления. 23 (3): 421–449. Дои:10.1162 / evco_a_00141. HDL:10071/10504. PMID 25478664. S2CID 20815070.
Библиография
- Кеннет О. Стэнли и Ристо Мииккулайнен (2002). «Развитие нейронных сетей путем улучшения топологий» (PDF). Эволюционные вычисления. 10 (2): 99–127. CiteSeerX 10.1.1.638.3910. Дои:10.1162/106365602320169811. PMID 12180173. S2CID 498161.
- Кеннет О. Стэнли и Ристо Мииккулайнен (2002). «Эффективное обучение с подкреплением за счет развития топологий нейронных сетей» (PDF). Труды конференции по генетическим и эволюционным вычислениям (GECCO-2002).
- Кеннет О. Стэнли; Бобби Д. Брайант и Ристо Мииккулайнен (2003). «Развитие адаптивных нейронных сетей с адаптивными синапсами и без них» (PDF). Материалы Конгресса IEEE 2003 г. по эволюционным вычислениям (CEC-2003).
- Колин Грин (2004). «Поэтапный поиск с NEAT: чередование комплексности и упрощения». Цитировать журнал требует
| журнал =
(помощь) - Кеннет О. Стэнли; Райан Корнелиус; Ристо Мииккулайнен; Томас Д'Сильва и Ализа Голд (2005). «Обучение в реальном времени в видеоигре NERO» (PDF). Материалы конференции по искусственному интеллекту и интерактивным цифровым развлечениям (AIIDE 2005) Демонстрационные документы.
- Мэтью Э. Тейлор; Шимон Уайтсон и Питер Стоун (2006). «Сравнение методов эволюции и разницы во времени в области обучения с подкреплением» (PDF). GECCO 2006: Материалы конференции по генетическим и эволюционным вычислениям.
- Шимон Уайтсон и Дэниел Уайтсон (2007). «Стохастическая оптимизация для выбора столкновений в физике высоких энергий» (PDF). IAAI 2007: Материалы девятнадцатой ежегодной конференции по инновационным приложениям искусственного интеллекта. arXiv:hep-ex / 0607012. Bibcode:2006hep.ex .... 7012 Вт. Архивировано из оригинал (PDF) 2015-10-28.
Реализации
- Стэнли оригинал, mtNEAT и rtNEAT за C ++
- ECJ, JNEAT, NEAT 4J, ANJI за Ява
- SharpNEAT за C #
- MultiNEAT и mtNEAT за C ++ и Python
- аккуратный питон за Python
- Поддерживаемая вилка аккуратный питон за Python
- Encog за Ява и C #
- горох за Python
- RubyNEAT за Рубин
- neatjs за Javascript
- Не точная реализация, но Neataptic за Javascript
- Синаптический за Javascript
- Neat-Ex за Эликсир
внешняя ссылка
- Домашняя страница NEAT
- «Группа исследования эволюционной сложности в UCF» - Текущая исследовательская группа Кена Стэнли
- NERO: нейро-эволюционирующие роботы-операторы - пример применения rtNEAT
- ВАР: Галактическая гонка вооружений - пример применения cgNEAT
- "PicBreeder.org" - Совместное интерактивное искусство, созданное CPPN, эволюционировало с NEAT.
- "EndlessForms.com" - 3D-версия Picbreeder, где вы интерактивно развиваете 3D-объекты, которые кодируются с помощью CPPN и развиваются с помощью NEAT.
- Блог BEACON: Что такое нейроэволюция?
- MarI / O - Машинное обучение для видеоигр, а YouTube видео, демонстрирующее реализацию NEAT обучения игре Супер Марио Мир
- "GekkoQuant.com" - Серия визуальных руководств по NEAT, включая решение классической задачи балансировки полюсов с помощью NEAT в R
- «Искусственный интеллект изучает уровень Марио всего за 34 попытки. NEAT объяснил через программу MarI / O