(1)4位作者在大数据和人工智能领域有多年积累,经验丰富; (2)从Python和数学基础,到机器学习和TensorFlow理论,再到深度学习的应用和扩展,为深度学习提供全栈式内容解决方案; (3)包含大量实战案例和综合性项目案例; (4)图形化的表达方式,降低读者学习门槛。
本书共22章,分为三个部分。部分(第1~5章)为Python及应用数学基础部分,介绍Python和TensorFlow的基石Numpy,深度学习框架的鼻祖Theano,以及机器学习、深度学习算法应用数学基础等内容。第二部分(第6~20章)为深度学习理论与应用部分,介绍机器学习的经典理论和算法,深度学习理论及方法,TensorFlow基于CPU、GPU版本的安装及使用、TensorFlow基础、TensorFlow的一些新API,深度学习中神经网络方面的模型及TensorFlow实战案例,TensorFlow的高级封装,TensorFlow综合实战案例等内容。第三部分(第21~22章)为扩展部分,介绍强化学习、生成式对抗网络等内容。
吴茂贵, BI和大数据专家,就职于中国外汇交易中心,在BI、数据挖掘与分析、数据仓库、机器学习等领域有超过20年的工作经验,在Spark机器学习、TensorFlow深度学习领域大量的实践经验。 王冬, 任职于博世(中国)投资有限公司,负责Bosch企业BI及工业4.0相关大数据和数据挖掘项目。对机器学习、人工智能有多年实践经验。 李涛, 参与过多个人工智能项目,如研究开发服务机器人、无人售后店等项目。熟悉python、caffe、TensorFlow等,对深度学习、尤其对计算机视觉方面有较深理解。 杨本法, 高级算法工程师,在机器学习、文本挖掘、可视化等领域有多年实践经验。熟悉Hadoop、Spark生态圈的相关技术,对Python有丰富的实战经验。
前言 第一部分 Python及应用数学基础 第1章 NumPy常用操作 2 1.1 生成ndarray的几种方式 3 1.2 存取元素 5 1.3 矩阵操作 6 1.4 数据合并与展平 7 1.5 通用函数 9 1.6 广播机制 11 1.7 小结 12 第2章 Theano基础 13 2.1 安装 14 2.2 符号变量 15 2.3 符号计算图模型 17 2.4 函数 18 2.5 条件与循环 21 2.6 共享变量 23 2.7 小结 24 第3章 线性代数 25 3.1 标量、向量、矩阵和张量 25 3.2 矩阵和向量运算 28 3.3 特殊矩阵与向量 29 3.4 线性相关性及向量空间 31 3.5 范数 32 3.6 特征值分解 33 3.7 奇异值分解 34 3.8 迹运算 35 3.9 实例:用Python实现主成分分析 36 3.10 小结 39 第4章 概率与信息论 40 4.1 为何要学概率、信息论 40 4.2 样本空间与随机变量 41 4.3 概率分布 42 4.3.1 离散型随机变量 42 4.3.2 连续型随机变量 45 4.4 边缘概率 47 4.5 条件概率 47 4.6 条件概率的链式法则 48 4.7 独立性及条件独立性 48 4.8 期望、方差及协方差 49 4.9 贝叶斯定理 52 4.10 信息论 53 4.11 小结 56 第5章 概率图模型 57 5.1 为何要引入概率图 57 5.2 使用图描述模型结构 58 5.3 贝叶斯网络 59 5.3.1 隐马尔可夫模型简介 60 5.3.2 隐马尔可夫模型三要素 60 5.3.3 隐马尔可夫模型三个基本问题 61 5.3.4 隐马尔可夫模型简单实例 62 5.4 马尔可夫网络 64 5.4.1 马尔可夫随机场 64 5.4.2 条件随机场 65 5.4.3 实例:用Tensorflow实现条件随机场 66 5.5 小结 70 第二部分 深度学习理论与应用 第6章 机器学习基础 72 6.1 监督学习 72 6.1.1 线性模型 73 6.1.2 SVM 77 6.1.3 贝叶斯分类器 79 6.1.4 集成学习 81 6.2 无监督学习 84 6.2.1 主成分分析 84 6.2.2 k-means聚类 84 6.3 梯度下降与优化 85 6.3.1 梯度下降简介 86 6.3.2 梯度下降与数据集大小 87 6.3.3 传统梯度优化的不足 89 6.3.4 动量算法 90 6.3.5 自适应算法 92 6.3.6 有约束最优化 95 6.4 前馈神经网络 96 6.4.1 神经元结构 97 6.4.2 感知机的局限 98 6.4.3 多层神经网络 99 6.4.4 实例:用TensorFlow实现XOR 101 6.4.5 反向传播算法 103 6.5 实例:用Keras构建深度学习架构 109 6.6 小结 109 第7章 深度学习挑战与策略 110 7.1 正则化 110 7.1.1 正则化参数 111 7.1.2 增加数据量 115 7.1.3 梯度裁剪 116 7.1.4 提前终止 116 7.1.5 共享参数 117 7.1.6 Dropout 117 7.2 预处理 119 7.2.1 初始化 120 7.2.2 归一化 120 7.3 批量化 121 7.3.1 随机梯度下降法 121 7.3.2 批标准化 122 7.4 并行化 124 7.4.1 TensorFlow利用GPU加速 124 7.4.2 深度学习并行模式 125 7.5 选择合适的激活函数 127 7.6 选择合适代价函数 128 7.7 选择合适的优化算法 129 7.8 小结 130 第8章 安装TensorFlow 131 8.1 TensorFlow CPU版的安装 131 8.2 TensorFlow GPU版的安装 132 8.3 配置Jupyter Notebook 136 8.4 实例:CPU与GPU性能比较 137 8.5 实例:单GPU与多GPU性能比较 138 8.6 小结 140 第9章 TensorFlow基础 141 9.1 TensorFlow系统架构 141 9.2 数据流图 143 9.3 TensorFlow基本概念 144 9.3.1 张量 144 9.3.2 算子 145 9.3.3 计算图 146 9.3.4 会话 146 9.3.5 常量 148 9.3.6 变量 149 9.3.7 占位符 153 9.3.8 实例:比较constant、variable和placeholder 154 9.4 TensorFlow实现数据流图 156 9.5 可视化数据流图 156 9.6 TensorFlow分布式 158 9.7 小结 160 第10章 TensorFlow图像处理 162 10.1 加载图像 162 10.2 图像格式 163 10.3 把图像转换为TFRecord文件 164 10.4 读取TFRecord文件 165 10.5 图像处理实例 166 10.6 全新的数据读取方式—Dataset API 170 10.6.1 Dataset API 架构 170 10.6.2 构建Dataset 171 10.6.3 创建迭代器 174 10.6.4 从迭代器中获取数据 174 10.6.5 读入输入数据 175 10.6.6 预处理数据 175 10.6.7 批处理数据集元素 176 10.6.8 使用高级API 176 10.7 小结 177 第11章 TensorFlow神经元函数 178 11.1 激活函数 178 11.1.1 sigmoid函数 179 11.1.2 tanh函数 179 11.1.3 relu函数 180 11.1.4 softplus函数 181 11.1.5 dropout函数 181 11.2 代价函数 181 11.2.1 sigmoid_cross_entropy_with_logits函数 182 11.2.2 softmax_cross_entropy_with_logits函数 183 11.2.3 sparse_softmax_cross_entropy_with_logits函数 184 11.2.4 weighted_cross_entropy_with_logits函数 184 11.3 小结 185 第12章 TensorFlow自编码器 186 12.1 自编码简介 186 12.2 降噪自编码 188 12.3 实例:TensorFlow实现自编码 188 12.4 实例:用自编码预测信用卡欺诈 191 12.5 小结 197 第13章 TensorFlow实现Word2Vec 198 13.1 词向量及其表达 198 13.2 Word2Vec原理 199 13.2.1 CBOW模型 200 13.2.2 Skim-gram模型 200 13.3 实例:TensorFlow实现Word2Vec 201 13.4 小结 206 第14章 TensorFlow卷积神经网络 207 14.1 卷积神经网络简介 207 14.2 卷积层 208 14.2.1 卷积核 209 14.2.2 步幅 211 14.2.3 填充 212 14.2.4 多通道上的卷积 213 14.2.5 激活函数 214 14.2.6 卷积函数 215 14.3 池化层 216 14.4 归一化层 217 14.5 TensorFlow实现简单卷积神经网络 218 14.6 TensorFlow实现进阶卷积神经网络 219 14.7 几种经典卷积神经网络 223 14.8 小结 224 第15章 TensorFlow循环神经网络 226 15.1 循环神经网络简介 226 15.2 前向传播与随时间反向传播 228 15.3 梯度消失或爆炸 231 15.4 LSTM算法 232 15.5 RNN其他变种 235 15.6 RNN应用场景 236 15.7 实例:用LSTM实现分类 237 15.8 小结 241 第16章 TensorFlow高层封装 242 16.1 TensorFlow高层封装简介 242 16.2 Estimator简介 243 16.3 实例:使用Estimator预定义模型 245 16.4 实例:使用Estimator自定义模型 247 16.5 Keras简介 252 16.6 实例:Keras实现序列式模型 253 16.7 TFLearn简介 255 16.7.1 利用TFLearn解决线性回归问题 256 16.7.2 利用TFLearn进行深度学习 256 16.8 小结 257 第17章 情感分析 258 17.1 深度学习与自然语言处理 258 17.2 词向量简介 259 17.3 循环神经网络 260 17.4 迁移学习简介 261 17.5 实例:TensorFlow实现情感分析 262 17.5.1 导入数据 262 17.5.2 定义辅助函数 267 17.5.3 构建RNN模型 267 17.5.4 调优超参数 269 17.5.5 训练模型 270 17.6 小结 272 第18章 利用TensorFlow预测乳腺癌 273 18.1 数据说明 273 18.2 数据预处理 274 18.3 探索数据 276 18.4 构建神经网络 279 18.5 训练并评估模型 281 18.6 小结 283 第19章 聊天机器人 284 19.1 聊天机器人原理 284 19.2 带注意力的框架 286 19.3 用TensorFlow实现聊天机器人 289 19.3.1 接口参数说明 290 19.3.2 训练模型 293 19.4 小结 302 第20章 人脸识别 303 20.1 人脸识别简介 303 20.2 项目概况 306 20.3 实施步骤 307 20.3.1 数据准备 307 20.3.2 预处理数据 307 20.3.3 训练模型 309 20.3.4 测试模型 313 20.4 小结 316 第三部分 扩展篇 第21章 强化学习基础 318 21.1 强化学习简介 318 21.2 强化学习常用算法 320 21.2.1 Q-Learning算法 320 21.2.2 Sarsa算法 322 21.2.3 DQN算法 322 21.3 小结 324 第22章 生成式对抗网络 325 22.1 GAN简介 325 22.2 GAN的改进版本 327 22.3 小结 329
为什么写这本书 人工智能新时代学什么?我们知道,Python是人工智能的首选语言,深度学习是人工智能的核心,而TensorFlow是深度学习框架中的No.1。所以我们在本书中将这三者有机结合,希望借此把这些目前应用最广、最有前景的工具和算法分享给大家。 人工智能新时代如何学?市面上介绍这些工具和深度学习理论的书籍已有很多,而且不乏经典大作,如讲机器学习理论和算法的有周志华老师的《机器学习》;介绍深度学习理论和算法的有伊恩·古德费洛等编著的《深度学习》;介绍TensorFlow实战的有黄文坚、唐源编著的《TensorFlow实战》、山姆·亚伯拉罕等编著的《面向机器智能的TensorFlow实践》等。这些都是非常经典的大作,如果你对机器学习、深度学习、人工智能感兴趣的话,这些书均值得一读。 本书在某些方面或许无法和它们相比,但我觉得也会有不少让你感到满意,甚至惊喜的地方。本书的特点具体包括以下几个方面。 1.内容选择:提供全栈式的解决方案 深度学习涉及范围比较广,既有对基础、原理的一些要求,也有对代码实现的要求。如何在较短时间内快速提高深度学习的水平?如何尽快把所学运用到实践中?这方面虽然没有捷径可言,但却有方法可循。本书基于这些考量,希望能给你提供一站式解决方案。具体内容包括:机器学习与深度学习的三大基石(线性代数、概率与信息论及数值分析);机器学习与深度学习的基本理论和原理;机器学习与深度学习的常用开发工具(Python、TensorFlow、Keras等),此外还有TensorFlow的高级封装及多个综合性实战项目等。 2.层次安排:找准易撕口、快速实现由点到面的突破 我们打开塑料袋时,一般从易撕口开始,这样即使再牢固的袋子也很容易打开。面对深度学习这个“牢固袋子”,我们也可采用类似方法,找准易撕口。如果没有,就创造一个易撕口,通过这个易撕口,实现点到面的快速扩展。本书在介绍很多抽象、深奥的算法时采用了这种方法。我们知道BP算法、循环神经网络是深度学习中的两块硬骨头,所以在介绍BP算法时,先介绍单个神经如何实现BP算法这个易撕口,再延伸到一般情况;在介绍循环神经网络时,我们也以一个简单实例为易撕口,再延伸到一般情况。希望通过这种方式,能帮助你把难题化易、把大事化小、把不可能转换为可能。 3.表达形式:让图说话,一张好图胜过千言万语 在机器学习、深度学习中有很多抽象的概念、复杂的算法、深奥的理论,如Numpy的广播机制、神经网络中的共享参数、动量优化法、梯度消失或爆炸等,这些内容如果只用文字来描述,可能很难达到茅塞顿开的效果,但如果用一些图形来展现,再加上适当的文字说明,往往能取得非常好的效果,正所谓一张好图胜过千言万语。 除了以上谈到的三个方面,为了帮助大家更好理解、更快掌握机器学习、深度学习这些人工智能的核心内容,本书还包含了其他方法。我们希望通过这些方法或方式带给你不一样的理解和体验,使抽象数学不抽象、深度学习不深奥、复杂算法不复杂,这或许就是我们写这本书的主要目的。 至于人工智能(AI)的重要性,想必不用多说了。如果说2016年前属于摆事实论证的阶段,那么2016年后已进入事实胜于雄辩的阶段了,而2018年后应该属于撸起袖子加油干的阶段。目前各行各业都忙于AI+,给人“忽如一夜春风来,千树万树梨花开”的感觉! 本书特色 要说特色的话,就是上面谈到的几点,概括来说就是:把理论原理与代码实现相结合;找准切入点,从简单到一般,把复杂问题简单化;图文并茂使抽象问题直观化;实例说明使抽象问题具体化。希望通过阅读本书,能给你带来新的视角、新的理解。 读者对象 对机器学习、深度学习感兴趣的广大在校学生、在职人员。 对Python、TensorFlow感兴趣,并希望进一步提升的在校学生、在职人员。 如何阅读本书 本书共22章,按照“基础→应用→扩展”的顺序展开,分为三个部分。 第一部分(第1~5章)为Python和应用数学基础部分:第1章介绍Python和TensorFlow的基石Numpy;第2章介绍深度学习框架的鼻祖Theano;第3~5章介绍机器学习、深度学习算法应用数学基础,包括线性代数、概率与信息论、概率图等内容。 第二部分(第6~20章)为深度学习理论与应用部分:第6章为机器学习基础,也是深度学习基础,其中包含很多机器学习的经典理论和算法;第7章为深度学习理论及方法;第8~10章介绍TensorFlow基于CPU、GPU版本的安装及使用,TensorFlow基础,TensorFlow的一些新API,如Dataset API、Estimator API等(基于TensorFlow1.6版本);第11~15章为深度学习中神经网络方面的模型及TensorFlow实战案例;第16章介绍TensorFlow的高级封装,如Keras、Estimator、TFLearn等内容;第17~20章为TensorFlow综合实战案例,包括图像识别、自然语言处理等内容。 第三部分(第21~22章)为扩展部分:介绍强化学习、生成式对抗网络等内容。 勘误和支持 书中代码和数据的下载地址为http://www.feiguyunai.com。由于笔者水平有限,加之编写时间仓促,书中难免出现错误或不准确的地方,恳请读者批评指正。