可视化并理解CNN

Posted 牧马人夏峥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可视化并理解CNN相关的知识,希望对你有一定的参考价值。

参考:https://zhuanlan.zhihu.com/p/24833574

        学习论文[1311.2901] Visualizing and Understanding Convolutional Networks

        知乎专栏这篇可视化CNN讲的挺不错,我再稍微提炼下。

        Visualization with a Deconvnet:将feature map中的特征通过反池化、反激活、反卷积映射到像素。

反池化可通过记录最大激活值的位置来实现,反激活直接使用ReLU,反卷积采用该卷积核的转置来进行卷积操作(why?)

Convnet Visualization

       1.Feature Visualization:

      我们发现了CNN学习到的特征呈现分层特性,底层是一些边缘角点以及颜色的抽象特征,越到高层则越呈现出具体的特征,

这也为如何得到更好的模型给出了指导,一个最简单的思路便是使网络更深,使得每层的特征更加层次分明,这样就能学到更加泛化的特征。

     这里还有一个重要的公式,感受野的计算公式:

       其中r_i表示第i层layer的输入的某个区域,s_i表示第i层layer的步长,k_i表示kernel size,注意,不需要考虑padding size。

   2.Feature Evolution during Training

      底层先收敛,然后高层再收敛。

   3.Feature Invariance

     小变换对模型的第一层有着显著的影响,但对顶层影响较小,对于平移和缩放是准线性的。网络输出对于平移和缩放是稳定的。

但是一般来说,除了具有旋转对称性的物体来说,输出来旋转来说是不稳定的.这说明了卷积操作对于平移和缩放具有很好的不变性,而对

于旋转的不变性较差。

    还有其他部分的实验,个人感觉说服力并不是那么让人信服。

 可视化实践:因为在家,没有实验环境,这部分就先留着,等回学校试试

以上是关于可视化并理解CNN的主要内容,如果未能解决你的问题,请参考以下文章

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

CNN可视化可行性

利用Python实现卷积神经网络的可视化

caffe中如何可视化cnn各层的输出

深度学习CNN模型可视化

MATLAB可视化实战系列(四十)-基于MATLAB 自带手写数字集的CNN(LeNet5)手写数字识别-图像处理(附源代码)