AlphaGo小白的人工智能之路ppt课件.pptx
小白的人工智能之路,AlphaGo & AlphaGo Zero,在接下来的一个小时中,你将会,认识“谁”是可爱的 AlphaGo 还有它的兄弟 AlphaGo Zero探知 AlphaGo 和 AlphaGo Zero的实现原理 深度神经网络蒙特卡洛树搜索有监督学习做自己的井字棋 AI /人机对弈程序 易于实现的极大极小树算法,AlphaGo Human or AI?,AlphaGo 战绩,2016年1月27日 AlphaGo 以 5:0 完胜欧洲围棋冠军樊麾2016年3月9日到15日 挑战世界围棋冠军李世石的AlphaGo 以 4:1 取得胜利2017年5月23日到27日 乌镇围棋峰会, AlphaGo 以 3:0 战胜世界围棋冠军柯洁,AlphaGo 家族AlphaGo AlphaGo Zero Alpha Zero,AlphaGo:于2014年开始由Google DeepMind开发的人工智能围棋软件。它以人类围棋高手的棋谱作为参考数据。AlphaGo Zero: AlphaGo的团队于2017年10月19日在自然杂志上发表了一篇文章,介绍了AlphaGo Zero,这是一个没有用到人类数据的版本(围棋棋盘大小与规则除外),比以前任何击败人类的版本都要强大。通过跟自己对战,AlphaGo Zero经过3天的学习,以100:0的成绩超越了AlphaGo Lee的实力,21天后达到了AlphaGo Master的水平,并在40天内超过了所有之前的版本。 Alpha Zero:AlphaZero使用与AlphaGo Zero类似但更一般性的算法,在不做太多改变的前提下,并将算法从围棋延伸到将棋与国际象棋上。,AlphaGo 家族有多可怕?!,训练第 0 天的 AlphaGo Zero 什么都不懂,训练第 3 天打败 AlphaGo Lee,训练第 21 天打败 AlphaGo Master,训练第 40天超越了此前AlphaGo 系列的所有成员。,AlphaGo 家族有多可怕?!,AlphaZero在短时间训练后能达到其他算法的同等或更高水平,AlphaGo 走下神坛,AlphaGo 的胜利意味着AI技术有了突破性的进展?AlphaGo 的胜利意味着机器打败人脑?答案是否定的。其实,AlphaGo在算法层面上并没有太多新意,而是通过 Google 强大的团队和计算平台,把已有的技术整合在一起,利用大量的训练数据和计算资源来提高准确性。AlphaGo = 蒙特卡洛树搜索算法(MCTS) + 深度神经网络,博弈树,把游戏看作一棵树每个结点是一种游戏状态。,常见对弈游戏的状态复杂度对比,围棋的状态复杂度为10170,那么10的170次方意味着什么呢?,这个规模十分可怕!,由于不能将所有状态都遍历一次,于是AlphaGo使用“蒙特卡罗树搜索”算法(MCTS),先从蒙特卡罗方法开始: 假设我们要计算一个不规则图形的面积。蒙特卡罗方法基于这样的思想:假想你有一袋豆子,把豆子均匀地朝这个图形上撒,然后数这个图形之中有多少颗豆子,这个豆子的数目就是图形的面积。当你的豆子越小,撒的越多的时候,结果就越精确。,AlphaGo 什么是蒙特卡罗树搜索(MCTS)?,图:计算机蒙特卡罗方法模拟借助计算机程序可以生成大量随机的、均匀分布坐标点,统计出图形内的点数,通过它们占总点数的比例和坐标点生成范围的面积就可以求出图形面积。,AlphaGo 什么是蒙特卡罗树搜索(MCTS)?,如何让计算机“看懂棋局”: AlphaGo中一个游戏状态的大小是19*19*17。不仅要考虑当前棋盘状态,还要考虑前几次下棋的位置。其中19*19是围棋棋盘的大小, 17=8+8+1: 1、过去8步的黑棋位置 2、过去8步的白棋位置 3、当前走棋方(黑棋/白棋),AlphaGo 什么是蒙特卡罗树搜索(MCTS)?,蒙特卡罗树的一个结点:对应一个游戏盘面树节点的子结点:从该状态出发可以产生的后续状态父结点到子结点的边:落子动作每个结点还具有信息 N 和 W:N = 结点(动作)被选择的次数W = 所有子结点的价值总和价值:获胜的期望值, -1为负, 0为平, 1为胜。,图:一棵蒙特卡罗树,AlphaGo 什么是蒙特卡罗树搜索(MCTS)?,蒙特卡罗树搜索的一次迭代包括四个阶段 :选择、扩展、模拟、反向传播(回溯),蒙特卡罗树搜索的一次迭代,选择(Selection):从当前结点的子结点的中选择U值最大的一个。 U = f(N,W) 扩展(Expansion):扩展结点,列出所有可能的动作及其游戏状态。,模拟(Simulation):对于一个节点,多次随机模拟博弈直到决出胜负。用频率代替概率,估算这个子节点的价值 W。胜: W := W + 1平: W := W + 0 负: W := W - 1,蒙特卡罗树搜索的一次迭代,蒙特卡罗树搜索的一次迭代,进行多次模拟后,可以近似认为W/N就是获胜的期望值。,反向传播(Backpropagation): 回溯更新父节点到子节点的路径上所有结点的(N, W)值。,蒙特卡罗树搜索的一次迭代,AlphaGo等算法中,不同于传统MCTS方法的随机模拟博弈,W/N的值由深度神经网络(后述)估算。选择子结点时,除了N, W以外还需要考虑落子概率P。AlphaGo中使用人类专业棋手的棋谱数据训练深度神经网络,落子更接近于人的思维。而AlphaGo Zero和Alpha Zero算法中,在进行多次MCTS迭代后,以(子结点N/父结点N)估算落子概率,再以此训练深度神经网络。,AlphaGo等算法中MCTS的创新,注: 图中Q=W/N, U正相关于P/(N+1)(不同于前述传统MCTS的U),深度神经网络可以用函数f(s)表示, s表示当前游戏状态。函数f(s)有两个输出: P(落子概率)和W(价值),按下图的方式应用到MCTS的计算中。根据N, W, P的值,进一步选择子结点并迭代。最初使用传统MCTS随机模拟的估算结果来训练深度神经网络。迭代的次数足够后,用深度神经网络的输出代替随机模拟。用深度神经网络预测落子概率和价值的方法比传统MCTS的随机模拟速度更快,效果更好。,AlphaGo,AlphaGo = 深度神经网络 + 蒙特卡罗树搜索算法 | 估值网络 + 走棋网络,使得电脑像人类的大脑一样自发学习,使得电脑可以结合树状图进行长远推断,AlphaGo 什么是深度神经网络?,图:一个三层结构的简单神经网络神经网络三要素:输入层隐藏层输出层,走棋网络(Policy Network)的输出是19*19+1维向量,表示在19*19的棋盘上每个位置落子的概率,以及当前走棋方(黑棋/白棋)。估值网络(Value Network)的输出是范围在-1, 1的标量。,AlphaGo的估值网络和走棋网络是独立的,并且没有用到残差层。AlphaGo Zero、Alpha Zero的估值网络与走棋网络共享前面的网络层。,AlphaGo等算法的强化学习流程(Reinforcement Learning),(1)自对弈(Self-Play)当前网络自对弈25000局,保存每一步的游戏状态、MCTS中的结点概率以及最终的获胜者。,AlphaGo等算法的强化学习流程(Reinforcement Learning),(2)训练(Retrain Network) 从500000局游戏中抽取2048个样本。 样本包括上述的游戏状态、MCTS的结点概率以及最终获胜者。 将游戏状态作为深度神经网络的输入。 然后将预测输出与实际结果对比,得到损失函数的值。最后,反向传播调整深度神经网络中的参数。,AlphaGo等算法的强化学习流程(Reinforcement Learning),(3)评价网络(Evaluate Network) 调整后的网络与原网络对弈400局。若调整后的网络能赢下至少55%的对局,则接受调整后的网络,并替代原网络。,实战环节:做自己的井字棋 AI /人机对弈程序,1919 的围棋 AlphaGo 能 hold 住,哈哈,我的电脑可不行!一口吃不成胖子,谁叫我们是人工智能小白呢!不如来看看轻量级的人工智能应用井字棋人机对弈,实战:自己动手做井字棋 AI /人机对弈程序,1、安装 python3python3-V2、安装pygame模块python3-mpipinstall-i https:/,实战:自己动手做井字棋 AI /人机对弈程序,3、分析极大极小树算法的实现函数,实战:自己动手做井字棋 AI /人机对弈程序,4、将文件“ticky.py” 放进 D 盘根目录 在 cmd 中输入 D: 回车; python3 ticky.py,回车;,程序效果,实战:自己动手做井字棋 AI /人机对弈程序,5、点击绿色按键“vs AI”; 点击蓝色框内的棋盘; 重新开始请再次点击“vs AI”。,THANKS,