В изучении блэкджека, функции вознаграждения? - PullRequest
0 голосов
/ 31 января 2020

В настоящее время я изучаю изучение подкрепления и построил игру в блэкджек.

В конце игры есть очевидное вознаграждение (выплата), однако некоторые действия не приводят к вознаграждениям (попадание в счет 5), который следует поощрять, даже если конечный результат отрицательный (потеря руки).

Мой вопрос: какой должна быть награда за эти действия?

Я мог бы Жесткий код положительная награда (часть вознаграждения за победу в руке) за попадания, которые не приводят к перебоям, но мне кажется, что я не подхожу к проблеме правильно.

Кроме того, когда я назначаю вознаграждение за выигрыш (после окончания раздачи), я обновляю q-значение, соответствующее последней паре действие / состояние, которое кажется неоптимальным, так как это действие может не иметь непосредственного привести к победе.

Другой вариант, который я думал, - назначить одинаковое конечное вознаграждение всем парам действий / состояний в последовательности, однако некоторые действия (такие как попадание на счет <10) следует поощрять даже если это приводит к проигранной руке. </p>

Примечание: моя конечная цель - использовать deep-RL с LSTM, но я начинаю с q-learning.

1 Ответ

0 голосов
/ 13 февраля 2020

Я бы сказал, чтобы начать с простого и использовать награды, которые диктует игра. Если вы выиграете, вы получите награду +1, если проиграете -1.

Кажется, вы хотели бы вознаградить некоторые действия, основанные на человеческом знании. Может быть, начать с использования эпсилон жадный и позволить агенту обнаружить все действия. Поиграйте со скидочным гиперпараметром, который определяет важность будущих наград, и посмотрите, будут ли в нем интересные стратегии.

Этот блог о RL и Блэкджеке. https://towardsdatascience.com/playing-blackjack-using-model-free-reinforcement-learning-in-google-colab-aa2041a2c13d

...