-3

Я новичок в нейронных сетях/машинах/генетических алгоритмах, и для своей первой реализации я пишу сеть, которая учится играть в змею (An example in case you haven't played it before) У меня есть несколько вопросов, которые я не вполне понимают:Уточнение на нейронной сети, которая играет Snake

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

1) Если задана вся плата в качестве входного (около 400 точек) достаточно скрытых слоев (не знаю, сколько, может быть, 256-64-32-2?), И достаточно времени, научился бы не боксировать себя в?

2) Какие будут хорошие входы? Вот некоторые из моих идей:

  • 400 входов, по одному на каждое место на доске. Положительно, если змея должна идти туда (яблоко) и отрицательно, если это стена/ваше тело. Чем ближе к -1/1, тем ближе оно.
  • 6 входов: ширина игры, высота игры, змея x, змея y, яблоко x и яблоко y (можно научиться играть на досках разных размеров, если они обучены таким образом, но не уверены, как вводить тело, поскольку оно изменяется размер)
  • Дайте ему поле зрения (возможно, 3x3 квадрата перед головой), которое может предупредить змею о стене, яблоне или ее теле. (змея могла бы только увидеть, что к сожалению, к сожалению, что может помешать его способности к обучению)

3) Учитывая метод ввода, что было бы хорошим начальным местом для скрытых размеров слоев (конечно, план по настройке этого, просто не знаю, какое хорошее стартовое место)

4) Наконец, пригодность змеи. Помимо времени, чтобы получить яблоко, это длина, и это на всю жизнь, нужно ли что-нибудь еще учитывать? Чтобы заставить змею научиться не блокировать себя, есть ли что-нибудь еще, что я мог бы добавить к фитнесу, чтобы помочь этому?

Спасибо!

+0

Я думаю, что ваши вопросы должны быть более семантически понятными и менее двусмысленными, потому что StackOverflow предназначен для вопросов, которые имеют четкие ответы, а не на вопросы о общие мнения. Без изменений, чтобы дать вашим ответам более четкие ответы, ваш пост мог быть закрыт/заблокирован модераторами StackOverflow. – devinbost

ответ

5

В этом посте, я советую вам о:

  • Как отображать навигационные указания последовательности действий с LSTM нейронной сети
  • ресурсы, которые помогут вам узнать, как использовать нейронные сетей выполнить задание
  • Как установить и настроить нейронную сетевых библиотек, основанные на том, что мне нужно было узнать трудный путь

Общее мнение о своей идее:

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

Отображения навигационные инструкции к последовательности действий с нейронной сетью

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

  • Мэх, H., Bansal, М. , & Walter, MR (2015). Слушайте, посещайте и гуляйте: нейронное отображение навигационных указаний на последовательности действий. arXiv preprint arXiv: 1506.04089. Доступно по адресу: Listen, Attend, and Walk: Neural Mapping of Navigational Instructions to Action Sequences
  • Lample, G., & Chaplot, D. S. (2016). Игра в игры FPS с углубленным обучением. arXiv preprint arXiv: 1609.05521. Доступно по адресу: Super Mario as a String: Platformer Level Generation Via LSTMs
  • Lample, G., & Chaplot, D. S. (2016). Игра в игры FPS с углубленным обучением. arXiv preprint arXiv: 1609.05521. Доступно по адресу: Playing FPS Games with Deep Reinforcement Learning
  • Schulz, R., Talbot, B., Lam, O., Dayoub, F., Corke, P., Upcroft, B., & Wyeth G. (2015, май). Навигация робота с использованием человеческих сигналов: роботизированная навигационная система для символической целенаправленной разведки. В Международной конференции по робототехнике и автоматизации (ICRA), 2015 г. IEEE (стр. 1100-1105). IEEE.Доступно: Robot Navigation Using Human Cues: A robot navigation system for symbolic goal-directed exploration

Общее мнение о том, что поможет вам

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

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

Также будет полезно узнать различия между различными типами нейронных сетей, такими как Long Short Term Memory (LSTM) и сверточные нейронные сети (CNN).

Если вы хотите повозиться с тем, как нейронные сети могут быть использованы для задач классификации, попробуйте следующее:

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

Учебники для нейронной сети библиотек

Я рекомендую вам попробовать работать через учебники для библиотеки нейронной сети, такие как:

+0

Обратите внимание, что я удалил содержимое, которое действительно нужно было в другом месте, потому что мой другой ответ был удален модератором. Поэтому этот пост должен включать все необходимое для этого конкретного вопроса. – devinbost

+0

Если вы хотите, чтобы руководство по настройке было перенесено сюда: http://stackoverflow.com/questions/27629347/how-do-i-install-theano-in-anaconda-ver-2-1-windows-64 -разрядных-для-питон-3-4/42214273 # 42214273 – devinbost

1

Я видел подобное приложение. Входы обычно были координатами змеи, координатами яблока и некоторыми сенсорными данными (стена рядом с головой змеи или нет в вашем случае).

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

Профессор Флореано сделал нечто подобное. Он использует GA для определения веса для контроллера нейронной сети робота. Робот был в лабиринте и выполнял некоторые задачи. Скрытый слой нейронной сети был одним нейроном с повторяющимися суставами на входах и одним боковым соединением на себе. Было два выхода. Выходы были подключены на уровне ввода и скрытом слое (упомянутый один нейрон).

Но Флореано сделал что-то более интересное. Он говорит: «Мы не рождаемся с определенными синапсами, наши синапсы меняются в нашей жизни. Поэтому он использует GA для поиска правил смены синапсов. Эти правила были основаны на обучении хеббб. Он выполняет кодирование узлов (для всех весов, связанных с нейроном, применяется одно и то же правило). Вначале он инициализировал весы по небольшим случайным значениям. Поиск правил вместо численного значения синапса приводит к лучшим результатам. One from Floreno's articles.

И на моем собственном опыте. В прошлом семестре я и мой одноклассник получили задание найти правила синапса с GA, но для Spiking нейронной сети. Наш SNN был контролером для кинематической модели мобильного робота, и задача была проведена роботом в выбранную точку. Мы получили некоторые результаты, но не ожидали. Вы можете увидеть результаты here. Поэтому я рекомендую вам использовать «обычный» ANN вместо SNN, потому что SNN приносит новые феномены.

 Смежные вопросы

  • Нет связанных вопросов^_^