Направление мутации: добавить операцию соединения алгоритма NEAT

Я прочитал статью об алгоритме NEAT здесь. И хочу попробовать сам. Но у меня все еще есть один вопрос об алгоритме, а именно:

Как определить направление соединения во время операции мутации добавления соединения, если выбрано 2 скрытых узла?

Допустим, у меня есть сеть, в которой узлы 1,2 являются входными узлами, 3,4,5 — скрытыми узлами, а 6 — выходными.

Узел 3 и 4 напрямую связаны с входом 1,2, где 5 в данный момент подключен только к узлу 4 и направляет его к выходному узлу 6.

Легко определить входной и выходной узел нового соединения, если один из узлов является входным или выходным. Но если в приведенном выше случае код решил добавить соединение между узлом 3 и узлом 5. какой узел я должен использовать как внутренний узел, а какой - как внешний? или это не имеет значения?


person user152531    schedule 21.08.2019    source источник


Ответы (1)


Не имеет значения. Обычно.

Типичным решением будет сначала выбрать узел из (с некоторыми ограничениями, такими как: избегать выходных узлов), а затем узел (с некоторыми другими ограничениями, например: избегать входных узлов).

Иногда вам понадобятся дополнительные проверки. Например, вы можете захотеть работать с сетями только с прямой связью, где петли соединения не допускаются. В этом случае вам нужно будет проверить, что выбранная пара узлов «от-до» не создает петлю.

Однако я настоятельно рекомендую вам использовать и модифицировать существующую реализацию NEAT (см. Колин Грин, который заботится о некоторых очень качественных репозиториях NEAR). Вы обнаружите, что NEAT на удивление сложно реализовать, если вам нужны все приемы и передовой опыт.

person Pablo    schedule 30.08.2019
comment
спасибо за предложение, я попытался прочитать существующую реализацию, она намного сложнее, как я думал. и теперь я думаю, что лучше просто использовать эту библиотеку. кстати. Существуют ли какие-либо правила выбора параметров для установок NEAT? например, как коэффициенты совместимости на расстоянии? - person user152531; 18.09.2019
comment
Я бы начал со значений по умолчанию... но нет, я не думаю, что есть серебряная пуля, чтобы найти идеальные параметры. Тем не менее, дизайн вашей фитнес-функции, вероятно, является более подходящим решением, поэтому сначала постарайтесь сосредоточиться на нем. - person Pablo; 18.09.2019