AlphaGo 零损失函数

数据挖掘 深度学习 喀拉斯 张量流 损失函数 深思熟虑
2022-03-04 16:23:14

据我从 AlphaGo Zero 系统了解:

  • 在 self-play 部分,MCTS 算法存储一个元组 (s,π,z) 在哪里s是状态,π是状态中动作的分布概率,并且z是一个整数,表示该状态所在游戏的获胜者。
  • 网络将收到s作为输入(描述状态的一堆矩阵s) 并将输出两个值:pv.p是动作的分布概率,并且v是一个值[1,1]代表哪位玩家有可能赢得比赛。
  • 对于训练,它将使用以下损失函数:

l=(zv)2πTlog(p)+c||θ||2

  • 最后,它评估新网络并再次开始自我播放部分。

我的问题

  • 如果网络只接收状态s(表示为矩阵)作为输入,如果值πz需要吗?

  • 如果这些值确实作为网络的输入传递,它们是否通过了网络的卷积(和其他)层?因为如果这是真的,那么文章中就没有提到(除非我错过了)这个信息。

1个回答

理解这部分的最好方法是查看AlphaGo Zero 论文中的图 1 。

神经网络 (NN) 最小化其自身策略之间的差异pt和 MCTS 政策πt. 的价值πt由 MCTS self-play 产生,作为回报,它使用上一次迭代中的 NN。

这同样适用于vtz. 在每次迭代中,调整 NN 的权重以最小化两者之间的距离vt(NN的输出)和z(MCTS 的输出)由损失函数定义。z这里没有时间索引,因为完整的自我游戏只产生一个值z每次进行。

第一个问题的TLDR:两者,πv, 由 MCTS 生成,作为 NN 的输入。

(在我看来,论文中的索引有点令人困惑,所以按照上面的说明看它可能是最容易的)

现在,“输入”并不是指在 NN 的输入层上的输入。如附录“神经网络架构”下所述,输入是“19 x 19 x 17 图像堆栈”。其中包含以下信息:

  • 玩家 1 最近 8 轮的位置(8 个特征位面)
  • 选手2最近8轮(8个特征位面)的位置
  • 指示轮到谁的颜色特征(1 个特征平面)

而这 17 个特征平面(8+8+1) 结合1919大小板是191917输入 NN 通过其输入层接收。πz仅通过损失函数传递给 NN(即它们是此监督学习问题中的目标值!)。

第二个问题的TLDRπz不是通过输入层馈送到NN,而是通过损失函数作为目标值。