1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c
2.详细笔记网站(中文):http://www.ai-start.com/dl2017/
3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai
4.7 什么是深度卷积网络?What are deep ConvNets learning?
深度卷积网络到底在学什么?在这节课中我将展示一些可视化的例子,可以帮助你理解卷积网络中深度较大的层真正在做什么,这样有助于理解如何实现神经风格迁移。
来看一个例子。
如上图。假如你训练了一个卷积神经网络,是一个Alex网络,轻量级网络,你希望将看到不同层之间隐藏单元的计算结果,你可以这样做。
第一层的隐藏单元
从第一层的隐藏单元开始,假设你遍历了训练集,然后找到那些使得单元激活最大化的一些图片,或者是图片块。换句话说,将你的训练集经过NN,然后弄明白哪一张图片最大限度地激活特定的单元。注意在第一层的隐藏单元,只能看到小部分卷积神经,如果要画出来哪些激活了激活单元,只有一小块图片块是有意义的,因为这就是特定单元所能看到的全部。
如上图,你选择一个隐藏单元,发现有9个图片最大化了单元激活,你可能找到右边这样的9个图片块,似乎是图片浅层区域显示了隐藏单元所看到的,找到了像上图左边这样的边缘或者线,这就是那9个最大化地激活了隐藏单元激活项的图片块。
然后你可以选一个另一个第一层的隐藏单元,重复刚才的步骤,上图右边箭头所指这是另一个隐藏单元,似乎第二个由这9个图片块组成。看来这个隐藏单元在输入区域,寻找这样的线条(上图左下),我们也称之为接受域。
对其他隐藏单元也进行处理,会发现其他隐藏单元趋向于激活类似于上图右边这样的图片,这个似乎对垂直明亮边缘左边有绿色的图片块感兴趣。
上图第二排第一个隐藏单元倾向于橘色,这是一个有趣的图片块,红色和绿色混合成褐色或者棕橙色,但是神经元仍可以激活它。
以此类推,上图这是9个不同的代表性神经元,每一个不同的图片块都最大化地激活了。
你可以这样理解,第一层的隐藏单元通常会找一些简单的特征,比如说边缘或者颜色阴影。
我在本节课中使用的所有例子来自于Matthew Zener和Rob Fergus的这篇论文,题目是(Zeiler M D, Fergus R.Visualizing and Understanding Convolutional Networks[J]. 2013, 8689:818-833.)《可视化理解卷积神经网络》,我会使用一种更简单的方法来可视化NN隐藏单元的计算内容。如果你读过他们的论文,他们提出了一些更复杂的方式来可视化CNN的计算。
CNN的深层部分
你已经在第一层的9个隐藏单元重复了这个过程好几遍,如果在深层的隐藏单元中进行这样的计算呢?卷积神经网络的深层部分学到了什么?
在深层部分,一个隐藏单元会看到一张图片更大的部分,在极端的情况下,可以假设每一个像素都会影响到神经网络更深层的输出,靠后的隐藏单元可以看到更大的图片块,我还会画出和这页中的大小相同的图片块。
但如果我们重复这一过程,上图左边是之前第一层得到的,上图右边是可视化的第2层中最大程度激活的9个隐藏单元。
我想解释一下这个可视化,上图左上角这是使一个隐藏单元最大激活的9个图片块,其余每一个组合都是使得一个隐藏单元被激活的9个图片块。这个可视化展示了第二层的9个隐藏单元,每一个又有9个图片块使得隐藏单元有较大的输出或是较大的激活。
在更深的层上,你可以重复这个过程。
上面的图片很难看清楚,这些微小的浅层图片块,让我们放大一些。
第一层:找一些简单的特征,比如说边缘或者颜色阴影。(edges)
上图这是第一层,左上角这是第一个被高度激活的单元,你能在输入图片的区域看到,大概是右边这个角度的边缘。
第二层:检测到纹理(texture)
放大第二层的可视化图像,有意思了,第二层似乎检测到更复杂的形状和模式。比如说
- 第一排第二列这个隐藏单元,它会找到有很多垂线的垂直图案
- 第二排第三列这个隐藏单元似乎在左侧有圆形图案时会被高度激活
- 第三排第三列这个的特征是很细的垂线
以此类推,第二层检测的特征变得更加复杂。
第三层:检测到更复杂的模式
看看第三层我们将其放大,放得更大一点,看得更清楚一点,这些东西激活了第三层。再放大一点,这又很有趣了,
- 第二排第二列这个隐藏单元似乎对图像左下角的圆形很敏感,所以检测到很多车。
- 第三排第三列这一个似乎开始检测到人类
- 第一排第一列这个似乎检测特定的图案,蜂窝形状或者方形,类似这样规律的图案。
有些很难看出来,需要手动弄明白检测到什么,但是第三层明显,检测到更复杂的模式。
第四层
这是第四层,检测到的模式和特征更加复杂,
- 第一排第一列学习成了一个狗的检测器,但是这些狗看起来都很类似,我并不知道这些狗的种类,但是你知道这些都是狗,他们看起来也类似。
- 第一排第三列隐藏单元它检测什么?水吗?
- 第二排第三列似乎检测到鸟的脚等等。
第五层
第五层检测到更加复杂的事物,
- 注意到第三排第三列也有一个神经元,似乎是一个狗检测器,但是可以检测到的狗似乎更加多样性。
- 第一排第一列可以检测到键盘,或者是键盘质地的物体,可能是有很多点的物体。
- 我认为第二排第一列这个神经元可能检测到文本,但是很难确定
- 第三排第一列这个检测到花。
我们已经有了一些进展,从检测简单的事物,比如说,第一层的边缘,第二层的质地,到深层的复杂物体。
希望本节课可以让你可以更直观地了解卷积神经网络的浅层和深层是如何计算的。