AlphaGo Zero 与深度强化学习(一) 概述
AlphaGo Zero 与深度强化学习(一) 概述
原文: Mastering the Game of Go without Human Knowledge(2017)
概览
做的什么
- 完全基于强化学习,使
AlphaGoZero
(下文简称 zero)通过自己的神经网络在很短的时间打败了前 AlphaGo。 - 完全无人类数据干预。
- 使用强化深度学习
- 输入特征简单
提到的的技术
- 强化学习
- 深度学习
-
Monte-Carlo Tree Search(MCTS)
决策树 - 新的强化学习方法-将
lookahead search
直接放到training
里 - Q 函数与
fθ 函数以及针对棋类的 Loss - 采用 ResBlock 将强化学习用深度网络的方式表示出
优势
- 完全无人类数据干预,从0实现纯自主学习。
- 可以超出人认知的领域。不依赖于
经验
- 独*强化学习训练,由
瞎玩
开始。不用人类的先验数据,本例为棋谱。 - 输入特征简单,只需要单个nn(前 Alpha 网络需要两个深度网络)
- 相比于复杂的
MCTS
决策树,只需要简单的树便可实现。决策轮回中不需要反向传播
不足
- 能源消耗:4TPU
老式机器学习方法
- 训练数据不可靠
- 训练出的模型是“训练数据强加的”性格
强化学习
- 属于监督学习的扩展
- 不局限于
先验性
前身AlphaGo Fan, Lee 两个深度网络
训练时
规则网
- 输出更多可能
- 监督学习学专家的走法
policy-gradient reinforcement learning
一个决策网
- 优化落子位置
- 预测如何能赢,通过规则网
自我对抗
(自己和自己下着玩)
训练后
使用
Monte-Carlo Tree Search(MCTS)
决策树 下一步探索
MCTS wiki使用已训练好的规则网络找到最高胜率的分支
- 使用已训练的决策网优化分支
AlphaZero 中的强化学习
前景:
fθ θ :参数 ;s:位置;P 当前点的先验概率。
基本状态
- 输入:位置 s
- 输出:
- 可能性 p:当前位置落子的可能性
- 价值 v:当前用户在该位置落子后产生的价值,即对最后结果的影响
网络组成
- 带有
BN
与non-liner
的残差单元与卷积层 - 第一层为普通的卷积层后面为20层的ResNet残差块
训练方式
在棋盘的每个位置 s:
- 先在
fθ 网络做一次MCTS
,得到下一个子落在该位置的可能性π :递归选择 Q+U分支深入,直到叶子节点。 - 通过 MCTS 的结果进行自我对抗训练:通过已有的
fθ 网络在上面找到的叶子节点处得到 P v 值,p 该状态下此位置能赢的先验概率,v 作为当前的价值。v 更新树深入路径上的 Q 值。依次往复直到自我黑``白
手均采用了 pass或已决定胜负。 - 更新权值时是训练函数像提高
search-probatly
与self-paly winner
的方向更新:具体Loss详见下面公式 - 与之平行还会对
f 网络本身进行训练。目的是让 f 观察网络能更准确的判断该棋局的未来走势。这个网络的 loss 是预测结果与正确结果的差的距离。思路类似GAN
的决策网络
公式
以下公式会在阅读 Master 论文后详细讨论
-
Q 值计算为:
Q(s,a)=1N(s,a)∑s′|s,a−>s′V(s′)
可以理解为:一个额外的奖励,与先验价值 V 成正比,与该位置访问频次成反比。鼓励探索还未探索位置的好的下法。 -
U 值计算为
U(s,a)=λP(s,a)1+N(s,a)
可以理解为额外决策奖励 Q与遇到该点的情况 U 做加和。当前点在博弈中会遇到多次,因为不知何时落此最好所以做该位置频次的衰减。减小反复访问一位置对最后结果的影响 -
综合 Loss:
l=(z−v)2−πTlogp+c||θ||2
第一项训练预测价值 v 与真实价值 z 靠近,中间的是训练当前位置的先验概率 p 靠近self-playMCTS
结果π 最后增加L2正则项
提高模型的泛化能力。
训练
参数与训练时间
- 时长:3+40天
- 4900w 自我对抗棋局。
- 每个MCTS1600种模拟步(每次思考0.4s)
- 参数更新在700000mini-batch
- 共2048个位置
训练现象
- Zero 会自学到很多人类经典棋谱(见下图)
- a 为人类的经典棋路在训练中出现时间。
- b 为zero 偏好不同下棋套路的自我对抗。
fuseki (opening), tesuji (tactics), life-and-death, ko (repeated board situations), yose (endgame), capturing races, sente (initiative)
- 随着自我对抗训练的深入,zero 下棋的方式也逐渐具有大局性。
- 3小时时 zero只着眼于
贪婪吃子
- 19小时时 zero 开始关注全局的
life-and-death
,下棋趋于谨慎 - 70小时时zero,下棋已有非常好的
平衡性
包括multiple battles
和ko fight
。赢时与对手的拉开的距离将近一半
- 3小时时 zero只着眼于
结果与比对
- 在 Elo 比分上zero 在40小时超过了前 GoLee
- 对棋局的胜负的判断上,依靠监督学习的 Go 能力要强于 Zero
- Le 的预测精确度要高,但综合还是 Zero 的自学能力强
- 在网络结构设计上,将 QV 网络结合(端到端)最后的Elo 结果要好于分开的情况
- 在其后的40天训练后 zero 跃居 EloRate 榜首
总结
- 在 zero 的深度学习策略中,用于训练落子可能性的权值与自我训练的权值是相互共享的。
- 开始初始化的权值完全随机
- 纯粹的强化学习可以让机器训练为
超人
程度 - 纯粹的强化学习大幅缩短训练时间到仅需几小时(硬件资源足够的情况下 4TPU)
- 纯粹的强化学习拟合与泛华性能更好:之前 deeplearning 学到的特征完全依赖 loss ,而强化学习指定了一个大的学习方向使得学习过程一定程度可控。
- 强化学习赋予 Zero 以独特魅力
结语
Humankid has accumulated Go knowledge from millions of games played over thousands of years, collectively distilled into patterns, proverbs and books. In the space of a few days, starting tabula rasa, AlphaGo Zero was able to rediscover much of this Go knowledge, as well as novel strategies that provide new insights into the oldest of games.