Искусственная жизнь с нейронными сетями

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

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

Заранее спасибо!

2 ответа

Решение

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

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

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

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

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

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

Это звучит как проблема для обучения подкреплению, есть и хороший онлайн-учебник.

Другие вопросы по тегам