随着AI技术的普及,如何快速理解、掌握并应用AI技术,成为绝大多数程序员亟需解决的问题。本书基于Keras框架并以代码实现为核心,详细解答程序员学习AI算法时的常见问题,对机器学习、深度神经网络等概念在实际项目中的应用建立清晰的逻辑体系。本书分为上下两篇,上篇(第1~4章)可帮助读者理解并独立开发较简单的机器学习应用,下篇(第5~9章)则聚焦于AI技术的三大热点领域:推荐系统、自然语言处理(NLP)及图像处理。其中,第1章通过具体实例对Keras的机器学习实现进行快速介绍并给出整体概念;第2章从简单的神经元开始,以实际问题和代码实现为引导,逐步过渡到多层神经网络的具体实现上,从代码层面讲解神经网络的工作模式;第3章讲解Keras的核心概念和使用方法,帮助读者快速入门Keras;第4章讲解机器学习中的常见概念、定义及算法;第5章介绍推荐系统的常见方案,包括协同过滤的不同实现及Wide&Deep模型等;第6章讲解循环神经网络(RNN)的原理及Seq2Seq、Attention等技术在自然语言处理中的应用;第7~8章针对图像处理的分类及目标识别进行深度讨论,从代码层面分析Faster RCNN及YOLO v3这两种典型识别算法;第9章针对AI模型的工程部署问题,引入TensorFlow Serving并进行介绍。本书主要面向希望学习AI开发或者转型算法的程序员,也可以作为Keras教材,帮助读者学习Keras在不同领域的具体应用。
张力柯腾讯某AI实验室负责人、AI系统设计专家。在操作系统内核、网络安全、搜索引擎、推荐系统、大规模分布式系统、图像处理、数据分析等领域具有丰富的实践经验。于美国德克萨斯大学圣安东尼奥分校获得计算机科学博士学位,曾先后在美国微软、BCG、Uber及硅谷其他创业公司担任研发工程师及项目负责人等。 潘 晖阿里巴巴某算法中心小组负责人。在推荐系统、自然语言处理、图像处理、数据分析等领域具有丰富的实践经验。于美国佛罗里达理工大学获得计算机科学博士学位,曾先后在中国微软、美团、腾讯从事算法研发和管理工作。发表过多篇论文,拥有多项专利,曾获得2018年腾讯互动娱乐事业群技术突破奖等奖项。
上篇
第1章 机器学习的HELLO WORLD 2
1.1 机器学习简介 2
1.2 机器学习应用的核心开发流程 3
1.3 从代码开始 6
1.3.1 搭建环境 6
1.3.2 一段简单的代码 7
1.4 本章小结 9
1.5 本章参考文献 9
第2章 手工实现神经网络 10
2.1 感知器 10
2.1.1 从神经元到感知器 10
2.1.2 实现简单的感知器 12
2.2 线性回归、梯度下降及实现 15
2.2.1 分类的原理 15
2.2.2 损失函数与梯度下降 16
2.2.3 神经元的线性回归实现 18
2.3 随机梯度下降及实现 21
2.4 单层神经网络的Python实现 23
2.4.1 从神经元到神经网络 23
2.4.2 单层神经网络:初始化 25
2.4.3 单层神经网络:核心概念 27
2.4.4 单层神经网络:前向传播 28
2.4.5 单层神经网络:反向传播 29
2.4.6 网络训练及调整 34
2.5 本章小结 38
2.6 本章参考文献 38
第3章 上手KERAS 39
3.1 Keras简介 39
3.2 Keras开发入门 40
3.2.1 构建模型 40
3.2.2 训练与测试 42
3.3 Keras的概念说明 44
3.3.1 Model 44
3.3.2 Layer 48
3.3.3 Loss 65
3.4 再次代码实战 70
3.4.1 XOR运算 70
3.4.2 房屋价格预测 73
3.5 本章小结 75
3.6 本章参考文献 76
第4章 预测与分类:简单的机器学习应用 77
4.1 机器学习框架之sklearn简介 77
4.1.1 安装sklearn 78
4.1.2 sklearn中的常用模块 78
4.1.3 对算法和模型的选择 79
4.1.4 对数据集的划分 80
4.2 初识分类算法 80
4.2.1 分类算法的性能度量指标 81
4.2.2 朴素贝叶斯分类及案例实现 86
4.3 决策树 90
4.3.1 算法介绍 90
4.3.2 决策树的原理 91
4.3.3 实例演练 96
4.3.4 决策树优化 99
4.4 线性回归 101
4.4.1 算法介绍 101
4.4.2 实例演练 101
4.5 逻辑回归 102
4.5.1 算法介绍 102
4.5.2 多分类问题与实例演练 107
4.6 神经网络 108
4.6.1 神经网络的历史 108
4.6.2 实例演练 114
4.6.3 深度学习中的一些算法细节 117
4.7 本章小结 120
4.8 本章参考文献 120
下篇
第5章 推荐系统基础 122
5.1 推荐系统简介 122
5.2 相似度计算 124
5.3 协同过滤 125
5.3.1 基于用户的协同过滤 126
5.3.2 基于物品的协同过滤 128
5.3.3 算法实现与案例演练 129
5.4 LR模型在推荐场景下的应用 131
5.5 多模型融合推荐模型:Wide&Deep模型 135
5.5.1 探索-利用困境的问题 135
5.5.2 Wide&Deep模型 137
5.5.3 交叉特征 137
5.6 本章小结 145
5.7 本章参考文献 145
第6章 项目实战:聊天机器人 146
6.1 聊天机器人的发展历史 146
6.2 循环神经网络 148
6.2.1 Slot Filling 148
6.2.2 NLP中的单词处理 150
6.2.3 循环神经网络简介 153
6.2.4 LSTM网络简介 154
6.3 Seq2Seq原理介绍及实现 157
6.3.1 Seq2Seq原理介绍 157
6.3.2 用Keras实现Seq2Seq算法 158
6.4 Attention 173
6.4.1 Seq2Seq的问题 174
6.4.2 Attention的工作原理 175
6.4.3 Attention在Keras中的实现 178
6.4.4 Attention示例 180
6.5 本章小结 185
6.6 本章参考文献 185
第7章 图像分类实战 187
7.1 图像分类与卷积神经网络 187
7.1.1 卷积神经网络的历史 187
7.1.2 图像分类的3个问题 188
7.2 卷积神经网络的工作原理 190
7.2.1 卷积运算 191
7.2.2 传统图像处理中的卷积运算 193
7.2.3 Pooling 195
7.2.4 为什么卷积神经网络能达到较好的效果 197
7.3 案例实战:交通图标分类 200
7.3.1 交通图标数据集 200
7.3.2 卷积神经网络的Keras实现 202
7.4 优化策略 209
7.4.1 数据增强 210
7.4.2 ResNet 214
7.5 本章小结 216
7.6 本章参考文献 217
第8章 目标识别 218
8.1 CNN的演化 218
8.1.1 CNN和滑动窗口 218
8.1.2 RCNN 220
8.1.3 从Fast RCNN到Faster RCNN 223
8.1.4 Faster RCNN核心代码解析 228
8.2 YOLO 242
8.2.1 YOLO v1 242
8.2.2 YOLO v2 248
8.2.3 YOLO v3 251
8.3 YOLO v3的具体实现 253
8.3.1 数据预处理 253
8.3.2 模型训练 260
8.4 本章小结 293
8.5 本章参考文献 294
第9章 模型部署与服务 296
9.1 生产环境中的模型服务 296
9.2 TensorFlow Serving的应用 299
9.2.1 转换Keras模型 299
9.2.2 TensorFlow Serving部署 302
9.2.3 接口验证 303
9.3 本章小结 307
9.4 本章参考文献 308