У меня проблемы с реализацией глубокой нейронной сети в игре Pong, потому что моя сеть всегда расходится, независимо от того, какие параметры я меняю. Я взял Pong-Game и реализовал алгоритм глубокого обучения на основе теано / лазаньи, основанный на известной статье о природе от Googles Deepmind.
Чего я хочу:
Вместо того, чтобы загружать в сеть данные о пикселях, я хочу ввести положение мяча по оси x и y, а также положение по оси y весло для 4 последовательных кадров. Таким образом, у меня было всего 12 входов.
Я хочу вознаградить только за попадание, поражение и победу в раунде.
При такой конфигурации сеть не сходилась, и мой агент не мог играть игра. Вместо этого весло двигалось прямо вверх или вниз или повторяло тот же рисунок. Поэтому я подумал, что постараюсь немного упростить работу агента и добавить некоторую информацию.
Что я сделал:
Штаты:
- Положение мяча по оси x (от -1 до 1)
- Y-позиция мяча (от -1 до 1)
- нормализованная x-скорость мяча
- нормализованная y-скорость мяча
- Y-позиция лопасти (от -1 до 1)
С 4 последовательными кадрами я получаю всего 20.
Награды:
- +10, если ракетка попадает в мяч
- +100, если агент выиграет раунд
- -100, если агент проиграет раунд
- От -5 до 0 для расстояния между прогнозируемым конечным положением (положением y) мяча и текущим положением y ракетки
- +20, если прогнозируемое конечное положение мяча лежит в текущем диапазоне ракетки (удар прогнозируемый)
- -5, если мяч лежит за ракеткой (удар больше невозможен)
При такой конфигурации сеть все равно расходится. Я попытался поиграть со скоростью обучения (от 0,1 до 0,00001), узлами скрытых слоев (от 5 до 500), количеством скрытых слоев (от 1 до 4), пакетным аккумулятором (сумма или среднее значение), правилом обновления (rmsprop или Deepminds rmsprop). Все это не привело к удовлетворительному решению. График средних потерь обычно выглядит примерно так: this. Вы можете загрузить мою текущую версию реализации здесь
Я бы буду очень признателен за любую подсказку :)
Коанаши