主要是Visualizing and Understanding Convolutional Networks这篇文章的一个笔记。
Abstract
卷积神经网络再ImageNet的图片分类的表现很不错,但是很多人还是搞不懂为啥CNN会有这么好的效果和怎么提高神经网络的效果,本文将解决这些问题。本文利用反卷积对featuremap进行了可视化。通过可视化展示CNN内部的一些特点,并且分析怎么优化网络结构。
Introduction
CNN自发明以来,在手写数字识别,人脸检测,等各种视觉分类任务中都取得了不错的成绩。convnet复兴有这几个原因,1 样本多了,训练集大了, 2 GPU强大了, 3 一些更好的优化策略,例如Dropout
本文
- 把featuremap 重构到像素空间中实现可视化,
- 观察特征在训练时的演变过程,并且从中发现了一些问题,
- 遮挡图片的一部分,说明图片那部分是对分类器重要的,
- 研究了模型的泛化能力。
Related Work
- 通过直接观察来分析网络模型的相关特征是一个常用的方法。缺点主要是,只适用于第一层网络的分析,高层的特征不适合人眼观察理解,就不太好用了。
- Erhan 通过梯度下降法寻找使神经元响应最大的图片,但是这种方法容易受初值影响,而且没有反映出神经网络之中的一些不变性。
- Leet show how the Hessian of a given unit may be
computed numerically around the optimal response,
giving some insight into invariances. (没看懂。。。) - 本文提出的是一种非参数化观察网络的不变性的方法。
Approach
采用 (LeCun et al.,1989) and (Krizhevsky et al., 2012)提出的标准的监督学习卷积网络模型,把输入的二维图像通过一系列神经网络层转换为一个概率向量,每个概率对应C个不同分类。每层包括 1 卷积层,2 relu激活层, 3 [可选]maxpooling池化层。4 [可选] 归一化层。最后几层是全连接层,输出层是一个softmax分类器。图3展示了这个模型。
用交叉熵损失函数,随机梯度下降进行训练。
Visualization with a Deconvnet
图一展示了一层的反卷积可视化流程。
反卷积可以认为是卷积的逆过程,他们具有相同的卷积核和pooling参数。
我们要验证特定的featuremap,把其他的activation全设成0,(我理解是一个卷积核对应一个activation,也就是一个featuremap ,就是把特定的featuremap保留这层其他的featuremap置成0,送到反卷积网络里。或者把其他卷积核置0,只保留一个。)然后送到反卷积网络里,经过一系列的反池化,反激活,反卷积,最后回到像素空间。
- Unpooling 池化是不可逆的,记录每次最大值的索引,反池化的时候,最大值放回原来的位置,其他地方置0。
- Rectification 再通过一次relu保证没有负值。(为啥要保证没有负值。。。)
- Filtering 反卷积使用和卷积一样的权值的转置。(https://www.zhihu.com/question/43609045 高票答案对反卷积解释地挺好)
unpooling的过程中,只保留了极大值的信息,其它地方填充0,因此重构出来的图片更像是原图的某些碎片。
Training Details
使用ImageNet训练集。先截取图片中心256 * 256像素的位置,然后减去图片的颜色均值,再截10个不同的224 * 224的窗口(水平翻转,滑动)。随机梯度训练。学习率0.01,动量系数0.9,当误差趋于收敛时,手动停止。Dropout系数0.5,所有权值初始值0.01,bias设为0。图6(a)展示了部分卷积核,其中有一部分核数值过大,于是对均方根大于0.1的进行归一化,使其均方根为0.1。
Feature Visualization
图2 显示了9个让特定featuremap响应最大的可视化结果。从而展示其中的不变性。一些固定的输入特征刺激神经网络产生固定的输出特征(隐含的),这也解释了图像畸变时候,为什么输出结果保持不变。和重构特征相比,输入图片之间的差异很大,而重构特征只包含哪些具有判别能力的纹理结构。举例说明,第5层第1行第二列,9张图片个不相同,重构出来的特征显示的是背景的草地,没有前景特征。
层2展示了物体的边缘和轮廓,以及颜色的组合。
层3展示了更复杂的特征,相似的纹理。
层4不同组重构的特征有较大差异,狗的脸,鸟的腿。
层5每组图片都展示了存在重大差异的一类物体,如,键盘,狗。
Feature Evolution during Training
经过一定次数迭代后底层特征先趋于稳定,高层特征则需要更多周期。
Feature Invariance
分别进行了平移和缩放和旋转变换。在第一层,微小的输入对输出特征的影响都比较明显。到高层平移和缩放的影响越来越小。对旋转操作没有明显的不变性,除非实物本身比较对称(就像第五个图entertainment center)。
Architecture Selection
经过可视化发现,(1)第一层是高频和低频内容的混合,中频部分比较缺乏。(2)第二层的可视化效果比较混乱,可能是因为第一层的卷积层步长4太大导致的。于是把第一层的模板从11 * 11改成了 7 * 7,把步长从4改为2。改完提升了性能。
Occlusion Sensitivity
把灰块覆盖在可视化的区域,识别率明显下降。这也表明可视化出来的东西和特征确实有着对应关系,也就验证了图2和图4。
Correspondence Analysis
深度神经网络没有一套有效的理论分析特定物体的部件之间的关系,但是可能是隐式计算了这些特征。
ImageNet 2012 Varying ImageNet Model Sizes
调整神经元的数量,或者完全删除他们。去除6,7,error只长了一点,去除中间两个卷积层影响也较小,这四层都去掉性能骤降。改变全连接的大小,影响不大,增加卷积核的个数可以提高性能,增加卷积核同时增加全连接个数,似乎有点过拟合。
Feature Generalization
保持卷积层不变,仅训练softmax分类器,测试了其他数据集。表现,基于imagenet库训练的特征似乎更有效。
Feature Analysis
模型学习到的特征同样适用于svm分类。保留层越多,分类性能越好。说明,深度增加了,网络学到的特征更好。