深度学习500问
  • 推荐0
  • 收藏1
  • 浏览531

深度学习500问

谈继勇 (作者) 

  • 书  号:978-7-121-38937-5
  • 出版日期:2020-12-31
  • 页  数:484
  • 开  本:16(185*260)
  • 出版状态:上市销售
  • 维护人:符隆美
纸质版 ¥109.00
本书系统地描述了深度学习的基本理论算法及应用。全书共14章,第1~3章论述了数学基础、机器学习基础和深度学习基础;第4~7章介绍了一些经典网络及计算机视觉领域中常用的CNN、RNN、GAN等网络结构技术;第8~9章介绍了深度学习在计算机视觉领域的目标检测及图像分割两大应用;第10~14章介绍了计算机视觉领域主要的优化方法及思路等,包括迁移学习、网络架构及训练、网络优化技巧、超参数调整及模型的压缩和加速等。本书凝聚了众多一线科研人员及工程师的经验,旨在培养读者发现问题、解决问题、扩展问题的能力。
本书内容取材于编者在日常学习过程中总结的知识点及各大公司常见的笔试、面试题。本书可为高等院校计算机科学、信息科学、人工智能、控制科学与工程、电子科学与技术等领域的研究及教学人员提供参考,也可为相关专业本科生及研究生提供思考方向,还可为深度学习及计算机视觉领域的初、中级研究人员和工程技术人员提供参考,尤其适合需要查漏补缺的应聘者及提供相关岗位的面试官阅读。
众多一线科研人员及工程师的经验汇总,手把手带你走入深度学习的领域!
推荐序一


计算机技术的加速发展推动了人工智能领域的进步。这几年,人工智能技术蓬勃发展,相信多数人都会思考人工智能技术是否会对自己的工作产生影响。人们关心人工智能什么时候以什么方式改变我们现在的工作。这些问题的答案取决于人工智能技术本身的发展。
从1956年人工智能元年开始算起,这项技术至今已有64年的历史。不同于以前采用的技术,现在的人工智能是以模拟人类大脑工作方式的人工神经网络和海量数据为驱动力而发展起来的。
这些创新性的人工智能技术的发展给我们带来了新的机遇,但同时也对这个行业的从业者提出了新的挑战。用计算机科学家艾兹格·迪科斯彻的话来说:“机器是否能够思考,与潜水艇是否能够游泳的问题很像。”识别人脸的人工智能不需要和人类采用相同的方法,却会以我们永远无法达到的速度、准确率,以及更低的成本来完成相同的工作。
以人工神经网络为主的技术路线相当于授机器以“渔”,人类工作的主要目的是教会机器如何从数据(经验)中学习,形成机器判断、处理的逻辑,并且从学习中不断进步。相比之下,从前的技术采用的是授机器以“鱼”的方法,直接用编程的方式将判断的逻辑教授给机器。
授机器以“渔”无疑要比授机器以“鱼”困难很多。我们不仅要确保机器能够像人类一样进行判断,还要确保机器能够根据环境变化不断学习。这意味着人工智能从业者不仅要对数据和其背后的行业知识有深刻的理解,同时还要对人工智能技术相关的各种知识有全面的了解。只有这样,才能针对具体问题,选择和开发解决问题的工具。
本书给广大读者提供了系统地学习人工智能相关技术的平台。从必须具备的数学基础、机器学习基础、深度学习基础开始,逐步深入到人工智能技术中各种热门的人工神经网络算法,然后结合实际问题,介绍目标检测、图像分割等使用的具体技术。不仅如此,本书还深入讲解了在模型创建和训练过程中,算法优化和参数调整的细节。可以说,本书囊括了深度学习所需要的所有知识体系,是一本行业从业者必备的百科全书。
本书作者谈继勇是南方科技大学和哈尔滨工业大学联合培养的博士。他从2011年就开始对人工智能进行研究,是这个领域的一员老兵。他在深圳瀚维智能医疗科技公司带领团队研发的多款智能机器人及人工智能产品都已经或即将进入量产阶段。从这些成绩中可以看出作者扎实的理论基础和实现技术转化的能力。相信阅读本书的小伙伴在实际工作中可以从本书获得许多帮助,让我们一同为人工智能技术的发展做贡献。

周德标
IBM Watson健康大中华区首席运营官
推荐序二


春秋战国时期,思想家荀子就在《荀子·正名》中提出了智能的概念。今天,在快速发展的数据、算法和算力驱动下,以深度学习为代表的人工智能技术在很多方面都取得了巨大的突破,人工智能技术的应用随处可见。通过语音助手,我们能够进行预约服务;通过摄像头人脸识别,我们能够进行身份的安全验证;通过增强现实游戏,我们能够与虚拟世界中的物体进行互动;通过对采集的图像视频进行智能选择与美化,我们能够进行更为友好的网络社交。人们不禁会问,是什么在推动着人工智能技术的发展呢?毫无疑问,其根本是人。历史上每个阶段的每个突破都要归功于众多优秀的学者和研发人员的不懈努力。
当前,人工智能技术的普及和教育已经引起社会各界的极大重视。2017年,国务院印发了《新一代人工智能发展规划》,明确指出:人工智能成为国际竞争的新焦点,应逐步开展全民智能教育项目,培养复合型人才。
《深度学习500问——AI工程师面试宝典》一书的问世无疑能给广大人工智能从业者和技术研发人员带来福祉。本书全面、系统地对深度学习技术进行了讲解,从深度学习涉及的数学基础和机器学习基础开始,到基础的卷积神经网络、循环神经网络和当前热门的生成对抗网络,再到以目标检测、图像分割两类常用任务来介绍深度学习的应用,内容非常丰富。另外,本书还从面向实际部署的角度,系统讲解了模型迁移、开发工具、网络优化和调参、模型压缩与加速等技术。
希望本书的读者能够学有所成!



葛仕明
中国科学院博士生导师
前 言


为什么要写这本书
人工智能学科自诞生以来,技术理论不断发展,应用领域不断延伸。深度学习是机器学习和人工智能研究的最新趋势之一,可以使具有多个处理层的计算模型实现对多层次抽取数据表征的学习,在智能机器人、图像处理、自然语言处理及语音识别等领域产生了众多应用成果。
随着人工智能技术的发展及国家政策的支持,人工智能人才需求井喷。大量的研究者将深度学习方法作为首要的研究内容。从事与深度学习相关的工作是一件令人自豪的事情,同时,理解深度学习也是一件神秘和令人兴奋的事情。但深度学习的理论性较强、门槛较高,要理解该领域的知识,读者需要具有一定的数学基础,需要学习统计分析、模式识别等专业领域的知识。很多读者想深入研究又望而却步,因为他们缺乏必要的知识,在知识的深入及迁移上有难以跨越的鸿沟。
在学习深度学习相关知识的时候,我经常通过反复思考某个问题来指导自己,查阅资料并且记录成文,经过一段时间后发现整理的内容越来越丰富,从问题集开始,逐渐形成了有序且关联的篇章,我将其命名为《深度学习500问》。2018年6月,我陆续将整理的内容上传到GitHub,方便自己远程更新。意外的是,在2018年10月的时候,这些内容突然引起众多阅读者的极大反响,在CSDN、AI科技大本营、量子位、知乎、雷锋网、知识星球等众多一线人工智能类公众号及网站上相互传开。在最开始的两周内,累计星标就超过1万,在GitHub趋势榜的全球月、周排名中多次居首,这些内容成为一份火爆的深度学习方面的资料,可以作为面试秘籍,也可以作为工程实践的辅助查询手册。随后全球有超过万名的老师、学生、研究者及工程师参与到项目中来,通过广大研究者的集思广益,这些内容最终形成了一个更充实、更全面的AI相关知识库。截至2020年7月,《深度学习500问》在GitHub上的累计星标超过4万。我们本着将内容统一化、精细化、准确化的初衷,联合众多读者一起将其完善、修改并成书。参与成书的很多朋友基本都素未谋面,正是对知识的渴望和坚持技术开源的精神,让我们走到了一起,也正是大家的共同努力,才有了本书的出版。
在本书的撰写过程中,我们力求深入浅出,从基础到入门,从进阶到拓展,尽量定性地进行描述,并较为全面地给出思路和阐释。本书旨在向读者介绍知识的同时培养读者的思维方法,通过不断地刨根问底,使读者在实际的研究与开发过程中快速定点、查漏补缺。书中给出了很多经验性的总结,希望可以帮助读者快速解决问题。
读者反馈
为了尽可能满足读者的需要,本书的电子版同步在GitHub上免费发布,感谢在GitHub上提交内容和建议的朋友们。本书的内容参考了大量的论文、博客,感谢这些开源贡献者。由于本书涉及的数学公式比较复杂、内容涵盖面广且编者水平有限,如发现任何问题,欢迎读者通过以下方式联系编者,以便做出改进。
邮箱:scutjy2015@163.com
致谢
首先要感谢中科院葛仕明教授、香港中文大学(深圳)张家铭研究员及四川大学佃松宜教授,他们引导我进入深度学习、计算机视觉研究领域。感谢鸿海科技集团首席技术官及首席投资官陈杰良博士及富士康机器人与人工智能实验室负责人蒋祖力博士,他们为我提供了很多在外交流学习的机会,写这本书的最初想法是在富士康机器人与人工智能实验室里萌生的。
同时,感谢CSDN的创始人蒋涛,感谢谢工、谷磊、周翔、许爱艳、王金许等,感谢电子工业出版社的符隆美和其他编辑老师们,他们在我写作的过程中给予我的指点和教诲确保了本书的权威性和严谨性。感谢电子工业出版社组织的作译者交流活动,让我得以认识各领域的专家,例如IBM Watson健康大中华区首席运营官周德标、阿里巴巴高级专家阮威等,我向他们学习了许多专业知识和职业发展的成功奥秘。感谢顺丰科技计算机视觉总工程师宋翔及熊君君等前辈在工作中曾给予我技术指导。
感谢四川大学的师弟师妹们,马丛俊、杨沐杰、覃寓媛、王秋爽、张月龄、税懿、李振阳、何贵为本书制作了很多图表;感谢高日强、刘帅伟、孙洪卫、刘元德、黄钦建、刘畅、李骁丹、杨国峰、梁志成、程泽华、张达峰、乔成磊、徐武民、刘鹏、崔永明、白德乾、袁笛、熊楚原、周迎威、明杰、何建宏、盛泳潘、钟申俊、廖文彤、琚兆学等众多硕士、博士及很多在GitHub上默默贡献的科研工作者和工程师为本书的编写提出了很多宝贵的意见和建议。
感谢每一位为本书做出贡献的朋友,我谨以此书作为回礼。

谈继勇

目录

第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

读者评论

相关博文

  • 干货丨深度迁移学习方法的基本思路

    干货丨深度迁移学习方法的基本思路

    博文小编 2021-01-19

    百度前首席科学家、斯坦福大学副教授吴恩达(Andrew Ng)曾经说过:迁移学习将是继监督学习之后的下一个促使机器学习成功商业化的驱动力。 本文选自《深度学习500问:AI工程师面试宝典》,将重点介绍目前最热门的深度迁移学习方法的基本...

    博文小编 2021-01-19
    118 0 0 0
  • GitHub星标数超4.2万的火爆之作!

    GitHub星标数超4.2万的火爆之作!

    博文小编 2021-02-05

    AI领域蓬勃发展,不断有新鲜血液注入行业,行业著作也不断推陈出新~~ 最近博文菌得到一本极具群众基础的深度学习图书。 要说AI图书,博文菌推荐过非常多的优秀著作,有数十年经验沉淀的经典巨著,也有0压入门的必备秘籍…… 但这本...

    博文小编 2021-02-05
    244 0 0 0

相关图书

Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)

龚正 吴治辉 闫健勇 (作者)

Kubernetes是由谷歌开源的容器集群管理系统,为容器化应用提供了资源调度、部署运行、服务发现、扩缩容等一整套功能。Kubernetes也是将“一切以服务(...

 

迁移学习导论

王晋东 (作者)

迁移学习作为机器学习和人工智能领域的重要方法,在计算机视觉、自然语言处理、语音识别等领域都得到了广泛的应用。本书的编写目的是帮助迁移学习及机器学习相关领域的初学...

¥109.00

OpenCV 4机器学习算法原理与编程实战

朱斌 (作者)

本书主要面向OpenCV领域的研究与开发人员,采用原理结合实战的方式,介绍OpenCV 4的机器学习算法模块与深度神经网络模块中的核心算法原理与C++编程实战。...

 

人工智能工程化:应用落地与中台构建

蒋彪 (作者)

人工智能深刻影响着人类发展,本书将带领读者从工程化的角度了解人工智能。<br>本书第1章和第2章简单介绍了人工智能的基本概念及其常见算法。第3章和第4章从工程化...

¥79.00

语音识别原理与应用

洪青阳 (作者)

本书从语音信号、特征提取等基础内容出发,逐层深入到动态时间规整、隐马尔科夫模型、GMM-HMM、DNN等经典算法模型,帮助读者系统了解语音识别技术的基础知识,最...

¥128.00

Python极简讲义:一本书入门数据分析与机器学习

张玉宏 (作者)

本书以图文并茂的方式介绍了Python的基础内容,并深入浅出地介绍了数据分析和机器学习领域的相关入门知识。 第1章至第5章以极简方式讲解了Python的常用语...

¥89.60