社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

《深度学习500问》正式出版!GitHub星标数超4.2万的火爆之作 | 赠书

AI科技评论 • 3 年前 • 275 次点击  

编辑 | 陈大鑫
AI领域蓬勃发展,不断有新鲜血液注入行业,行业著作也不断推陈出新~~
最近AI科技评论看到一本极具群众基础的深度学习图书。
要说AI图书,我们推荐过非常多的优秀著作,有数十年经验沉淀的经典巨著,也有入门的必备秘籍……
但这本书完全不一样!
因为它集百家所长,凝聚了众多一线科研人员及工程师的经验,可以培养读者发现问题、解决问题、扩展问题等方面的能力,真真正正地称得上一本书入门深度学习!
它就是火爆全网的《深度学习500问:AI工程师面试宝典》!

 1 

《深度学习500问》书籍缘由

源自GitHub星标数超4.2万的火爆之作
在学习深度学习相关知识的时候,本书作者经常通过反复思考某个问题来指导自己,查阅资料并且记录成文,经过一段时间后发现整理的内容越来越丰富,从问题集开始,逐渐形成了有序且关联的篇章,于是将该项目命名为《深度学习500问》。
2018年6月,作者陆续将整理的内容上传到GitHub,方便自己远程更新。
意外的是,在2018年10月的时候,这些内容突然引起众多阅读者的极大反响,在知乎、雷锋网、知识星球等众多一线人工智能类公众号及网站上相互传开。
在最开始的两周内,累计星标就超过1万,在GitHub趋势榜的全球月、周排名中多次居首,这些内容成为一份火爆的深度学习方面的资料。
截至目前,《深度学习500问》在GitHub上的累计星标已超过4.2万。本书便源自该项目。
历时3年,融合产学研的精心之作
本书的相关内容在GitHub和知乎等平台已经受到了很多网友的关注和认可,这是为什么呢?
因为其在专业、严谨的基本标准之上,还体现了一个研究者自己学习和总结的真实成果,并结合了专业社区平台众多网友的共同努力,此书的实用性是非常突出的。
作者谈继勇是南方科技大学和哈尔滨工业大学联合培养的博士,从2011年就开始对人工智能进行研究,在香港中文大学(深圳)工作时,对机器视觉有着深入的理解,是这个领域的一员老兵。他之后在深圳一家医疗科技公司带领团队研发的多款智能机器人及人工智能产品都已经或即将进入量产阶段。从这些成绩中可以看出作者扎实的理论基础和实现技术转化的能力。
本书的内容从必须具备的数学基础、机器学习基础、深度学习基础开始,逐步深入到人工智能技术中各种热门的人工神经网络算法,然后结合实际问题,介绍目标检测、图像分割等使用的具体技术,还深入讲解了在模型创建和训练过程中,算法优化和参数调整的细节,并且结合了作者自身的实战经验,将极大地提高深度学习爱好者的理论水平和动手能力。
GitHub上的项目被传播开之后,全球有非常多的老师、学生、研究者及工程师参与到项目中来,通过广大研究者的集思广益,这些内容最终形成了一个更充实、更全面的AI相关知识库。参与者们本着将内容统一化、精细化、准确化的初衷,联合众多读者一起将其完善、修改并成书。
可以说,本书囊括了深度学习所需要的所有知识体系,是一本行业从业者必备的百科全书。
兼具广度深度的入门、面试秘籍
深度学习的理论性较强、门槛较高,要理解该领域的知识,读者需要具有一定的数学基础,需要学习统计分析、模式识别等专业领域的知识。很多读者想深入研究又望而却步,因为他们缺乏必要的知识,在知识的深入及迁移上有难以跨越的鸿沟。
在撰写本书的过程中,作者力求深入浅出,从基础到入门,从进阶到拓展,尽量定性地进行描述,并较为全面地给出思路和阐释,旨在向读者介绍知识的同时培养读者的思维方法,通过不断地刨根问底,使读者在实际的研究与开发过程中快速定点、查漏补缺,较好地解答了初学者的疑惑。
同时,本书内容取材于编者在日常学习过程中总结的知识点及各大公司常见的笔试、面试题。
这是一本兼具广度与深度的书,将深度学习知识框架的全景图呈现在读者面前,能够让读者系统地了解、掌握深度学习的相关知识,从理论到工程实践都有涉及,将人工智能“是什么(概念)、为什么(原理)、怎么做(实践)”三个问题充分地结合了起来,非常适合想要步入深度学习领域的初学者,尤其是需要查漏补缺的应聘者及提供相关岗位的面试官阅读。
从事与深度学习相关的工作是一件令人自豪的事情,同时,理解深度学习也是一件神秘和令人兴奋的事情,希望本书可以帮助你跨越深度学习的门槛,带你感受深度学习的魅力!

 2 

书籍作者

本书由谈继勇担任主编,郭子钊、李剑佃松宜等人担任副主编。
● 谈继勇(主编),南方科技大学和哈尔滨工业大学联合培养博士(在读),现任瀚维智能医疗技术总监,深圳工信局专家库专家,兼任南方科技大学、四川大学研究生企业导师,南方科技大学和瀚维智能医疗联合实验室副主任,北京探工所特聘技术专家,曾先后在中科院信工所、香港中文大学(深圳)、FOXCONN机器人与人工智能实验室、顺丰科技等单位任职。主要专注于智能感知与控制、实时智能与计算机视觉方向的研究,主持/主研国家自然科学基金、省重点研发计划、深圳战略性新兴产业计划等项目20余项,发表SCI/EI论文20余篇,申请发明专利40余项,获全国发明金奖。
● 王晋东(特邀编委),中科院计算所博士,微软亚洲研究院机器学习研究员,主要从事迁移学习和机器学习方向的研究工作,在IJCAI、CVPR、ICDM、UbiComp、ACMMM、PERCOM、IJCNN、PRICAI、IEEE TNNLS、NEUNET、PRL、PMCJ、IMWUT、IJMLC、ICME、ACM TIST等国际权威期刊和会议上发表论文20余篇。作品有《迁移学习简明手册》等。

 3 

书籍目录

本书系统地描述了深度学习的基本理论算法及应用。

全书共14章,第1~3章论述了数学基础、机器学习基础和深度学习基础

第4~7章介绍了一些经典网络及计算机视觉领域中常用的CNN、RNN、GAN等网络结构技术;

第8~9章介绍了深度学习在计算机视觉领域的目标检测图像分割两大应用;

第10~14章介绍了计算机视觉领域主要的优化方法及思路等,包括迁移学习、网络架构及训练、网络优化技巧、超参数调整及模型的压缩和加速等

章节目录:
第1章 数学基础 
第2章 机器学习基础 
第3章 深度学习基础
第4章 卷积神经网络的经典结
第5章 卷积神经网络
第6章 循环神经网络
第7章 生成对抗网络
第8章 目标检测
第9章 图像分割
第10章 迁移学习
第11章 网络架构介绍及训练
第12章 网络优化技巧
第13章 超参数调整
第14章 模型压缩、加速和移动端部署
完整目录:

第1章 数学基础 
1.1 向量和矩阵 
1.2 导数和偏导数 
1.3 特征值和特征向量 
1.4 概率分布与随机变量 
1.5 常见概率分布 
1.6 期望、方差、协方差、相关系数 
第2章 机器学习基础 
2.1 基本概念 
2.2 机器学习的学习方式 
2.3 分类算法
2.4 逻辑回归
2.5 代价函数
2.6 损失函数
2.7 梯度下降法
2.8 线性判别分析
2.9 主成分分析
2.10 模型评估
2.11 决策树
2.12 支持向量机(SVM)
2.13 贝叶斯分类器 
2.14 EM算法
2.15 降维和聚类
第3章 深度学习基础
3.1 基本概念
3.2 神经网络计算
3.3 激活函数
3.4 BATCH SIZE 
3.5 归一化
3.6 参数初始化
3.7 预训练与微调
3.8 超参数
3.9 学习率 
3.10 正则化 
第4章 卷积神经网络的经典结构
4.1 LeNet-5
4.2 AlexNet
4.3 ZFNet
4.4 NIN
4.5 VGGNet
4.6 GoogLeNet
4.7 ResNet
4.8 DenseNet
4.9 CNN 模型在 GoogLeNet、VGGNet或AlexNet上调整的原因
第5章 卷积神经网络
5.1 CNN的结构
5.2 输入层
5.3 卷积层
5.4 激活层
5.5 池化层
5.6 全连接层
5.7 二维卷积和三维卷积
5.8 理解转置卷积和棋盘效应
5.9 卷积神经网络凸显共性的方法
5.10 局部卷积
5.11 CNN可视化
5.12 卷积神经网络的优化及应用
第6章 循环神经网络
6.1 为什么需要RNN
6.2 图解 RNN 基本结构
6.3 RNN的性质
6.4 RNN的后项传播
6.5 长短期记忆网络(LSTM)
6.6 常见的RNN结构上的扩展和改造
6.7 RNN 在NLP中的经典应用举例
6.8 RNN 与图像领域的结合举例
6.9 RNN与条件随机场
第7章 生成对抗网络
7.1 GAN 的基本概念
7.2 GAN 的生成模型评价
7.3 其他常见的生成模型
7.4 GAN 的改进与优化
7.5 GAN 的应用:图像翻译
7.6 GAN 的应用:文本生成
7.7 GAN 在其他领域的应用
第8章 目标检测
8.1 基本概念
8.2 two-stage 目标检测算法
8.3 one-stage 目标检测算法
8.4 目标检测的常用数据集
8.5 目标检测常用标注工具
第9章 图像分割
9.1 常见的图像分割算法
9.2 FCN
9.3 U-Net
9.4 U-Net++
9.5 SegNet
9.6 LinkNet
9.7 RefineNet
9.8 PSPNet
9.9 DeepLab系列
9.10 Mask R-CNN作为目标分割的介绍
9.11 基于弱监督学习的图像分割
第10章 迁移学习
10.1 迁移学习基础知识
10.2 迁移学习的研究领域
10.3 迁移学习的应用
10.4 迁移学习的基本方法
10.5 分布对齐的常用方法
10.6 深度迁移学习方法
10.7 迁移学习研究前沿
第11章 网络架构介绍及训练
11.1  Tensorflow
11.2 Caffe
11.3 PyTorch
11.4 常见的深度学习分布式框架
11.5 网络搭建原则及训练技巧
第12章 网络优化技巧
12.1 数据集和样本优化
12.2 数据不匹配问题
12.3 网络构建和初始化
12.4 特征选择
12.5 梯度消失和梯度爆炸
12.6 评价指标
12.7 模型和系统优化
第13章 超参数调整
13.1 超参数的概念
13.2 网络训练中的超参数调整策略
13.3 合理使用预训练网络
13.4 自动化超参数搜索方法
13.5 自动机器学习 AutoML
第14章 模型压缩、加速和移动端部署
14.1 模型压缩
14.2 为什么需要模型压缩
14.3 模型压缩方法
14.4 网络压缩的未来研究方向
14.5 模型优化加速方法
14.6 如何选择压缩和加速方法
14.7 高效 CNN 网络设计的原则
14.8 常用的轻量级网络
14.9 现有的移动端开源框架及其特点
14.10 移动端开源框架部署

超详细目录:


第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的缺点

......



 4 

书摘

以下内容摘选本书第10.6.3节“深度网络自适应
 基本思路
深度网络的微调可以帮助我们节省训练时间,提高学习精度。但是微调有它的先天不足:它无法处理训练数据,无法测试不同数据的分布情况。因为微调的基本假设也是训练数据和测试数据服从相同的数据分布。这在迁移学习中是不成立的。因此,我们需要更进一步,针对深度网络开发出更好的方法使之更好地完成迁移学习任务。
以前面介绍过的数据分布自适应方法为参考,许多深度学习方法都设计了自适应层(Adaptation Layer)来完成源域和目标域数据的自适应。自适应能够使源域和目标域的数据分布更加接近,从而使网络的精度、稳定性更好。
从上述分析可以得出,深度网络的自适应主要完成两部分工作。
(1)决定哪些层可以自适应,这决定了网络的学习程度。
(2)决定采用什么样的自适应方法(度量准则),这决定了网络的泛化能力。
早期的研究者在2014年环太平洋人工智能大会(Pacific Rim International Conference on Artificial Intelligence,PRICAI)上提出了名为DANN(Domain Adaptive Neural Networks)的神经网络[Ghifary et al.,2014]。DANN的结构异常简单,它只由两层神经元——特征层神经元和分类器层神经元组成。作者的创新之处在于,在特征层后加入MMD适配层,用来计算源域和目标域的距离,并将其加入网络的损失中进行训练。但是,由于网络太浅,表征能力有限,故无法很有效地解决领域自适应问题。因此,后续的研究者大多都基于其思想进行改进,如将浅层网络改为更深层的AlexNet、ResNet、VGG等,将MMD换为多核MMD等。
下面将介绍几种常见的深度网络自适应方法。
 基本方法
(1)DDC方法
加州大学伯克利分校的Tzeng等人首先提出了DDC(Deep Domain Confusion)方法来解决深度网络的自适应问题[Tzeng et al.,2014]。DDC方法遵循了上面讨论过的基本思路,采用了在ImageNet数据集上训练好的AlexNet网络进行自适应学习[Krizhevsky et al.,2012]。
下图是DDC方法示意图。
DDC方法固定了AlexNet的前7层,在第8层(分类器前一层)上加入了自适应的度量。自适应度量方法采用了被广泛使用的MMD准则。
为什么选择倒数第2层?DDC方法的作者在文章中提到,他们经过多次实验,在不同的层进行了尝试,最终发现在分类器前一层加入自适应可以达到最好的效果。这与我们的认知也是相符合的。通常来说,分类器前一层即特征,在特征上加入自适应,也正是迁移学习要完成的工作。
(2)DAN方法
清华大学的龙明盛等人于2015年发表在ICML(Internation Conference on Machine Learning)上的DAN(Deep Adaptation Networks)方法对DDC方法进行了几个方面的扩展[Long et al.,2015a]。首先,有别于DDC方法只加入一个自适应层,DAN方法同时加入了3个自适应层(分类器前3层)。其次,DAN方法采用表征能力更好的多核MMD(MK-MMD)度量来代替DDC方法中的单核MMD[Gretton et al.,2012]。最后,DAN方法将多核MMD的参数学习融入深度网络的训练中,并且未额外增加网络的训练时间。DAN方法在多个任务上都取得了比DDC方法更好的分类效果。
为什么适配3层?原来的DDC方法只适配了1层,现在DAN方法基于AlexNet网络,适配最后3层(第6、7、8层)。因为Jason在文献[Yosinski et al.,2014]中已经提出,网络的迁移能力从这3层开始就会有特定的任务倾向,所以要着重适配这3层。至于别的网络(如GoogLeNet、VGG等)是不是适配这3层就需要通过自己的实验来验证,要注意的是DAN方法只关注AlexNet。DAN方法示意图如下。
(3)同时迁移领域和任务的方法
DDC方法的作者Tzeng在2015年扩展了DDC方法,提出了领域和任务同时迁移的方法[Tzeng et al.,2015]。他提出网络要进行两部分迁移。
一是域迁移(Domain Transfer),尤其指适配边缘分布,但没有考虑类别信息。域迁移就是在传统深度网络的损失函数上,再加一个混淆损失(Confusion Loss)函数,两个损失函数一起计算。
二是任务迁移(Task Transfer),就是利用类别之间的相似度进行不同任务间的学习。举个类别之间相似度的例子:杯子与瓶子更相似,而它们与键盘不相似。
现有的深度迁移学习方法通常都只考虑域迁移,而没有考虑类别之间的信息。如何把域迁移和任务迁移结合起来,是一个需要研究的问题。
Tzeng针对目标任务的部分类别有少量标签,剩下的类别无标签的情况,提出名为域迁移和任务迁移的联合CNN体系结构(Joint CNN Architecture For Domain and Task Transfer)。其最大的创新之处在于,提出现有的方法都忽略了类别之间的联系,并提出在现有损失函数的基础上还要再加一个软标签损失(Soft Label Loss)函数。意思就是在源域和目标域进行适配时,也要根据源域的类别分布情况来调整目标域。相应地,他提出的方法就是把这两个损失函数结合到一个新的CNN网络上,这个CNN是基于AlexNet修改而来的。总的损失函数由3部分组成,第1部分是普通训练的损失函数,第2部分是域自适应的损失函数,第3部分是目标域上的软标签损失函数。
下图为同时迁移领域和任务的方法示意图。
该网络由AlexNet修改而来,前面几层无变化,区别是在fc7层后面加入了一个域分类器,在该层实现域自适应,在fc8层后计算网络的损失函数和软标签损失函数。
那么什么是软标签损失
软标签损失就是不仅要适配源域和目标域的边缘分布,还要把类别信息考虑进去。具体做法如下,在网络对源域进行训练时,把源域中的每一个样本处于每一个类的概率都记下来,然后,对于所有样本,属于每一个类的概率就可以通过先求和再求平均数得到。下为软标签损失示意图。这样做的目的是,根据源域中的类别分布关系,来对目标域做相应的约束。
(4)JAN方法
DAN方法的作者龙明盛2017年在ICML上提出了JAN(Joint Adaptation Networks)方法[Long et al.,2017],在深度网络中同时进行联合分布的自适应和对抗学习。JAN方法将只对数据进行自适应的方式推广到了对类别的自适应上,提出了JMMD度量(Joint MMD)。下为JAN方法示意图。
(5)AdaBN方法
与上述研究选择在已有网络层中增加适配层不同,北京大学的H Li和图森科技的N Wang等人提出了AdaBN(Adaptive Batch Normalization)方法[Li et al.,2018],其通过在归一化层加入统计特征的适配来完成迁移。下图是AdaBN方法示意图。
AdaBN方法与其他方法相比,实现起来相当简单,不带有任何额外的参数,在许多公开数据集上都取得了很好的效果。


[赠书福利]

AI科技评论本次联合【博文视点】为大家带来12本《深度学习500问:AI工程师面试宝典》正版新书。

(扫码了解本书详情)

在本文留言区留言,欢迎大家畅所欲言,谈一谈你对本书的看法和期待或者在学习深度学习时遇到的困难。

AI 科技评论将会在留言区选出 12名读者,每人送出《深度学习500问:AI工程师面试宝典》一本。

活动规则:

1. 在本文留言区留言,在综合留言质量(留言是敷衍还是走心)和留言点赞最高的读者中选出12位读者获得赠书。获得赠书的读者请联系 AI 科技评论客服(aitechreview)。

2. 留言内容会有筛选,例如“选我上去”、“这书写的很棒(仅仅几个字)”等内容将不会被筛选,亦不会中奖。

3. 本活动时间为2021年2月18日 - 2020年2月25日(23:00),活动推送时间内仅允许赠书福利中奖一次。


由于微信公众号试行乱序推送,您可能不再能准时收到AI科技评论的推送。为了第一时间收到AI科技评论的报道, 请将“AI科技评论”设为星标账号,以及常点文末右下角的“在看”。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/107769
 
275 次点击