为什么这种合并被证明是有益的?
如果您认为共享的“价值/策略”网络由一个共享的组件(“残留网络”层)组成,并且其顶部是“价值和策略”组件,而不是“关注点分离”,那么这更有意义。
基本前提是网络的共享部分(ResNet)提供了输入的高级概括(导致移动的游戏状态),这对于浅层的Value和Policy网络都是很好的输入表示。
在这种情况下,我们可以训练一个共享的ResNet并将其用于两个简单得多的网络,而不是为价值和策略训练两个ResNet,从而可以大大减少计算量。在他们的情况下,将两者一起训练也可以改善正则化,从而创建更强大的通用表示形式。
具体来说,Silver 等人撰写的Alpha Go Zero论文。,在没有人类知识的情况下掌握围棋游戏,指出:
将策略和价值组合到一个网络中会稍微降低移动预测的准确性,但会减少价值误差,并使AlphaGo的游戏性能再提高600 Elo。这部分是由于提高了计算效率,但更重要的是,双重目标将网络调整为支持多个用例的通用表示形式。
可以在一般情况下或仅在特殊情况下应用此技术吗?
像软件库中的通用组件一样,仅当您要解决的问题从共享表示中受益时才有意义。
如果您正在训练针对相似任务的分类器,或者在已经对大型相似数据集训练过分类器的情况下,以很少的数据训练新任务,则可以使用它。
在Go之外,它通常用于图像识别。诸如ImageNet ILSVRC竞赛中的网络之类的深层预训练网络通常被用作起点。它们是经过分类(数周!)训练的分类器,超过一百万张图像。
然后,假设您想创建一个网络来识别您最喜欢的自行车品牌,首先从在ImageNet上训练的常规图像识别管道开始,将进行实际分类的最后一层(“这是边境牧羊犬”)切碎,然后添加一个小的新分类器,只挑选您关心的自行车。
由于预先训练的分类器已经提供了高级图像概念,这些概念是图像识别的良好构建基块(它对200个类别进行了分类),因此可以节省大量的训练时间,并且可以使分类器非常可靠。
当然,在许多情况下,问题没有有用的共享表示,因此无法从组合网络中受益。但是,它在正确的情况下是有用的工具。
查找转移学习或多任务学习以了解更多信息。