Visualizing and understandingConvolutional Networks
本文是Matthew D.Zeiler 和Rob Fergus于(纽约大学)13年撰写的论文,主要通过Deconvnet(反卷积)来可视化卷积网络,来理解卷积网络,并调整卷积网络;本文通过Deconvnet技术,可视化Alex-net,并指出了Alex-net的一些不足,最后修改网络结构,使得分类结果提升。
摘要:
CNN已经获得很好的结果,但是并没有明确的理解为什么CNN会表现的这么好,或者CNN应该怎样修改来提升效果。同构本文的可视化技术,可以很好地“理解”中间的特征层和最后的分类器层。通过类似诊断(可视化+“消除”研究ablation study)的方式,这种可视化技术帮助我们找到了超越Alex-net的结构,本文还通过在ImageNet上训练,然后在其他数据集上finetuning获得了很好的结果。
一,介绍
多项技术帮助CNN复兴(最早是98年,LeCun提出的):1,大的标定数据集;2,Gpu使得大规模计算成为可能;3,很好的模型泛化技术
本文的可视化方法是一种非参数化的可视化技术。
二,方法
首先通过监督的方式利用SGD来训练网络,要了解卷积,需要解释中间层的特征激活值;我们利用Deconvnet来映射特这激活值返回到初始的像素层。
2.1利用Deconvnet
1正常卷积过程convnet:
如图右侧黑框流程图部分,上一层pooled的特征图,通过本层的filter卷积后,形成本层的卷积特征,然后经过ReLU函数进行非线性变换的到Recitifed特征图,再经过本层的max-pooling操作,完成本层的卷积池化操作;之后传入下一层。本层需要记录在执行max-pooling操作时,每个pooing局域内最大值的位置
2选择激活值:
为了理解某一个给定的pooling特征激活值,先把特征中其他的激活值设置为0;然后利用deconvnet把这个给定的激活值映射到初始像素层。
3反卷积过程deconvnet:
3.1Unpooling
顾名思义就是反pooling过程,由于pooling是不可逆的,所以unpooling只是正常pooling的一种近似;通过记录正常pooling时的位置,把传进来的特征按照记录的方式重新“摆放”,来近似pooling前的卷基层特征。如图中彩色部分
3.2Recitfication
通过ReLU函数变换unpooling特征。
3.3Filtering
利用卷积过程filter的转置(实际上就是水平和数值翻转filter)版本来计算卷积前的特征图;从而形成重构的特征。
从一个单独的激活值获得的重构图片类似原始图片的一个部分。
总是感觉这个过程好熟悉,利用SGD训练卷进网络时,误差的反向传递就是这么计算的,如果是mean-pooling就把残差平均分分配到pooling局域,如果是max-pooling只把残差反馈到记录的max-pooling最max的那个位置。
三 训练细节
本文训练的网络,就是把Alex-net的3,4,5层只连接同一个GPU的特征图的局部连接方式,换成了全连接的形式。
参数设置,除了把bias全部设置为0外(Alex-net为了让ReLU尽可能多的提取特征,把一些bias设置为1),其他都和Alex-net一样。
四 CNN可视化
特征可视化
完成训练后,对于一个特征图,选择最大的9个激活值分别进行可视化;
每层可视化特征特点:
1,每张特征图激活值有聚集性;2,高层具有更好的不变性;3,“夸张”的图像判别部分(估计应该是高层特征可视化后能够还原原图的大部分);4,每层的卷积结构能够学习分层的特征。
训练阶段特征演变:
上图展示了各层特征在训练步骤增加时激活值对应特征变化情况;一个比较有意思的现象是底层的卷积最先收敛,高层的特征需要在充分训练后才能收敛。这个和深度网络的梯度弥散现象正好相反,说明ReLU这中非线性函数能够很好的传递误差梯度。这种底层先收敛,高层后收敛比较符合人的直观。
特征不变性
1,对比2,3列图像,2列中的第1层特征对变换前后的欧氏距离相对3列中第7层中变换前后欧氏距离普遍比较大(纵坐标分别为10和0.8相差很大),说明高层更具有特征不变性。
2,从每行对比中,发现卷积对于平移和缩放的不变形更好,对于旋转的不变性较差。高层对于平移的尺度,缩放的倍数与特征改变量成线性增长;对于旋转变换,随着旋转角度的变化,促增长较大外,规律性并不明显。
3,从列7正确标签概率图可以得出,不同类别正确标签的概率不一样,在平移和缩放变换中,其中鹦鹉和鳄鱼的概率比较低,其他种类类别概率比较高。这是为啥?
4.1结构选择
通过可视化Alex-net网络的第1,2层(图中的b和d),发现了各种问题。
问题1:第一层filter是非常高频和低频的信息,中间频率的filter很少覆盖
问题2:第二层的可视化比较混淆,由于第一层比较大的间隔。
为了解决这个问题:
1,减小第一层的filter的尺寸从11*11到7*7
2,缩小间隔,从4变为2。
这两个改动形成的新结构,,获取了更多的信息,而且提升了分类准确率。
4.2 遮盖敏感性
接受失败也等于给了自己从零开始的机会,接受失败更是一种智者的宣言和呐喊;