猜你喜欢

深度学习与围棋

书籍作者:[美] 马克斯·帕佩拉 ISBN:9787115551467
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:6791
创建日期:2021-10-07 发布日期:2021-10-07
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介
这是一本深入浅出且极富趣味的深度学习入门书。本书选取深度学**年来最重大的突破之一 AlphaGo,将其背后的技术和原理娓娓道来,并配合一套基于 BetaGo 的开源代码,带领读者从零开始一步步实现自己的“AlphaGo”。本书侧重实践,深入浅出,庖丁解牛般地将深度学习和AlphaGo这样深奥的话题变得平易近人、触手可及,内容非常精彩。
全书共分为3个部分:第一部分介绍机器学习和围棋的基础知识,并构建一个最简围棋机器人,作为后面章节内容的基础;第二部分分层次深入介绍AlphaGo背后的机器学习和深度学习技术,包括树搜索、神经网络、深度学习机器人和强化学习,以及强化学习的几个高级技巧,包括策略梯度、价值评估方法、演员-评价方法 3 类技术;第三部分将前面两部分准备好的知识集成到一起,并最终引导读者实现自己的AlphaGo,以及改进版AlphaGo Zero。读完本书之后,读者会对深度学习这个学科以及AlphaGo的技术细节有非常全面的了解,为进一步深入钻研AI理论、拓展AI应用打下良好基础。
本书不要求读者对AI或围棋有任何了解,只需要了解基本的Python语法以及基础的线性代数和微积分知识。
作者简介
马克斯·帕佩拉(Max Pumperla)供职于Skymind公司,是一位专职研究深度学习的数据科学家和工程师。他是深度学习平台Aetros的联合创始人。
凯文·费格森(Kevin Ferguson)在分布式系统和数据科学领域拥有近20年的工作经验。他是Honor公司的数据科学家,曾就职于谷歌和Meebo等公司。

马克斯·帕佩拉和凯文·费格森都是经验丰富的深度学习专家,拥有丰富的分布式系统和数据科学方面的知识。他们是开源围棋机器人 BetaGo 的共同创造者。
编辑推荐
1.本书是一本人工智能的实践性入门教程,成功地把AlphaGo这个人工智能领域中最激动人心的里程碑之一,转化为一门优秀的入门课程;
2.采用Keras深度学习框架,用Python来实现代码;
3.内容全面,层次划分细致,基本上将AlphaGo背后所有的理论知识都覆盖了;
4.提供配套源代码。

围棋这个古老的策略游戏是AI研究的特别适用的案例。2016年,一个基于深度学习的系统战胜了围棋世界冠军,震惊了整个围棋界。不久之后,这个系统的升级版AlphaGo Zero利用深度强化学习掌握了围棋技艺,轻松击败了其原始版本。读者可以通过阅读本书来学习潜藏在它们背后的深度学习技术,并构建属于自己的围棋机器人!

本书通过教读者构建一个围棋机器人来介绍深度学习技术。随着阅读的深入,读者可以通过Python深度学习库Keras采用更复杂的训练方法和策略。读者可以欣赏自己的机器人掌握围棋技艺,并找出将学到的深度学习技术应用到其他广泛的场景中的方法。

本书主要内容
● 构建一个游戏 AI,并教会它自我改进。
● 用深度学习增强经典游戏 AI 系统。
● 实现深度学习的神经网络。
要阅读本书,读者只需具备基本的Python技巧和高中水平的数学知识,而不需要任何深度学习经验。
目录
目 录
第 一部分 基础知识
第 1章 走近深度学习:机器学习入门 3
1.1 什么是机器学习 4
1.1.1 机器学习与AI的关系 5
1.1.2 机器学习能做什么,不能做什么 6
1.2 机器学习示例 7
1.2.1 在软件应用中使用机器学习 9
1.2.2 监督学习 11
1.2.3 无监督学习 12
1.2.4 强化学习 12
1.3 深度学习 13
1.4 阅读本书能学到什么 14
1.5 小结 15
第 2章 围棋与机器学习 16
2.1 为什么选择游戏 16
2.2 围棋快速入门 17
2.2.1 了解棋盘 17
2.2.2 落子与吃子 18
2.2.3 终盘与胜负计算 19
2.2.4 理解劫争 20
2.2.5 让子 20
2.3 更多学习资源 20
2.4 我们可以教会计算机什么 21
2.4.1 如何开局 21
2.4.2 搜索游戏状态 21
2.4.3 减少需要考虑的动作数量 22
2.4.4 评估游戏状态 22
2.5 如何评估围棋AI的能力 23
2.5.1 传统围棋评级 23
2.5.2 对围棋AI进行基准测试 24
2.6 小结 24
第3章 实现第 一个围棋机器人 25
3.1 在Python中表达围棋游戏 25
3.1.1 实现围棋棋盘 28
3.1.2 在围棋中跟踪相连的棋组:棋链 28
3.1.3 在棋盘上落子和提子 30
3.2 跟踪游戏状态并检查非法动作 32
3.2.1 自吃 33
3.2.2 劫争 34
3.3 终盘 36
3.4 创建自己的第 一个机器人:理论上最弱的围棋AI 37
3.5 使用Zobrist哈希加速棋局 41
3.6 人机对弈 46
3.7 小结 47
第二部分 机器学习和游戏AI
第4章 使用树搜索下棋 51
4.1 游戏分类 52
4.2 利用极小化极大搜索预测对手 53
4.3 井字棋推演:一个极小化极大算法的示例 56
4.4 通过剪枝算法缩减搜索空间 58
4.4.1 通过棋局评估减少搜索深度 60
4.4.2 利用α-β剪枝缩减搜索宽度 63
4.5 使用蒙特卡洛树搜索评估游戏状态 66
4.5.1 在Python中实现蒙特卡洛树搜索 69
4.5.2 如何选择继续探索的分支 72
4.5.3 将蒙特卡洛树搜索应用于围棋 74
4.6 小结 76
第5章 神经网络入门 77
5.1 一个简单的用例:手写数字分类 78
5.1.1 MNIST手写数字数据集 78
5.1.2 MNIST数据的预处理 79
5.2 神经网络基础 85
5.2.1 将对率回归描述为简单的神经网络 85
5.2.2 具有多个输出维度的神经网络 85
5.3 前馈网络 86
5.4 我们的预测有多好?损失函数及优化 89
5.4.1 什么是损失函数 89
5.4.2 均方误差 89
5.4.3 在损失函数中找极小值 90
5.4.4 使用梯度下降法找极小值 91
5.4.5 损失函数的随机梯度下降算法 92
5.4.6 通过网络反向传播梯度 93
5.5 在Python中逐步训练神经网络 95
5.5.1 Python中的神经网络层 96
5.5.2 神经网络中的激活层 97
5.5.3 在Python中实现稠密层 98
5.5.4 Python顺序神经网络 100
5.5.5 将网络集成到手写数字分类应用中 102
5.6 小结 103
第6章 为围棋数据设计神经网络 105
6.1 为神经网络编码围棋棋局 107
6.2 生成树搜索游戏用作网络训练数据 109
6.3 使用Keras深度学习库 112
6.3.1 了解Keras的设计原理 112
6.3.2 安装Keras深度学习库 113
6.3.3 热身运动:在Keras中运行一个熟悉的示例 113
6.3.4 使用Keras中的前馈神经网络进行动作预测 115
6.4 使用卷积网络分析空间 119
6.4.1 卷积的直观解释 119
6.4.2 用Keras构建卷积神经网络 122
6.4.3 用池化层缩减空间 123
6.5 预测围棋动作概率 124
6.5.1 在最后一层使用softmax激活函数 125
6.5.2 分类问题的交叉熵损失函数 126
6.6 使用丢弃和线性整流单元构建更深的网络 127
6.6.1 通过丢弃神经元对网络进行正则化 128
6.6.2 线性整流单元激活函数 129
6.7 构建更强大的围棋动作预测网络 130
6.8 小结 133
第7章 从数据中学习:构建深度学习机器人 134
7.1 导入围棋棋谱 135
7.1.1 SGF文件格式 136
7.1.2 从KGS下载围棋棋谱并复盘 136
7.2 为深度学习准备围棋数据 137
7.2.1 从SGF棋谱中复盘围棋棋局 138
7.2.2 构建围棋数据处理器 139
7.2.3 构建可以高效地加载数据的围棋数据生成器 146
7.2.4 并行围棋数据处理和生成器 147
7.3 基于真实棋局数据训练深度学习模型 148
7.4 构建更逼真的围棋数据编码器 152
7.5 使用自适应梯度进行高效的训练 155
7.5.1 在SGD中采用衰减和动量 155
7.5.2 使用Adagrad优化神经网络 156
7.5.3 使用Adadelta优化自适应梯度 157
7.6 运行自己的实验并评估性能 157
7.6.1 测试架构与超参数的指南 158
7.6.2 评估训练与测试数据的性能指标 159
7.7 小结 160
第8章 实地部署围棋机器人 162
8.1 用深度神经网络创建动作预测代理 163
8.2 为围棋机器人提供Web前端 165
8.3 在云端训练与部署围棋机器人 169
8.4 与其他机器人对话:围棋文本协议 170
8.5 在本地与其他机器人对弈 172
8.5.1 机器人应该何时跳过回合或认输 172
8.5.2 让机器人与其他围棋程序进行对弈 173
8.6 将围棋机器人部署到在线围棋服务器 178
8.7 小结 182
第9章 通过实践学习:强化学习 183
9.1 强化学习周期 184
9.2 经验包括哪些内容 185
9.3 建立一个有学习能力的代理 188
9.3.1 从某个概率分布中进行抽样 189
9.3.2 剪裁概率分布 190
9.3.3 初始化一个代理实例 191
9.3.4 在磁盘上加载并保存代理 191
9.3.5 实现动作选择 193
9.4 自我对弈:计算机程序进行实践训练的方式 194
9.4.1 经验数据的表示 194
9.4.2 模拟棋局 197
9.5 小结 199
第 10章 基于策略梯度的强化学习 200
10.1 如何在随机棋局中识别更佳的决策 201
10.2 使用梯度下降法修改神经网络的策略 204
10.3 使用自我对弈进行训练的几个小技巧 208
10.3.1 评估学习的进展 208
10.3.2 衡量强度的细微差别 209
10.3.3 SGD优化器的微调 210
10.4 小结 213
第 11章 基于价值评估方法的强化学习 214
11.1 使用Q学习进行游戏 214
11.2 在Keras中实现Q学习 218
11.2.1 在Keras中构建双输入网络 218
11.2.2 用Keras实现ε贪婪策略 222
11.2.3 训练一个行动-价值函数 225
11.3 小结 226
第 12章 基于演员-评价方法的强化学习 227
12.1 优势能够告诉我们哪些决策更加重要 227
12.1.1 什么是优势 228
12.1.2 在自我对弈过程中计算优势值 230
12.2 为演员-评价学习设计神经网络 232
12.3 用演员-评价代理下棋 234
12.4 用经验数据训练一个演员-评价代理 235
12.5 小结 240
第三部分 一加一大于二
第 13章 AlphaGo:全部集结 243
13.1 为AlphaGo训练深度神经网络 245
13.1.1 AlphaGo的网络架构 246
13.1.2 AlphaGo棋盘编码器 248
13.1.3 训练AlphaGo风格的策略网络 250
13.2 用策略网络启动自我对弈 252
13.3 从自我对弈数据衍生出一个价值网络 254
13.4 用策略网络和价值网络做出更好的搜索 254
13.4.1 用神经网络改进蒙特卡洛推演 255
13.4.2 用合并价值函数进行树搜索 256
13.4.3 实现AlphaGo的搜索算法 258
13.5 训练自己的AlphaGo可能遇到的实践问题 263
13.6 小结 265
第 14章 AlphaGo Zero:将强化学习集成到树搜索中 266
14.1 为树搜索构建一个神经网络 267
14.2 使用神经网络来指导树搜索 268
14.2.1 沿搜索树下行 271
14.2.2 扩展搜索树 274
14.2.3 选择一个动作 276
14.3 训练 277
14.4 用狄利克雷噪声改进探索 281
14.5 处理超深度神经网络的相关最新技术 282
14.5.1 批量归一化 282
14.5.2 残差网络 283
14.6 探索额外资源 284
14.7 结语 285
14.8 小结 285
附录A 数学基础 286
附录B 反向传播算法 293
附录C 围棋程序与围棋服务器 297
附录D 用AWS来训练和部署围棋程序与围棋服务器 300
附录E 将机器人发布到OGS 307