论文笔记:Visualizing and Understanding Convolutional Networks
一、这篇论文解决什么问题
- 模型为什么表现得好(内在原理)
- 模型怎么样改进(可解释地、可控地)
以前方法的局限性:
- 只可以对第一层特征进行可视化,而对高层特征束手无策
- 无法解释每一层的不变性(从不同的图中学到相同的特征)
本文的核心技术: Deconvolutional Network (deconvnet)
本文可以做到: 解释训练集中的哪些pattern可以激活相应的feature map
二、模型基础结构及deconvnet技术
模型基础结构:比较经典的CNN分类器结构

deconvnet技术:运用这种技术如何研究一个模型
- 定目标:我们要研究哪一层的feature map,就将其输入到deconvnet进行一系列的操作
- 输入原始图像,正向计算要研究的那一层的feature map,挑出我们要研究的feature map
- 把除了这个feature map之外的feature map都设置为0,把这些feature map都输入到deconvnet中
- deconvnet-unpooling:max pooling在正向计算的时候,就记下来max的位置,在unpooling时,原来的位置仍要对应最大值,其他位置设置成0
- deconvnet-rectification:利用了ReLU的性质,反过来的操作和正向计算的操作,其实一样,直接使用ReLU即可
- deconvnet-filtering:卷积核是原来正向计算时卷积核的转置

三、卷积神经网络的可视化
模型为什么表现得好(内在原理)
1. 特征可视化
结论: 底层feature map更关注空间信息(颜色、纹理等),高层feature map更关注语义信息(能从不同的物体中提取相同之处)
研究过程:
- 找到使某个feature map最大的top 9的训练集的原图
- 将这9张原图的这个feature map分别利用deconvnet重构出9张相应的图片
- 比较原图和相应的重构图

2. 训练过程中的特征演化
结论: 底层收敛快,高层收敛慢
研究过程:
- 某一层feature map在训练到某一轮时,找到使feature map最大的训练集里的原图
- 利用这个原图,正向计算出feature map,然后运用deconvnet重构出相应的图片
注意: 论文Fig 4中每一行的图对应的原图不一定是同一张,如果发生变化,说明在训练过程中使得这个feature map最大的图片变了
3. 特征不变性
结论:
- 底层对图像变换很敏感,中高层则没那么敏感
- 网络整体结果对平移和缩放都不敏感,但对旋转敏感,除非旋转特定角度(90度、180度、270度)
研究过程:
- 对图片进行平移、旋转、缩放
- 计算原图的feature vector(feature map拉平后的向量)和处理后的图片的feature vector欧式距离
- 根据平移的幅度、旋转的角度、缩放的幅度不同,对上述距离作图
四、模型的结构选择
模型怎么样改进(可解释地、可控地)
修改AlexNet:
- 通过可视化第一层和第二层找到一些无效特征
- 通过缩小卷积核大小和步长进行改进

五、局部遮挡敏感性分析
模型为什么表现得好(内在原理)
结论: 模型重点关注图像中的关键部位
研究过程:
- 用灰色滑块在原图上不同区域进行遮挡,然后作四类图
- 第一列:输入不经任何遮挡的原图,从第5层找出激活最大的feature map,把不同遮挡位置的feature map叠加到一起,例如挡住狗头上毛茸茸的区域,feature map的值就会迅速降低
- 第二列:输入不经任何遮挡的原图,从第5层找出激活最大的feature map,将其运用deconvnet重构出相应的图片,即第二列左上角的图片,剩下的3张图是从训练集中找出能使相同的feature map最大的3张原图然后得到deconvnet后的3张图片,例如这个feature map提取的是动物毛茸茸的特征
- 第三列:遮挡不同位置时,识别成相应类别的概率热力图,例如遮挡住狗脸,模型识别成这个分类的概率就会迅速降低
- 第四列:遮挡不同位置时,会被识别成的类别,例如遮挡狗脸,会被识别成网球
注意: 对第三行图片来说,第5层找出激活最大的feature map提取的是人脸特征,最后还能被识别为狗的原因,拟人化一点的表述就是,对于一个feature map,我只管告诉你我最擅长提取哪类特征,至于最后分类的时候,你要不要用,我不管。一句话,我有大招,但不一定对你有用。
六、局部相关性分析
模型为什么表现得好(内在原理)
结论: 模型会隐式地定义不同图像中特殊部位的相关性
研究过程:
- 对每张图都进行相同的遮挡,例如对每张图片都遮挡狗的右眼
- 计算出每张图和遮挡后的图的feature vector的差异,例如计算第一行第一列和第一行第二列两张图的差异
- 计算每一列不同
两两之间Hamming distance的总和,如果这个总和很小,说明遮挡相同的部位对每张图的影响都一样
七、实验
层数/神经元数对模型的影响
- 去掉全连接层或者中间层,对模型几乎无影响
- 但是同时去掉全连接层和中间层,模型效果就会显著变差,说明网络深度对模型很重要
- 修改全连接层的神经元个数,对模型几乎无影响
- 增加卷积核个数,会有一些增益,但是会引起过拟合
特征泛化 :在ImageNet上预训练好的模型,在其他数据集上微调后效果很好,对训练数据的数量要求也更低
PS:本文大部分公式和图片都来自于Visualizing and Understanding Convolutional Networks****,对本文的理解来自于对论文的学习及对同济子豪兄讲解的学习,有理解不对的地方,欢迎指正
