可视化并理解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学习到的特征呈现分层特性,底层是一些边缘角点以及颜色的抽象特征,越到高层则越呈现出具体的特征,
这也为如何得到更好的模型给出了指导,一个最简单的思路便是使网络更深,使得每层的特征更加层次分明,这样就能学到更加泛化的特征。
这里还有一个重要的公式,感受野的计算公式:
其中表示第i层layer的输入的某个区域,表示第i层layer的步长,表示kernel size,注意,不需要考虑padding size。
2.Feature Evolution during Training
底层先收敛,然后高层再收敛。
3.Feature Invariance
小变换对模型的第一层有着显著的影响,但对顶层影响较小,对于平移和缩放是准线性的。网络输出对于平移和缩放是稳定的。
但是一般来说,除了具有旋转对称性的物体来说,输出来旋转来说是不稳定的.这说明了卷积操作对于平移和缩放具有很好的不变性,而对
于旋转的不变性较差。
还有其他部分的实验,个人感觉说服力并不是那么让人信服。
可视化实践:因为在家,没有实验环境,这部分就先留着,等回学校试试