『高性能模型』卷积网络可视化与理解

『cs231n』卷积神经网络的可视化与进一步理解

一、反卷积可视化

这是一篇14年的老文章:Visualizing and Understanding Convolutional Networks,文中针对的模型为12年的 AlexNet,从可视化的角度对卷积神经网络的理解提出了一个新的视角。

作者可视化卷积网络的手段为添加新的反卷积模块,如下图所示:

将感兴趣层的卷积网络输出的特征中选取一个激活单元(一般取最大的),特征中其他单元全部置零,送入一个等效的反卷积网络,还原输出大小。

1、反向池化

网上找到的示意图,出处见水印,展示了反最大池化的流程。

2、反激活

relu 函数的反向仍为 relu 函数,各个框架反向传播的实现也确实是这么写的。

3、反卷积

反卷积实现逻辑如上图(出处见水印),不过本文种描述的方法是将对应层的卷积核转置即可,和印象中的处理不太一致,不过这不是本文重点,我们只要知道这里可以还原卷积即可,权且略过,转置卷积逻辑见:『TensotFlow』转置卷积

二、可视化分析

作者首先对比了不同 layer 提取到的特征:

作者给我们显示了在网络训练过程中每一层学习到的特征是怎么变化的,上面每一整张图片是网络的某一层特征图,然后每一行有8个小图片,分别表示网络epochs次数为:1、2、5、10、20、30、40、64的特征图 :

(1) 从层与层之间做比较,我们可以看到,低层在训练的过程中基本没啥变化,比较容易收敛,高层的特征学习则变化很大,收敛需要较多轮数

(2) 从高层网络conv5的变化过程,我们可以看到,刚开始几次的迭代,基本变化不是很大,但是到了40~50的迭代的时候,变化很大,说明高层会在高轮数后快速收敛(训练时不要心急233)

然后讨论了不同层 layer 提取特征的不变性:

上图解释:

第一列表示原图的各种变换(a为平移,b为放缩,c为旋转)
第二列表示layer1层特征在原图变换前后的像素欧式距离,横坐标为平移像素距离/放缩倍数/旋转角度
第三列表示layer5层特征的变换前后像素间欧式距离
第四列表示真实类别的得分变化情况

作者希望说明底层特征对原图的变换很敏感 高层特征对原图的某些变换并不敏感,平移变换和放缩变换时高层特征欧式距离变化近似线性 卷积神经网络对平移和放缩不变性较好,但是除了特定图片(本身形状特殊)外,旋转对网络影响很大。

再之后作者探讨了图像特定位置对分类的贡献:

 

上图解释:

第一列表示原图及遮挡示意图 
第二列表示遮挡中心所在不同位置时layer5最大激活值变化 
第三列简单的可视化layer5的最大激活值 
第四列表示遮挡中心所在不同位置时真实类别得分的变化 
第五列表示遮挡中心所在不同位置时最高得分类别的变换

这里面我们需要注意,layer5 并不是最高层,也就是 layer5 和 classifier 之间还有其他的高层语义信息存储层。

对于第一行:

c图可见layer5特征主要针对狗头
b图可见遮挡住狗头,那么layer5的激活单元最大值会明显降低
d图可见遮挡住狗头,分类为狗的得分会明显降低
e图可见遮挡其他位置最高得分都是分类为狗,但是遮挡住狗头后最高得分为网球

对于第二行:

c图可见layer5特征主要针对车身标语
b图可见遮挡住车身标语,那么layer5的激活单元最大值会明显降低
d图可见遮挡住车轮,分类为车轮的得分会明显降低
e图可见分类为车轮这一决定是很脆弱的,随随便便就会分给其他类别

对于第三行:

c图可见layer5特征主要针对人脸
b图可见遮挡住人脸,那么layer5的激活单元最大值会明显降低
d图可见遮挡住狗,分类为狗的得分会明显降低
e图可见虽然layer5特征针对人脸,但是分类器很好的学到了狗的特征,只要不遮挡住狗,分类器可以很好的识别出狗的类别(由标签可见这是一个单独识别狗种类的数据集,所以人脸特征没什么干扰)

进一步的验证 layer5 和 最终 layer7 的特征信息实验如下:

狗种类随机遮挡分类实验,layer5 在遮挡眼睛或鼻子后激活值相比随机遮挡下降明显,layer7则没什么变化,由此推测:layer5较为具体的检测狗头,layer7更侧重抽象的狗类别信息。

由于是篇老文,我感觉本文的很多部分(包括指导设计更高效网络的部分)对当下已经没什么参考意义了(谁知道15、16年分类网络精度上天了),所以仅将我觉得对当下比较有学习价值的部分展示出来,从侧面一窥黑箱里的秘密。

posted @ 2019-04-03 15:37  叠加态的猫  阅读(1614)  评论(0编辑  收藏  举报