Tesauro的TD-Gammon中的电路板编码

时间:2015-09-06 20:57:15

标签: machine-learning artificial-intelligence reinforcement-learning

目前我正试图让Tesauro的TD游戏工作。但是我对如何编码电路板以输入神经网络感到困惑。

据我所知,他在每个玩家的每个点上使用了4个单位(2 * 96个单位),每个额外的单位用于酒吧上的跳棋和被剔除的跳棋(2 * 2个单位)以及两个单位指示轮到谁了。这总共提供了198个输入。我也完全理解如何为每个点编码不同数量的检查器。

然而,我不确定的是输入序列。这是96个第一个输入在电路板上编码白色检查器,接着是白色条和白色检查器的两个输入;剩下的输入专用于黑色跳棋,黑条,黑掉和两个指示当前玩家的单位?

或者更确切地说,4个连续的输入单元用一种颜色编码一个板的一个点,接下来的4个输入单元编码相同的点但现在用于另一个播放器?

如果有人有一些知识可以分享,我会很高兴,因为我在网上发现的一切都非常含糊,因为Tesauro用来编码特定步步高情况的输入序列。

干杯, 斯蒂芬

2 个答案:

答案 0 :(得分:3)

我知道,这是一个非常古老的问题,但我还想分享

编码顺序根本不重要,因为您总是将所有输入乘以权重。我正在研究这个主题,并从某人的博士论文中收集了几个编码。

萨顿

case 0 => if (men >= 1) 1.0f else 0.0f
case 1 => if (men >= 2) 1.0f else 0.0f
case 2 => if (men >= 3) 1.0f else 0.0f
case 3 => if (men >= 4) (men - 3) / 2.0f else 0.0f

Tesauro89

case 0 => if (men == 1) 1.0f else 0.0f
case 1 => if (men == 2) 1.0f else 0.0f
case 2 => if (men == 3) 1.0f else 0.0f
case 3 => if (men >= 4) (men - 3) / 2.0f else 0.0f

Tesauro92

case 0 => if (men == 1) 1.0f else 0.0f
case 1 => if (men >= 2) 1.0f else 0.0f
case 2 => if (men == 3) 1.0f else 0.0f
case 3 => if (men >= 4) (men - 3) / 2.0f else 0.0f

GNU步步高

case 0 => if (men == 1) 1.0f else 0.0f
case 1 => if (men == 2) 1.0f else 0.0f
case 2 => if (men >= 3) 1.0f else 0.0f
case 3 => if (men >= 4) (men - 3) / 2.0f else 0.0f

我获得了有预先计算的股票的位置数据库,用于联系,崩溃和竞赛阶段,并针对他们进行批量学习。

Sutton的编码需要更多的时代,其他的更快收敛。 Tesauro89是最快的接触游戏阶段,Tesauro92在比赛阶段。 GnuBG编码介于Tesauro的编码之间。

此外,我为隐藏层(40个隐藏单元)尝试了不同的激活功能:sigmoid,tanh,relu,lelu relu,extended elu,softrelu / softplus,symmetric elliott和log。像tanh和对称elliott这样的零中心函数比其他函数收敛得快得多。同样,更快意味着时代的数量,我没有测量时间。很便宜的relu可能是个不错的选择。当网络无法改进时,培训就停止了。所有网络最终都停在几乎相同的MSE上。所以我的结论是:实施细节并不重要。

几年前(可能是10年),Tesauro重复了TD-gammon培训,没有使用过所有手工制作的功能。训练速度很慢但随着计算机变得更快,具有天真编码的玩家在合理的时间之后匹配更复杂的玩家。

我还尝试了几种更具异国情调的功能,但它们根本不起作用。

答案 1 :(得分:2)

this article about the details of TD Gammon中所述:

  

在初步实验中,输入表示仅编码原始板信息(每个位置的白棋或黑棋的数量),并且没有利用与良好游戏相关的任何其他预先计算的特征,例如,封锁的力量或被击中的可能性。这些实验完全没有知识,因为没有关于如何打好步步高的初步知识。在随后的实验中,一组手工制作的特征(Neurogammon使用的相同集合)被添加到表示中,从而提高了整体性能。

很明显,有许多不同版本的TD Gammon,没有一个真正定义TD Gammon的具体版本。看起来它在原始电路板编码方面做得很好,甚至在添加一些手工制作的功能时效果更好。

因此,它可能在一定程度上是一个疯狂的追逐确定功能,并且它可能不是你想要的。对于固定特征编码,您可以将您提出的强化学习方法与时间差异学习进行比较(也如该文章中所述)。这将是您提出的方法与时间差异学习的公平比较(而不是称之为时间差异学习)与实际的TD Gammon进行比较,因为你无论如何都没有希望复制TD Gammon。)

随着您添加更多功能,您可能会看到这两种方法都有所改进,并且希望您的这些方法在这些比较中名列前茅。