Как использовать глубокое обучение в игре со змеями - PullRequest
0 голосов
/ 19 февраля 2019

В идеале я хочу использовать нейронную сеть, используя метод глубокого обучения.Однако я не хочу собирать данные о первоначальном запуске игры, например, 1000 раз, а затем использовать эти данные для питания нейронной сети (что будет контролировать обучение?).Я бы предпочел использовать метод глубокого обучения (с нейронными сетями).Я посмотрел на Q-Learning, который кажется великолепным и все такое, и может работать.Однако основная проблема с Q-learning заключается в том, что яблоко (еда) на доске змей всегда будет появляться в случайных местах (недетерминированных), поэтому, если я найду оптимальную политику (используя q-learning), она не будет работатькогда еда снова появляется в другом месте (нужно будет заново изучить политику).

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

Идея архитектуры.input_left = 3, input_front = -1, input_right = -1

Примечание: Могу ли я просто подать список для каждого направления, которое змея может воспринимать (влево, вправо, вперед)?Например, каждый список направления ввода содержит: [0, 5], где первое число - это либо food (1), либо wall (0), а второе число - это расстояние до этого объекта.Этот входной список будет введен, как показано на рисунке.Я думаю, я также мог бы просто положиться на одно целое число на вход, равное -1, если есть стена или сама, и если это яблоко, я просто даю расстояние до яблока (спереди, слева или справа для змеи).

Теперь мой вопрос: может ли Tensorflow просто сделать что-то волшебное, чтобы найти лучшую функцию (с уже настроенной моделью TF), используя эту технику для прохождения через модель?Разве нет способа, которым нейронная сеть должна выполнить всю обратную передачу в отношении награды / обратной связи, которую она получает с точки зрения того, насколько хорошо она это сделала (например: она приблизилась к яблоку, поэтому она получает небольшое вознаграждение, номинус крошечный штраф за один шаг)… Все эти функции легко реализовать, но я думаю, проблема в части обратного распространения (которую я не совсем понимаю).Я понимаю, что сеть (если она получит положительное вознаграждение) будет подгонять запущенные веса вверх и оставлять другие как есть (случайно инициализированными?)… Это правильно, и может ли Tensorflow / Keras справиться с этим?

Не уверен, имеет ли эта архитектура смысл и может ли она работать.

Любые идеи очень ценятся!

...