第1章 走进人工智能的世界 1
1.1 人工智能的发展历程 1
1.2 人工智能在各行业的应用现状 2
1.3 人工智能的职业发展 3
1.4 学习资源 6
第2章 算法工程师基础 10
2.1 机器学习简介 10
2.1.1 机器学习如何分类 10
2.1.2 什么是判别式模型和生成式模型 11
2.2 性能度量 11
2.2.1 回归问题常用的性能度量指标有哪些 11
2.2.2 分类问题常用的性能度量指标有哪些 12
2.3 特征工程 13
2.3.1 数据预处理主要包括什么 14
2.3.2 特征选择主要包括什么 15
2.3.3 特征降维主要包括什么 17
2.3.4 特征构造主要包括什么 18
2.4 过拟合、欠拟合与正则化 19
2.4.1 过拟合与欠拟合的区别是什么,什么是正则化 19
2.4.2 解决欠拟合的方法有哪些 19
2.4.3 防止过拟合的方法主要有哪些 19
2.5 偏差与方差 22
2.5.1 试推导泛化误差、偏差、方差与噪声之间的关系 22
2.5.2 导致偏差和方差的原因是什么 23
2.6 常用梯度下降法与优化器 24
2.6.1 随机梯度下降与小批量随机梯度下降 24
2.6.2 动量算法 24
2.6.3 NAG算法(Nesterov动量) 25
2.6.4 自适应学习率算法 25
2.6.5 试比较牛顿迭代法与梯度下降法 27
2.7 其他问题 28
2.7.1 常用的损失函数有哪些 28
2.7.2 如何判断函数凸或非凸 29
2.7.3 什么是数据不平衡问题,应该如何解决 29
2.7.4 熵、联合熵、条件熵、KL散度、互信息的定义 30
2.7.5 主成分分析和因子分析的区别 31
2.7.6 什么是最小风险贝叶斯决策 32
2.7.7 什么是贝叶斯最小错误概率和最小风险 32
第3章 常见的机器学习算法 34
3.1 线性回归与逻辑回归 34
3.1.1 线性回归及代码展示 34
3.1.2 逻辑回归及代码展示 35
3.1.3 逻辑回归模型如何进行多分类 38
3.1.4 逻辑回归分类和线性回归的异同点是什么 38
3.2 常用聚类算法 38
3.2.1 K均值法及代码展示 39
3.2.2 谱聚类及代码展示 41
3.2.3 幂迭代算法 42
3.2.4 相似度度量公式 42
3.3 EM算法 43
3.3.1 试详细介绍EM算法 43
3.3.2 利用EM算法进行Gauss混合分布的参数估计 44
3.3.3 利用EM算法模拟两个正态分布的均值估计 45
3.4 支持向量机 46
3.4.1 试介绍SVM算法中的线性可分问题,最大间隔法 47
3.4.2 线性不可分问题 49
3.4.3 SVM的非线性映射问题 50
3.4.4 SVM的优点和缺点 51
3.5 决策树与随机森林 51
3.5.1 简要介绍决策树是什么 51
3.5.2 决策树算法的优点和缺点是什么 54
3.5.3 试简要介绍随机森林 55
3.5.4 如何做随机森林参数的选择 58
3.5.5 试简要介绍随机森林的优缺点 58
3.5.6 决策树中C4.5 算法优化了ID3算法的什么缺点 59
3.6 集成学习 59
3.6.1 什么是集成学习,主要由什么组成 59
3.6.2 试介绍并比较Boosting与Bagging方法 59
3.6.3 AdaBoost算法介绍 60
3.6.4 如何理解Adaboost的模型误差部分 62
3.6.5 AdaBoost模型的优缺点是什么 62
3.6.6 什么是前向分步算法 63
3.7 Xgboost与GBDT 65
3.7.1 什么是GBDT算法,与提升树的区别是什么 65
3.7.2 什么是Xgboost算法 67
第4章 深度学习框架与PyTorch编程介绍 70
4.1 深度学习基础知识 70
4.1.1 神经网络发展历程 70
4.1.2 常见的深度学习框架都有哪些,它们都有什么特点 71
4.1.3 什么是人工神经网络 71
4.1.4 万能近似定理是什么 72
4.1.5 激活函数有什么作用,常见的激活函数都有哪些 72
4.1.6 什么是MP模型与感知机 73
4.1.7 什么是BP神经网络和反向传播算法 74
4.1.8 BP网络模型的缺陷 77
4.1.9 传统神经网络的训练方法为什么不能用在深度神经网络 77
4.2 CNN基础知识与PyTorch实战部分 77
4.2.1 什么是卷积神经网络 77
4.2.2 卷积神经网络的优点是什么 79
4.2.3 什么是LeNet5网络 80
4.2.4 为什么卷积核一般都是3×3而不是更大 82
4.2.5 为什么不使用全连接神经网络,而是使用卷积神经网络 82
4.2.6 什么是AlexNet 83
4.2.7 什么是VGG16 85
4.3 LSTM基础知识与PyTorch实战部分 88
4.3.1 什么是循环神经网络(RNN) 89
4.3.2 RNN的梯度消失问题以及代码展示 91
4.3.3 什么是长短时记忆网络(LSTM) 92
4.3.4 什么是门控循环神经网络(GRU) 95
第5章 深度强化学习 97
5.1 强化学习重要概念与函数 97
5.1.1 简要介绍强化学习中若干基础概念 97
5.1.2 试比较基于值函数与策略函数的学习方法 101
5.1.3 试比较on-policy与off-policy 101
5.1.4 强化学习中主要有哪些算法,如何分类 101
5.2 值函数的学习方法 102
5.2.1 动态规划算法 102
5.2.2 蒙特卡洛算法 103
5.2.3 时序差分学习方法 103
5.2.4 Q-Learning算法详解 105
5.2.5 Q-Learning算法的代码展示 106
5.2.6 DP、MC、TD方法的比较 108
5.2.7 如何理解DQN(深度神经网络) 108
5.3 策略函数的学习方法 109
5.4 深度强化学习发展综述 110
5.4.1 DQN 110
5.4.2 Double Q-Learning 111
5.4.3 Dueling DQN 111
5.4.4 DRQN 112
5.4.5 Noisy Net 113
5.4.6 带有experience replay的DQN 114
5.4.7 Actor Critic算法 115
5.4.8 A3C算法 115
5.4.9 Rainbow 116
第6章 人工智能前沿 117
6.1 Attention机制 117
6.1.1 Attention机制计算方法 117
6.1.2 点乘注意力机制 117
6.1.3 多头注意力机制 118
6.2 时间卷积网络 119
6.2.1 扩张卷积、残差卷积和因果卷积 120
6.2.2 TCN结构 120
6.3 生成对抗网络 122
6.3.1 GAN的核心思想和算法步骤是什么 122
6.3.2 什么是Conditional GAN 126
6.4 图卷积神经网络 126
6.4.1 空间域卷积 127
6.4.2 谱图卷积 128
6.5 深度学习在运筹优化中的应用 130
6.5.1 指针网络 131
6.5.2 指针网络PyTorch代码实现 133
6.5.3 强化学习训练 137
6.5.4 搜索策略 140
6.5.5 简化Encoder求解VRP 141
第7章 数据库 144
7.1 SQL语言 144
7.2 事务 146
7.3 存储过程 147
7.3.1 什么是存储过程,它有什么优点 147
7.3.2 存储过程和函数的区别是什么 149
7.4 触发器 149
7.5 UNION和UNION ALL 151
7.6 索引 152
第8章 操作系统 154
8.1 进程管理 154
8.1.1 进程与线程 154
8.1.2 线程同步有哪些机制 155
8.1.3 内核线程和用户线程 155
8.2 内存管理 156
8.2.1 内存管理方式 156
8.2.2 虚拟内存 157
8.2.3 内存碎片 157
8.2.4 虚拟地址、逻辑地址、线性地址和物理地址 158
8.2.5 Cache替换算法 158
第9章 算法 161
9.1 如何实现链表的逆序 161
9.2 如何对链表进行重新排序 165
9.3 如何找出单链表中的倒数第k个元素 168
9.4 如何检测一个较大的单链表是否有环 171
9.5 如何把链表以k个结点为一组进行翻转 174
9.6 如何实现栈 177
9.7 如何设计一个排序系统 180
9.8 如何实现队列 182
9.9 如何根据入栈序列判断可能的出栈序列 185
9.10 如何实现LRU缓存方案 187
9.11 如何把一个有序整数数组放到二叉树中 189
9.12 如何从顶部开始逐层打印二叉树结点数据 191
9.13 如何求一棵二叉树的最大子树和 193
9.14 如何找出排序二叉树上任意两个结点的最近共同父结点 195
9.15 如何实现反向DNS查找缓存 202
9.16 如何找出数组中第k小的数 204
9.17 如何求数组连续最大和 207
9.18 如何求数组中两个元素的最小距离 211
9.19 如何求解最小三元组距离 213
9.20 如何在不排序的情况下求数组中的中位数 216
9.21 如何获取最好的矩阵链相乘方法 218
9.22 如何对有大量重复数字的数组排序 220
9.23 如何在有规律的二维数组中进行高效的数据查找 223
9.24 如何从三个有序数组中找出它们的公共元素 225
9.25 如何求一个字符串的所有排列 226
9.26 如何消除字符串的内嵌括号 230
9.27 如何求字符串的编辑距离 231
9.28 如何实现字符串的匹配 233
9.29 如何求两个字符串的最长公共子串 237
9.30 如何求数字的组合 240
9.31 如何求拿到最多金币的概率 242
9.32 如何求正整数n所有可能的整数组合 244
9.33 如何用一个随机函数得到另外一个随机函数 245
9.34 如何等概率地从大小为n的数组中选取m个整数 246
9.35 如何求组合1、2、5这三个数使其和为100的组合个数 247
9.36 如何判断还有几盏灯泡亮着 249
9.37 如何从大量的url中找出相同的url 250
9.38 如何从大量数据中找出高频词 251
9.39 如何找出访问百度最多的IP 252
9.40 如何在大量的数据中找出不重复的整数 252
9.41 如何在大量的数据中判断一个数是否存在 253
9.42 如何查询最热门的查询串 253
9.43 如何统计不同电话号码的个数 254
9.44 如何从5亿个数中找出中位数 255
9.45 如何按照query的频度排序 257
9.46 如何找出排名前500的数 257
参考文献 259