人工智能
类型
8.7
豆瓣评分
可以朗读
语音朗读
2020-12-01
发行日期
展开全部
主编推荐语
深入浅出的深度学习入门书,从零实现AlphaGo,为AI理论和应用打下基础。
内容简介
这是一本深入浅出且极富趣味的深度学习入门书。本书选取深度学习近年来最重大的突破之一AlphaGo,将其背后的技术和原理娓娓道来,并配合一套基于BetaGo的开源代码,带领读者从零开始一步步实现自己的AlphaGo。本书侧重实践,深入浅出,庖丁解牛般地将深度学习和AlphaGo这样深奥的话题变得非常平易近人、触手可及,内容非常精彩。 全书共分为3个部分:第一部分介绍机器学习和围棋的基础知识,并构建一个最简围棋机器人,作为后面章节内容的基础;第二部分分层次深入介绍AlphaGo背后的机器学习和深度学习技术,包括树搜索、神经网络、深度学习机器人和强化学习,以及强化学习的几个高级技巧,包括策略梯度、价值评估方法、演员-评价方法3类技术;第三部分将前面两部分准备好的知识集成到一起,并最终引导读者实现自己的AlphaGo,以及改进版本AlphaZero。读完本书之后,读者会对深度学习这个学科以及AlphaGo的技术细节有非常全面的了解,为进一步深入钻研AI理论、拓展AI应用打下良好基础。 本书不要求读者对AI或围棋有任何了解,只需要了解基本的Python语法以及基础的线性代数和微积分知识即可。
目录
- 版权信息
- 版 权
- 版权声明
- 内容提要
- 战罢两奁分白黑,一枰何处有亏成(译者序)
- 序
- 前言
- 资源与支持
- 致谢
- 关于本书
- 关于作者
- 第一部分 基础知识
- 第1章 走近深度学习:机器学习入门
- 1.1 什么是机器学习
- 1.1.1 机器学习与AI的关系
- 1.1.2 机器学习能做什么,不能做什么
- 1.2 机器学习示例
- 1.2.1 在软件应用中使用机器学习
- 1.2.2 监督学习
- 1.2.3 无监督学习
- 1.2.4 强化学习
- 1.3 深度学习
- 1.4 阅读本书能学到什么
- 1.5 小结
- 第2章 围棋与机器学习
- 2.1 为什么选择游戏
- 2.2 围棋快速入门
- 2.2.1 了解棋盘
- 2.2.2 落子与吃子
- 2.2.3 终盘与胜负计算
- 2.2.4 理解劫争
- 2.2.5 让子
- 2.3 更多学习资源
- 2.4 我们可以教会计算机什么
- 2.4.1 如何开局
- 2.4.2 搜索游戏状态
- 2.4.3 减少需要考虑的动作数量
- 2.4.4 评估游戏状态
- 2.5 如何评估围棋AI的能力
- 2.5.1 传统围棋评级
- 2.5.2 对围棋AI进行基准测试
- 2.6 小结
- 第3章 实现第一个围棋机器人
- 3.1 在Python中表达围棋游戏
- 3.1.1 实现围棋棋盘
- 3.1.2 在围棋中跟踪相连的棋组:棋链
- 3.1.3 在棋盘上落子和提子
- 3.2 跟踪游戏状态并检查非法动作
- 3.2.1 自吃
- 3.2.2 劫争
- 3.3 终盘
- 3.4 创建自己的第一个机器人:理论上最弱的围棋AI
- 3.5 使用Zobrist哈希加速棋局
- 3.6 人机对弈
- 3.7 小结
- 第二部分 机器学习和游戏AI
- 第4章 使用树搜索下棋
- 4.1 游戏分类
- 4.2 利用极小化极大搜索预测对手
- 4.3 井字棋推演:一个极小化极大算法的示例
- 4.4 通过剪枝算法缩减搜索空间
- 4.4.1 通过棋局评估减少搜索深度
- 4.4.2 利用α-β剪枝缩减搜索宽度
- 4.5 使用蒙特卡洛树搜索评估游戏状态
- 4.5.1 在Python中实现蒙特卡洛树搜索
- 4.5.2 如何选择继续探索的分支
- 4.5.3 将蒙特卡洛树搜索应用于围棋
- 4.6 小结
- 第5章 神经网络入门
- 5.1 一个简单的用例:手写数字分类
- 5.1.1 MNIST手写数字数据集
- 5.1.2 MNIST数据的预处理
- 5.2 神经网络基础
- 5.2.1 将对率回归描述为简单的神经网络
- 5.2.2 具有多个输出维度的神经网络
- 5.3 前馈网络
- 5.4 我们的预测有多好?损失函数及优化
- 5.4.1 什么是损失函数
- 5.4.2 均方误差
- 5.4.3 在损失函数中找极小值
- 5.4.4 使用梯度下降法找极小值
- 5.4.5 损失函数的随机梯度下降算法
- 5.4.6 通过网络反向传播梯度
- 5.5 在Python中逐步训练神经网络
- 5.5.1 Python中的神经网络层
- 5.5.2 神经网络中的激活层
- 5.5.3 在Python中实现稠密层
- 5.5.4 Python顺序神经网络
- 5.5.5 将网络集成到手写数字分类应用中
- 5.6 小结
- 第6章 为围棋数据设计神经网络
- 6.1 为神经网络编码围棋棋局
- 6.2 生成树搜索游戏用作网络训练数据
- 6.3 使用Keras深度学习库
- 6.3.1 了解Keras的设计原理
- 6.3.2 安装Keras深度学习库
- 6.3.3 热身运动:在Keras中运行一个熟悉的示例
- 6.3.4 使用Keras中的前馈神经网络进行动作预测
- 6.4 使用卷积网络分析空间
- 6.4.1 卷积的直观解释
- 6.4.2 用Keras构建卷积神经网络
- 6.4.3 用池化层缩减空间
- 6.5 预测围棋动作概率
- 6.5.1 在最后一层使用softmax激活函数
- 6.5.2 分类问题的交叉熵损失函数
- 6.6 使用丢弃和线性整流单元构建更深的网络
- 6.6.1 通过丢弃神经元对网络进行正则化
- 6.6.2 线性整流单元激活函数
- 6.7 构建更强大的围棋动作预测网络
- 6.8 小结
- 第7章 从数据中学习:构建深度学习机器人
- 7.1 导入围棋棋谱
- 7.1.1 SGF文件格式
- 7.1.2 从KGS下载围棋棋谱并复盘
- 7.2 为深度学习准备围棋数据
- 7.2.1 从SGF棋谱中复盘围棋棋局
- 7.2.2 构建围棋数据处理器
- 7.2.3 构建可以高效地加载数据的围棋数据生成器
- 7.2.4 并行围棋数据处理和生成器
- 7.3 基于真实棋局数据训练深度学习模型
- 7.4 构建更逼真的围棋数据编码器
- 7.5 使用自适应梯度进行高效的训练
- 7.5.1 在SGD中采用衰减和动量
- 7.5.2 使用Adagrad优化神经网络
- 7.5.3 使用Adadelta优化自适应梯度
- 7.6 运行自己的实验并评估性能
- 7.6.1 测试架构与超参数的指南
- 7.6.2 评估训练与测试数据的性能指标
- 7.7 小结
- 第8章 实地部署围棋机器人
- 8.1 用深度神经网络创建动作预测代理
- 8.2 为围棋机器人提供Web前端
- 端到端围棋机器人示例
- 8.3 在云端训练与部署围棋机器人
- 8.4 与其他机器人对话:围棋文本协议
- 8.5 在本地与其他机器人对弈
- 8.5.1 机器人应该何时跳过回合或认输
- 8.5.2 让机器人与其他围棋程序进行对弈
- 8.6 将围棋机器人部署到在线围棋服务器
- 在OGS上注册一个机器人
- 8.7 小结
- 第9章 通过实践学习:强化学习
- 9.1 强化学习周期
- 9.2 经验包括哪些内容
- 9.3 建立一个有学习能力的代理
- 9.3.1 从某个概率分布中进行抽样
- 9.3.2 剪裁概率分布
- 9.3.3 初始化一个代理实例
- 9.3.4 在磁盘上加载并保存代理
- 9.3.5 实现动作选择
- 9.4 自我对弈:计算机程序进行实践训练的方式
- 9.4.1 经验数据的表示
- 9.4.2 模拟棋局
- 9.5 小结
- 第10章 基于策略梯度的强化学习
- 10.1 如何在随机棋局中识别更佳的决策
- 10.2 使用梯度下降法修改神经网络的策略
- 10.3 使用自我对弈进行训练的几个小技巧
- 10.3.1 评估学习的进展
- 10.3.2 衡量强度的细微差别
- 10.3.3 SGD优化器的微调
- 10.4 小结
- 第11章 基于价值评估方法的强化学习
- 11.1 使用Q学习进行游戏
- 11.2 在Keras中实现Q学习
- 11.2.1 在Keras中构建双输入网络
- 11.2.2 用Keras实现ε贪婪策略
- 11.2.3 训练一个行动-价值函数
- 11.3 小结
- 第12章 基于演员-评价方法的强化学习
- 12.1 优势能够告诉我们哪些决策更加重要
- 12.1.1 什么是优势
- 12.1.2 在自我对弈过程中计算优势值
- 12.2 为演员-评价学习设计神经网络
- 12.3 用演员-评价代理下棋
- 12.4 用经验数据训练一个演员-评价代理
- 12.5 小结
- 第三部分 一加一大于二
- 第13章 AlphaGo:全部集结
- 13.1 为AlphaGo训练深度神经网络
- 13.1.1 AlphaGo的网络架构
- 13.1.2 AlphaGo棋盘编码器
- 13.1.3 训练AlphaGo风格的策略网络
- 13.2 用策略网络启动自我对弈
- 13.3 从自我对弈数据衍生出一个价值网络
- 13.4 用策略网络和价值网络做出更好的搜索
- 13.4.1 用神经网络改进蒙特卡洛推演
- 13.4.2 用合并价值函数进行树搜索
- 13.4.3 实现AlphaGo的搜索算法
- 13.5 训练自己的AlphaGo可能遇到的实践问题
- 13.6 小结
- 第14章 AlphaGo Zero:将强化学习集成到树搜索中
- 14.1 为树搜索构建一个神经网络
- 14.2 使用神经网络来指导树搜索
- 14.2.1 沿搜索树下行
- 14.2.2 扩展搜索树
- 14.2.3 选择一个动作
- 14.3 训练
- 14.4 用狄利克雷噪声改进探索
- 14.5 处理超深度神经网络的相关最新技术
- 14.5.1 批量归一化
- 14.5.2 残差网络
- 14.6 探索额外资源
- 14.7 结语
- 14.8 小结
- 附录A 数学基础
- A.1 向量、矩阵和其他:线性代数介绍
- A.1.1 向量:一维数据
- A.1.2 矩阵:二维数据
- A.1.3 三阶张量
- A.1.4 四阶张量
- A.2 五分钟了解微积分:导数和寻找极大值
- 附录B 反向传播算法
- B.1 几个符号记法
- B.2 前馈网络的反向传播算法
- B.3 顺序神经网络的反向传播
- B.4 通用神经网络的反向传播
- B.5 反向传播的计算挑战
- 附录C 围棋程序与围棋服务器
- C.1 围棋程序
- C.1.1 GNU Go
- C.1.2 Pachi
- C.2 围棋服务器
- C.2.1 OGS
- C.2.2 IGS
- C.2.3 Tygem
- 附录D 用AWS来训练和部署围棋程序与围棋服务器
- D.1 在AWS上进行模型训练
- D.2 在AWS上用HTTP托管一个机器人
- 附录E 将机器人发布到OGS
- E.1 在OGS上注册机器人并激活它
- E.2 在本地测试OGS机器人
- E.3 将OGS机器人部署到AWS上
展开全部
出版方
人民邮电出版社
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。