论文笔记:Visualizing and Understanding Convolutional Networks

一、这篇论文解决什么问题

  1. 模型为什么表现得好(内在原理)
  2. 模型怎么样改进(可解释地、可控地)

以前方法的局限性:

  1. 只可以对第一层特征进行可视化,而对高层特征束手无策
  2. 无法解释每一层的不变性(从不同的图中学到相同的特征)

本文的核心技术:Deconvolutional Network (deconvnet)

本文可以做到:解释训练集中的哪些pattern可以激活相应的feature map

二、模型基础结构及deconvnet技术

模型基础结构:比较经典的CNN分类器结构

论文笔记:Visualizing and Understanding Convolutional Networks_第1张图片

 deconvnet技术:运用这种技术如何研究一个模型

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

论文笔记:Visualizing and Understanding Convolutional Networks_第2张图片

三、卷积神经网络的可视化

模型为什么表现得好(内在原理)

1. 特征可视化

结论:底层feature map更关注空间信息(颜色、纹理等),高层feature map更关注语义信息(能从不同的物体中提取相同之处)

研究过程:

  1. 找到使某个feature map最大的top 9的训练集的原图
  2. 将这9张原图的这个feature map分别利用deconvnet重构出9张相应的图片
  3. 比较原图和相应的重构图

论文笔记:Visualizing and Understanding Convolutional Networks_第3张图片

2. 训练过程中的特征演化

结论:底层收敛快,高层收敛慢 

研究过程:

  1. 某一层feature map在训练到某一轮时,找到使feature map最大的训练集里的原图
  2. 利用这个原图,正向计算出feature map,然后运用deconvnet重构出相应的图片

注意:论文Fig 4中每一行的图对应的原图不一定是同一张,如果发生变化,说明在训练过程中使得这个feature map最大的图片变了

3. 特征不变性

结论:

  1. 底层对图像变换很敏感,中高层则没那么敏感
  2. 网络整体结果对平移和缩放都不敏感,但对旋转敏感,除非旋转特定角度(90度、180度、270度)

研究过程:

  1. 对图片进行平移、旋转、缩放
  2. 计算原图的feature vector(feature map拉平后的向量)和处理后的图片的feature vector欧式距离
  3. 根据平移的幅度、旋转的角度、缩放的幅度不同,对上述距离作图

 四、模型的结构选择

模型怎么样改进(可解释地、可控地)

修改AlexNet:

  1. 通过可视化第一层和第二层找到一些无效特征
  2. 通过缩小卷积核大小和步长进行改进

论文笔记:Visualizing and Understanding Convolutional Networks_第4张图片

 五、局部遮挡敏感性分析

模型为什么表现得好(内在原理)

结论:模型重点关注图像中的关键部位

研究过程:

  1. 用灰色滑块在原图上不同区域进行遮挡,然后作四类图
  2. 第一列:输入不经任何遮挡的原图,从第5层找出激活最大的feature map,把不同遮挡位置的feature map叠加到一起,例如挡住狗头上毛茸茸的区域,feature map的值就会迅速降低
  3. 第二列:输入不经任何遮挡的原图,从第5层找出激活最大的feature map,将其运用deconvnet重构出相应的图片,即第二列左上角的图片,剩下的3张图是从训练集中找出能使相同的feature map最大的3张原图然后得到deconvnet后的3张图片,例如这个feature map提取的是动物毛茸茸的特征
  4. 第三列:遮挡不同位置时,识别成相应类别的概率热力图,例如遮挡住狗脸,模型识别成这个分类的概率就会迅速降低
  5. 第四列:遮挡不同位置时,会被识别成的类别,例如遮挡狗脸,会被识别成网球

注意:对第三行图片来说,第5层找出激活最大的feature map提取的是人脸特征,最后还能被识别为狗的原因,拟人化一点的表述就是,对于一个feature map,我只管告诉你我最擅长提取哪类特征,至于最后分类的时候,你要不要用,我不管。一句话,我有大招,但不一定对你有用。

六、局部相关性分析

模型为什么表现得好(内在原理)

结论:模型会隐式地定义不同图像中特殊部位的相关性

研究过程:

  1. 对每张图都进行相同的遮挡,例如对每张图片都遮挡狗的右眼
  2. 计算出每张图和遮挡后的图的feature vector的差异,例如计算第一行第一列和第一行第二列两张图的差异
  3. 计算每一列不同\epsilon两两之间Hamming distance的总和,如果这个总和很小,说明遮挡相同的部位对每张图的影响都一样

七、实验

层数/神经元数对模型的影响

  1. 去掉全连接层或者中间层,对模型几乎无影响
  2. 但是同时去掉全连接层和中间层,模型效果就会显著变差,说明网络深度对模型很重要
  3. 修改全连接层的神经元个数,对模型几乎无影响
  4. 增加卷积核个数,会有一些增益,但是会引起过拟合

特征泛化:在ImageNet上预训练好的模型,在其他数据集上微调后效果很好,对训练数据的数量要求也更低

PS:本文大部分公式和图片都来自于Visualizing and Understanding Convolutional Networks,对本文的理解来自于对论文的学习及对同济子豪兄讲解的学习,有理解不对的地方,欢迎指正

你可能感兴趣的:(模型的可解释性,ZFNet,论文笔记,论文阅读)