RePr: Improved Training of Convolutional Filters
1、摘要:训练好的网络经常会出现卷积核提取的特征重复的问题,改用残差、inception能够改善这个问题但是却增加了计算量。本文通过提出新的训练方式即临时裁剪后再恢复一部分网络的层,不断重复这个过程进行训练能够解决特征重复的问题,这种方法不会改变网络的结构、不会增加计算量且具有通用性。本文也证明了对网络某些层进行裁剪并不是最好解决特征重复的方法。本文提出了以每个卷积层内的卷积核之间的正交性作为评定卷积核是否不够有表现力(跟其他卷积核重复提取特征)的标准。
引言:
网络架构设计很多,优化器就那几种,对训练过程的设计相关研究进展缓慢。
对已经训练好的模型进行修剪可以实现比较小的计算量,同时性能不咋降,但是从头训练一个经过修剪模型却达不到这种性能。
一般的训练方法倾向于训练出一些无关可删掉的卷积核,即使网络架构不大也会有这种倾向。
训练时向先将整个网络训练,再裁剪一部分子网络,对剩下的网络进行训练,然后再将扔掉的网络重新加上并初始化进行训练。反复这个过程即可。有很多选择裁剪的哪些子网络的评判方法,各种方法一般都会有一定的性能提升。
本文提出新的训练方法(即先裁再加,而传统的减枝是减掉之后不再加上)和裁剪选择策略(卷积层内部的卷积核之间的正交化)。观察发现即使小网络(权重不多的网络)也倾向于学习到冗余特征,显示出卷积核冗余的原因不是过多的参数,而是因为不够高效的训练的方法。
2、相关研究
1、 训练方法:全连接里的dropout、卷积神经网络里的dropout(去除激活值)、去除整个层训练。
2、 模型压缩:知识蒸馏KD(用大网络的软逻辑(soft logits)训练小网络,需要训练多个网络。
3、 节点评级(即找出表现力差的节点) Hessian很有效,但是计算量太大。稀疏范数也有效,但推断时间长。
4、 网络结构搜索 训练是探索最好的架构,并修改。
5、 特征相关性 wannilla卷积神经网络的缺点就是互相关的特征图,Inception就是通过连接不同大小的卷积核生成的fm来减少层与层之间的互相关性。而resnet和denseNet是通过相加或者连接前面的层的激活值来降低特征相关性。
本文的目标是不改变网络架构引入去相关的特征。这种性能提升在vannilla卷积神经网络()中作用最明显,在现代的神经网络中也有比较轻微提升。
3 正交特征的动机
一般来说,在激活空间中能捕获到的方向越多,那么模型的通用性越好。如果模型的特征正交于另外另外一个特征,这两个特征捕获的方向不一样。对于小网络可以通过分析不同层产生的fm的互相关性,然后把这些fm组成一个组,这样来计算卷积核的表现力。但是对于深度卷积神经网络,计算量太大,不实际。
另外一种计算上可性的方案是在标准的SGD训练时给损失函数加上一个正则化项,但这对性能提升太小。
计算fm的正交性不太实际,因为要计算整个网络的所有层的正交性,如果输入图片很大的话计算量相当大,倒不如计算某一层的卷积核权重之间的正交性。
评判一个卷积核的贡献:greedy Oracle(即在推断时把这个卷积核权重全部置零来看准确率如何)
4.训练方法:RePr
将扔掉的卷积核再加上时,需要重新初始化,初始化的值要正交于没扔掉之前的这个卷积核的值和其他卷积核的值。
训练过程:
F代表整个网络的所有卷积核。MF代表整个网络, 代表被裁剪的的那些卷积核。 代表去掉裁剪的卷积核后剩余的网络。R(f)代表对某个卷积核计算正交性结果。
注:vanilla卷积神经网络即最原始的卷积神经网络,没有resnet、没有inception、没有bn。
5.评判标准:卷积核之间的正交性
之前用的greedy Oracle在深度卷积神经网络中不可行(因为把整个神经网络的所有卷积核都看做事独立的来计算fm的相关性,即计算卷积核之间的正交性),计算量太大,且不一定是最好。改为计算某一层之内的所有卷积核之间的正
交性。
把第l层的每个卷积(三维的)都变成一维向量f,这一层(第l层)一共有Jl个卷积核。
Pl代表Jl*Jl的矩阵,P[i] 代表第i行, 是归一化的权重,卷积核f的正交性用Ofl来表示。
当某一行的所有值相加起来最小时代表这一行对应的卷积核正交于本层其他所有卷积核。这个值在整个卷积神经网络中的所有卷积核对应的正交性中最大时认为不正交于本层其他所有卷积核,且在所有层的卷积核认定中,这个卷积核是需要修剪的那个。即评正交性是在单层计算的,但是评要修剪的卷积核时是在所有层的卷积核中比较得出的,因为如果要在每一层内评的话会增加一个超参数p%来判断这层哪些卷积核要修剪,而且这种评的方式忽略了其他层中更需要修剪的卷积核。
6、 消融实验
比较修剪标准:有很多评判卷积核相关性的方法,Tayor metric:计算卷积核激活值和梯度值的点积。这种方法在一个完全收敛的网络里计算的相关性很低,因为梯度几乎为零,但这不代表卷积核之间的相关性就很低。虽然卷积核的值的相关性在一定程度上表达了检测率的准确性,但更重要的是评价卷积核的秩的相关性,这个在评弱卷积核时更有意义。
本文用的相关性计算方法是Ortho。
修剪率(P%):通常修剪率越高,测试准确率越好,但是裁剪超过30%时性能表现就不重要了,到50%时,模型似乎从修剪的层中恢复过来。而且训练不稳定,甚至不能收敛。
RePr的迭代次数:每次迭代之后性能提升下降,故2~3此迭代足以。
优化器和S1/S2:不同的优化器对性能提升不同,但是S1/S2的变化对性能提升差别不大。
学习率变化策略:使用固定的学习率调优很麻烦,故使用循环学习率,实验表明学习率的变化对性能影响不大。
Dropout的影响:没必要,本文用的方法可以视为一种变种的dropout,区别就是不是随机的、只在选择裁剪时才用,训练时沿用裁剪的模型。而标准的dropout是每一层每一次训练迭代中都进行随机裁剪。
给损失函数加入正则化项:影响不大。
7.正交性和蒸馏
RePr和知识蒸馏法都是提高小网络性能的技巧。RePr减少重复而KD从一个大网络蒸馏信息。比较发现把它们俩混合着用效果更佳。
- 结果
在vannilla卷积神经网络中表现比现代据卷积神经网络中更好,在cifar100中比cifar10表现更好。
在视觉问答和目标检测中的表现。(略)
9.结论
现有的模型普遍存在参数过多或者表现力不够强(提取的特征重复)。本文提出一种新的训练方法RePr,即裁剪一部分表现力不够强的卷积核重新性训练,然后再把裁剪掉的卷积核加上,再重新训练。选择裁剪哪些卷积核用某一层内的每一个正交性计算,筛选掉整个网络的卷积核中正交性最差的30%。这种训练方法有效提升vannilla卷积神经网络(无resnet、无inception、无bn)的表现。