李红运,张建林,周丽君,杨亚锋
(1.中国科学院 光电技术研究所,四川 成都 610209;2.中国科学院大学 电子电气与通信工程学院,北京 100049;3.华南理工大学 电子与信息学院,广东 广州 510641)
CNN(convolutional neural network)在计算机视觉领域是一种已经广为人知的模型。这个领域存在许多优秀的模型如VGGNet[1]、Inception[2]、ResNet[3]、DenseNet[4]、SE-Net[5]等等。尽管众多模型取得了令人瞩目的成功,但是其仍然面临着数据量要求大、训练时间长等问题。
网络的训练时间取决于硬件设备、模型复杂度、数据集大小3个方面。Priya Goyal等[6]提出了一个策略,调用了256块GPU在一个小时之内用ImageNet[7]数据集完成了对ResNet的训练,其表明了深度网络能够通过设计有效的并行算法进行快速训练。在HighwayNet[8]与ResNet出现之后,深度网络的层数已经颠覆了以往人们的认知。为了训练好复杂的超深网络,一般都需要花费大量的训练时间。尽管Gao Huang等宣称DenseNet是十分有效率的网络,但是在仅有一块GTX1080 GPU的单机上训练DenseNet也需要花费超过12小时。
本文提出了一种从数据角度进行网络加速训练的算法MT(mixing training)。其随机挑选两个样本进行融合,得到一个新样本用于训练网络,图1描绘了这个方法的原理。猎豹图1(a)与小男孩图1(b)各以0.5的权重融合后生成图片(c)。图1(a)与图1(c)都来自于General100数据集[9]。从直觉上来说,融合两张图片为一张图片将破坏每张图片的特征,从而对特征提取与识别精度造成负面的影响,但是本文将会验证MT方法不仅能够通过样本融合加速网络的训练过程,同时还会略微提升网络的识别精度。
图1 MT
加速模型的训练在深度学习领域越来越受到人们的关注。但是许多研究者都在关注如何压缩模型本身使得网络能够更快地训练结束。参数压缩的技巧能够分为参数裁剪,共享,低秩分解等等方法。举个例子,Song Han等[10]采用参数裁剪,量化与霍夫曼编码的方法压缩深度网络。除此之外,有许多工作隐含地加速了网络的训练过程,Adam等[11]方法提出了有效的训练算法,Dropout等[12,13]方法提出了有价值的训练策略,BatchNorm等[14,15]方法有益于缓减梯度消失问题等等。
降维同样是另外一个从数据维度加速模型训练的方法,最常用的降维方法是主成分分析法(PCA),线性判别分析(LDA)与局部线性嵌套(LLE)等方法。这些方法虽然提出得非常早,但是其仍然在被广泛的使用。举个例子,TH Chan等[16]提出了PCANet,这个方法建造了一个级联的PCA块作为多阶段滤波器,并且采用二值哈希法作为索引的方法。
与以上的所有方法都不同,MT即不压缩模型参数的数量,也不对输入进行降维,其直接融合两个输入样本为一个新样本便能够达到加速网络训练的效果,并且其还能够提升网络识别的精度,这是其与其它方法的本质不同。
与MT最接近的工作是Zhang H等的mixup技巧[17],该技巧使用与MT类似的方法作为模型复杂度正则化方法,其在识别,缓减对抗样本等方面取得了不错的效果。尽管与mixup技巧有相似之处,但到目前为止,MT仍然是第一个使用大幅削减训练样本量来加速网络训练的方法。
MT方法同样能够看作一种数据增广方法,在深度学习领域,类似旋转,随机裁剪,尺度变换,加噪等数据增广方法可以帮助模型抽取到更为本质的不变特征。尽管很少有论文专门分析数据增广方法,但是有许多论文中对其都有涉及。例如在人脸识别领域,一些研究者使用3D人脸模型去生成大量的2D人脸[18-20]。X Zhu等[21]使用2D人脸图像重建3D人脸模型,并且使用其生成人脸多个姿态的图片。ZH Feng等[22]提出了一个简单的2D人脸生成方法,其建造了一个基于PCA的模型,其等价于在ASM[23]与AAM[19]中使用的模型,并且选择对应的形状特征向量控制人脸的朝向。
从数学的观点来看,自然图像占据了高维像素空间中的一小部分区域,同一类图像是高维空间中的一个低维流形,在任意两个样本点之间,实际上仍然存在着广阔的空间,图2描绘了这个概念。图2中虚线代表连接任意两个样本的路径,虚线圆代表使用MT方法在该路径上的采样样本。本文的一个创新点是在两个样本点之间进行采样,使用采样点训练CNN。
图2 二维空间中的数据分布
从理论上来说,MT方法是一种构建图像凸集的方法,使用从图像凸集中采样得到的采样点用于训练网络,其损失函数与原始训练方法有一些区别。为了进一步分析这种区别,我们引入同伦的概念。同伦是微分几何中的一个基础概念,并且其描绘了两个函数之间连续变化的过程。形式上,连续函数f到连续函数g的同伦被定义为一个连续函数H∶X×[0,1]→Y使得
∀x∈X,H(x,0)=f(x)
(1)
∀x∈X,H(x,1)=g(x)
(2)
举个例子,H(x,s)=(1-s)f(x)+sg(x),s∈[0,1] 是一个f与g的同伦。s被命名为同伦参数,连续函数f与g被叫作同伦的,当且仅当存在H描述如上。我们把数据凸组合用同伦的形式进行表达,得到样本同伦与同伦样本的概念。假设x1,x2是图像空间中的两个样本,并且x(s)=(1-s)x1+sx2,s∈[0,1] 是一个x1,x2的样本同伦,从x(s) 中采样的新样本x(s*) 被叫作x1,x2的同伦样本。为了分析同伦样本如何影响损失函数,单隐层的多层感知器(MLP)被选为模型。由于卷积操作能够被转换为矩阵的乘法[24],使用带线性激活的MLP作为模型并不会损失任何一般性。本文采用欧式距离作为损失评价方法,损失函数可以表示为
(3)
yi=W2W1xi+b
(4)
其中,xi,yi与ti被表示为第i个输入数据,输出数据与目标label,N代表样本数。w代表网络的权重向量,W1,W2是隐含层与输出层的权重矩阵,b是网络输出层的偏置。为了简化表达,我们模型的隐含层没有偏置。创造样本同伦x(s)=(1-s)x1+sx2与标签同伦t(s)=(1-s)t1+st2,我们得到
(5)
y=(1-s)y1+sy2
(6)
与
(7)
并且我们设
H(w,s)=(1-s)f(w)+sg(w),s∈[0,1]
(8)
f(w)=t1-(W2W1x1+b1)
(9)
g(w)=t2-(W2W1x2+b2)
(10)
得到
(11)
我们能够发现,优化该损失函数等价于优化f(w),g(w) 同伦的范数。当我们选择二范数作为范数时,得到
(12)
对比原始损失函数
(13)
我们发现L(w,s) 相似于L(w),但是L(w,s) 随机在每对样本的损失上赋权。除此之外,L(w,s) 多了一项2s(1-s)f(w)g(w),尽管我们假设该项会影响识别的精度,但是从实验的结果上来看其并没有导致严重的负面效果,其影响我们将会在之后的工作中继续分析。
从优化的角度看,MT是相似于随机梯度下降的方法。SGD在每一次迭代中随机选择一个mini-batch作为训练输入,使得在每一次迭代中的损失函数具有随机性,即每一次迭代的损失函数曲面都不一定相同。其不仅能够降低损失函数的复杂度,同时能够增加损失函数的类型。
在经历大约6.5个小时的训练之后,采用MT方法训练的DenseNet-40(k=12)在CIFAR-10与CIFAR-100数据集上获得了93.51%,73.40%的准确率,高于原始文献[4]中的93.00%,72.45%,并且节约了大约一半的训练时间。更多的细节可以在接下来的实验章节中看到。可用的代码地址为:https://github.com/Hongyun1993/MT。
CIFAR[25]是一个由Alex Krizhevshy, Ilya Sutskever等人收集的物体识别数据集。其包含了大小为32×32像素的彩色图片六万张,其中五万张为训练样本,一万张为测试样本。CIFAR-10是将这些图片粗分为10个大类,而CIFAR-100将其分为了100个类别。该数据集被划分为5个训练集与一个测试集,每个训练集与测试集各10 000张图片。
SVHN[26]街景门派号数据集(SVHN)是从谷歌街景图中收集到的门牌号数据集,其包含73 257张数字图片用于训练,26 032张数字图片用于测试,除此之外,还有531 131张额外的图片。该数据集有两种格式:①字符级boundingbox的原始图片;②MNIST类型的32×32图片。在我们的实验中,我们使用的都是MNIST类型的格式。
数据增广是在深度学习领域广泛使用的技术,我们采用了一个标准的数据增广策略类似于文献[3,27-30]中采用的方法。这些图像都是在各边外围padding了4个像素,之后再随机裁剪生成32×32的图片,并且其中的一半都进行了镜像处理。除此之外,没有其它的数据增广策略在本文中使用。我们将采用了数据增广操作处理的数据集添加一个“+”在其名称的末尾。
由于卓越的性能以及易于训练,我们使用DenseNet-40(k=12)结构作为我们的模型(k是DenseNet模型中的增长因子)。该模型由3个块结构构成,每个块中包含12个密集连接卷积层。在块与块之间,还存在一个过渡层,该层的作用主要是用于进行特征图融合与下采样操作。网络的输出层是一层全连接层,当我们使用CIFAR-10与SVHN作为训练数据时,全连接层的输出维度为10, 当使用CIFAR-100时,全连接层的输出维度为100。除此之外,为了对输入图像进行特征图提升,网络的第一层被设置为一个卷积层(我们把一个BN-ReLU-Conv的模块叫做一个卷积层)。该网络的整体结构可以在表1中查看到。
在我们的实验中,交叉熵函数被用作损失函数,并且正则化因子被设置为10-4。Nesterov动量法作为训练算法,且动量参数被设置为0.9。卷积层的模型参数使用rmsa[31]方法进行初始化,全连接层的参数使用xaiver[32]方法进行初始化。
表1 DenseNet-40(k=12)模型结构
当使用CIFAR-10与CIFAR-100数据集进行训练时,每个mini-batch大小被设置为64,迭代次数为300代。当使用SVHN数据集进行训练时,mini-batch大小被设置为64,迭代次数为40代。网络训练的初始学习率被设置为0.1,在训练进度到达50%时设置为0.01,75%时设置为0.001。
与文献[4]相同,我们在每个卷积层后添加一个dropout层,并且设置dropout率为0.2。我们的实验都是使用装配NIVIDA GTX1080的单机作为实验平台,软件环境为python3+tensorflow1.0。
众所周知,CIFAR-10,CIFAR-100与SVHN数据集是在识别任务上最广为人知的小数据集,在这些数据集上有许多已有的结果可以作为比较。我们设计了两组实验去分析MT方法的表现,其细节如下:
Experiment 1-1(half size):在该实验中,我们动态生成一个样本量为原始数据集一半的同伦数据集。在每一轮迭代中,同伦参数s被随机地从均匀分布中采样。
Experiment 1-2(half size+20% finetuning):在这个实验中,我们在Experiment 1-1的最后20%迭代次数中使用原始的数据集进行微调,用于与Experiment 1-1进行对比。
以上两个实验与其它模型的比较被展示在表2当中,并且其被简写为Exp.1-1与Exp.1-2。表2每列的最高分被用黑体标明。Exp.1-1花费大约6.5个小时的训练时间之后,在CIFAR-10与CIFAR-100数据集上达到了93.51%与73.40%的准确率。这个训练时间大约为不使用MT技巧的一半。在CIFAR-10+数据集上,Exp.1-1达到了94.83%的准确率,其略微高于原始的94.76%的准确率,但是在CIFAR-100+数据集上,准确率为75.01%,低于原始的75.58%。
表2 各模型在CIFAR与SVHN数据集上的准确率
Exp.1-2在最后的20%次迭代中使用原始数据微调Exp.1-1,这导致了训练时长变为7.5个小时。网络在 CIFAR-10 数据集上的准确率为93.26%,CIFAR-100数据集上的准确率为72.41%,反而不如Exp.1-1的准确率。这个结果验证了MT的确是一种能够提升模型准确率的训练方法。
Exp.1-1与Exp.1-2在CIFAR-10数据集上的训练与测试曲线被展示在图3当中。其中虚线是训练曲线,实线是测试曲线。从图中可以发现一个有意思的现象,在迭代150轮后,测试准确率总是高于训练准确率,这个现象也说明,MT方法可以作为一种数据增广的方法,因为每一次迭代动态生成的同伦样本都被网络认为是新鲜的数据。在子图(b)当中可以看到在网络使用原始数据进行微调之后,训练数据的准确率有一个陡然提升,但是测试准确率却在下降。这个结果也许能够说明MT方法可以缓减网络训练过程中的过拟合现象。
图3 Exp.1-1与Exp.1-2在CIFAR-10上的训练与测试曲线
一个值得注意的问题是,MT方法并没有能够提升DenseNet-40(k=12)在SVHN数据集上的性能。产生这个现象的原因可能是在字符数据集上进行图片像素级的凸组合有可能导致语义上的歧义。
具体说来,对于CIFAR或ImageNet之类的数据集,不同类别之间的图像融合不大可能产生新的类别。例如将一只猫与一艘船进行融合,融合形成的图像不大可能像其它物体。但是对于SVHN或MNIST之类的字符数据集,情况却并非如此。
如图4(a),图4(c)所示,字符’5’或’6’分别与’7’融合形成的图像更像是字符’8’,而图4(b)与图4(d)中的’3’和’9’分别与’6’结合后的图像更像是字符’5’。我们的实验在SVHN数据集上的结果透露出了MT方法的一些缺点。即如果在两个样本的同伦轨迹上存在另外一个类别时,MT方法可能带来负面的效果。所以对于类似字符识别的任务,使用MT方法是不合适的。
图4 MT在SVHN数据集上生成的新样本
由于对于富含语义的字符来说,任何微弱的改变都有可能使得含义发生巨大的变化,这也是为什么大多数的研究者在进行字符识别时,都不会对数据集进行任何的数据增广处理[3,4]。
由于s是随机选择的,我们设计了一个实验分析在CIFAR-10数据集上固定s,MT方法的表现,这些固定s=0.5生成的图片如图5所示。
图5 CIFAR-10中原始样本与MT生成的样本
在这个实验中,我们生成了与原始数据集一样多的样本用于训练网络,其它的设置与MT的一样。最终训练的结果是,固定s的方法得到的网络准确率为89.37%,低于原始MT方法的93.51%,并且其样本量为MT方法的两倍。这个结果说明,对于MT方法来说,s的随机选择是至关重要的。由于MT方法类似于图像随机加噪。我们继续比较MT与直接在样本上添加高斯白噪声的性能差异。
我们对CIFAR-10数据集分别添加了3种类型的高斯白噪声,其主要的区别为白噪声标准差大小。
表3 对CIFAR-10数据集增添高斯噪声后的准确率
更进一步,我们不仅仅只是将两张图片合成为一张图片来构造图像的凸集,我们也尝试将更多的图片融合为一张图片来构造凸集。在这一部分,我们在CIFAR-10数据集上融合了5张图片为1张图片来训练网络。这些融合的图片被展示在图6中。
图6 5张样本融合为一张新样本
融合的表达式可以写为
(14)
我们生成了与原始CIFAR-10数据集数量相同的新图片,尽管这些图片都极度的语义模糊,但是用这些图片训练得到的网络仍然具有88.09%的准确率。这个结果对于作者来说是十分意外的,因为这些图片实在难以用肉眼区分其语义。在这个实验完成之后,我们继续使用该方法生成新数据集,但是数据集的大小仅仅为原数据的1/5。使用这个数据集训练网络仅花费了2.5小时便完成了网络的训练,并且网络具有84.09%的识别率,使用原始数据集在最后20%次迭代微调原始网络,获得了90.07%的准确率。这个实验的结果在一定程度上可以说明,网络对图像的理解与人的视觉理解还是存在一定差异的。
由于MT不仅仅能够节约训练时间,还能够略微提升网络的性能,我们认为该方法是一种有潜力的网络训练方法。除此之外,MT方法还使用了一种类似于soft-hot类型的标签编码方式,当我们将两张图片合并为一张图片时,我们使用了soft-2-hot编码,当将5张图片融合为一张时,即采用了soft-5-hot编码。
MT是一种新的训练图像生成方法。在该方法中,同伦参数s是从均匀分布U~[0,1] 中进行采样的,但是除了均匀分布之外,更多类型的分布仍然值得尝试,例如从高斯分布中采样s,更多的实验我们将在后续实验中进行尝试。除此之外,目前的MT方法是在图像的输入端进行融合,我们也可以尝试在网络隐含层中引入随机融合层来融合网络的特征图,这样的探索也是有趣的尝试。
MT目前的另外一个问题是,当使用均方差作为损失函数时,其目标函数会存在一个交叉项,我们认为该项将影响网络的性能,故如何设计一个更加合适的损失函数也是值得分析的。
由于高度的非线性,一般来说,深度网络是不太容易优化的,有许多工作[11-13]希望从优化策略的方向来解决深度网络的优化问题,但是MT方法支持了一个不太新但是有用的思路,即对于难以优化的非线性函数,添加随机噪声到函数中是一个不错的方法。
本文提出了一种网络加速训练方法MT,实验结果表明了该方法的有效性。对于可能存在冗余信息的数据集,MT方法不仅能够节约网络的训练时间,还能够略微提升网络的性能。MT方法第一眼看上去是十分反直觉的,但是在分析后我们发现该方法有与SGD方法类似的特点。并且相比与SGD,MT方法在探索损失函数的多样性方面比SGD更具优势。MT方法存在许多的变体形式,但是受限于时间,我们并不能一一实验这些变体,但是我们认为,这些变体方向都是值得探索的,并且我们也会在后续的工作中继续尝试。