9

Я пытаюсь построить простую эволюционную симуляцию агентов, контролируемых нейронной сетью. В текущей версии у каждого агента есть нервная сеть с прямой связью с одним скрытым слоем. Окружающая среда содержит фиксированное количество продуктов, представленных в виде красной точки. Когда агент движется, он теряет энергию, и, когда он находится рядом с пищей, он получает энергию. Агент с энергией 0 энергии. входом нейронной сети является текущий угол агента и вектор к ближайшему пищевому продукту. Каждый временной шаг, угол перемещения каждого агента изменяется на выходе его нейронной сети. Цель, конечно, состоит в том, чтобы увидеть, как поведение пищи начинает развиваться через некоторое время. Однако ничего не происходит.Искусственная жизнь с нейронными сетями

Я не знаю, является ли проблема структурой нейронной сети (слишком простой?) Или механизм воспроизведения: чтобы предотвратить демографический взрыв, начальная популяция составляет около 20 агентов, а по мере приближения населения к 50, вероятность воспроизведения приближается к нулю. Когда происходит размножение, родитель выбирается путем перебора списка агентов от начала до конца и проверки для каждого агента, имеет ли случайное число от 0 до 1 меньше, чем отношение между энергией этого агента и суммой энергия всех агентов. Если это так, поиск завершен, и этот агент становится родителем, поскольку мы добавляем в среду копию этого агента с некоторой вероятностью мутаций в одном или нескольких весах в своей нейронной сети.

Заранее благодарен!

+0

Что именно вы подразумеваете под «ничего не происходит»? – timday

+0

Агенты перемещаются случайным образом, меняют направление время от времени, но не ищут пищу. – user1767774

+1

BTW, если вы еще не встретили его и нуждаетесь в некотором вдохновении для такого проекта, прочитайте: http://ttapress.com/553/crystal-nights-by-greg-egan/ – timday

ответ

6

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

Чтобы проверить свою систему, представьте человека с «предварительно обработанной» нейронной сетью, настроенной на то, чтобы направлять человека прямо к ближайшей пище (ваша модель такова, что такая вещь существует и ее легко записать, не так ли? Если нет, неразумно ожидать, что он будет развиваться!). Представьте этого человека в вашей симуляции среди немых масс. Если человек не быстро доминирует, он предполагает, что ваша симуляция не настроена для усиления такого поведения. Но если человек пользуется репродуктивным успехом, и он и его потомки берут верх, тогда ваша симуляция делает что-то правильно, и вам нужно искать в другом месте по той причине, что такое поведение не развивается.

Обновление в ответ на комментарий:

Кажется мне это смешение углов и векторов сомнительна. Независимо от того, могут ли люди развиваться в направлении «двигаться прямо к ближайшему пищу», поведение должно скорее зависеть от того, насколько хорошо функция атана может быть аппроксимирована вашей сетью (я скептически настроен). Опять же, это говорит о том больше испытаний:

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

Я сомневаюсь в том, что «фиксированное количество пищи» тоже. (Я предполагаю, что вы имеете в виду, как только красная точка будет потребляться, появится другая). Более «реалистичная» модель может заключаться в том, чтобы вводить пищу с постоянной скоростью и не налагать никаких искусственных пределов популяции: пределы населения определяются ограничениями питания. например, если вы введете 100 единиц пищи в минуту, а людям нужно 1 ед. пищи в минуту, чтобы выжить, то ваше моделирование должно найти, что она имеет тенденцию к среднему населению в течение длительного времени в 100 человек без необходимости в зажиме, чтобы избежать " демографический взрыв "(хотя бум-и-бюст, динамика пиршества или голода могут действительно возникать в зависимости от деталей).

+0

Спасибо, это отличная идея, но я не уверен, как выбрать правильный вес. Я использую tanh (x) как функцию активации. Пусть a, b, c - веса и альфа, dx, dy угол агента, горизонтальное расстояние и вертикальное расстояние до ближайшего питания соответственно. Я хочу, чтобы такие a, b, c, что tanh (a * alpha + b * dx + c * dy) = epsilon * (tan (dy/dx) -alpha) - Я хочу, чтобы на выходе было какое-то постоянное различие между угол к пище (tan (dy/dx)) до текущего угла. Это одно уравнение с тремя неизвестными. Кстати, что вы думаете о механизме воспроизведения, который я описал? – user1767774

+1

Я следовал твоему предложению и сделал сеть выходным вектором, и через несколько минут было развито пищевое поведение! Спасибо (-: в чем причина этого значительного изменения?) Интуитивно вектор удерживает как информацию о угле, так и менее значимую информацию о величине, поэтому можно исключить худшие результаты, чем когда выход является простым скаляром (углом) ... – user1767774

+1

Мое предположение: потому что гораздо проще для вашей модели нейронной сети эволюционировать в направлении простой «сквозной» направления питания к направлению движения, чем для них, чтобы развивать функцию атана. – timday