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

人工智能 神经网络 比较 建筑学 阿尔法零 效率
2021-10-17 22:48:24

AlphaGo Zero与它的前辈相比包含了一些改进。Alpha Go Zero 的架构细节可以在这个备忘单中看到。

其中一项改进是使用单个神经网络同时计算移动概率和状态值,而旧版本使用两个独立的神经网络。根据论文已经表明,合并的神经网络更有效:

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

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

这种技术——在单个神经网络中合并不同的任务以提高效率——是否可以普遍应用于其他神经网络,或者这是否需要某些条件才能工作?

1个回答

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

如果您将共享价值/策略网络视为由一个共享组件(剩余网络层)组成,顶部有一个价值和策略组件,而不是关注点分离,那么它更有意义。

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

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

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

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

这种技术可以普遍应用还是只在特殊情况下应用?

就像软件库中的通用组件一样,只有当您尝试解决的问题受益于共享表示时,它才有意义。

如果您正在为类似任务训练分类器,或者使用少量数据训练新任务,而您已经在更大、类似的数据集上训练了分类器,则可以使用它。

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

然后,假设您想创建一个网络来识别您最喜欢的自行车品牌,您可以从在 ImageNet 上训练的通用图像识别管道开始,切掉执行实际分类的最后一层(“它是边境牧羊犬”)并添加一个小的新分类器,只挑选你关心的自行车。

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

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

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