新書推薦:
《
谁是窃书之人 日本文坛新锐作家深绿野分著 无限流×悬疑×幻想小说
》
售價:NT$
254.0
《
一个经济杀手的自白 第3版
》
售價:NT$
505.0
《
8秒按压告别疼痛
》
售價:NT$
398.0
《
津巴多时间心理学:挣脱束缚、改写命运的6种时间观
》
售價:NT$
352.0
《
大英博物馆东南亚简史
》
售價:NT$
806.0
《
纯粹·我只要少许
》
售價:NT$
367.0
《
投机苦旅:一位投机客的凤凰涅槃
》
售價:NT$
403.0
《
重返马赛渔场:社会规范与私人治理的局限
》
售價:NT$
316.0
|
編輯推薦: |
适读人群:《深度学习轻松学:核心算法与视觉实践》适合对深度学习感兴趣的读者阅读,也适合有志于从事计算机视觉研究等领域的广大学生阅读,可作为深度学习的入门教材。
本书特色
深入剖析卷积神经网络核心:全连接层和卷积层
深入分析Caffe源码实现架构,了解框架背后的运行机理
详尽介绍网络结构与训练细节,解密复杂运算的基本原理
经典实践场景:图像语意分割,图像生成。GAN模型的详细分析与推导
样例代码采用C和Python两种语言编写
语言轻松幽默易于理解,特别适合初学者快速掌握深度学习核心思想
|
內容簡介: |
《深度学习轻松学:核心算法与视觉实践》介绍了深度学习基本算法和视觉领域的应用实例。书中以轻松直白的语言,生动详细地介绍了深层模型相关的基础知识,并深入剖析了算法的原理与本质。同时,书中还配有大量案例与源码,帮助读者切实体会深度学习的核心思想和精妙之处。除此之外,书中还介绍了深度学习在视觉领域的应用,从原理层面揭示其思路思想,帮助读者在此领域中夯实技术基础。
《深度学习轻松学:核心算法与视觉实践》十分适合对深度学习感兴趣,希望对深层模型有较深入了解的读者阅读。
|
關於作者: |
冯超,毕业于中国科学院大学,猿辅导研究团队视觉研究负责人,小猿搜题拍照搜题负责人之一。自2016 年起在知乎开设了自己的专栏《无痛的机器学习》,发表机器学习与深度学习相关文章,文章以轻松幽默的语言、细致深入的分析为特点,收到了不错的反响,被多家媒体转载。曾多次参与社区技术分享活动。
|
目錄:
|
1 机器学习与深度学习的概念1
1.1 什么是机器学习 1
1.1.1 机器学习的形式. 2
1.1.2 机器学习的几个组成部分. 8
1.2 深度学习的逆袭 9
1.3 深层模型在视觉领域的应用. 13
1.4 本书的主要内容 15
1.5 总结. 17
2 数学与机器学习基础18
2.1 线性代数基础. 18
2.2 对称矩阵的性质 22
2.2.1 特征值与特征向量 22
2.2.2 对称矩阵的特征值和特征向量 23
2.2.3 对称矩阵的对角化 24
2.3 概率论. 25
2.3.1 概率与分布. 25
2.3.2 最大似然估计 28
2.4 信息论基础 31
2.5 KL 散度. 33
2.6 凸函数及其性质 37
2.7 机器学习基本概念. 39
2.8 机器学习的目标函数 42
2.9 总结. 44
3 CNN 的基石:全连接层45
3.1 线性部分. 45
3.2 非线性部分 48
3.3 神经网络的模样 50
3.4 反向传播法 55
3.4.1 反向传播法的计算方法. 55
3.4.2 反向传播法在计算上的抽象. 58
3.4.3 反向传播法在批量数据上的推广. 59
3.4.4 具体的例子. 63
3.5 参数初始化 65
3.6 总结. 68
4 CNN 的基石:卷积层69
4.1 卷积操作. 69
4.1.1 卷积是什么. 69
4.1.2 卷积层效果展示. 73
4.1.3 卷积层汇总了什么 76
4.1.4 卷积的另一种解释 77
4.2 卷积层的反向传播. 79
4.2.1 实力派解法. 80
4.2.2 偶像派解法. 84
4.3 ReLU 88
4.3.1 梯度消失问题 89
4.3.2 ReLU 的理论支撑. 92
4.3.3 ReLU 的线性性质. 93
4.3.4 ReLU 的不足. 93
4.4 总结. 94
4.5 参考文献. 94
5 Caffe 入门95
5.1 使用Caffe 进行深度学习训练. 96
5.1.1 数据预处理. 96
5.1.2 网络结构与模型训练的配置. 100
5.1.3 训练与再训练 108
5.1.4 训练日志分析 110
5.1.5 预测检验与分析. 112
5.1.6 性能测试 115
5.2 模型配置文件介绍. 117
5.3 Caffe 的整体结构. 122
5.3.1 SyncedMemory 124
5.3.2 Blob 125
5.3.3 Layer 125
5.3.4 Net 126
5.3.5 Solver 126
5.3.6 多GPU 训练. 127
5.3.7 IO 127
5.4 Caffe 的Layer 128
5.4.1 Layer 的创建LayerRegistry 128
5.4.2 Layer 的初始化. 130
5.4.3 Layer 的前向计算. 132
5.5 Caffe 的Net 组装流程 133
5.6 Caffe 的Solver 计算流程. 139
5.6.1 优化流程 140
5.6.2 多卡优化算法 142
5.7 Caffe 的Data Layer 145
5.7.1 Datum 结构. 145
5.7.2 DataReader Thread 147
5.7.3 BasePrefetchingDataLayer Thread 148
5.7.4 Data Layer 149
5.8 Caffe 的Data Transformer 150
5.8.1 C 中的Data Transformer 150
5.8.2 Python 中的Data Transformer 153
5.9 模型层扩展实践Center Loss Layer 156
5.9.1 Center Loss 的原理 156
5.9.2 Center Loss 实现. 160
5.9.3 实验分析与总结. 164
5.10 总结. 165
5.11 参考文献. 165
6 深层网络的数值问题166
6.1 ReLU 和参数初始化. 166
6.1.1 第一个ReLU 数值实验. 167
6.1.2 第二个ReLU 数值实验. 169
6.1.3 第三个实验Sigmoid 171
6.2 Xavier 初始化. 172
6.3 MSRA 初始化. 178
6.3.1 前向推导 178
6.3.2 后向推导 181
6.4 ZCA 182
6.5 与数值溢出的战斗. 186
6.5.1 Softmax Layer 186
6.5.2 Sigmoid Cross Entropy Loss 189
6.6 总结. 192
6.7 参考文献. 192
7 网络结构193
7.1 关于网络结构,我们更关心什么 193
7.2 网络结构的演化 195
7.2.1 VGG:模型哲学. 195
7.2.2 GoogLeNet:丰富模型层的内部结构. 196
7.2.3 ResNet:从乘法模型到加法模型. 197
7.2.4 全连接层的没落. 198
7.3 Batch Normalization 199
7.3.1 Normalization 199
7.3.2 使用BN 层的实验. 200
7.3.3 BN 的实现. 201
7.4 对Dropout 的思考. 204
7.5 从迁移学习的角度观察网络功能 206
7.6 ResNet 的深入分析. 210
7.6.1 DSN 解决梯度消失问题 211
7.6.2 ResNet 网络的展开结构. 212
7.6.3 FractalNet 214
7.6.4 DenseNet 215
7.7 总结. 217
7.8 参考文献. 217
8 优化与训练219
8.1 梯度下降是一门手艺活儿. 219
8.1.1 什么是梯度下降法 219
8.1.2 优雅的步长. 220
8.2 路遥知马力:动量. 225
8.3 SGD 的变种算法 232
8.3.1 非凸函数 232
8.3.2 经典算法的弯道表现. 233
8.3.3 Adagrad 234
8.3.4 Rmsprop 235
8.3.5 AdaDelta 236
8.3.6 Adam 237
8.3.7 爬坡赛. 240
8.3.8 总结. 242
8.4 L1 正则的效果. 243
8.4.1 MNIST 的L1 正则实验. 244
8.4.2 次梯度下降法 246
8.5 寻找模型的弱点 251
8.5.1 泛化性实验. 252
8.5.2 精确性实验. 255
8.6 模型优化路径的可视化. 255
8.7 模型的过拟合. 260
8.7.1 过拟合方案. 261
8.7.2 SGD 与过拟合 263
8.7.3 对于深层模型泛化的猜想. 264
8.8 总结. 265
8.9 参考文献. 265
9 应用:图像的语意分割267
9.1 FCN 268
9.2 CRF 通俗非严谨的入门. 272
9.2.1 有向图与无向图模型. 272
9.2.2 Log-Linear Model 278
9.2.3 条件随机场. 280
9.3 Dense CRF 281
9.3.1 Dense CRF 是如何被演化出来的. 281
9.3.2 Dense CRF 的公式形式. 284
9.4 Mean Field 对Dense CRF 模型的化简 285
9.5 Dense CRF 的推断计算公式 288
9.5.1 Variational Inference 推导 289
9.5.2 进一步化简. 291
9.6 完整的模型:CRF as RNN 292
9.7 总结. 294
9.8 参考文献. 294
10 应用:图像生成295
10.1 VAE 295
10.1.1 生成式模型. 295
10.1.2 Variational Lower bound 296
10.1.3 Reparameterization Trick 298
10.1.4 Encoder 和Decoder 的计算公式. 299
10.1.5 实现. 300
10.1.6 MNIST 生成模型可视化 301
10.2 GAN 303
10.2.1 GAN 的概念. 303
10.2.2 GAN 的训练分析. 305
10.2.3 GAN 实战. 309
10.3 Info-GAN 314
10.3.1 互信息. 315
10.3.2 InfoGAN 模型 317
10.4 Wasserstein GAN 320
10.4.1 分布的重叠度 321
10.4.2 两种目标函数存在的问题. 323
10.4.3 Wasserstein 距离. 325
10.4.4 Wasserstein 距离的优势. 329
10.4.5 Wasserstein GAN 的实现 331
10.5 总结. 333
10.6 参考文献. 334
|
內容試閱:
|
从你拿起这本书的那一刻开始,我就和你一起踏上了这段有关深度学习的冒险之旅。本书中有简单直白的叙述,也有复杂冗长的证明;有调皮的调侃,也有深刻的沉思。所有的一切,都是为了帮助你更轻松地对深度学习有更多了解、更多感悟。
本书的前身是我在知乎上的《无痛的机器学习》专栏(https:zhuanlan.zhihu.comhsmyy)。作为在路上前进的一枚小白,我一直有写读书笔记的习惯。早期,我会把笔记写在阅读的文献上,在这些篇章的关键处做标记、写好注释。时间一长,当我想再读这些曾经阅读过的文献时,那些注释竟然变得莫名其妙起来。当初难以理解的概念又回到难以理解的状态,于是我不得不再次阅读原文,重新获得其中的感悟,这样周而复始,一次次在这个循环中打转。
后来,我选择彻底甩掉曾经阅读过的文献既然它给我带来了那么多痛苦,为什么每次回顾时还要与它相对?于是我开始尝试将文献的所有内容重新组织成一篇短小的文章,文章中列出文献中的关键内容。这种文章简明扼要、直击重点,看着很清爽,可以帮助我快速回顾阅读的内容,又不用再回到原文,所以这种方法很快就替代了以前的那种方法。
再后来,我发现了新的问题。虽然我摆脱了晦涩的论文内容,但摆脱不了自己重述的文字。尤其是这些浓缩后的精华文字,理解起来并不比原始文献强多少,而且由于缺少很多细节,一旦遇到理解困难的状况,我不得不回到原文搜寻答案,于是这样的痛苦又得经历一次。
这时,我想起了父亲曾对我的教导:书要先读厚,然后再读薄。所谓的读厚,就是给阅读的书增加更多的内容,例如注释、自己的理解等。当自己能完全掌握书中的内容时,再将书中的细枝末节慢慢砍掉,将主体思想保留在心中,这就是读薄的过程。这样就完成了对一本书的深入阅读,其中读薄的过程和《倚天屠龙记》中张三丰教授张无忌太极拳剑的过程很相似。如果站在信息论的角度看,所谓的重意不重形,可以看作保证低频信息的正确性,依概率分布生成高频信息的一种招式生成模式。能达到这等境界,方可谓之大成。
对我来说,面对潮水般涌来的深度学习知识,想淡定从容应对是不可能的。也就是说,一开始就把书读薄是不可能的。所以,浓缩版的总结文章也慢慢被我否定了。那么只剩下一个选择了,就是把书读厚,把文章写得拖沓冗长一些。于是我开始尝试用拖沓但细致的语言做文献的总结,经过一次次地尝试,文章的易读性确实有了明显提升,因为文章描述不清楚而回看原文的次数也越来越少。与此同时,我发现写作这个过程让我对问题有了更深入的理解。
拖沓式写法通过写作驱动,更容易发现知识点与知识点之间的沟壑。要想详细描述自己阅读的内容,就得确定文章中的逻辑自己是否真的明白了。有时探究这些逻辑所花费的时间远比自己想象得长,但是它确实让我感受到了进步与成长。
渐渐地,拖沓式文章越写越多,我也逐渐将其中一些文章公开,希望能够与大家分享:希望大家能和我对同一个问题产生共鸣,同时也可以在阅读中指出文章中的错误。
不到一年,我见证了我写的文章被越来越多的人关注、讨论,在交流的过程中我收获了又一次成长。
在完成了几十篇文章后,本书的编辑郑柳洁女士联系到我,问我是否有兴趣将这些文章集结,变成一本出版印刷的书。在此之前我并没有仔细想过这件事儿,但是她的建议让我觉得这也许是又一次证明自己、使自己成长的机会,而且出版书籍在我心中也是一件神圣的事儿,于是我接受了这个建议,开始了整理书稿的工作。
整理书稿并没有想象中那么简单。网上的文章都是单独出现的,而书中的文章需要有一定的整体性;网上的文章可以用比较随意的语言叙述,而书中的语言需要尽量正式、客观。这些挑战使我修改了放在网络上的很多文字,为了确保表达清晰准确、语言通顺流畅,有些文章基本被重新写了一遍。整理这些文章花费了很多业余时间,但功夫不负有心人,这项工作被一点点地完成了。
本书主要介绍了深度学习,尤其是卷积神经网络相关的基础知识,以及计算机视觉的部分应用内容。书中既包含深度学习中的基础知识,也包含部分进阶内容,同时也包含一些较新颖的概念与模型,适合不同人群阅读。对初学者来说,本书十分详细地介绍了很多基本概念,对自学入门深度学习很有帮助;对有一定经验的从业人员来说,本书可以梳理领域内的知识点,也可以作为工具书使用。
本书中的示例代码由C 和Python 两种语言实现,读者只要对两种语言有基本的了解即可。本书主要使用了Caffe 这个第三方开源框架,在此向Caffe 的作者表示感谢。
现在有很多优秀的开源框架,这些框架各有优劣,但本质上有很多共性。对没有使用过Caffe 的读者来说,阅读本书时不会有大的困扰。
最后聊聊本书的书名。最初想使用无痛这个词,无奈这个词太容易引发联想,不适合作为一本严肃的出版物的书名。学习这个词自古以来就不是轻松的代名词。学习的习字曾写作習,意思为鸟类挥动翅膀一次次试飞,其中暗含了反复练习的过程;在日语中学习被写作勉強する,从大家能看懂的两个字就可以看出,学习中的艰辛;在韩语中学习又被写作????,它前两个字的发音和恐怖二字很像,也许当初这个词背后的含义和恐怖有关。这样看来,东北亚的这几个国家都学习这件事都充满了敬畏之心,学习这件事是绝对不会轻松的,更不会是无痛的,经历过多年教育的读者相信也会有体会。
学习的过程充满痛苦,而这是不可避免的。我们每个人在人生的道路上都有过不断探索、不断遇到挫折,然后改进自我,完成进化的体验。就像机器学习中被训练的模型一样,不断地完成预测、找到差距、更新参数,最终达到最优。在这条自我成长的道路上,每一次的失败、每一次的努力都充满了艰辛,然而没有痛苦的积累,就不会有最终快乐的迸发。
人生苦短。虽然人生要经历许多的痛苦,但我们的目标并不是痛苦,而是走向彼岸的快乐。因此,如果能有减少痛苦的良方,大家还是愿意一试。社会的不断发展进步就是探寻减少痛苦的解药,而本书的写作目标也是希望本书能成为各位读者学习路上的解药,在减少痛苦的同时实现心中的目标。
感谢邓澍军、夏龙先生在本书内容创作期间对内容的严格审核并提出宝贵的意见和建议;感谢知乎上各位为《无痛的机器学习》专栏中系列文章指出错误、提出疑问的朋友,是你们让文章变得更严谨;由于本人才疏学浅,行文间难免有所纰漏,望各位读者多多包涵,不吝赐教。最后感谢所有关心、支持我完成这件不易的工作的亲人和朋友。我爱你们!
作者
|
|