谈继勇 主编

南方科技大学和哈尔滨工业大学联合培养博士(在读),现任瀚维智能医疗技术总监,深圳工信局专家库专家,兼任南方科技大学、四川大学研究生企业导师,南方科技大学和瀚维智能医疗联合实验室副主任,北京探工所特聘技术专家,曾先后在中科院信工所、香港中文大学(深圳)、FOXCONN机器人与人工智能实验室、顺丰科技等单位任职。主要专注于智能感知与控制、实时智能与计算机视觉方向的研究,主持/主研国家自然科学基金、省重点研发计划、深圳战略性新兴产业计划等项目20余项,发表SCI/EI论文20余篇,申请发明专利40余项,获全国发明金奖。

郭子钊 副主编

四川大学计算机科学专业博士,硕士毕业于四川大学自动化系,主要从事AI芯片、深度学习、行为检测识别、人脸检测识别等相关研究工作。

李剑 副主编

同济大学计算机科学专业博士,浙江农林大学副教授、硕士生导师,主要从事推荐系统、排序学习、凸优化等机器学习领域的科研和教学工作,发表SCI论文10余篇,曾获浙江省科技进步二等奖等多项省部级奖项。

佃松宜 副主编

日本东北大学博士,四川大学电气工程学院教授、自动化系系主任,四川省信息与自动化技术重点实验室主任。主要专注于先进控制理论与人工智能算法研究、嵌入式计算与实时智能系统的研究与开发、机器人与智能装备的智能感知与控制技术的研究、工业测控与智能物联的研究。近5年来主持包括国家重点研发计划、基金、国网总部项目等各类科研项目近30项,累计总经费近2200万元;发表论文100多篇,其中SCI/EI检索近40篇,ESI高引论文1篇。参与编撰专著3部(其中英文专著1部),参编国家九五规划教材1部。

王晋东 特邀编委

中科院计算所博士,微软亚洲研究院机器学习研究员,主要从事迁移学习和机器学习方向的研究工作,在IJCAI、CVPR、ICDM、UbiComp、ACMMM、PERCOM、IJCNN、PRICAI、IEEE TNNLS、NEUNET、PRL、PMCJ、IMWUT、IJMLC、ICME、ACM TIST等国际权威期刊和会议上发表论文20余篇,多次获得“最佳论文”奖。作品有《迁移学习简明手册》等。

王超锋

上海大学硕士,百度计算机视觉算法工程师,主研图像处理,深度学习等方向。曾多次在国内外各类知名计算机视觉挑战赛中获得优异成绩。

郭晓锋

中国科学院硕士,爱奇艺算法工程师,主要从事图像处理、深度学习等方向的研究,曾获“2017华为软件精英挑战赛”复赛第6名。

黄伟

华南理工大学硕士,顺丰科技机器人算法工程师,主要从事计算机视觉和自然语言处理方向的研究。曾在相关领域国际期刊、会议上发表论文,并在相关竞赛中获得优异成绩。

陈方杰(Amusi)

上海大学硕士,CVer(计算机视觉知识分享和学习交流平台)创始人。

李元伟

国防科技大学硕士,深圳瀚维智能医疗科技公司高级算法工程师,南方科技大学和瀚维智能医疗联合实验室委员,主要从事机器视觉、图像处理及深度学习方向的研究工作,参编普通高等教育十三五规划教材《图像通信基础》,在IEEE TCSVT、COGN COMPUT等发表学术论文多篇,曾获湖南省/全军优秀硕士论文。

陈琳

北京航空航天大学博士(在读),研究方向为无人机智能控制与决策、仿生智能计算。2100433B

深度学习500问——AI工程师面试宝典造价信息

市场价 信息价 询价
材料名称 规格/型号 市场价
(除税)
工程建议价
(除税)
行情 品牌 单位 税率 供应商 报价日期
工程师 内存:16GB;硬盘:512GB+2T;台式图形工作站:i7-10700 P620 2G独显 3年上门服务 21.8寸显示器 查看价格 查看价格

戴尔

13% 广东峤宇科技有限公司
工程师优佳墙面 品种:内墙涂料;类型:漆;容量:25kg/桶 查看价格 查看价格

亚士漆

kg 13% 亚士漆(上海)有限公司
工程师优佳墙面 品种:内墙涂料;容量:25kg/桶;类型: 查看价格 查看价格

亚士

kg 13% 亚士漆(上海)有限公司太原办事处
工程师优佳墙面 品种:内墙涂料;容量:25kg/桶;类型: 查看价格 查看价格

亚士

kg 13% 亚士漆(上海)有限公司长春办事处
工程师优佳墙面 品种:内墙涂料;容量:25kg/桶;类型: 查看价格 查看价格

亚士

kg 13% 亚士漆(上海)有限公司长沙办事处
工程师优佳墙面 品种:内墙涂料;容量:25kg/桶;类型: 查看价格 查看价格

亚士

kg 13% 亚士漆(上海)有限公司西安办事处
工程师优佳墙面 品种:内墙涂料;容量:25kg/桶;类型: 查看价格 查看价格

亚士

kg 13% 亚士漆(上海)有限公司沈阳分公司
工程师优佳墙面 品种:内墙涂料;类型:漆;容量:25kg/桶 查看价格 查看价格

亚士漆

kg 13% 亚士漆(上海)有限公司太原办事处
材料名称 规格/型号 除税
信息价
含税
信息价
行情 品牌 单位 税率 地区/时间
工程驳船 100T以内 查看价格 查看价格

台班 清远市英德市2015年4季度信息价
工程驳船 200T以内 查看价格 查看价格

台班 清远市英德市2015年3季度信息价
工程驳船 200T以内 查看价格 查看价格

台班 清远市英德市2015年2季度信息价
工程驳船 200T以内 查看价格 查看价格

台班 清远市英德市2014年2季度信息价
工程驳船 100T以内 查看价格 查看价格

台班 清远市英德市2014年1季度信息价
工程驳船 100T以内 查看价格 查看价格

台班 清远市英德市2013年4季度信息价
工程驳船 200T以内 查看价格 查看价格

台班 清远市英德市2013年2季度信息价
工程驳船 100T以内 查看价格 查看价格

台班 清远市英德市2013年1季度信息价
材料名称 规格/需求量 报价数 最新报价
(元)
供应商 报价地区 最新报价时间
工程师 工程师站|1套 3 查看价格 河南德灿电子科技有限公司 全国   2022-09-30
工程师 1.名称:工程师2.规格、型号:工控型,配置29"液晶显示器,包含打印机 含正版操作系统及应用软件3.其他:满足设计、相关图集、标准及招标技术要求|1套 3 查看价格 北京勤瑞恒科技有限公司 全国   2021-07-29
工程师 1.名称:工程师2.规格、型号:工控型,配置29"液晶显示器,包含打印机 含正版操作系统及应用软件3.其他:满足设计、相关图集、标准及招标技术要求|1套 3 查看价格 北京勤瑞恒科技有限公司 全国   2021-07-02
工程师 笔记本电脑,CPU 不低于 2GHz 2核64位,内存不低于4G,硬盘不低于500GB(windows8 专业版),安装RSlogix5000软件、RSLinx Classic通信软件、冗余模块配置工具(RMCT)|1台 1 查看价格 广州赛瑞电子有限公司 广东   2021-05-11
工程师 i5 3 2G 工控机 液晶22 i5 3 2G|1套 3 查看价格 北京勤瑞恒科技有限公司 四川   2022-09-27
工程师 i7,3.10GHz及以上;内存:4GB ;硬盘1T|1台 1 查看价格 广州思源网络科技有限公司 广东   2018-06-15
工程师 CPU: core i7 , 内存: 8GB,硬盘:4T,DVD-RW,100/1000M 网卡,22"液晶,1280x1024,显卡 64M,光电鼠标,功能键盘|1套 3 查看价格 四川金川晟电气成套设备有限公司 全国   2022-07-25
工程师 主流I7处理器 内存8G 专业显卡2G显存 硬盘1TB|1套 2 查看价格 广州市熹尚科技设备有限公司 湖南   2021-10-12

第1章 数学基础 1

1.1 向量和矩阵 1

1.1.1 标量、向量、矩阵和张量 1

1.1.2 张量与矩阵的区别 2

1.1.3 矩阵和向量相乘的结果 2

1.1.4 向量和矩阵的范数归纳 2

1.1.5 判断一个矩阵是否为正定矩阵 4

1.2 导数和偏导数 5

1.2.1 导数偏导计算 5

1.2.2 导数和偏导数的区别 6

1.3 特征值和特征向量 6

1.3.1 特征值分解 6

1.3.2 奇异值和特征值的关系 6

1.4 概率分布与随机变量 7

1.4.1 机器学习为什么要使用概率 7

1.4.2 变量与随机变量的区别 7

1.4.3 随机变量与概率分布的联系 8

1.4.4 离散型随机变量和概率质量函数 8

1.4.5 连续型随机变量和概率密度函数 8

1.4.6 举例理解条件概率 9

1.4.7 联合概率与边缘概率的区别和联系 9

1.4.8 条件概率的链式法则 10

1.4.9 独立性和条件独立性 10

1.5 常见概率分布 11

1.5.1 伯努利分布 11

1.5.2 高斯分布 11

1.5.3 何时采用正态分布 12

1.5.4 指数分布 12

1.5.5 Laplace分布 13

1.5.6 Dirac分布和经验分布 13

1.6 期望、方差、协方差、相关系数 13

1.6.1 期望 13

1.6.2 方差 14

1.6.3 协方差 14

1.6.4 相关系数 15

第2章 机器学习基础 16

2.1 基本概念 16

2.1.1 大话机器学习本质 16

2.1.2 什么是神经网络 16

2.1.3 各种常见算法图示 17

2.1.4 计算图的导数计算 17

2.1.5 理解局部最优与全局最优 18

2.1.6 大数据与深度学习之间的关系 19

2.2 机器学习的学习方式 20

2.2.1 监督学习 20

2.2.2 非监督学习 20

2.2.3 半监督学习 20

2.2.4 弱监督学习 20

2.2.5 监督学习模型的搭建步骤 21

2.3 分类算法 22

2.3.1 常用分类算法的优缺点 22

2.3.2 分类算法的评估方法 23

2.3.3 正确率能否很好地评估分类算法 25

2.3.4 什么样的分类器是最好的 26

2.4 逻辑回归 26

2.4.1 回归的种类 26

2.4.2 逻辑回归适用性 27

2.4.3 逻辑回归与朴素贝叶斯的区别 27

2.4.4 线性回归与逻辑回归的区别 27

2.5 代价函数 28

2.5.1 为什么需要代价函数 28

2.5.2 代价函数作用原理 28

2.5.3 常见代价函数 30

2.5.4 为什么代价函数要非负 31

2.5.5 为什么用交叉熵代替二次代价函数 31

2.6 损失函数 32

2.6.1 什么是损失函数 32

2.6.2 常见的损失函数 32

2.6.3 逻辑回归为什么使用对数损失函数 34

2.6.4 对数损失函数如何度量损失 34

2.7 梯度下降法 35

2.7.1 梯度下降法的作用 36

2.7.2 梯度下降法的直观理解 36

2.7.3 梯度下降法算法描述 37

2.7.4 梯度下降法的缺点 38

2.7.5 如何对梯度下降法进行调优 38

2.7.6 随机梯度下降和批量梯度下降的区别 38

2.7.7 各种梯度下降法性能比较 40

2.8 线性判别分析 40

2.8.1 LDA思想总结 40

2.8.2 图解LDA核心思想 41

2.8.3 二类LDA算法原理 41

2.8.4 LDA算法流程总结 42

2.8.5 LDA和PCA的异同 43

2.8.6 LDA的优缺点 43

2.9 主成分分析 43

2.9.1 图解PCA核心思想 43

2.9.2 PCA算法推理 44

2.9.3 PCA算法流程总结 45

2.9.4 PCA思想总结 46

2.9.5 PCA算法的优缺点 46

2.9.6 降维的必要性及目的 46

2.9.7 KPCA与PCA的区别 47

2.10 模型评估 47

2.10.1 模型评估常用方法 48

2.10.2 误差、偏差和方差的区别和联系 48

2.10.3 为什么使用标准差 49

2.10.4 经验误差与泛化误差 50

2.10.5 图解欠拟合与过拟合 50

2.10.6 如何解决欠拟合与过拟合 52

2.10.7 交叉验证的主要作用 52

2.10.8 理解K折交叉验证 53

2.10.9 理解混淆矩阵 53

2.10.10 理解查准率与查全率 53

2.10.11 理解ROC与AUC 54

2.10.12 如何绘制ROC曲线 55

2.10.13 如何计算TPR和FPR 56

2.10.14 如何计算AUC 58

2.10.15 直观理解AUC 58

2.10.16 ROC评估分类器 60

2.10.17 代价敏感错误率与代价曲线 60

2.10.18 比较检验方法 61

2.11 决策树 61

2.11.1 决策树的基本原理 62

2.11.2 决策树的生成过程 62

2.11.3 决策树学习基本算法步骤 62

2.11.4 决策树算法的优缺点 63

2.11.5 决策树和熵的联系 63

2.11.6 熵的概念及定义 63

2.11.7 理解信息增益 64

2.11.8 决策树中熵、条件熵和信息增益的联系 64

2.11.9 决策树算法中剪枝的作用及策略 65

2.12 支持向量机(SVM) 65

2.12.1 什么是SVM 65

2.12.2 SVM能解决的问题 66

2.12.3 核函数特点及其作用 67

2.12.4 SVM为什么引入对偶问题 67

2.12.5 如何理解SVM中的对偶问题 67

2.12.6 常见的核函数 69

2.12.7 SVM的主要特点 69

2.12.8 SVM的主要缺点 70

2.12.9 逻辑回归与SVM的异同 70

2.13 贝叶斯分类器 72

2.13.1 贝叶斯分类器的基本原理 72

2.13.2 朴素贝叶斯分类器 72

2.13.3 举例理解朴素贝叶斯分类器 73

2.13.4 半朴素贝叶斯分类器 75

2.13.5 极大似然估计和贝叶斯估计的联系与区别 75

2.13.6 极大似然估计原理 76

2.13.7 图解极大似然估计 76

2.14 EM算法 77

2.14.1 EM算法的基本思想 77

2.14.2 EM算法推导 77

2.14.3 图解EM算法 78

2.14.4 EM算法流程 79

2.15 降维和聚类 79

2.15.1 图解为什么会产生维数灾难 79

2.15.2 怎样避免维数灾难 83

2.15.3 聚类和降维 83

2.15.4 聚类算法优劣的衡量标准 84

2.15.5 聚类和分类 85

2.15.6 聚类算法的性能比较 85

2.15.7 4种常用聚类方法比较 85

第3章 深度学习基础 89

3.1 基本概念 89

3.1.1 神经网络的类型 89

3.1.2 神经网络的常用模型结构 92

3.1.3 深度学习和机器学习的区别与联系 93

3.1.4 为什么使用深层表示 93

3.1.5 深度学习架构分类 94

3.1.6 如何选择深度学习开发平台 94

3.2 神经网络计算 95

3.2.1 前向传播和反向传播 95

3.2.2 如何计算神经网络的输出 96

3.2.3 如何计算卷积神经网络输出值 97

3.2.4 如何计算池化层输出值 100

3.2.5 反向传播实例 101

3.2.6 神经网络更“深”的意义 104

3.3 激活函数 104

3.3.1 为什么需要激活函数 104

3.3.2 为什么激活函数需要非线性函数 105

3.3.3 常见的激活函数及其图像 105

3.3.4 常见激活函数的导数计算 107

3.3.5 激活函数有哪些性质 108

3.3.6 如何选择激活函数 108

3.3.7 为什么tanh收敛速度比sigmoid快 109

3.3.8 Relu激活函数的优点 109

3.3.9 理解Relu激活函数的稀疏激活性 109

3.3.10 什么时候可以用线性激活函数 109

3.3.11 softmax函数的定义及作用 110

3.3.12 softmax函数如何应用于多分类 110

3.4 Batch Size 112

3.4.1 为什么需要Batch Size 112

3.4.2 如何选择Batch Size值 112

3.4.3 调节Batch Size对训练效果的影响 113

3.4.4 在合理范围内增大Batch Size的好处 113

3.4.5 盲目增大Batch Size的坏处 114

3.5 归一化 114

3.5.1 理解归一化含义 114

3.5.2 归一化和标准化的联系与区别 114

3.5.3 为什么要归一化或标准化 115

3.5.4 图解为什么要归一化 115

3.5.5 为什么归一化能提高求最优解速度 115

3.5.6 归一化有哪些类型 116

3.5.7 局部响应归一化作用 116

3.5.8 局部响应归一化原理 117

3.5.9 什么是批归一化 118

3.5.10 批归一化的优点 118

3.5.11 批归一化算法流程 118

3.5.12 批归一化和组归一化比较 119

3.5.13 权重归一化和批归一化比较 119

3.5.14 批归一化适用范围 120

3.5.15 BN、LN、IN和GN的对比 120

3.6 参数初始化 121

3.6.1 参数初始化应满足的条件 121

3.6.2 常用的几种初始化方式 121

3.6.3 全0初始化带来的问题 121

3.6.4 全都初始化为同样的值 122

3.6.5 初始化为小的随机数 123

3.6.6 用校准方差 123

3.7 预训练与微调 123

3.7.1 什么是预训练和微调 123

3.7.2 预训练和微调的作用 124

3.7.3 预训练模型的复用 124

3.7.4 预训练和迁移学习 125

3.7.5 微调时网络参数是否更新 125

3.7.6 微调模型的三种状态 125

3.7.7 为什么深层神经网络难以训练 125

3.8 超参数 127

3.8.1 超参数有哪些 127

3.8.2 参数和模型的关系 127

3.8.3 参数和超参数的区别 127

3.8.4 如何寻找超参数的最优值 128

3.8.5 超参数搜索的一般过程 128

3.9 学习率 129

3.9.1 学习率的作用 129

3.9.2 学习率衰减的常用参数 129

3.9.3 常用的学习率衰减方法 129

3.10 正则化 133

3.10.1 为什么要正则化 133

3.10.2 常见正则化方法 133

3.10.3 图解L1和L2正则化 134

3.10.4 Dropout具体工作流程 135

3.10.5 为什么Dropout可以解决过拟合问题 137

3.10.6 Dropout的缺点 137

第4章 卷积神经网络的经典网络 138

4.1 LeNet-5 138

4.1.1 模型介绍 138

4.1.2 模型结构 138

4.1.3 模型特性 139

4.2 AlexNet 140

4.2.1 模型介绍 140

4.2.2 模型结构 140

4.2.3 模型特性 141

4.3 ZFNet 142

4.3.1 模型介绍 142

4.3.2 模型结构 142

4.3.3 模型特性 143

4.4 NIN 144

4.4.1 模型介绍 144

4.4.2 模型结构 144

4.4.3 模型特点 145

4.5 VGGNet 145

4.5.1 模型介绍 145

4.5.2 模型结构 146

4.5.3 模型特性 147

4.6 GoogLeNet 147

4.6.1 模型介绍 147

4.6.2 模型结构 148

4.6.3 模型特性 152

4.7 ResNet 152

4.7.1 模型介绍 152

4.7.2 模型结构 152

4.7.3 模型特性 154

4.8 DenseNet 155

4.8.1 模型介绍 155

4.8.2 模型结构 156

4.8.3 模型特性 157

4.9 CNN模型在GoogLeNet、VGGNet或AlexNet上调整的原因 157

第5章 卷积神经网络 159

5.1 CNN的结构 159

5.1.1 CNN和人类视觉的关系 159

5.1.2 CNN的结构组成 160

5.2 输入层 160

5.2.1 输入层作用 160

5.2.2 数据预处理 160

5.3 卷积层 161

5.3.1 卷积原理 161

5.3.2 卷积在图像中的作用 162

5.3.3 卷积层的基本参数 163

5.3.4 卷积核的类型 164

5.3.5 1×1卷积的作用 165

5.3.6 卷积核是否越大越好 166

5.3.7 每层卷积是否只能用一种尺寸的卷积核 167

5.3.8 如何减少卷积层参数量 167

5.3.9 在标准卷积中同时考虑通道和区域的优缺点 167

5.3.10 采用宽卷积的好处 169

5.4 激活层 169

5.4.1 激活层的作用 169

5.4.2 BN层和激活层的位置顺序选择 170

5.5 池化层 170

5.5.1 池化层作用 170

5.5.2 池化方法 171

5.5.3 卷积层和池化层的区别 171

5.5.4 NetVLAD池化 172

5.6 全连接层 172

5.6.1 全连接如何把二维特征图转化成一个一维向量 172

5.6.2 全卷积神经网络取代全连接层 173

5.6.3 图像分类中全连接层对卷积神经网络性能的影响 173

5.7 二维卷积与三维卷积 174

5.7.1 二维卷积与三维卷积的区别 174

5.7.2 图解三维卷积 175

5.7.3 RGB图不使用三维卷积的原因 176

5.8 理解转置卷积与棋盘效应 176

5.8.1 标准卷积 176

5.8.2 转置卷积 177

5.8.3 棋盘效应 178

5.9 卷积神经网络凸显共性的方法 179

5.9.1 局部连接 179

5.9.2 权重共享 180

5.9.3 池化操作 181

5.10 局部卷积 181

5.10.1 全连接、局部连接、全卷积与局部卷积对比 182

5.10.2 局部卷积的应用 182

5.11 CNN可视化 183

5.11.1 特征层学到了什么 183

5.11.2 特征层随训练而演化 184

5.11.3 消融分析 185

5.11.4 常见的网络可视化方法 185

5.12 卷积神经网络的优化及应用 186

5.12.1 卷积神经网络的参数设置 186

5.12.2 如何提高卷积神经网络的泛化能力 186

5.12.3 卷积神经网络的区域不变性和组合性 187

5.12.4 卷积神经网络在不同领域的应用 188

第6章 循环神经网络 189

6.1 为什么需要RNN 189

6.2 图解RNN基本结构 189

6.2.1 基本的单层网络结构 189

6.2.2 图解经典RNN结构 190

6.2.3 Vector-to-Sequence结构 191

6.2.4 Sequence-to-Vector结构 192

6.2.5 Encoder-Decoder结构 192

6.2.6 3种基本结构的应用场景 193

6.2.7 图解RNN中的注意机制 194

6.3 RNN的性质 195

6.3.1 RNN的典型特点 195

6.3.2 CNN和RNN的区别 196

6.3.3 RNN和FNN的异同 196

6.3.4 为什么RNN训练的时候损失值波动很大 197

6.4 RNN的后向传播 197

6.4.1 BPTT算法推导 197

6.4.2 RNN中为什么会出现梯度消失 198

6.4.3 如何解决RNN中的梯度消失问题 199

6.5 长短期记忆网络(LSTM) 199

6.5.1 LSTM的产生原因 199

6.5.2 标准的RNN和LSTM的区别 199

6.5.3 LSTM核心思想 200

6.5.4 LSTM流行的变体 203

6.5.5 LSTM与GRU的区别 204

6.6 常见的RNN结构上的扩展和改进 205

6.6.1 简单循环神经网络(SRN) 205

6.6.2 双向循环神经网络(BRNN) 205

6.6.3 深度循环神经网络(Deep RNN) 206

6.6.4 回声状态网络(ESN) 206

6.6.5 时钟频率驱动 RNN(CW-RNN) 207

6.6.6 包含时间间隔的RNN 208

6.7 RNN在NLP中的典型应用举例 209

6.8 RNN与图像领域的结合举例 210

6.8.1 卷积循环神经网络 210

6.8.2 网格循环神经网络 211

6.8.3 像素循环神经网络 211

6.9 RNN与条件随机场的结合 212

第7章 生成对抗网络 213

7.1 GAN的基本概念 213

7.1.1 如何通俗地理解GAN 213

7.1.2 GAN的形式化表达 213

7.1.3 GAN的目标函数 214

7.1.4 GAN的目标函数和交叉熵损失的联系和区别 214

7.1.5 GAN的损失值为什么降不下去 215

7.1.6 生成式模型和判别式模型的区别 215

7.1.7 模式崩塌和模式丢弃 216

7.1.8 为什么会出现模式崩塌 217

7.1.9 如何解决模式崩塌问题 217

7.2 GAN的生成模型评价 219

7.2.1 Inception Score 219

7.2.2 Mode Score 220

7.2.3 Kernel MMD 220

7.2.4 Wasserstein Distance 220

7.2.5 Fréchet Inception Distance(FID) 221

7.2.6 1-NN分类器(1-Nearest Neighbor Classifier) 221

7.2.7 其他评价方法 221

7.3 其他常见的生成模型 221

7.3.1 自回归模型:pixelRNN与pixelCNN 221

7.3.2 变分自动编码器(VAE)原理 222

7.4 GAN的改进与优化 223

7.4.1 如何生成指定类型的图像(CGAN) 223

7.4.2 CNN与GAN的结合(DCGAN) 224

7.4.3 GAN为什么容易训练崩溃 224

7.4.4 WGAN如何解决训练崩溃问题 225

7.4.5 带有梯度正则的WGAN(WGAN-GP) 225

7.4.6 最小二乘GAN(LSGAN) 226

7.4.7 如何尽量避免GAN的训练崩溃问题 227

7.5 GAN的应用:图像翻译 227

7.5.1 什么是图像翻译 227

7.5.2 有监督图像翻译(pix2pix) 228

7.5.3 有监督图像翻译的缺点 229

7.5.4 无监督图像翻译(CycleGAN) 230

7.5.5 多领域的无监督图像翻译(StarGAN) 231

7.6 GAN的应用:文本生成 232

7.6.1 传统GAN为什么不适合文本任务 232

7.6.2 SeqGAN用于文本生成 232

7.7 GAN在其他领域的应用 233

7.7.1 数据增广 233

7.7.2 图像超分辨与图像补全 234

7.7.3 语音领域 234

第8章 目标检测 235

8.1 基本概念 235

8.1.1 目标检测 235

8.1.2 目标检测要解决的核心问题 236

8.1.3 目标检测的算法分类 236

8.1.4 目标检测的应用领域 237

8.2 two-stage目标检测算法 237

8.2.1 R-CNN 237

8.2.2 Fast R-CNN 239

8.2.3 Faster R-CNN 242

8.2.4 R-FCN 245

8.2.5 FPN 248

8.2.6 Mask R-CNN 251

8.3 one-stage目标检测算法 254

8.3.1 YOLO 254

8.3.2 YOLOv2 257

8.3.3 YOLO9000 261

8.3.4 YOLOv3 262

8.3.5 YOLOv4 263

8.3.6 SSD 264

8.3.7 DSSD 267

8.3.8 RetinaNet 269

8.3.9 RFBNet 271

8.3.10 M2Det 273

8.4 目标检测的常用数据集 275

8.4.1 PASCAL VOC 275

8.4.2 Microsoft COCO 275

8.4.3 谷歌Open Image 276

8.4.4 ImageNet 276

8.5 目标检测常用标注工具 276

8.5.1 LabelImg 276

8.5.2 LabelMe 276

8.5.3 Labelbox 277

8.5.4 RectLabel 277

8.5.5 CVAT 277

8.5.6 VIA 277

8.5.7 其他标注工具 278

第9章 图像分割 279

9.1 常见的图像分割算法 279

9.1.1 基于阈值的分割算法 279

9.1.2 基于边缘检测的分割算法 279

9.1.3 基于区域的分割算法 280

9.1.4 基于神经网络技术的图像分割算法 280

9.1.5 基于深度学习的图像分割算法分类 280

9.1.6 常见的深度学习图像分割算法 281

9.2 FCN 282

9.2.1 为什么CNN对像素级别的分类很难 282

9.2.2 FCN有哪些改变 282

9.2.3 FCN的结构 283

9.2.4 全连接层和卷积层如何相互转化 283

9.2.5 为什么传统CNN的输入图片大小是固定的 284

9.2.6 把全连接层的权重重塑成卷积层的滤波器的好处 284

9.2.7 FCN如何进行逐个像素点预测分类 285

9.2.8 反卷积层理解 286

9.2.9 跳级(skip)结构 288

9.2.10 模型训练 289

9.2.11 FCN的优缺点 292

9.3 U-Net 292

9.4 U-Net 295

9.5 SegNet 296

9.6 LinkNet 297

9.7 RefineNet 299

9.8 PSPNet 300

9.9 DeepLab系列 302

9.9.1 DeepLabv1 303

9.9.2 DeepLabv2 305

9.9.3 DeepLabv3 306

9.9.4 DeepLabv3 307

9.10 Mask R-CNN作为目标分割的介绍 310

9.10.1 Mask R-CNN框架 310

9.10.2 Mask R-CNN损失函数 310

9.10.3 Mask R-CNN 算法步骤 311

9.10.4 RoI池化与RoI Align 311

9.10.5 Mask R-CNN代码实现总体框架 311

9.10.6 Mask R-CNN训练和推导过程的区别 312

9.10.7 Mask R-CNN扩展 312

9.11 基于弱监督学习的图像分割 313

9.11.1 涂鸦标记(ScribbleSup) 314

9.11.2 图像级别标记(CCNN) 315

9.11.3 期望最大化估计像素类别 316

9.11.4 图像、边框与涂鸦标记融合框架 317

第10章 迁移学习 318

10.1 迁移学习基础知识 318

10.1.1 什么是迁移学习 318

10.1.2 为什么需要迁移学习 319

10.1.3 迁移学习与已有学习方式的区别和联系 320

10.1.4 负迁移 321

10.2 迁移学习的研究领域 322

10.2.1 按目标域标签分类 323

10.2.2 按学习方法分类 323

10.2.3 按特征分类 323

10.2.4 按离线与在线形式分类 324

10.3 迁移学习的应用 324

10.3.1 计算机视觉 325

10.3.2 文本分类 325

10.3.3 时间序列 326

10.3.4 医疗健康 327

10.4 迁移学习的基本方法 327

10.4.1 基于实例的迁移学习方法 328

10.4.2 基于特征的迁移学习方法 328

10.4.3 基于模型的迁移学习方法 329

10.4.4 基于关系的迁移学习方法 330

10.5 分布对齐的常用方法 331

10.5.1 数据分布自适应方法 331

10.5.2 特征选择方法 333

10.5.3 子空间学习方法 334

10.6 深度迁移学习方法 338

10.6.1 深度网络的可迁移性 338

10.6.2 微调 342

10.6.3 深度网络自适应 342

10.6.4 深度对抗网络迁移 347

10.7 迁移学习研究前沿 350

10.7.1 机器智能与人类经验结合的迁移学习 350

10.7.2 传递迁移学习 350

10.7.3 终身迁移学习 351

10.7.4 在线迁移学习 352

10.7.5 迁移强化学习 353

10.7.6 迁移学习的可解释性 353

第11章 网络构架介绍及训练 354

11.1 TensorFlow 354

11.1.1 TensorFlow的设计理念 354

11.1.2 TensorFlow的特点 355

11.1.3 TensorFlow的系统架构 356

11.1.4 TensorFlow的编程模型 357

11.1.5 基于TensorFlow搭建VGG16 360

11.2 Caffe 361

11.2.1 Caffe的特性 362

11.2.2 Caffe2的特性 362

11.2.3 Caffe2和PyTorch的区别 362

11.3 PyTorch 362

11.3.1 为什么选择PyTorch 363

11.3.2 PyTorch的架构 363

11.3.3 PyTorch 1.0三大重要更新 364

11.4 常见的深度学习分布式框架 364

11.4.1 PaddlePaddle 365

11.4.2 Deeplearning4j 366

11.4.3 Mahout 367

11.4.4 Spark MLlib 368

11.4.5 Spark Stream 369

11.4.6 Ray 370

11.4.7 Horovod 370

11.4.8 BigDL 371

11.4.9 Petastorm 371

11.4.10 TensorFlowOnSpark 372

11.5 网络搭建原则及训练技巧 372

11.5.1 网络搭建原则 372

11.5.2 网络训练技巧 373

第12章 网络优化技巧 376

12.1 数据集和样本优化 376

12.1.1 如何解决训练样本少的问题 376

12.1.2 深度学习能否胜任所有数据集 377

12.1.3 训练集、验证集、测试集的定义及划分 377

12.1.4 类别不平衡的产生原因 378

12.1.5 常见的类别不平衡问题的解决方法 378

12.1.6 常用的数据增强方法 379

12.2 数据不匹配问题 380

12.2.1 如何定位数据不匹配问题 380

12.2.2 常见的数据不匹配的场景 380

12.2.3 如何解决数据不匹配问题 380

12.3 网络构建和初始化 381

12.3.1 权重的初始化方法 381

12.3.2 激活函数的特点 382

12.3.3 卷积核设计尺寸都是奇数的原因 383

12.3.4 在网络设计中要权重共享的原因 383

12.4 特征选择 383

12.4.1 特征的类型 383

12.4.2 如何考虑特征选择 384

12.4.3 特征选择方法分类 384

12.4.4 特征选择的目的 384

12.5 梯度消失和梯度爆炸 384

12.5.1 使用梯度更新规则的原因 384

12.5.2 梯度消失和梯度爆炸产生的原因 385

12.5.3 如何解决梯度消失和梯度爆炸问题 386

12.5.4 防止梯度下降陷入局部最优困境 386

12.6 评价指标 387

12.6.1 设置单一数字评价指标的原因 387

12.6.2 Top5错误率 387

12.6.3 理解泛化误差、方差和偏差 388

12.7 模型和系统优化 388

12.7.1 是否存在比已知算法更好的算法 388

12.7.2 判断和解决共线性问题 389

12.7.3 深度学习不用二阶优化的原因 389

12.7.4 提升模型的稳定性 389

12.7.5 改善模型的思路 390

12.7.6 快速构建有效初始模型 391

12.7.7 通过模型重新观察数据 391

12.7.8 提高深度学习系统的性能 392

第13章 超参数调整 393

13.1 超参数的概念 393

13.1.1 参数和超参数的区别 393

13.1.2 超参数的类别 393

13.1.3 进行超参数调优的原因 394

13.1.4 超参数的重要性排序 394

13.1.5 部分超参数如何影响模型性能 395

13.1.6 部分超参数的合适范围 396

13.2 网络训练中的超参数调整策略 397

13.2.1 超参数优化的一般过程 397

13.2.2 如何调试模型 397

13.2.3 学习率调整的原因 398

13.2.4 学习率调整的策略 398

13.2.5 在极端批样本数量下训练网络 402

13.3 合理使用预训练网络 403

13.3.1 什么是微调 403

13.3.2 微调的方式 403

13.3.3 微调先冻结底层而训练顶层的原因 404

13.3.4 在不同的数据集下如何进行微调 404

13.3.5 在目标检测中使用预训练模型的优劣 404

13.3.6 目标检测如何从零开始训练 405

13.4 自动化超参数搜索方法 405

13.4.1 网格搜索 405

13.4.2 随机搜索 406

13.4.3 基于模型的超参数优化 406

13.5 自动机器学习AutoML 406

13.5.1 为什么需要AutoML 406

13.5.2 AutoML的问题构成 407

13.5.3 常见的AutoML框架 407

13.5.4 神经架构搜索(NAS) 408

第14章 模型压缩、加速和移动端部署 410

14.1 模型压缩 410

14.2 为什么需要模型压缩和加速 410

14.3 模型压缩方法 411

14.3.1 前端压缩和后端压缩对比 411

14.3.2 网络剪枝 411

14.3.3 典型剪枝方法的对比 413

14.3.4 网络蒸馏 413

14.3.5 前端压缩 413

14.3.6 后端压缩 414

14.3.7 低秩分解 416

14.3.8 总体压缩效果评价指标 416

14.4 网络压缩的未来研究方向 417

14.5 模型优化加速方法 418

14.5.1 模型优化加速方法类别 418

14.5.2 TensorRT加速原理 418

14.5.3 TensorRT如何优化重构模型 420

14.5.4 TensorRT的加速效果 420

14.6 如何选择压缩和加速方法 420

14.7 高效CNN网络设计的准则 421

14.7.1 分组卷积 421

14.7.2 深度可分离卷积 422

14.7.3 当输入/输出的通道数相等时,MAC最小 424

14.7.4 减少分组卷积的数量 424

14.7.5 降低网络碎片化程度(分支数量) 425

14.7.6 减少元素级操作 426

14.8 常用的轻量级网络 426

14.8.1 SequeezeNet 426

14.8.2 MobileNet 429

14.8.3 MobileNet-v2 432

14.8.4 MobileNet-v1和MobileNet-v2微结构比较 433

14.8.5 ResNet和MobileNet-v2微结构比较 434

14.8.6 Xception 434

14.8.7 ShuffleNet-v1 436

14.8.8 ShuffleNet-v2 438

14.9 现有的移动端开源框架及其特点 440

14.9.1 NCNN 440

14.9.2 QNNPACK 441

14.9.3 Prestissimo 443

14.9.4 MDL 445

14.9.5 Paddle-Mobile 446

14.9.6 MACE 446

14.9.7 FeatherCNN 448

14.9.8 TensorFlow Lite 449

14.9.9 PocketFlow 450

14.9.10 MDL、NCNN和TFLite对比 452

14.10 移动端开源框架部署 453

《深度学习500问——AI工程师面试宝典》系统地描述了深度学习的基本理论算法及应用。全书共14章,第1~3章论述了数学基础、机器学习基础和深度学习基础;第4~7章介绍了一些经典网络及计算机视觉领域中常用的CNN、RNN、GAN等网络结构技术;第8~9章介绍了深度学习在计算机视觉领域的目标检测及图像分割两大应用;第10~14章介绍了计算机视觉领域主要的优化方法及思路等,包括迁移学习、网络架构及训练、网络优化技巧、超参数调整及模型的压缩和加速等。本书凝聚了众多一线科研人员及工程师的经验,旨在培养读者发现问题、解决问题、扩展问题的能力。

本书内容取材于编者在日常学习过程中总结的知识点及各大公司常见的笔试、面试题。本书可为高等院校计算机科学、信息科学、人工智能、控制科学与工程、电子科学与技术等领域的研究及教学人员提供参考,也可为相关专业本科生及研究生提供思考方向,还可为深度学习及计算机视觉领域的初、中级研究人员和工程技术人员提供参考,尤其适合需要查漏补缺的应聘者及提供相关岗位的面试官阅读。

深度学习500问——AI工程师面试宝典作者简介常见问题

深度学习500问——AI工程师面试宝典作者简介文献

基于深度学习的安全帽检测系统设计与实现 基于深度学习的安全帽检测系统设计与实现

格式:pdf

大小:5KB

页数: 2页

评分: 4.3

基于深度学习的安全帽检测系统设计与实现 现如今 ,生产安全越来越受到企业的重视 ,然而与企业高度现代化的生产水 平不同 ,安全防护措施依然还很落后。比如对安全帽佩戴的监管工作大多都是由 人工完成 ,监管成本高且效率低。 近年来 ,深度学习技术有着跨越式的发展 ,所以一些研究人员开始了基于深 度学习的安全帽检测研究 ,但大多采用安全帽颜色特征进行检测 ,从而受背景色 干扰较大 ,精度较低。根据以上问题 ,本文设计并实现了一套基于深度学习的智能 安防系统。 该系统的主要功能是对摄像头监控区域进行实时安防预警 ,实现了行人检测、 安全帽佩戴检测、智能报警和系统管理等功能。本文利用 SSD(Single Shot MultiBox Detector) 模型分别训练了行人检测模型和安全帽检测模型 ,用来实现 相关的检测功能 ,本文主要以安全帽检测的角度对该系统的设计与实现进行叙述。 由于传统的安全

立即下载
基于深度学习的高效电力部件识别 基于深度学习的高效电力部件识别

格式:pdf

大小:5KB

页数: 8页

评分: 4.5

传统的图像识别方法,不能有效检测出电力部件的具体位置,同时在干扰物较多的场景下识别准确率较低。本文针对以上问题提出一种基于MASK LSTM-CNN模型的电力部件巡检图像识别方法。结合已有的Mask R-CNN方法,利用长短期记忆神经网络,通过络融合上下文信息来构建MASK LSTM-CNN模型,然后结合电力部件的具体特征进一步利用优化算法来优化模型的参数,使设计的模型能够在干扰信息较多的现场环境下依然可以准确识别电力部件,成功解决了已有方法中存在的电力部件在被遮挡情况下识别率较低的问题,大大改善了部件识别的精度。结合实际采集的电力部件巡检图像数据集对提出的模型进行大量测试验证,实验结果表明提出的MASK LSTM-CNN模型相比于R-FCN、Faster R-CNN等模型检测效果更优,平均识别准确率提高9%-12%左右,有效解决了干扰信息较多的电力场景中的部件识别问题。

立即下载

每逢毕业季在校园即将想成为造价师的学子们,都要考虑找工作,找工作就意味着要面试,其实面试也是有很多套路可选的,其实面试题大多重复可选,下面是我给大家汇总了一些面试常问的问题。

 

工程造价面试常问的专业问题

1、是否能看懂施工基础图纸,对结构图集是否可以熟练掌握?

2、是否能够掌握造价的工作流程与工作内容?

3、是否熟悉造价员工作必备的清单定额与清单规范?

4、是否能够熟练运用工程计价软件?

5、是否能够独立编制招投标报价、控制价,工程结算等文件?

工程造价员的工作职责:

1、熟悉施工图纸、设计和施工方案、施工变更、施工文件和施工合同、相关法律法规,全面掌握工程合同文件的经济条款和分包合同文件,做好合同交底工作。

2、负责编制项目预算,审核项目月度目标成本,根据现场实际情况,比较分析实际成本与目标成本的差异。

3、配合公司编制工程计划造价,根据施工方案和现场实际情况提出合理化建议。

4、熟悉施工现场生产进度,每月编制本月施工生产统计报表;根据下月生产进度计划,提前编制下月施工预算。

5、参与起草分包工作计划,根据分包合同包含的工作内容和单价编制分包工作计划。

6、参与劳务队结算。

所以学子们,外出找工作千万不要慌张,掌握一些常问的面试题在加上对专业的理解,你就可以提高百分之20面试成功的几率,学子们,面试时候一定要注意着装打扮,第一印象是面试官给你的,所以来说第一印象很重要,希望造价学子们前程似锦,未来可期。

1 范围

2 术语和定义

3 深度学习工程师能力评估要素

4 深度学习初级工程师

4.1基本要求

4.2专业知识要求

4.3工程能力要求

4.4业务理解与实践能力要求

5 深度学习中级工程师

5.1基本要求

5.2专业知识要求

5.3工程能力要求

5.4业务理解与实践能力要求

6 深度学习高级工程师

6.1基本要求

6.2专业知识要求

6.3工程能力要求

6.4业务理解与实践能力要求。 2100433B

第一部分:深度学习1、神经网络基础问题

(1)Backpropagation(要能推倒)

后向传播是在求解损失函数L对参数w求导时候用到的方法,目的是通过链式法则对参数进行一层一层的求导。这里重点强调:要将参数进行随机初始化而不是全部置0,否则所有隐层的数值都会与输入相关,这称为对称失效。

大致过程是:

首先前向传导计算出所有节点的激活值和输出值, 计算整体损失函数: 然后针对第L层的每个节点计算出残差(这里是因为UFLDL中说的是残差,本质就是整体损失函数对每一层激活值Z的导数),所以要对W求导只要再乘上激活函数对W的导数即可

(2)梯度消失、梯度爆炸

梯度消失:这本质上是由于激活函数的选择导致的, 最简单的sigmoid函数为例,在函数的两端梯度求导结果非常小(饱和区),导致后向传播过程中由于多次用到激活函数的导数值使得整体的乘积梯度结果变得越来越小,也就出现了梯度消失的现象。

梯度爆炸:同理,出现在激活函数处在激活区,而且权重W过大的情况下。但是梯度爆炸不如梯度消失出现的机会多。

(3)常用的激活函数

激活函数 公式 缺点 优点
Sigmoid σ(x)=1/(1+e−x)σ ( x ) = 1 / ( 1 + e − x )

1、会有梯度弥散

2、不是关于原点对称

3、计算exp比较耗时

-
Tanh tanh(x)=2σ(2x)−1tanh ⁡ ( x ) = 2 σ ( 2 x ) − 1

梯度弥散没解决 1、解决了原点对称问题

2、比sigmoid更快

ReLU f(x)=max(0,x)f ( x ) = max ( 0 , x )

梯度弥散没完全解决,在(-)部分相当于神经元死亡而且不会复活 1、解决了部分梯度弥散问题

2、收敛速度更快

Leaky ReLU f(x)=1(x<0)(αx)+1(x>=0)(x)f ( x ) = 1 ( x < 0 ) ( α x ) + 1 ( x >= 0 ) ( x ) - 解决了神经死亡问题
Maxout max(wT1x+b1,wT2x+b2)max ( w 1 T x + b 1 , w 2 T x + b 2 )

参数比较多,本质上是在输出结果上又增加了一层 克服了ReLU的缺点,比较提倡使用

(4)参数更新方法

方法名称 公式
Vanilla update x += - learning_rate * dx
Momentum update动量更新 v = mu * v - learning_rate * dx # integrate velocity

x += v # integrate position

Nesterov Momentum x_ahead = x + mu * v

v = mu * v - learning_rate * dx_ahead

x += v

Adagrad

(自适应的方法,梯度大的方向学习率越来越小,由快到慢)

cache += dx**2

x += - learning_rate * dx / (np.sqrt(cache) + eps)

Adam m = beta1*m + (1-beta1)dx

v = beta2*v + (1-beta2)(dx**2)

x += - learning_rate * m / (np.sqrt(v) + eps)

(5)解决overfitting的方法

dropout, regularization, batch normalizatin,但是要注意dropout只在训练的时候用,让一部分神经元随机失活。

Batch normalization是为了让输出都是单位高斯激活,方法是在连接和激活函数之间加入BatchNorm层,计算每个特征的均值和方差进行规则化。

2、CNN问题

(1) 思想

改变全连接为局部连接,这是由于图片的特殊性造成的(图像的一部分的统计特性与其他部分是一样的),通过局部连接和参数共享大范围的减少参数值。可以通过使用多个filter来提取图片的不同特征(多卷积核)。

(2)filter尺寸的选择

通常尺寸多为奇数(1,3,5,7)

(3)输出尺寸计算公式

输出尺寸=(N - F +padding*2)/stride + 1

步长可以自由选择通过补零的方式来实现连接。

(4)pooling池化的作用

虽然通过.卷积的方式可以大范围的减少输出尺寸(特征数),但是依然很难计算而且很容易过拟合,所以依然利用图片的静态特性通过池化的方式进一步减少尺寸。

(5)常用的几个模型,这个最好能记住模型大致的尺寸参数。

名称 特点
LeNet5 –没啥特点-不过是第一个CNN应该要知道
AlexNet 引入了ReLU和dropout,引入数据增强、池化相互之间有覆盖,三个卷积一个最大池化+三个全连接层
VGGNet 采用1*1和3*3的卷积核以及2*2的最大池化使得层数变得更深。常用VGGNet-16和VGGNet19
Google Inception Net

我称为盗梦空间网络

这个在控制了计算量和参数量的同时,获得了比较好的分类性能,和上面相比有几个大的改进:

1、去除了最后的全连接层,而是用一个全局的平均池化来取代它;

2、引入Inception Module,这是一个4个分支结合的结构。所有的分支都用到了1*1的卷积,这是因为1*1性价比很高,可以用很少的参数达到非线性和特征变换。

3、Inception V2第二版将所有的5*5变成2个3*3,而且提出来著名的Batch Normalization;

4、Inception V3第三版就更变态了,把较大的二维卷积拆成了两个较小的一维卷积,加速运算、减少过拟合,同时还更改了Inception Module的结构。

微软ResNet残差神经网络(Residual Neural Network) 1、引入高速公路结构,可以让神经网络变得非常深

2、ResNet第二个版本将ReLU激活函数变成y=x的线性函数

2、RNN

1、RNN原理:

在普通的全连接网络或CNN中,每层神经元的信号只能向上一层传播,样本的处理在各个时刻独立,因此又被成为前向神经网络(Feed-forward+Neural+Networks)。而在RNN中,神经元的输出可以在下一个时间戳直接作用到自身,即第i层神经元在m时刻的输入,除了(i-1)层神经元在该时刻的输出外,还包括其自身在(m-1)时刻的输出。所以叫循环神经网络

2、RNN、LSTM、GRU区别

RNN引入了循环的概念,但是在实际过程中却出现了初始信息随时间消失的问题,即长期依赖(Long-Term Dependencies)问题,所以引入了LSTM。 LSTM:因为LSTM有进有出且当前的cell informaton是通过input gate控制之后叠加的,RNN是叠乘,因此LSTM可以防止梯度消失或者爆炸。推导forget gate,input gate,cell state, hidden information等因为LSTM有进有出且当前的cell informaton是通过input gate控制之后叠加的,RNN是叠乘,因此LSTM可以防止梯度消失或者爆炸的变化是关键,下图非常明确适合记忆: GRU是LSTM的变体,将忘记门和输入们合成了一个单一的更新门。

3、LSTM防止梯度弥散和爆炸

LSTM用加和的方式取代了乘积,使得很难出现梯度弥散。但是相应的更大的几率会出现梯度爆炸,但是可以通过给梯度加门限解决这一问题。

4、引出word2vec

这个也就是Word Embedding,是一种高效的从原始语料中学习字词空间向量的预测模型。分为CBOW(Continous Bag of Words)和Skip-Gram两种形式。其中CBOW是从原始语句推测目标词汇,而Skip-Gram相反。CBOW可以用于小语料库,Skip-Gram用于大语料库。具体的就不是很会了。

3、GAN

1、GAN的思想

GAN结合了生成模型和判别模型,相当于矛与盾的撞击。生成模型负责生成最好的数据骗过判别模型,而判别模型负责识别出哪些是真的哪些是生成模型生成的。但是这些只是在了解了GAN之后才体会到的,但是为什么这样会有效呢?

假设我们有分布Pdata(x),我们希望能建立一个生成模型来模拟真实的数据分布,假设生成模型为Pg(x;θθ ),我们的目的是求解θθ 的值,通常我们都是用最大似然估计。但是现在的问题是由于我们相用NN来模拟Pdata(x),但是我们很难求解似然函数,因为我们没办法写出生成模型的具体表达形式,于是才有了GAN,也就是用判别模型来代替求解最大似然的过程。

在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。这样我们的目的就达成了:我们得到了一个生成式的模型G,它可以用来生成图片。

2、GAN的表达式

通过分析GAN的表达可以看出本质上就是一个minmax问题。其中V(D, G)可以看成是生成模型和判别模型的差异,而minmaxD说的是最大的差异越小越好。这种度量差异的方式实际上叫做Jensen-Shannon divergence。

3、GAN的实际计算方法

因为我们不可能有Pdata(x)的分布,所以我们实际中都是用采样的方式来计算差异(也就是积分变求和)。具体实现过程如下:

有几个关键点:判别方程训练K次,而生成模型只需要每次迭代训练一次,先最大化(梯度上升)再最小化(梯度下降)。

但是实际计算时V的后面一项在D(x)很小的情况下由于log函数的原因会导致更新很慢,所以实际中通常将后一项的log(1-D(x))变为-logD(x)。

实际计算的时候还发现不论生成器设计的多好,判别器总是能判断出真假,也就是loss几乎都是0,这可能是因为抽样造成的,生成数据与真实数据的交集过小,无论生成模型多好,判别模型也能分辨出来。解决方法有两个:1、用WGAN 2、引入随时间减少的噪声

4、对GAN有一些改进有引入f-divergence,取代Jensen-Shannon divergence,还有很多,这里主要介绍WGAN

5、WGAN

上面说过了用f-divergence来衡量两个分布的差异,而WGAN的思路是使用Earth Mover distance (挖掘机距离 Wasserstein distance)。

第二部分、机器学习准备1、决策树树相关问题

(1)各种熵的计算

熵、联合熵、条件熵、交叉熵、KL散度(相对熵)

熵用于衡量不确定性,所以均分的时候熵最大 KL散度用于度量两个分布的不相似性,KL(p||q)等于交叉熵H(p,q)-熵H(p)。交叉熵可以看成是用q编码P所需的bit数,减去p本身需要的bit数,KL散度相当于用q编码p需要的额外bits。 交互信息Mutual information :I(x,y) = H(x)-H(x|y) = H(y)-H(y|x) 表示观察到x后,y的熵会减少多少。

(2)常用的树搭建方法:ID3、C4.5、CART

上述几种树分别利用信息增益、信息增益率、Gini指数作为数据分割标准。

其中信息增益衡量按照某个特征分割前后熵的减少程度,其实就是上面说的交互信息。 用上述信息增益会出现优先选择具有较多属性的特征,毕竟分的越细的属性确定性越高。所以提出了信息增益率的概念,让含有较多属性的特征的作用降低。 CART树在分类过程中使用的基尼指数Gini,只能用于切分二叉树,而且和ID3、C4.5树不同,Cart树不会在每一个步骤删除所用特征。

(3)防止过拟合:剪枝

剪枝分为前剪枝和后剪枝,前剪枝本质就是早停止,后剪枝通常是通过衡量剪枝后损失函数变化来决定是否剪枝。后剪枝有:错误率降低剪枝、悲观剪枝、代价复杂度剪枝

(4)前剪枝的几种停止条件

节点中样本为同一类 特征不足返回多类 如果某个分支没有值则返回父节点中的多类 样本个数小于阈值返回多类 2、逻辑回归相关问题

(1)公式推导一定要会

(2)逻辑回归的基本概念

这个最好从广义线性模型的角度分析,逻辑回归是假设y服从Bernoulli分布。

(3)L1-norm和L2-norm

其实稀疏的根本还是在于L0-norm也就是直接统计参数不为0的个数作为规则项,但实际上却不好执行于是引入了L1-norm;而L1norm本质上是假设参数先验是服从Laplace分布的,而L2-norm是假设参数先验为Gaussian分布,我们在网上看到的通常用图像来解答这个问题的原理就在这。

但是L1-norm的求解比较困难,可以用坐标轴下降法或是最小角回归法求解。

(4)LR和SVM对比

首先,LR和SVM最大的区别在于损失函数的选择,LR的损失函数为Log损失(或者说是逻辑损失都可以)、而SVM的损失函数为hinge loss。

其次,两者都是线性模型。

最后,SVM只考虑支持向量(也就是和分类相关的少数点)

(5)LR和随机森林区别

随机森林等树算法都是非线性的,而LR是线性的。LR更侧重全局优化,而树模型主要是局部的优化。

(6)常用的优化方法

逻辑回归本身是可以用公式求解的,但是因为需要求逆的复杂度太高,所以才引入了梯度下降算法。

一阶方法:梯度下降、随机梯度下降、mini 随机梯度下降降法。随机梯度下降不但速度上比原始梯度下降要快,局部最优化问题时可以一定程度上抑制局部最优解的发生。

二阶方法:牛顿法、拟牛顿法:

这里详细说一下牛顿法的基本原理和牛顿法的应用方式。牛顿法其实就是通过切线与x轴的交点不断更新切线的位置,直到达到曲线与x轴的交点得到方程解。在实际应用中我们因为常常要求解凸优化问题,也就是要求解函数一阶导数为0的位置,而牛顿法恰好可以给这种问题提供解决方法。实际应用中牛顿法首先选择一个点作为起始点,并进行一次二阶泰勒展开得到导数为0的点进行一个更新,直到达到要求,这时牛顿法也就成了二阶求解问题,比一阶方法更快。我们常常看到的x通常为一个多维向量,这也就引出了Hessian矩阵的概念(就是x的二阶导数矩阵)。缺点:牛顿法是定长迭代,没有步长因子,所以不能保证函数值稳定的下降,严重时甚至会失败。还有就是牛顿法要求函数一定是二阶可导的。而且计算Hessian矩阵的逆复杂度很大。

拟牛顿法: 不用二阶偏导而是构造出Hessian矩阵的近似正定对称矩阵的方法称为拟牛顿法。拟牛顿法的思路就是用一个特别的表达形式来模拟Hessian矩阵或者是他的逆使得表达式满足拟牛顿条件。主要有DFP法(逼近Hession的逆)、BFGS(直接逼近Hession矩阵)、 L-BFGS(可以减少BFGS所需的存储空间)。

3、SVM相关问题

(1)带核的SVM为什么能分类非线性问题?

核函数的本质是两个函数的內积,而这个函数在SVM中可以表示成对于输入值的高维映射。注意核并不是直接对应映射,核只不过是一个內积

(2)RBF核一定是线性可分的吗

不一定,RBF核比较难调参而且容易出现维度灾难,要知道无穷维的概念是从泰勒展开得出的。

(3)常用核函数及核函数的条件:

核函数选择的时候应该从线性核开始,而且在特征很多的情况下没有必要选择高斯核,应该从简单到难的选择模型。我们通常说的核函数指的是正定和函数,其充要条件是对于任意的x属于X,要求K对应的Gram矩阵要是半正定矩阵。

RBF核径向基,这类函数取值依赖于特定点间的距离,所以拉普拉斯核其实也是径向基核。 线性核:主要用于线性可分的情况 多项式核

(4)SVM的基本思想:

间隔最大化来得到最优分离超平面。方法是将这个问题形式化为一个凸二次规划问题,还可以等价位一个正则化的合页损失最小化问题。SVM又有硬间隔最大化和软间隔SVM两种。这时首先要考虑的是如何定义间隔,这就引出了函数间隔和几何间隔的概念(这里只说思路),我们选择了几何间隔作为距离评定标准(为什么要这样,怎么求出来的要知道),我们希望能够最大化与超平面之间的几何间隔x,同时要求所有点都大于这个值,通过一些变化就得到了我们常见的SVM表达式。接着我们发现定义出的x只是由个别几个支持向量决定的。对于原始问题(primal problem)而言,可以利用凸函数的函数包来进行求解,但是发现如果用对偶问题(dual )求解会变得更简单,而且可以引入核函数。而原始问题转为对偶问题需要满足KKT条件(这个条件应该细细思考一下)到这里还都是比较好求解的。因为我们前面说过可以变成软间隔问题,引入了惩罚系数,这样还可以引出hinge损失的等价形式(这样可以用梯度下降的思想求解SVM了)。我个人认为难的地方在于求解参数的SMO算法。

(5)是否所有的优化问题都可以转化为对偶问题:

这个问题我感觉非常好,有了强对偶和弱对偶的概念。用知乎大神的解释吧

(6)处理数据偏斜:

可以对数量多的类使得惩罚系数C越小表示越不重视,相反另数量少的类惩罚系数变大。

4、Boosting和Bagging

(1)随机森林

随机森林改变了决策树容易过拟合的问题,这主要是由两个操作所优化的:1、Boostrap从袋内有放回的抽取样本值2、每次随机抽取一定数量的特征(通常为sqr(n))。

分类问题:采用Bagging投票的方式选择类别频次最高的

回归问题:直接取每颗树结果的平均值。

常见参数 误差分析 优点 缺点
1、树最大深度

2、树的个数

3、节点上的最小样本数

4、特征数(sqr(n))

oob(out-of-bag)

将各个树的未采样样本作为预测样本统计误差作为误分率

可以并行计算

不需要特征选择

可以总结出特征重要性

可以处理缺失数据

不需要额外设计测试集

在回归上不能输出连续结果

(2)Boosting之AdaBoost

Boosting的本质实际上是一个加法模型,通过改变训练样本权重学习多个分类器并进行一些线性组合。而Adaboost就是加法模型+指数损失函数+前项分布算法。Adaboost就是从弱分类器出发反复训练,在其中不断调整数据权重或者是概率分布,同时提高前一轮被弱分类器误分的样本的权值。最后用分类器进行投票表决(但是分类器的重要性不同)。

(3)Boosting之GBDT

将基分类器变成二叉树,回归用二叉回归树,分类用二叉分类树。和上面的Adaboost相比,回归树的损失函数为平方损失,同样可以用指数损失函数定义分类问题。但是对于一般损失函数怎么计算呢?GBDT(梯度提升决策树)是为了解决一般损失函数的优化问题,方法是用损失函数的负梯度在当前模型的值来模拟回归问题中残差的近似值。

注:由于GBDT很容易出现过拟合的问题,所以推荐的GBDT深度不要超过6,而随机森林可以在15以上。

(4)GBDT和Random Forest区别

这个就和上面说的差不多。

(5)Xgboost

这个工具主要有以下几个特点:

支持线性分类器 可以自定义损失函数,并且可以用二阶偏导 加入了正则化项:叶节点数、每个叶节点输出score的L2-norm 支持特征抽样 在一定情况下支持并行,只有在建树的阶段才会用到,每个节点可以并行的寻找分裂特征。 5、KNN和Kmean

(1)KNN 和Kmean缺点

都属于惰性学习机制,需要大量的计算距离过程,速度慢的可以(但是都有相应的优化方法)。

(2)KNN

KNN不需要进行训练,只要对于一个陌生的点利用离其最近的K个点的标签判断其结果。KNN相当于多数表决,也就等价于经验最小化。而KNN的优化方式就是用Kd树来实现。

(3)Kmean

要求自定义K个聚类中心,然后人为的初始化聚类中心,通过不断增加新点变换中心位置得到最终结果。Kmean的缺点可以用Kmean++方法进行一些解决(思想是使得初始聚类中心之间的距离最大化)

6、EM算法、HMM、CRF

这三个放在一起不是很恰当,但是有互相有关联,所以就放在这里一起说了。注意重点关注算法的思想。

(1)EM算法

EM算法是用于含有隐变量模型的极大似然估计或者极大后验估计,有两步组成:E步,求期望(expectation);M步,求极大(maxmization)。本质上EM算法还是一个迭代算法,通过不断用上一代参数对隐变量的估计来对当前变量进行计算,直到收敛。

注意:EM算法是对初值敏感的,而且EM是不断求解下界的极大化逼近求解对数似然函数的极大化的算法,也就是说EM算法不能保证找到全局最优值。对于EM的导出方法也应该掌握。

(2)HMM算法

隐马尔可夫模型是用于标注问题的生成模型。有几个参数(ππ ,A,B):初始状态概率向量ππ ,状态转移矩阵A,观测概率矩阵B。称为马尔科夫模型的三要素。

马尔科夫三个基本问题:

概率计算问题:给定模型和观测序列,计算模型下观测序列输出的概率。–》前向后向算法 学习问题:已知观测序列,估计模型参数,即用极大似然估计来估计参数。–》Baum-Welch(也就是EM算法)和极大似然估计。 预测问题:已知模型和观测序列,求解对应的状态序列。–》近似算法(贪心算法)和维比特算法(动态规划求最优路径)

(3)条件随机场CRF

给定一组输入随机变量的条件下另一组输出随机变量的条件概率分布密度。条件随机场假设输出变量构成马尔科夫随机场,而我们平时看到的大多是线性链条随机场,也就是由输入对输出进行预测的判别模型。求解方法为极大似然估计或正则化的极大似然估计。

之所以总把HMM和CRF进行比较,主要是因为CRF和HMM都利用了图的知识,但是CRF利用的是马尔科夫随机场(无向图),而HMM的基础是贝叶斯网络(有向图)。而且CRF也有:概率计算问题、学习问题和预测问题。大致计算方法和HMM类似,只不过不需要EM算法进行学习问题。

(4)HMM和CRF对比

其根本还是在于基本的理念不同,一个是生成模型,一个是判别模型,这也就导致了求解方式的不同。

7、常见基础问题

(1)数据归一化(或者标准化,注意归一化和标准化不同)的原因

要强调:能不归一化最好不归一化,之所以进行数据归一化是因为各维度的量纲不相同。而且需要看情况进行归一化。

有些模型在各维度进行了不均匀的伸缩后,最优解与原来不等价(如SVM)需要归一化。 有些模型伸缩有与原来等价,如:LR则不用归一化,但是实际中往往通过迭代求解模型参数,如果目标函数太扁(想象一下很扁的高斯模型)迭代算法会发生不收敛的情况,所以最坏进行数据归一化。

补充:其实本质是由于loss函数不同造成的,SVM用了欧拉距离,如果一个特征很大就会把其他的维度dominated。而LR可以通过权重调整使得损失函数不变。

(2)衡量分类器的好坏:

这里首先要知道TP、FN(真的判成假的)、FP(假的判成真)、TN四种(可以画一个表格)。

几种常用的指标:

精度precision = TP/(TP+FP) = TP/~P (~p为预测为真的数量) 召回率 recall = TP/(TP+FN) = TP/ P F1值: 2/F1 = 1/recall + 1/precision ROC曲线:ROC空间是一个以伪阳性率(FPR,false positive rate)为X轴,真阳性率(TPR, true positive rate)为Y轴的二维坐标系所代表的平面。其中真阳率TPR = TP / P = recall, 伪阳率FPR = FP / N

(3)SVD和PCA

PCA的理念是使得数据投影后的方差最大,找到这样一个投影向量,满足方差最大的条件即可。而经过了去除均值的操作之后,就可以用SVD分解来求解这样一个投影向量,选择特征值最大的方向。

(4)防止过拟合的方法

过拟合的原因是算法的学习能力过强;一些假设条件(如样本独立同分布)可能是不成立的;训练样本过少不能对整个空间进行分布估计。

处理方法:

早停止:如在训练中多次迭代后发现模型性能没有显著提高就停止训练 数据集扩增:原有数据增加、原有数据加随机噪声、重采样 正则化 交叉验证 特征选择/特征降维

(5)数据不平衡问题

这主要是由于数据分布不平衡造成的。解决方法如下:

采样,对小样本加噪声采样,对大样本进行下采样 进行特殊的加权,如在Adaboost中或者SVM中 采用对不平衡数据集不敏感的算法 改变评价标准:用AUC/ROC来进行评价 采用Bagging/Boosting/ensemble等方法 考虑数据的先验分布

机器学习面试问题准备(进阶)

这部分主要是针对上面问题的一些更细节的补充,包括公式的推倒思路、模型的基本构成、细节问题的分析等等。一、问题杂烩

1、PCA的第二主成分

第二个主成分时域第一成分方向正教的差异性次大方向。

2、什么时候用组合的学习模型

只有当各个模型之间没有相关性的时候组合起来是最好用的。但是一般来说,弱相关的模型组合比较好用。

3、多重共线性

多重共线性是指当两个特征的相关性很大的时候,会对参数模型造成非常大的影响。可以用相关分析判断多重共线性的存在性。

4、什么时候用L2优于L1

如果多个变量都是一些具有小尺度或中等尺度影响的时候用L2比较好,如果个别变量影响很大的时候用L1。其实也可以结合起来使用。

5、交叉验证的参数选择问题

我们通常进行参数选择的时候都是用网格法做的,但是这样其实也是有弊端的,索性可以用随机取样的方式逼近最优参数。

6、如果缺失值超过30%要怎么办?

可以把缺失值单独组成一类。

二、模型流程和公式推导

1、PCA传统计算流程:

去除均值 计算协方差矩阵 计算特征值和特征向量 特征值从大到小排序 保留前N个特征向量 投影重构(记得吧去除的均值还回去)

或者干脆去均值后用SVD计算

2、离散数据下的生成模型

(1)贝叶斯概念

我们都知道概率学派和贝叶斯学派的不同,现在我们从贝叶斯的角度上考虑问题。对于一个问题,通常要考虑其先验概率,这是因为对于某些数据不足或有某些问题的情况下,单纯考虑似然函数是不够的,还需要引入假设先验给一个主观的先验概率,而且在真正分析的时候应该引入假设空间D的概念(满足要求的所有假设),后验就相当于给定假设空间D下的其中某一个假设D的概率P(h|D)。

其实本质上最大后验估计MAP是等价于最大似然估计的,即数据点足够多的时候会淹没先验。

利用得到的后验进行预测需要后验预测分布(Posterior pordictive distribution),方法是对每一个独立假设的加权均值(称之为Bayes model averaging)

我们使用MAP的时候都要对先验进行一些假设,而这些假设对应的先验函数和似然函数通常是共轭的,这样方便计算,关于共轭分布的概念其实很简单,常用的几个了解就可以。

(2)朴素贝叶斯分类器

朴素贝叶斯是最简单的分类器之一了,根本是假设各个特征之间是独立同分布的,也就是说P(X|y)=P(x1|y)*…P(xn|y)。我们可以假设特征x的分布,比如:在特征为real-value的时候,可以假设特征分布为高斯分布、在特征为二元特征的时候假设为Bernoulli分布、在类别特征的时候假设为multinoulli分布(我们通常见到的)。通常我们看到的Laplace平滑实际上是对参数的先验分布(但是这个先验可以只看出一个附加条件)。

具体的关于朴素贝叶斯的推导和使用见这里。补充一点,贝叶斯是可以进行在线学习的。但是要知道贝叶斯其实可以变得更复杂。

3、Gaussian高斯模型的高斯判别分析

对于多元高斯分布来说,他的共轭分布也是多元高斯分布,关于多元高斯分布的最大似然结果可以自己查查资料。这里主要说的是高斯判别分析。

高斯判别分析假设p(X,y=c,θθ )= N(X|μμ ,ΣΣ )服从多元高斯分布,当ΣΣ 为对角矩阵的时候起始就是上面说的朴素贝叶斯了。我们通常说到的Linear discriminant analysis(LDA)其实就是高斯判别模型的一种,假设所有类别的协方差矩阵都是相同的,这时求解后验分布的时候得到的就是LDA。当然协方差矩阵不同的时候对应的QDA(Quadratic discriminant analysis,二次判别分析)。这个相当于我们对于通常定义LDA**最大化类间距最小化类内距离**实际上是等价的。

4、Logistic regression和指数分布族

这里将会从两个角度看一下逻辑回归的推导过程。

(1)逻辑回归推导

这个很简单,网上随便找一个都有,就是求解MLE而已。但是除了二元的逻辑回归还应该知道多元逻辑回归的条件概率由sigmoid变为softmax。

(2)逻辑回归的广义线性模型解释

首先要知道什么是广义线性模型:广义线性模型是指输出概率是指数分布族的y|x;θ∼ExpoentialFamily(η),而且指数分布族的自然参数η的是x的线性组合。这个我掌握的不是很好,但是如果面试的时候讲出来效果应该不错。

(3)逻辑回归输出值是不是概率

答案是肯定的,解释在这里,其实用广义线性模型的思路说更好,但是实在是对概念掌握的不好。

5、SVM支持向量机

(1)支持向量机的公式推导,要详细到KKT条件。

(2)可以进一步结合核函数和GLM引出核机的概念。

6、概率图模型

有向图、无向图等

三、重要概念

1、监督学习的生成模型和判别模型

这可以说是一个最基础的问题,但是深挖起来又很复杂,面试的时候应该说出几个有亮点的部分。

(1)基本说法

生成模型是由数据学习联合概率分布P(X,Y),然后再求出条件概率分布P(Y|X),典型的生成模型有朴素贝叶斯和马尔科夫模型。

判别模型就是直接学习判别函数或者是条件概率分布,应该是更直接一些。两者各有优缺点。

(2)进阶区分

* 应该说生成模型的假设性更强一些,因为通常是从后验分布的角度思考问题,通常对x的分布进行了一些假设。

* 训练过程中,对于判别模型通常是最大化对数似然,对生成模型则是最大化联合对数似然函数

* 因为生成模型对于特征的分布都做出了一定的假设(如高斯判别模型假设特征分布满足多元高斯分布),所以如果对于特征的分布估计比较正确的情况下,生成模型的速度更好准确性也更高。

* 生成模型在训练数据的时候对于每一类数据的都是独立估计的(也就是每一类的参数不同),这也就说明如果有新类别加入的情况下,是不需要对原有类别进行重新训练的

* 对于半监督学习,生成模型往往更有用

* 生成模型有一个大的缺点就是不能对特征进行某些预处理(如特征映射),因为预处理后的数据分布往往有了很大的变化。

2、频率学派的一些基本理论

(1)期望损失(风险函数)、经验损失(经验风险)、结构风险

期望损失:理论上知道模型后得到的平均损失较期望损失(依赖于真实分布),但是模型正是我们要求的

经验损失:经验损失指针对模型的抽样值(训练集)进行平均的损失估计,根据大数定律当训练数据足够的时候经验损失和期望损失是等价的

结构风险:经验损失是假设经验分布和自然分布相同时得到的,但是这样会造成过拟合,所以引入了正则化,惩罚模型复杂度。

(2)极大似然MLE、极大后验MAP

因为我们有的时候利用经验损失求解的时候会遇到不好求解的问题(如不连续0-1)这是可以用对数极大似然估计等价的对参数进行分析。

同理最大后验利用先验概率达到惩罚模型的作用。如l2-norm岭回归对应高斯先验、L1对应拉普拉斯先验。

深度学习500问——AI工程师面试宝典相关推荐
  • 相关百科
  • 相关知识
  • 相关专栏