市场调研报告模板ppt,广东网站优化公司,下载类wordpress主题,软件开发流程八个步骤模板AlphaGo Zero无需任何人类历史棋谱#xff0c;仅使用深度强化学习#xff0c;从零开始训练三天的成就已远远超过了人类数千年积累的围棋知识。
1、围棋知识
#xff08;1#xff09;如何简单理解围棋知识
#xff08;2#xff09;数子法分胜负#xff1a;https://zhu…AlphaGo Zero无需任何人类历史棋谱仅使用深度强化学习从零开始训练三天的成就已远远超过了人类数千年积累的围棋知识。
1、围棋知识
1如何简单理解围棋知识
2数子法分胜负https://zhuanlan.zhihu.com/p/37673325
3如何数目分胜负https://www.zhihu.com/question/284822816/answer/2897667581
43分钟围棋入门视频总共近2小时b站
2、强化学习
强化学习Reinforcement Learning是机器学习里面一个分支。如果说强化学习在AlphaGo之前版本里面还是初试牛刀的话那在AlphaGo zero里面强就真正大显神威。根据deepmind的论文新版本AlphaGo Zero经过三天的训练轻易达到对老版本的100:0的胜率并且完全无需人类棋谱。可以说AlphaGo Zero仅仅三天的成就就远远超过了人类数千年的围棋探索。
强化学习和传统机器学习的区别有如下几点
传统机器学习假设算法本身对于环境无影响强化学习破除了这个限制能够考虑到了算法对于环境的影响, 这使得强化学习特别适合解决多回合博弈或者顺序决策问题。在传统机器学习中如果你预测完了之后你根据据测去做多或着做空这个股票那么其他的股票买家可能因为你的行为改变了自身行为你原来的训练的模型便会失效而强化学习可以考虑到这点。在强化学习中数据是在运行过程中自主收集。AlphaGo Zero之所以能够完全摒弃人类知识就是因为所有的数据都是通过机器互博生成。
用强化学习解决问题我们需要首先把要解决的问题转化成为一个环境environment。环境需要如下的要素
状态空间state space对于围棋来说每一个棋盘布局记为s就是一个状态。所有可能的棋盘布局就是状态空间。动作空间 action space对于围棋来说所有可能落子的位置就是一个动作空间可行动作 allowable action 在给定状态下什么动作是可行什么是不可以的。在围棋里就是给定一个棋盘哪里可以落子哪里不可以。状态转化你落子之后对手可能会下的子。如果是两台alpha zero互搏的话相互是对方环境的一个部分。奖励函数你落子之后得到的信号。在围棋里面就是胜率的一个正函数。胜率越大奖赏越大。
在强化学习里面知识可以通过一个称为状态动作值函数state-action value function) 的结构的存储。通常大家用符号Q(s,a)来表示这个函数这就是所谓Q-learning的来历。简而言之Q(s,a)是对于状态s采取动作a的期望奖励(expected reward)。
强化学习知识理论https://zhuanlan.zhihu.com/p/25319023
3、AlphaZero实战
AlphaZero实战从零学下五子棋附代码https://zhuanlan.zhihu.com/p/32089487
3.1 模型训练
本节参考https://zhuanlan.zhihu.com/p/30339643 训练步骤如下
1构造MCTSPlayer self_play一些轮次后批量进行收集构造批次训练数据包括当前状态可能的行动概率胜率其中winners_z为1或者-1如下
zip(states, mcts_probs, winners_z)
2利用self_play数据训练策略价值网络。
2构造MCTSPlayer和MCTS_Pure每个子节点的概率都一样两个玩家对战n_games次返回胜率。
3若胜率为最佳则保存当前模型。
4重复以上步骤game_batch_num次。
注意这里MCTS是AlphaZero能够通过self_play不断变强的最重要的原因相当于用能力不这么强的模型尝试多次后取更有可能胜利的判断。刚开始模型准确率基本为0但让其仿真模拟N次后知道哪些落子路径有一定的胜率。将这些路径作为训练数据训练模型后模型有一定准确率MCTS仿真N次后得到更佳的路径最终不断变强。 3.2 实际对战
整体步骤如下
1构造Human和MCTSPlayer两个玩家进入start_play方法的while循环中
2交替出子
3若判断有人胜出则结束。
1、MCTSPlayer计算出子流程Play 1利用MCTS策略模拟执行500次获取子节点访问次数。注意本代码中_n_playout为500每一个playout中敌我双方走了N步不超过当前树的最大深度直到产生了新的路径节点才结束本次仿真。
2所有仿真结束后根据父节点下所有一级子节点的访问次数构造概率获得下一步落子位置。 这里面T为温度参数T越大表示温度越高落子位置越随机否则位置越确定代码中temp参数为0.01。公式实验如下
visits [2,10, 8, 4, 1]
softmax(1.0/0.001*np.log(np.array(visits))) array([0.00000000e00, 1.00000000e00, 1.23023192e-97, 0.00000000e00, 0.00000000e00]) softmax(1.0/0.01*np.log(np.array(visits))) array([1.26765060e-070, 1.00000000e000, 2.03703598e-010, 1.60693804e-040, 1.00000000e-100]) softmax(1.0/0.1*np.log(np.array(visits))) array([9.24622380e-08, 9.02951542e-01, 9.69536836e-02, 9.46813317e-05, 9.02951542e-11]) softmax(1.0/1*np.log(np.array(visits))) array([0.08, 0.4 , 0.32, 0.16, 0.04])
可以看出当temp为1时概率就比较均匀了。否则为0.001时虽然10和8差距小但概率都集中到了10这个为止。 最后说下最终落子的采样逻辑按概率随机选择一个 random.choice说明如下
If an ndarray, a random sample is generated from its elements.aa_milne_arr [pooh, rabbit, piglet, Christopher]np.random.choice(aa_milne_arr, 5, p[0.5, 0.1, 0.1, 0.3])
array([pooh, pooh, pooh, Christopher, piglet], # randomdtypeU11) 2、MCTS推演落子规则-(Select)
在每一个节点sAlphaGo Zero会根据如下的公式来选择下一次落子位置 其中Q(s, a)是对于状态动值函数的估计值。U(s,a)是一个confidence interval 的upbound。决定探索exploration的程度。
代码实现如下 从代码中可以看出U由P、当前节点访问次数、父节点访问次数组成当前节点访问次数越低值越高结合c_puct代码中为5赋予探索权重。
2、MCTS推演落子规则-(Expand and Evaluate) 1当棋局没有结束且仿真到叶子节点时select参考上述步骤则需要Expand操作添加新的行为策略节点并将本次仿真后的胜率更新到Q值继续下一次仿真。 3、MCTS更新Q值-(Backup)
1更新节点和父节点Q值
一次仿真结束后调用_policy进行策略和胜率评估这里的胜率是node节点对手的胜率因此当前节点的Q值更新是-leaf_value。另外由于是交替进行父节点是leaf_value。 这里leaf_value是最终盘面的胜率相当于最终的奖励。用于更新Q根据访问次数平均权重 4、alphago和alphazero对比
4.1 AlphaGo 和 AlphaZero 的区别
本段参考https://zhuanlan.zhihu.com/p/634880256 1 Policy network 和 Value network 的神经网络 前几层参数是共享的
2一开始没有 Supervised Learning of Policy Network (SL policy network) 的环节也就是说完全没有加入任何人类先验知识在里边直接暴力上强化学习。
。这一点 AlphaZero 就是完全颠覆了人类传统棋理可见 AlphaZero 在没有人类先验知识的情况下不仅仅可以学习到人类的走棋模式也可以创造出自己的走棋模式而且这种走棋模式还更加合理。
其他较好文章https://zhuanlan.zhihu.com/p/30339643
minigo解读https://zhuanlan.zhihu.com/p/352536850
minigo实现https://github.com/tensorflow/minigo
5、问题 1大模型中若使用MCTS那么策略和价值如何定义
在数学题中可以分解子问题作为action