AlphaGo浅析

AlphaGo浅析

  • 接上节,我们可以知道蒙特卡罗树搜索在空间巨大时仍旧有效,尤其是在蒙特卡罗树搜索的基础上经过UCB的加持改良后的UCT,当年也能在业余的小棋盘和大棋盘比赛里大展身手,那么能和专业棋手抢占春秋的AlphaGo和这蒙特卡罗树搜索这二者之间有什么联系呢?

提出问题

  1. 传统的蒙特卡罗树搜索算法为什么只能达到业余棋手的水平?
  2. AlphaGo瞒着蒙特卡罗树搜索算法干了什么?
  3. AlphaGo在搜索树上是怎么表现的?

带着上述问题,小编开始了新一轮学习。

1.关于传统MCTS不得不说的那些事

  • 上节我们也说到MCTS的四个步骤:选择,拓展,模拟,回溯,树内的选择策略一般是贪心策略,有时加入UCB,树外是随机策略等等。但是大家仔细品味就会发现,即使MCTS成功地平衡了探索和利用的关系,它仍然有可能会因为对一些节点的不够了解而浪费了资源,错过最优解。 简而言之就是看一些问题看不透。举个例就是如果MCTS算法在下这一着之前看透了后续5步的棋着走向,而专业选手可能能够看透10着甚至更多。

问题的根源在于传统MCTS的估值函数和策略函数都是一些局面特征的浅层组合

这就引出了传统MCTS算法的局限——无法表征深层特征。

2.AlphaGo的努力

  • 囿于MCTS本身的局限性,所以AlphaGo在MCTS的框架下引入了四个卷积神经网络:三个策略网络+一个价值网络。价值网络用来评估棋局,利用策略网络选择落子的位置,并借助监督学习和强化学习训练上述神经网络。

1. 监督学习策略网络Pσ(SL策略网络)

  • Pσ是AlphaGo最先训练出来的神经网络,它由13个卷积层组成,用来计算在给定的棋面状态下,每个位置的落子概率。

1)输入

Pσ的输入为当前状态的棋局特征,用一个191948的图像数组表示。19*19是棋盘大小,48表示特征维数(通道数)。这些棋局特征由人工选择出来。

2)过程

此过程涉及CNN的一点点计算,大家可先行理解一下。神经网络由数据输入层,隐藏层,输出层组成;而卷积神经网络在此基础上进行改进,一般由数据输入层,卷积计算层,ReLU(修正线性单元)激励层,池化层和全连接层组成。
AlphaGo浅析_第1张图片
根据上图,小编大致讲一下步骤(下方的图片仅用来介绍填充结果和移动过程):

  1. 输入图像进入第一个隐层,用0将1919的尺寸填充至2323(相当于在初始棋盘的基础上每个边向外扩张两行或两列),并于192个大小为55,步长为1的卷积核做卷积操作。如下图蓝色为第一个矩阵,紫色为第二个矩阵,因为步长为1,所以每个矩阵之间相距仅一格,每个矩阵经过卷积计算最终只会得出一个值,所以2323的矩阵经过卷积运算后的结果矩阵大小为19*19:
    AlphaGo浅析_第2张图片
  2. 将卷积结果进行非线性映射,生成192个19*19的结果;
  3. 在第2-12个隐层中,每个隐层都将上一层的输出图像填充至2121大小的尺寸,继续与192个大小为33,步长为1的卷积核进行卷积操作;如下图。
    AlphaGo浅析_第3张图片
  4. 将卷积结果放入非线性层进行映射;
  5. 最后,将最后一层与一个大小为1*1,步长为1的卷积核进行卷积操作,并用softmax函数分类(softmax的输出结果是概率)并输出最终结果。

3) 不足

  • 策略网络Pσ(走棋策略)运行速度比较慢,平均下一步棋要耗费3ms,这使得该网络很难用于MCTS的模拟走子。

2.快速走子策略网络Pπ

由于Pσ搜索速度很慢,所以AlphaGo训练了一个更快速,但准确率有所降低的快速走子策略网络。

1)组成:单程Softmax网络。

2)输入输出:人工设计输入,输出为各个位置的下子概率。

3)作用:可以表征当前局面的局部特征。

4)优势:

  • 虽然在相同模拟次数下,快速走子策略网络Pπ比SL策略Pσ预测精度低,但是在相同时间内,它能模拟出更多的棋局,所以总体来说预测精度更高,能极大地提高围棋棋力。

3. 强化学习策略网络Pρ(RL策略网络)

1)出现原因

  • 为进一步提高策略网络的对弈能力,AlphaGo采用策略梯度强化学习方法训练了一个强化学习策略网络Pρ。

2)结构:

  • 和SL策略网络结构相同:13层卷积神经网络,输出位给定位置的落子概率。

3)过程

  1. 使用SL策略 Pσ 的参数 σ 对RL策略网络 Pρ 的参数 ρ 进行初始化;
  2. 使用当前策略网络 Pρ 与历史版本 Pρ- 迭代对弈;
  3. 对弈结束后,若胜利则给予正回报,失败则给予负回报;
  4. 根据棋局结果,利用策略梯度法对当前网络参数ρ进行更新。

Pρ-的来历:在策略网络自我对弈的过程中,每进行500次迭代就把当前网络参数作为新对手加入对手池,为提高训练的稳定性,Pρ-是在对手池里随机挑选的。

4)本质:

使用强化学习的奖惩机制进行网络更新。在更新过程中,网络的权重ρ始终向着收益最大化的方向进化。

5)目的:赢棋

4.价值网络vθ

1)出现原因:

  • 为了能够快速预估棋面价值,AlphaGo新练了一个价值网络vθ。

2)作用

  • 根据当前棋局状态,给出赢棋概率。

3)组成

  • 是一个14层的卷积神经网络,输出层是一个单神经元标量。

4)过程

如下图所示:网络的输入是一个191948的图像块和一个描述当前棋手是否执黑的二进制特征层。

  1. 第1-11层和策略网络的隐层相同;
  2. 第12层是一个额外的卷积层;
  3. 第13层与卷积核大小为1*1,步长为1的卷积核进行卷及操作;
  4. 第14层是包含256个线性单元的全连接线性层;
  5. 输出层是使用双面正切函数的全连接线性层。

AlphaGo浅析_第4张图片

5)存在的问题

如果从人类对弈的完整棋局中抽取足够数量的训练数据,很容易出现过拟合的问题。

6)AlphaGo的解决方案

生成三千万个比赛,每个比赛数据生成过程如下:

  1. 生成一个在 1~450 区间的随机数;
  2. 利用SL策略网络生成棋局的前 U-1 步;
  3. 利用随机采样决定第 U 步的位置;
  4. 利用RL策略网络完成后 U~T 的自我对弈过程,直至棋局结束分出胜负;
  5. 将训练阳历加入训练数据集,用于判断结果的输赢概率。

基于这份数据训练出来的价值网络准确率远高于使用快速走子网络进行蒙特卡罗树搜索的准确率,即使是与使用RL策略网络的蒙特卡罗树搜索相比也不逊色,而且价值网络的计算效率更高

5. 蒙特卡罗树搜索(MCTS)

  • 到目前为止,我们大致整理了四个网络:SL策略网络,快速走子策略网络,RL策略网络,价值网络。我们要如何把他们整合到一起呢,这回我们用到了 MCTS 。

异步策略价值蒙特卡罗树搜索(APV-MCTS)

异步策略价值蒙特卡罗树搜索 通过蒙特卡罗树将上述四个网络进行了有效的整合和利用。

1)作用

APV-MCTS是AlphaGo下棋所用的框架。

2)基本思想

通过多次模拟未来棋局,选择在模拟中选择次数最多的走法。

3)步骤

APV-MCTS拥有选择,扩展,评估,回传这四个步骤:

  1. 选择:从树的根节点开始进行模拟遍历,每一个时间 t 都要从状态 s 中选择一个动作 a ,直至到达叶子结点。所选的这个行为用来最大化行为函数和额外的回报之和。
  2. 扩展:当一条边的访问次数超过了一个阈值,这条边对应的状态 s’ 才会被加入到搜索树中,以防过多的分枝分散搜索的注意力。
  3. 评估:如果当前节点尚未被评估,就把他加入到一个队列中,等待用价值网络vθ对其进行评估,并得到评估值。与此同时使用快速走子策略网络,从当前叶子节点开始下起,直到游戏结束,获得最终结果。
  4. 回传:沿着路径反传模拟结果。

3.总结

上述内容小编以下方思维导图的形式进行了总结。
AlphaGo浅析_第5张图片
写在最后:

  • 虽然相关知识反复阅读学习了好几回,但是小编对后续部分内容的理解还是不够深刻,所以接下来小编将对不解之处发起冲击,敬请期待。
  • 感谢您的阅读,本文是小编初学AlphaGo知识的一篇学习笔记,如果文中有误,敬请斧正。

你可能感兴趣的:(神经网络,深度学习)