为什么要在 AlphaGo 的输入特征中添加一个常数平面?

人工智能 机器学习 阿尔法戈
2021-10-29 04:04:12

用深度神经网络和树搜索掌握围棋游戏的论文中,AlphaGo 网络的输入特征包含一个常量平面和一个常量零平面,如下所示。

Feature       #of planes Description 
Stone colour  3          Player stone/opponent stone/empty 
Ones          1          A constant plane filled with 1 
Turns since   8          How many turns since a move was played 
Liberties     8          Number of liberties (empty adjacent points) 
Capture size  8          How many opponent stones would be captured 
Self-atari size 8        How many of own stones would be captured 
Liberties after move 8   Number of liberties after this move is played 
Ladder capture 1         Whether a move at this point is a successful ladder capture 
Ladder escape 1          Whether a move at this point is a successful ladder escape 
Sensibleness  1          Whether a move is legal and does not fill its own eyes 
Zeros         1          A constant plane filled with 0 
Player color  1          Whether current player is black

我想知道为什么这些特征是必要的,因为我认为恒定平面不包含任何信息,它会使网络变得更大,因此更难训练。

更何况我看不懂这里的尖锐标志。是“数”的意思吗?但是一个数字就足以代表“自下棋以来的转数”,为什么是八?

非常感谢你。

1个回答

我想知道为什么这些特征是必要的,因为我认为恒定平面不包含任何信息,它会使网络变得更大,因此更难训练。

在卷积层的许多实现中,过滤器在沿特征平面“滑动”时不会整齐地保留在特征平面内,但(从概念上)也部分地“移出”平面(其中总是至少一个过滤器的“单元”仍将在飞机内)。直观地说,在一个3×3例如过滤器,你可以想象我们用一个额外的边框来填充输入特征1,并且“真实”输入平面周围的填充填充有0s。

如果所有输入特征也有可能具有0,在某些情况下,神经网络可能很难或不可能区分“真实”0从输入0棋盘周围的填充中的条目,即它可能很难知道游戏板在哪里以及游戏板在哪里结束。拥有一个始终充满的恒定输入平面1s 可以在这方面提供帮助,因为该平面始终可以可靠地用于区分游戏板上实际存在的“真实”单元格与游戏板外位置的“真实”单元格。

至于装满的飞机0s...我不知道为什么这会有用。由于一些特殊的实现细节,它可能很有用。这个线程中,有些人假设在特定的硬件上,由于内存中数据的布局,它可能会使某些计算稍微更有效率——它导致通道数可以被除以8,这将..也许有帮助?我对此真的不太了解,但我确实知道,在较小的范围内,有时在类中添加未使用的数据确实可以提高性能,因为内存布局更好我想它也有可能是意外添加的,或者“以防万一”,而且它并没有太大的用途。无论如何,AlphaGo 团队可用的硬件数量是相当疯狂的,一个通道或多或少可能对他们来说不是太大的问题。


更何况我看不懂这里的尖锐标志。是“数”的意思吗?但是一个数字就足以代表“自下棋以来的转数”,为什么是八?

这在本文的“策略/价值网络的特征”段落中进行了解释。引用论文:

"将每个整数特征值拆分为多个19×19" 二进制值的平面(one-hot encoding)。例如,单独的二进制特征平面用于表示交叉点是否具有1自由,2自由,,8自由。

使用的所有特征平面都是严格二进制的,没有使用具有整数值的特征平面>1. 这在可能的情况下很常见,因为神经网络往往更容易学习二进制特征而不是整数或实值特征。