NeuroEvolution: число инновационных алгоритмов NEAT

Я читал о нейронной эволюции расширенных топологий, и меня беспокоит эта мелочь. Читая статью Кеннета Стэнли о NEAT, я пришел к этой фигуре здесь:

NEAT мутация

Число инноваций увеличивается с 1,2,3,4,5,6 до 1,2,3,4,5,6,7 при первой мутации.

На втором он идет с 1,2,3,4,5,6 до 1,2,3,4,5,6,8,9.

Мой вопрос: почему он пропускает число 7 и вместо этого идет прямо до 8? Я не нашел ничего, связанного с удалением номеров инноваций.

То же самое на втором рисунке: как Родитель 1 потерял 6,7 и куда восьмой ген попал в Родителя 2?

Аккуратный кроссовер

2 ответа

Решение

Инновационный номер (для краткости я буду использовать IN) является своего рода меткой определенного фрагмента структуры. Таким образом, соединение от нейрона № 1 к нейрону № 2 будет иметь IN, например, 1, и все сети с этим соединением будут иметь это соединение, помеченное как IN 1. Когда создается новое соединение (либо путем добавления мутации соединения, либо путем добавления мутации узла), сначала проверяется, есть ли такое соединение в "базе данных" IN. Если такое соединение уже существует, используется его IN. Если это не так, счетчик IN увеличивается, новое соединение получает этот новый IN и сохраняется в базе данных.

На первом рисунке в верхней части добавлено новое соединение от нейрона 3 к нейрону 5. Если это первое подобное соединение, которое появилось во всей популяции, вы увеличиваете счетчик IN и используете этот новый IN для этого соединения. Если это уже произошло в другом месте, вы используете его IN вместо создания нового. Это может быть любой из этих случаев, мы не знаем, как выглядит остальная часть населения. Просто так получается, что соединение 3->5 имеет IN 7.

Теперь, в нижней части первого рисунка, вы добавляете нейрон 6 между нейронами 3 и 4, что означает, что вы добавляете соединения 3->6 и 6->4. Опять же, вы сначала спрашиваете "Есть ли IN для подключения 3->6 в базе данных?" Если это вы используете это IN, если нет, вы увеличиваете счетчик. То же самое касается другого соединения. На этом рисунке вы можете представить, что все эти новые подключения были новыми, поэтому в верхней части счетчик IN был равен 6, а с новым соединением, которое еще не встречалось, вы увеличили счетчик IN и присвоили этому соединению 7, Затем произошла нижняя часть с двумя совершенно новыми соединениями, поэтому вы увеличиваете счетчик IN до 8 и 9. В нижней части нет соединения 3->5 с IN 7, поэтому причина в том, что IN 7 не является там.

Что касается второго рисунка, это всего лишь пример, показывающий, как работает кроссовер, когда существуют непересекающиеся IN. Родители просто так, ради примера. Тем не менее, они могли бы добраться до этого состояния довольно легко. Представьте, что у родителя 1 в какой-то более ранний момент эволюции были только IN от 1 до 5, и 5 был самым новым IN до сих пор. Затем, где-то еще в популяции, был добавлен новый нейрон (№ 6) между нейронами 5 и 4, то есть были созданы новые соединения 5->6 и 6->4. Поскольку такие соединения еще не встречались, счетчик IN был увеличен до 6 и 7. Затем, после этого, родительский 1 был мутирован путем добавления нового соединения 1->8. Поскольку это также было новым, было назначено новое IN 8.

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

В чем ценность самой инновации, кроме отслеживания происхождения? Делает ли возраст летящего инновационного числа его более убедительной мутацией для сохранения, чем более поздние?