为什么AlphaGo Zero的合并神经网络比两个独立的神经网络效率更高?


10

与以前的版本相比,AlphaGo Zero包含了多项改进。在这份备忘单中可以看到Alpha Go Zero的建筑细节。

这些改进之一是使用单个神经网络,该神经网络可以同时计算移动概率和状态值,而旧版本则使用两个单独的神经网络。根据论文表明,合并的神经网络效率更高:

它使用一个神经网络,而不是两个。早期版本的AlphaGo使用“策略网络”来选择下一个动作,并使用“价值网络”来从每个位置预测游戏的获胜者。这些都结合在AlphaGo Zero中,可以对其进行更有效的培训和评估。

对我来说,这似乎很不直观,因为从软件设计的角度来看,这违反了关注点原则上的分离。这就是为什么我想知道为什么合并被证明是有益的。

这种技术-将不同的任务合并到单个神经网络中以提高效率-是否可以总体上应用于其他神经网络,还是需要某些条件才能起作用?

Answers:


6

为什么这种合并被证明是有益的?

如果您认为共享的“价值/策略”网络由一个共享的组件(“残留网络”层)组成,并且其顶部是“价值和策略”组件,而不是“关注点分离”,那么这更有意义。

基本前提是网络的共享部分(ResNet)提供了输入的高级概括(导致移动的游戏状态),这对于浅层的Value和Policy网络都是很好的输入表示。

在这种情况下,我们可以训练一个共享的ResNet并将其用于两个简单得多的网络,而不是为价值和策略训练两个ResNet,从而可以大大减少计算量。在他们的情况下,将两者一起训练也可以改善正则化,从而创建更强大的通用表示形式。

具体来说,Silver 等人撰写的Alpha Go Zero论文在没有人类知识的情况下掌握围棋游戏,指出:

将策略和价值组合到一个网络中会稍微降低移动预测的准确性,但会减少价值误差,并使AlphaGo的游戏性能再提高600 Elo。这部分是由于提高了计算效率,但更重要的是,双重目标将网络调整为支持多个用例的通用表示形式。

可以在一般情况下或仅在特殊情况下应用此技术吗?

像软件库中的通用组件一样,仅当您要解决的问题从共享表示中受益时才有意义。

如果您正在训练针对相似任务的分类器,或者在已经对大型相似数据集训练过分类器的情况下,以很少的数据训练新任务,则可以使用它。

在Go之外,它通常用于图像识别。诸如ImageNet ILSVRC竞赛中的网络之类的深层预训练网络通常被用作起点。它们是经过分类(数周!)训练的分类器,超过一百万张图像。

然后,假设您想创建一个网络来识别您最喜欢的自行车品牌,首先从在ImageNet上训练的常规图像识别管道开始,将进行实际分类的最后一层(“这是边境牧羊犬”)切碎,然后添加一个小的新分类器,只挑选您关心的自行车。

由于预先训练的分类器已经提供了高级图像概念,这些概念是图像识别的良好构建基块(它对200个类别进行了分类),因此可以节省大量的训练时间,并且可以使分类器非常可靠。

当然,在许多情况下,问题没有有用的共享表示,因此无法从组合网络中受益。但是,它在正确的情况下是有用的工具。

查找转移学习或多任务学习以了解更多信息。


如果要使用软件工程原理来分析该神经网络的体系结构,我还要指出,价值和政策负责人赖以生存的残余区块网络遵循DRY原理。通过依赖同一组件(剩余块网络)对数据进行预处理,然后再将该数据传递到管道中的其他组件(值和策略头),它们保证了每个组件都将处理原始输入的相同表示形式。用两个单独的网络复制此过程几乎可以保证随时间变化。
sadakatsu
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.