我最近一直在阅读很多关于 TD-Gammon 的文章,因为我正在探索我正在制作的视频游戏中的 AI 选项。视频游戏是一种基于回合的位置类游戏,即“单位”或游戏块的位置将极大地影响其在该棋盘状态下的实用性。
为了朝着这个方向努力,我认为首先为几个不同的游戏实施神经网络是谨慎的做法。
我喜欢的想法是使用单个输出神经元对神经网络的棋盘状态进行编码,这使得该棋盘状态与其他棋盘状态相比具有相对强度。据我了解,这就是 TD-Gammon 的工作方式。
但是,当我查看其他人的代码和示例/教程时,它们代表棋盘状态的方式似乎存在很大差异。即使是像井字游戏这样简单的事情。
那么,具体来说,对于井字游戏,哪个更好,或者什么是棋盘状态的正确表示?
我见过:
9 个输入神经元,每个方格一个。A
0
表示自由空间、-1
对手和1
你自己。9 个输入神经元,但使用不同的值,例如为
0
对手、0.5
免费和1
为自己?你可以使用更大的值吗?像
0
,1
和2
?27 个输入神经元。前 3 个是正方形 1,接下来的 3 个是正方形 2,依此类推。每个神经元都是
1
或0
。三组中的第一个表示该方格是否空闲;第二个表示该方格是否被您的对手占据。最后,每 3 个神经元中只有一个有1
,另外两个有0
。18 个输入神经元。第一个
1
用于 X 播放器,第二个1
用于 O 播放器,两者都0
用于空白
那么,当涉及到特定棋子的能力发挥作用的游戏时,比如在国际象棋中,你会如何表现这一点?
它会像使用更高的输入值来获得更有价值的作品一样简单吗?即为-20
对手皇后和+20
你自己的皇后?或者您是否需要更复杂的东西,为每个方格定义 10 多个值,为每个单位类型和玩家组合定义一个值?