Я хочу создать ИИ, который может играть пять в ряд / гомоку. Как я уже упоминал в названии, я хочу использовать для этого обучение с подкреплением.
Я использую метод градиента политики , а именно REINFORCE, с базовым уровнем. Для приближения значения и функции политики я использую нейронную сеть . Имеет сверточные и полностью связанные слои. Все слои, кроме выходных, являются общими. Слой вывода политики имеет выходной блок (размер платы) и softmax на них. Так что это стохастик. Но что, если сеть выдает очень высокую вероятность неверного перемещения? Неверный ход - это когда агент хочет проверить квадрат, в котором есть один «Х» или «О». Я думаю, что это может застрять в этом состоянии игры.
Не могли бы вы порекомендовать какое-либо решение для этой проблемы?
Я предполагаю использовать метод актер-критик . За недействительный ход мы должны дать отрицательное вознаграждение и передать ход противнику.
источник
Обычно методы softmax в методах градиента политики, использующих линейную функцию приближения, используют следующую формулу для расчета вероятности выбора действияa . Здесь вес θ , и функция ϕ является функцией текущего состояния s и действием из множества действий A .
Чтобы исключить незаконные шаги, можно ограничить набор действий только теми, которые были законными, следовательно,Legal(A) .
В псевдокоде формула может выглядеть так:
Независимо от того, используется ли линейное или нелинейное приближение функции (ваша нейронная сеть), идея состоит в том, чтобы использовать только законные шаги при вычислении вашего softmax. Этот метод означает, что агент будет выдавать только действительные ходы, что хорошо, если вы захотите позже изменить свою игру, и что разница в значении между ограниченным выбором действий будет легче различить агентом. Это также будет быстрее, поскольку количество возможных действий уменьшается.
источник
ИМХО идея недействительных ходов сама по себе недействительна. Представьте себе размещение "X" в координатах
(9, 9)
. Вы можете считать это неверным ходом и дать ему отрицательное вознаграждение. Абсурд? Конечно!Но на самом деле ваши недействительные ходы - просто пережиток представления (что само по себе просто и хорошо). Лучшее из них - полностью исключить их из любых вычислений.
Это становится более очевидным в шахматах:
В позиционном представлении вы можете рассмотреть ход
a1-a8
, который относится к игре, только если в нем есть Ладья или Королеваa1
(и некоторые другие условия выполняются).В другом представлении вы могли бы рассмотреть ход
Qb2
. Опять же, это может или не может принадлежать игре. Если у текущего игрока нет королевы, то, конечно, нет.Поскольку недействительные ходы связаны с представлением, а не с игрой, они не должны рассматриваться вообще.
источник
Недавно я столкнулся с похожей проблемой с Сапер.
Я решил это путем полного игнорирования незаконных / недействительных ходов.
Надеюсь это поможет.
источник