Недействительные шаги в обучении с подкреплением

Я реализовал индивидуальную среду тренажерного зала openai для игры, похожей на http://curvefever.io/, но с осторожным действия вместо непрерывных. Таким образом, мой агент может на каждом этапе двигаться в одном из четырех направлений: влево / вверх / вправо / вниз. Однако одно из этих действий всегда будет приводить к врезанию агента в самого себя, поскольку он не может «повернуть вспять».

В настоящее время я просто позволяю агенту сделать любой ход и просто позволяю ему умереть, если он сделает недопустимый ход, в надежде, что он в конечном итоге научится не предпринимать этого действия в этом состоянии. Однако я читал, что можно установить вероятность совершения незаконного хода равным нулю, а затем выполнить выборку действия. Есть ли другой способ решить эту проблему?


person ericwenn    schedule 31.10.2017    source источник


Ответы (1)


Вы можете попробовать решить эту проблему двумя изменениями:

1: дать текущее направление в качестве входных данных и дать награду, возможно, +0,1, если он делает ход, который не приводит к сбою, и дает -0,7, если он делает обратное движение, которое напрямую приводит к сбою.

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

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

Примечание: это займет очень много времени. поэтому вам нужно подождать достаточно, чтобы обучить алгоритм. Предлагаю не торопиться и дать ему тренироваться. и я играл в игру, это действительно интересно :) желаю сделать AI для игры :)

person Jay Joshi    schedule 07.11.2017
comment
Спасибо. Поскольку ИИ предназначался для соревнований, которые завершились на прошлой неделе, и я не мог заставить его работать, я сдался, хех. Я использовал A3C, поэтому на выходе не было слоя softmax. Когда я посмотрел на игровой процесс, я заметил, что на самом деле он не так часто делает неверный ход (так как при этом он сразу умирает, поэтому это не будет хорошим ходом). Я думаю, что мне не удалось очистить вход, а также слишком высокое значение гаммы. Он был установлен на 0,95, когда я тренировался дольше всех. - person ericwenn; 07.11.2017
comment
Это было соревнование Cygni, вы можете найти его здесь game.snake.cygni.se / # /? _ k = kdwudn - person ericwenn; 07.11.2017