图书目录

目 录

机器学习基础知识篇

第1章 人工智能概述    002

1.1 人工智能的定义       002

1.2 人工智能发展简史    003

1.2.1 史前文明,曙光初现(1956年前)    004

1.2.2 初出茅庐,一战成名(1956—1974年)    008

1.2.3 寒风凛冽,首次入冬(1974—1980年)    010

1.2.4 卷土重来,威震八方(1980—1987年)    010

1.2.5 失望弥漫,再度入冬(1987—1993年)    012

1.2.6 重出江湖,渐入佳境(1993年至今)    013

1.3 人工智能经典流派    016

1.3.1 符号主义       018

1.3.2 连接主义       019

1.3.3 行为主义       023

1.3.4 贝叶斯派       026

1.4 人工智能与机器学习    027

1.5 如何选择机器学习算法    029

1.5.1 没有免费的午餐理论    030

1.5.2 Scikit Learn小抄    031

1.5.3 Microsoft Azure小抄    032

1.6 机器学习的典型应用场景    032

1.6.1 计算机图像领域    035

1.6.2 自然语言处理简述及其应用    036

1.6.3 制造业中的预测性维护    038

1.6.4 软件自动化开发和测试    042

1.7 本书的组织结构       043

第2章 机器学习中的数学基础    045

2.1 微分学          045

2.1.1 链式求导法则    045

2.1.2 对数函数求导    045

2.1.3 梯度和梯度下降算法    046

2.2 线性代数       047

2.2.1 向量          047

2.2.2 矩阵拼接       052

2.2.3 特征值和特征向量    057

2.2.4 仿射变换       059

2.3 概率论          060

2.3.1 概率分布       061

2.3.2 先验/后验概率    062

2.3.3 最大似然估计    063

2.3.4 贝叶斯法则    064

2.4 统计学          065

2.4.1 数据的标准化和归一化    065

2.4.2 标准差       066

2.4.3 方差和偏差    066

2.4.4 协方差和协方差矩阵    067

2.5 最优化理论          068

2.5.1 概述          068

2.5.2 函数等高线    070

2.5.3 拉格朗日乘子法    071

2.5.4 拉格朗日对偶性    074

2.5.5 KKT          079

2.6 其他             088

2.6.1 训练、验证和测试数据集    088

2.6.2 过拟合和欠拟合    090

2.6.3 奥卡姆的剃刀    092

2.6.4 信息熵       093

2.6.5 IOU          094

2.6.6 NMS          095

2.6.7 Huffman树    096

第3章 机器学习模型的度量指标    099

3.1 Precision、Recall和mAP    099

3.2 F1 Score       101

3.3 混淆矩阵       102

3.4 ROC       103

3.5 AUC       105

3.6 PRC       107

3.7 工业界使用的典型AI指标    108

经典机器学习篇

第4章 回归算法    112

4.1 回归分析       112

4.2 线性回归       112

4.2.1 线性回归的定义    112

4.2.2 线性回归的损失函数    113

4.2.3 线性回归范例    113

4.3 逻辑回归       115

4.3.1 逻辑回归—二分类    115

4.3.2 逻辑回归—多分类及Softmax    119

第5章 K-NN算法    122

5.1 K-NN概述          122

5.2 K-NN分类算法       123

5.3 K-NN回归算法       124

5.4 K-NN的优缺点       125

5.4.1 K-NN的优点    125

5.4.2 K-NN的缺点    126

5.5 K-NN工程范例       126

第6章 k-means       129

6.1 k-means概述       129

6.2 k-means核心算法    129

6.3 k-means算法的优缺点    131

6.3.1 k-means算法的优点    131

6.3.2 k-means算法的缺点    131

6.4 k-means工程范例    132

第7章 朴素贝叶斯    135

7.1 朴素贝叶斯分类算法    135

7.2 朴素贝叶斯的实际应用    137

第8章 决策树和随机森林    141

8.1 决策树          141

8.1.1 决策树的主要组成元素    141

8.1.2 决策树的经典算法    141

8.1.3 决策树的优缺点    145

8.1.4 决策树的过拟合和剪枝    145

8.2 随机森林       146

第9章 支持向量机    149

9.1 SVM可以做什么    149

9.2 SVM的数学表述    151

9.2.1 决策面的数学表述    151

9.2.2 分类间隔的数学表述    152

9.2.3 比较超平面的数学公式    153

9.2.4 最优决策面的数学表述    159

9.3 SVM相关的最优化理论    160

9.3.1 感知机学习算法    160

9.3.2 SVM最优化问题    173

9.4 硬间隔SVM          174

9.5 软间隔SVM          177

9.6 核函数技巧          182

9.7 多分类SVM          187

9.8 SVM实践       193

第10章 PCA降维    196

10.1 降维概述          196

10.2 PCA降维实现原理    197

10.2.1 PCA的直观理解    197

10.2.2 PCA的理论基础—最大方差理论    199

10.2.3 PCA的核心处理过程    199

10.3 PCA实例          200

第11章 集成学习    202

11.1 集成学习概述       202

11.2 集成学习架构       203

11.2.1 聚合法       203

11.2.2 提升法       204

11.2.3 堆叠法       205

11.3 典型的集成方法    206

11.3.1 平均法       206

11.3.2 投票法       207

11.3.3 学习法       208

深度学习进阶篇

第12章 深度神经网络    212

12.1 神经元          212

12.2 激活函数          214

12.2.1 Sigmoid    214

12.2.2 tanh       216

12.2.3 ReLU       217

12.2.4 Leaky ReLU    218

12.2.5 ReLU的其他变种    219

12.2.6 激活函数的选择    220

12.3 前向传播和后向传播算法    220

12.4 损失函数          224

12.4.1 分类场景    225

12.4.2 回归场景    228

12.4.3 其他任务类型的损失函数    230

第13章 卷积神经网络    232

13.1 CNN发展历史简述   232

13.2 CNN的核心组成元素   233

13.2.1 卷积层       233

13.2.2 池化层       235

13.2.3 全连接层    236

13.2.4 Softmax层    237

13.3 CNN经典框架      237

13.3.1 LeNet       237

13.3.2 AlexNet    238

13.3.3 VGG       240

13.3.4 GoogLeNet    242

13.3.5 ResNet       245

13.4 CNN的典型特性   249

13.4.1 CNN位移不变性    250

13.4.2 CNN尺度不变性    252

13.4.3 CNN旋转不变性    253

13.4.4 CNN视角不变性    255

第14章 RNN与LSTM    256

14.1 RNN         256

14.2 RNN的多种形态   257

14.3 RNN存在的不足   258

14.4 LSTM          259

14.5 LSTM核心框架    259

14.5.1 遗忘门       261

14.5.2 输入门       261

14.5.3 输出门       262

14.6 GRU         263

第15章 深度强化学习    265

15.1 强化学习和MDP    265

15.1.1 强化学习的基础概念    265

15.1.2 MDP       266

15.1.3 强化学习的核心三要素    267

15.2 MDP问题的解决方案分类    268

15.3 基于模型的动态规划算法    269

15.4 基于无模型的强化学习算法    272

15.4.1 蒙特·卡罗强化学习算法    272

15.4.2 时间差分算法    275

15.5 DQN          278

15.6 基于策略的强化学习算法    280

15.6.1 有限差分策略梯度    283

15.6.2 蒙特·卡罗策略梯度    283

第16章 MCTS       285

16.1 MCTS概述          285

16.2 MCTS算法核心处理过程    286

16.3 UCB和UCT       286

16.4 MCTS实例解析    288

机器学习应用实践及相关原理

第17章 数据集的建设    292

17.1 数据集建设的核心目标    292

17.2 数据采集和标注    294

17.2.1 数据从哪来    294

17.2.2 数据分布和多样性    296

17.2.3 如何扩大数据量    298

17.3 数据分析和处理    299

17.3.1 数据集分析的典型方法    299

17.3.2 标签类别合理性    301

17.3.3 数据清洗    303

第18章 CNN训练技巧    304

18.1 数据预处理       304

18.1.1 数据零中心化    304

18.1.2 数据标准化    306

18.1.3 尺寸调整    306

18.1.4 其他       307

18.2 数据增强          308

18.3 CNN核心组件择优   309

18.3.1 激活函数    309

18.3.2 超参数设定    309

18.4 参数初始化策略    310

18.4.1 全零初始化策略    310

18.4.2 随机初始化策略    311

18.4.3 采用预训练模型    319

18.5 模型过拟合解决方法    319

18.5.1 正则化       319

18.5.2 批标准化    320

18.6 模型的可解释性    328

18.6.1 反卷积网络    331

18.6.2 类别激活映射    334

18.6.3 LIME       339

18.6.4 可视化集成工具Darkon    344

18.7 Auto ML       346

第19章 CV和视觉识别经典模型    348

19.1 CV发展简史       348

19.2 视觉识别概述       353

19.3 R-CNN         359

19.3.1 R-CNN简述    359

19.3.2 R-CNN中的候选区域    360

19.3.3 R-CNN算法处理流程    361

19.4 Fast R-CNN       364

19.5 SPP-Net       365

19.5.1 空间金字塔池化    366

19.5.2 特征图和原图的映射关系    367

19.5.3 基于SPP-Net的目标识别    367

19.6 Faster R-CNN       368

19.6.1 Faster R-CNN简述    368

19.6.2 候选区域网络    370

19.6.3 分类器和边框回归    375

19.7 YOLO          375

19.8 SSD          383

19.8.1 SSD的网络框架    383

19.8.2 SSD的应用推理过程    384

19.8.3 SSD的性能评估和缺点    388

19.9 不基于CNN来实现目标识别   390

19.9.1 相关的OpenCV函数    390

19.9.2 利用OpenCV识别形状物体范例    394

第20章 自然语言处理和CNN    397

20.1 NLP简述          397

20.2 NLP发展历史       399

20.3 自然语言基础       400

20.4 词的表达方式       403

20.5 自然语言模型       405

20.5.1 基于N-Gram的语言模型    406

20.5.2 基于神经网络的语言模型—经典NNLM    409

20.5.3 基于神经网络的语言模型—NNLM的改进者CBOW模型    411

20.5.4 基于神经网络的语言模型—NNLM的改进者Skip-gram模型      414

20.6 word2vec          416

20.6.1 word2vec简介    416

20.6.2 word2vec源码与编译    417

20.6.3 word2vec使用范例    418

20.7 常用语料库       420

20.8 NLP应用:文本分类    424

20.8.1 传统的文本分类方法    424

20.8.2 基于深度学习的文本分类方法    425

第21章 自然语言处理和CNN    430

21.1 应用程序场景识别背景    430

21.2 特征向量          431

21.3 数据采集          432

21.4 算法模型          433

21.5 落地应用          433

第22章 软件自动修复    436

22.1 什么是软件自动修复    436

22.1.1 软件自动修复的定义    436

22.1.2 软件自动修复的价值    437

22.2 软件自动修复基础知识    437

22.2.1 软件自动修复技术分类    437

22.2.2 软件自动修复基础概念    439

22.3 阶段1:缺陷定位    441

22.3.1 基于程序频谱的缺陷定位    443

22.3.2 SFL中测试套件的构造    447

22.3.3 SFL中程序频谱的构造    451

22.4 阶段2:补丁生成    458

22.4.1 基于搜索的补丁生成和自动修复    459

22.4.2 基于模板的补丁生成和自动修复    460

22.5 APR领域经典框架    462

22.5.1 Facebook SapFix    463

22.5.2 Microsoft DeepCoder    465

22.5.3 GenProg    474

第23章 基于强化学习的经典应用—AlphaGO    479

23.1 AlphaGO简述       479

23.2 AlphaGO核心原理    480

23.3 策略网络          481

23.4 估值网络          483

23.5 MCTS          483

机器学习平台篇

第24章 分布式机器学习框架基础知识    488

24.1 分布式机器学习核心理念    488

24.2 GPU硬件设备       491

24.2.1 GPU架构    492

24.2.2 GPU的共享访问    494

24.3 网络标准          498

24.3.1 Ethernet    498

24.3.2 InfiniBand    499

24.4 分布式通信框架    500

24.4.1 MPI       500

24.4.2 P2P和聚合通信    503

24.4.3 NCCL       505

24.4.4 NV-Link    508

24.4.5 RDMA       510

24.5 经典分布式ML框架Caffe-MPI    511

第25章 Tensorflow    514

25.1 Tensorflow安装过程    514

25.2 Tensorflow基础知识    516

25.2.1 Tensorflow核心概念    516

25.2.2 Tensorflow模型/数据的保存和恢复    519

25.2.3 Tensorflow模型fine-tuning    523

25.2.4 Tensorflow模型调试    526

25.2.5 Tensorflow的多语言支持    528

25.2.6 可视化利器TensorBoard    529

25.3 Tensorflow分布式训练    533

25.3.1 Tensorflow的分布式原理    533

25.3.2 单机多GPU下的并行计算    535

25.3.3 多机多GPU下的分布式计算    542

25.4 Tensorflow分布式部署    549

25.4.1 Tensorflow Serving概述    549

25.4.2 基于GPU的Tensorflow Serving    549

25.4.3 Tensorflow Serving的核心概念    552

25.4.4 Tensorflow模型分布式部署实例    553

25.5 Tensorflow范例解析    560

25.6 Tensorflow的“变种”    563

25.6.1 Tensorflow Lite    563

25.6.2 Tensorflow RS    565

第26章 Caffe       568

26.1 Caffe的安装       568

26.1.1 Ubuntu下安装Caffe    568

26.1.2 Windows下安装Caffe    572

26.2 Caffe支持的数据集格式    587

26.2.1 LevelDB   587

26.2.2 LMDB       590

26.2.3 数据库的生成    592

26.3 Caffe中的网络模型构建    594

26.4 Google Protocol Buffer    598

26.5 Caffe2源码结构    600

26.6 Caffe工程范例       601

26.7 Caffe中的Model Zoo    607

第27章 scikit-learn   609

27.1 scikit-learn的安装    610

27.2 scikit-learn中的机器学习算法    610

27.2.1 分类       610

27.2.2 回归       611

27.2.3 聚类       611

27.2.4 降维       612

27.3 scikit-learn中的Model selection    613

27.3.1 网络搜索    613

27.3.2 交叉验证    616

27.3.3 度量标准    616

27.4 scikit-learn中的预处理    619

27.4.1 数据标准化等预处理    619

27.4.2 数据特征提取预处理    621

第28章 主流AI云平台    628

28.1 Microsoft OpenPAI    628

28.2 Google Cloud       631

28.3 Baidu          631

28.3.1 百度AI云服务    632

28.3.2 PaddlePaddle    636

28.4 Alibaba         637

28.4.1 阿里飞天平台    638

28.4.2 MaxCompute平台    639

28.4.3 PAI       640

第29章 图像处理基础    650

29.1 光、色彩和人类视觉系统    650

29.2 图像的颜色模型    653

29.3 图像的基本属性    655

29.3.1 灰度值       655

29.3.2 亮度       656

29.3.3 对比度       657

29.3.4 色相       658

29.3.5 饱和度       658

29.4 图像特征          659

29.4.1 颜色特征    659

29.4.2 纹理特征    660

29.4.3 形状特征    661

29.5 图像的典型特征描述子    661

29.5.1 LBP       661

29.5.2 HOG      677

29.5.3 Haar-like 特征    681

29.5.4 图像的傅里叶变换    686

29.6 图像处理实例(图像质量检测)    690

第30章 程序切片技术    693

30.1 程序切片综述       693

30.2 程序切片基础知识    695

30.2.1 控制流图    695

30.2.2 控制流分析    699

30.2.3 数据流       706

30.3 静态切片技术       715

30.3.1 基本定义    715

30.3.2 静态切片算法    717

30.4 动态切片技术       721

30.4.1 动态切片基本概念    721

30.4.2 动态切片算法概述    723

30.4.3 基于PDG的动态切片算法    723

第31章 业界主流数据集分析    726

31.1 ImageNet简述       726

31.2 ImageNet的构建逻辑    726

31.3 ImageNet数据源的选择与处理    730

31.4 ImageNet的下载    733

参考文献       736