目前我正在尝试让特萨罗的TD-Gammon运作起来。然而,我对棋盘如何编码以输入到神经网络中感到有些困惑。
我了解到他为每位玩家在棋盘上的每个点使用了4个单位(2 * 96个单位),另外为棋子在栏上和已下棋的棋子各使用了两个单位(2 * 2个单位),以及两个单位来指示当前轮到谁。这总共提供了198个输入。我也完全理解如何对每个点上的不同数量的棋子进行编码。
然而,我不太确定的是输入的顺序。是否是前96个输入编码了白棋在棋盘上的位置,接着是两个输入用于白棋的栏和已下棋的棋子;剩下的输入则用于黑棋、黑棋的栏、黑棋已下棋以及指示当前玩家的两个单位?
还是说4个连续的输入单位编码了棋盘上某一点的一个颜色的棋子,接下来的4个输入单位编码的是同一点但属于另一位玩家的棋子?
如果有人能分享一些知识,我会非常感激,因为我在网上找到的所有信息关于特萨罗用于编码特定双陆棋局的输入序列都相当模糊。
祝好,Stephan
回答:
正如这篇关于TD-Gammon细节的文章中所指出的:
在初步实验中,输入表示仅编码了原始的棋盘信息(每个位置的白棋或黑棋的数量),并没有利用任何与良好游戏相关的预计算特征,例如封锁的强度或被击中的概率。这些实验完全是无知识的,因为没有内置关于如何玩好双陆棋的初始知识。在随后的实验中,添加了一组手工制作的特征(与Neurogammon使用的相同的一组),导致整体性能提高。
似乎很明显,TD-Gammon有多个不同的版本,并且没有一个真正定义了TD-Gammon的具体版本。看起来它在使用原始棋盘编码时表现不错,而在添加了一些手工制作的特征后表现得更好。
因此,确定确切的特征可能有点像大海捞针,而且这可能也不是你想要的。你可以对固定的特征编码进行比较,将你提出的强化学习方法与时间差分学习(也如那篇文章中所描述的)进行比较。这将是你提出的方法与时间差分学习的公平比较(而不是称之为与实际的TD-Gammon的比较,因为你几乎没有希望完全复制TD-Gammon)。
随着你添加更多特征,你可能会看到两种方法都在改进,希望你的方法在这些比较中表现得更好。