读《神经网络与深度学习》一书,随笔。

1 IBM深蓝下象棋

深蓝打败卡斯帕罗夫用的是蛮力和一些启发式算法。其原理是:用评估函数评估当前棋盘的局势 + 在大量可能局势中挑最有利的。评估函数采用了8000多个因素来计算,需要非常专业的国际象棋知识。用博弈树搜索后面的6步,然后用评估函数在第6层上评估节点的质量,用评估函数的值替换了这个节点下的所有子树的概述,用极大极小算法找到下一步动作。

围棋难在:

(1)落子点太多,使得博弈树搜索到足够深度更困难;

(2)评估函数太难设计。

2 AlphaGo下围棋

AlphaGo的主要原理包括三个重要部分:

(1)估值网络(Value Network,也叫价值网络):用于估计棋局的局势,在当前棋局状态下,每个落子位置导致整个棋局“最后”的胜率。相当于深蓝的评估函数,不同点是自己学习的而不是领域专家精心设计出来的,并且估计的是最终胜率而不是短期的攻城略地。

(2)走棋策略网络(Policy Network):在某一个棋局的状态下,计算各个可能落子位置的概率,并选择下一步最佳的走法。

(3)蒙特卡洛树搜索(MCTS,Monte Carlo Tree Search)

上述每个部分具体是什么?又是怎么训练的呢?

2.1 策略网络

是一个13层的CNN网络,卷积核大小采用5 x 5。

训练数据集:围棋游戏中获取的对局样本,3000万人类对弈的位置信息拆解为训练集。

训练目标:在每一种棋局状态下,人类棋手的下一步落子是什么,对于算法来说就是看每种图形的下一种图形是什么。所以策略网是用来计算对手如何落子的。

结果:用这个数据集直接生硬的训练,精度能有57%,这表明大量人下棋总是凭直觉。只有策略网络的AlphaGo(起个别名P_human)下不过业余6段的人类棋手。

优化:此时的训练数据仍然不够,因此采用强化学习进一步AlphaGo的棋力。

2.2 估值网络

也是一个CNN网络。估值网络是AlphaGo的一大创新。

训练:通过两台AlphaGo对弈的方式来训练。人类完成一局对弈一般数小时,AlphaGo之间对弈1秒钟内能完成数局,这种方式可以快速地累积出正确的评价样本。

因此估值网络并不是通过这个世界上已知的棋谱作为训练的,因为人类对弈会受到主观因素的影响。AlphaGo在对战欧洲棋王时,使用的训练组样本只有3000万个棋谱位置,但是在对战李世石时,棋谱位置已经增加到了1亿个。所以,先前提到的机器下围棋的最大困难点:评价机制的部分,就是这样通过卷积神经网络来解决的。

综上所述,策略网络是分类问题,考虑的是对方会下在哪,估值网络是评估问题,考虑的是我下在这的胜率是多少。

2.3 MCTS搜索

MCTS是当时另外一个非常强的AI棋手CrazyStone中用到的算法,是由Coulum设计的(黄士杰的老师),他最初对围棋一无所知。用MCTS搜索替代了博弈树搜索才拯救了围棋算法。MCTS通过模拟大量的棋局,使得最靠谱的落子方法自己涌现出来,而不是暴力的搜索博弈树中的每一种可能的落子方案。

训练:模拟两个人下棋,起初,用掷骰子的方法决定子落在哪里。如果赢了,一些落子方案的分值就增加。然后继续开始下一盘棋,之前被保存下来的落子方案会引导下一步模拟选择行为,模拟因此越来越不随机。随着想象中的棋局下得越来越多,那些看起来不错的落子方案的分数就会越来越高,而落子方案越是有前途,越会被更多地选中进行推演,于是最有“前途”的落子方法就会“涌现”出来。最后,AlphaGo在想象中下完10万盘棋后,选择它推演中分数最高的那个方案落子,这时,AlphaGo才真正下了当前的一步棋。

优势:MCTS搜索的特点是没有任何人工的特征,完全依靠规则本身,通过不断想象自对弈来提高能力。除此之外,MCTS完全不用等对手落子后才开始计算,在对手思考过程中它就已经在计算了,因为对手的落子完全可能出现在之前想象的对弈中,所以所有的计算都不会浪费。

优化:黄士杰意识到他老师的程序起点太低,需要一个方法替代扔骰子。所以用之前训练好的P_human来代替扔骰子。在这一步还可以加一些由围棋专家设计的手工规则,用来排除一些不好的走法。

2.4 AlphaGo整体训练过程

(1)利用3000万专业棋手棋谱训练两个网络:基于全局特征和CNN训练的走棋策略网;基于局部特征和线性模型训练的快速走棋策略,后面在线对弈时用;

(2)利用第 t 轮的策略网络与先前训练好的策略网络互相对弈,利用强化学习修正第 t 轮的策略网络参数,得到一个增强的策略网络;

(3)利用普通策略网络生成棋局的前 U-1 步,然后利用随机采样决定第 U 步的位置(为了防止过拟合),随后,利用增强的策略网络完成后面的自我对弈过程。第 U 步的盘面作为特征输入,胜负作为label,学习一个估值网络。

2.5 AlphaGo在线对弈过程

核心思想是在MCTS中嵌入深度神经网络来减少搜索空间。

(1)根据当前盘面已经落子情况提取相应特征。

(2)利用策略网络估计出棋盘其他空地的落子概率。

(3)根据落子概率计算此处往下发展的权重。利用估值网络和快速走棋策略网络分别判断局势,两个局势得分相加为此处最后走棋获胜的得分。使用快速走棋策略快速行棋至最后,每次行棋结束后会有一个输赢结果,综合统计这个节点对应的胜率。而估值网络只根据当前状态便可直接评估出最后的结果。两者各有优缺点,可以互补。

(4)利用第3步计算的得分更新之前那个走棋位置的权重。然后,从权重最大的那条边开始继续搜索和更新。

Deep Learning学习笔记(5)——AlphaGo相关推荐

  1. 笔记 | 吴恩达Coursera Deep Learning学习笔记

    向AI转型的程序员都关注了这个号☝☝☝ 作者:Lisa Song 微软总部云智能高级数据科学家,现居西雅图.具有多年机器学习和深度学习的应用经验,熟悉各种业务场景下机器学习和人工智能产品的需求分析.架 ...

  2. 网上某位牛人的deep learning学习笔记汇总

    目录(?)[-] 作者tornadomeet 出处httpwwwcnblogscomtornadomeet 欢迎转载或分享但请务必声明文章出处 Deep learning一基础知识_1 Deep le ...

  3. CV视觉论文Deep learning学习笔记(一)

    论文介绍和监督学习(introduction of paper and supervision of learning) 1. 论文介绍和作者介绍 作者:论文作者是2018年图灵奖得主yoshua B ...

  4. 【Deep Learning学习笔记】Deep learning for nlp without magic_Bengio_ppt_acl2012

    看完180多页的ppt,真心不容易.记得流水账如下: Five reason to explore Deep Learning: 1. learning representation; 2. the ...

  5. 【deep learning学习笔记】注释yusugomori的LR代码 --- LogisticRegression.cpp

    模型实现代码,关键是train函数和predict函数,都很容易. #include <iostream> #include <string> #include <mat ...

  6. Deep Learning论文笔记之(一)K-means特征学习

    Deep Learning论文笔记之(一)K-means特征学习 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文,但老感 ...

  7. Deep Learning论文笔记之(八)Deep Learning最新综述

    Deep Learning论文笔记之(八)Deep Learning最新综述 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感觉看完 ...

  8. Deep Learning论文笔记之(七)深度网络高层特征可视化

    Deep Learning论文笔记之(七)深度网络高层特征可视化 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文,但老感 ...

  9. Deep Learning论文笔记之(六)Multi-Stage多级架构分析

    Deep Learning论文笔记之(六)Multi-Stage多级架构分析 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些 ...

  10. Deep Learning论文笔记之(五)CNN卷积神经网络代码理解

    Deep Learning论文笔记之(五)CNN卷积神经网络代码理解 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文,但 ...

最新文章

  1. vue颜色选择器_如何制作? Vue的颜色选择器!
  2. 利用边缘灰度变化建模,来提高圆环直径求取精度
  3. 国产统一操作系统UOS使用体验
  4. MySQL高级in和not in
  5. C++中友元函数,友元类数详解
  6. 001机器学习深度学习简介
  7. 程序员最爱用 Emacs 写 Python、Bash,调研了 7300 位开发者有这些发现
  8. day25 面向对象继承 多态
  9. Vue项目用webpack打包后,预览时资源路径出错(文末有vue项目链接分享)
  10. 光电经典好书:《光电系统设计基础》-吴晗平
  11. 合并报表excel自动模板_自动合并
  12. 一文带你完全掌握机器人DH参数建模(详细步骤+实例+代码)
  13. Properties 类的详细使用(十三)
  14. property java_java-必须为元素类型“ property”声明属性“...
  15. Java学习分享---【面向对象基础】抽象
  16. Reason: Canonical names should be kebab-case (‘-‘ separated), lowercase alpha-numeric characters and
  17. 米世金《货币经济学》思维导图 附自制PPT
  18. DDR 内存与 PCB 设计挑战
  19. javaweb简单的外卖平台系统(一)
  20. HTTP就绪状态和HTTP状态码

热门文章

  1. 2019-11-29-win10-uwp-如何开始写-uwp-程序
  2. 在mac上使用vscode创建第一个Python项目
  3. 自己对ajax的第一次上手被人说菜死还真是菜
  4. HTML5定稿,为什么是原生App的颠覆
  5. 投影仪与电视的C位之争,电视会成为下一个被淘汰的电器吗?
  6. jhin 不在 sudoers 文件中。此事将被报告。
  7. Python之You-Get库学习
  8. python如何调整word表格宽度_python-docx编辑word表格
  9. linux乌班图图形化设置ip,在Ubuntu 18.04 Desktop图形中配置静态和动态IP地址的方法...
  10. 川土微 数字隔离器CA-IS306X集成隔离电源的隔离式CAN收发器