Проблема, которую вы хотите решить, довольно сложна, я сомневаюсь, что любые «ванильные» ГА (особенно те, которые используют фиксированную архитектуру для сетей) решат ее (в разумные сроки).Я также не думаю, что вы когда-нибудь найдете «правильное количество нейронов» в скрытом слое.
Однако, если вы хотите потратить некоторое время на него, посмотрите на HyperNEAT дляУправление движением в модульных роботах , которое решает более или менее ту же проблему.Они используют довольно продвинутую технику GA под названием HyperNEAT и сообщают о некоторых хороших результатах.
HyperNEAT построен поверх NEAT ( Нейроэволюция расширяющих топологий ).NEAT способна развить не только вес ANN, но и их структуру.Он начинается с простых сетей и медленно делает их более сложными, пока вы не достигнете своей цели (или не сдадите).
Затем NEAT слегка изменяется, чтобы иметь возможность использовать различные функции активации.Это позволит ему создавать широкий спектр «шаблонов», когда он применяется к набору точек, например, в системе координат.У моделей могут быть некоторые интересные черты, такие как совершенная / несовершенная симметрия, или они могут быть периодическими.Этот вариант называется Сеть создания шаблонных композиций или CPPN.Впечатляющим применением этой технологии является PicBreeder , где сети используются для "рисования" изображений.
В HyperNEAT CPPN используются для создания других ANN.Скрытый слой новых сетей представлен так называемой подложкой, которую можно представить так, как будто нейроны слоя помещены в 2D / 3D систему координат.Затем для каждой возможной пары нейронов (все от входного слоя до всех скрытых, от всех скрытых до всех выходных) CPPN используется для определения веса.Таким образом, у нас есть косвенное кодирование, которое
- само по себе мало
- может создавать произвольные большие сети в конце
- , которые также могут показывать довольно сложное поведение
- паттерны, которые проявляются в реальности / природе (опять же, симметрия, периодическое поведение), могут появиться относительно легко.Обратите внимание, что для анимации / эффективного передвижения они оба очень выгодны (если не обязательны).
В целом это даст вам шанс решить вашу сложную задачу.
Как вы можете видеть, существуют различные уровни этой техники, поэтому реализовать ее самостоятельно не так просто.К счастью, есть несколько хороших реализаций, вы можете найти их на домашней странице NEAT вместе со многими другими документами, бумагами и учебными пособиями.