Я новичок в нейронных сетях/машинах/генетических алгоритмах, и для своей первой реализации я пишу сеть, которая учится играть в змею (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) Наконец, пригодность змеи. Помимо времени, чтобы получить яблоко, это длина, и это на всю жизнь, нужно ли что-нибудь еще учитывать? Чтобы заставить змею научиться не блокировать себя, есть ли что-нибудь еще, что я мог бы добавить к фитнесу, чтобы помочь этому?
Спасибо!
Я думаю, что ваши вопросы должны быть более семантически понятными и менее двусмысленными, потому что StackOverflow предназначен для вопросов, которые имеют четкие ответы, а не на вопросы о общие мнения. Без изменений, чтобы дать вашим ответам более четкие ответы, ваш пост мог быть закрыт/заблокирован модераторами StackOverflow. – devinbost