Game Score:所有 Round 都共享一个 Game Score,如果用 Game Score 作为 Reward,则无法区分好的局和坏的局。
Suphx 使用神经网络来学习第 k 局的表现应该获得的 Reward,使用的方法为 Global Reward Prediction 来做监督学习,网络结构如上图所示,主要由两层 GRU 组成。网络输入输出如下:
输入:前 k 局的分数、庄家是谁、连庄几局、胡牌情况(Riichi bets)
输出:根据当前情况预测的整个游戏的分数 Game Score,phi_k
Loss:每个游戏、每一局预测的游戏分数和实际的游戏分数越接近越好
当前第 k 局打得如何的评价为 phi_k - phi_(k-1),为什么这个 Reward 是合适的呢?
如果这局游戏开始和结束估计的最终分数上升了,说明这一局打的好,给正向奖励
如果这局游戏开始和结束估计的最终分数下降了,说明这一句打的不好,给负的奖励
因此 Suphx 的 reward 设置为 phi_k - phi_(k-1) - baseline。这里的 baseline 为多局游戏 reward 的均值。
3.3.7 为什么不用 value function
大家知道 RL 的算法包括 Policy Based,Value Based 以及 Actor-Critic,Suphx 使用的是 Policy Based 的方法,而后两者相比而言都有一个 Value function,那么为什么 Suphx 不训练 Value Function 呢?这是因为麻将中训练 Value function 很难,比如就算听牌了,也不知道炮牌和胡牌哪个来得快。
3.4 游戏太难学不会?大神带你飞 -- Oracle Guiding