王日彤
(东北大学理学院 辽宁省沈阳市 110819)
图像分类是计算机视觉领域最重要的任务之一,其主要过程包括数据预处理,图像特征提取和分类决策。近年来随着深度学习的发展,卷积神经网络(CNN)模型替代传统图像分类模型成为图像分类任务的主流模型,有很好的图像分类效果。常用的模型有VGG、ResNet、DenseNet 等等。
在卷积神经网络(CNN)模型中,首先定义损失函数用于计算模型预测值与真实值之间的误差,然后计算损失函数对模型各参数的梯度值,最后利用优化算法对模型参数进行迭代更新。当前深度学习的主流优化算法为梯度下降法及其变种形式,标准梯度下降算法在每一步迭代的过程中需要使用全部训练样本,虽然参数更新方向最稳定,但时间与空间的消耗巨大。因此在实际问题中通常使用随机梯度下降算法(SGD),每一步只使用随机抽样的一个样本更新参数方向[1],这减少了迭代的计算量。后来研究人员主要在方向和学习率两方面进行了改进,2015年Diederik 等人综合了前人算法的优势并提出了Adam 算法,在后续发展中Adam 算法成为最常用的算法之一。
考虑到深度学习关于优化算法的研究主要依据梯度下降法,本文基于共轭梯度法,在CIFAR-10 图像分类数据集上设计实验,构建卷积神经网络(CNN)模型并采用修正的三项PRP 共轭梯度法(M-PRPCG)与Adam 算法分别训练模型,比较实验结果。
共轭梯度法是介于梯度下降法与牛顿法之间的一个方法,它仅需要利用一阶导数信息,不但克服了梯度下降法收敛慢的特点,又避免了牛顿法需要储存和计算海塞矩阵并求逆的缺点。共轭梯度法不仅是解大型线性方程组最有用的方法之一,也是解大型非线性最优化问题最有效的方法之一[2]。其主要思想是结合梯度下降方向与共轭性,构建一组共轭方向,并沿该方向进行参数更新。参数更新公式为:
表1:修正的三项共轭梯度算法
表2:实验结果
其中gt为模型参数的梯度,βt为一个参数,根据选取的不同有PRP、FR、DY 等共轭梯度法。在工程数值优化领域中,PRP 共轭梯度法在实际问题中的数值效果很好[3],其βt的选取为:
2017年Bakhtawar Baluch 等人在文献[4]中结合了PRP 共轭梯度法与三项共轭梯度算法的优点,提出了新的三项PRP 共轭梯度算法,具有不依赖于任何线搜索的充分下降性质,同时证明了在Wolfe 线搜索准则下对非凸问题的全局收敛性。新的三项PRP 共轭梯度算法参数更新方向dt公式为:
其中,
线搜索的目的是让目标函数有足够的下降量。
本文设计的用于训练卷积神经网络模型的修正的三项PRP 共轭梯度算法(M-PRPCG)描述见表1。
算法利用了公式(4)的参数更新方向dt。由于实际图像分类任务中整个模型的参数量达到千万级别,若每次更新一个参数都进行线搜索计算会造成计算与存储成本过高,因此在线搜索部分进行调整。首先考虑到线搜索的目的是让目标函数即损失函数有充分的下降量以及在每轮更新过程只能利用本轮和上轮的数据,因此在计算当前步的学习率过程中添加超参数γ 对项进行近似,其中 为公式(8)不等式两边的差值估计,即为损失函数的下降量。然后近似计算学习率图像数据集中存在大量离群样本会导致部分参数梯度过大,这造成在某个方向上的学习率变大,进而导致模型不收敛。因此设定一个限制项α 对学习率大小进行控制,当学习率αt≥α 时,令αt=α,这样就使得模型可以正常收敛。
修正的三项PRP 共轭梯度法(M-PRPCG)在迭代点处利用梯度构造了一组共轭的下降方向,使得参数在各方向上的更新均不冲突。算法利用一阶梯度信息并配合线搜索确定学习率,计算方便的同时又解决了梯度下降法收敛精度不高的问题,因此可以应用到深度学习图像分类任务中来。
图1:模型收敛曲线
实验采用深度学习框架Pytorch,所用数据集为CIFAR-10 图像分类数据集,包含60000 张32*32 的彩色图像,有10 类物体图片,每类6000 张,分为训练集和测试集。其中,训练集为5000 张图片,测试集为1000 张图片。
实验平台选择为windows10 系统,CPU 为Intel(R)Core(TM)i5-7300HQ CPU@2.50GHz,GPU 型号为GTX-1050TI,显存为4g,使用NVIDIA CUDA 对GPU 进行加速。
采用的卷积神经网络(CNN)模型为ResNet18 和VGG16,为当前深度学习领域主流的图像分类模型。
实验以测试集分类准确率为评价指标,即分类正确的样本数量占总样本数量的比重。设分类正确的样本数为b,总样本数为a,则分类准确率(Accuracy)为:
实验是在CIFAR-10 图像分类数据集上进行,使用ResNet18和VGG16 作为卷积神经网络模型,再利用修正的三项PRP 共轭梯度法(M-PRPCG)与当前主流的Adam 算法对模型进行训练,其中迭代轮数epochs 设为100,批样本数batch_size 设为256,学习率learning rate 设为0.01,M-PRPCG 算法中的参数设置为
采用M-PRPCG 算法和Adam 算法训练的模型在训练集与测试集上的图像分类准确率见表2。
图1 为ResNet18 模型和VGG16 模型在测试集上的分类准确率收敛曲线。
从图1 的收敛曲线可以看出,虽然在训练初期修正的三项PRP共轭梯度算法(M-PRPCG)准确率有较大幅度的振动,但仍可以快速收敛到一个较高的值。从表2 的实验结果可以看出,在相同的CNN图像分类模型上,采用修正的三项PRP共轭梯度法(M-PRPCG)训练出的模型在测试集上的准确率均高于使用Adam 算法训练出的模型的准确率。
实验结果表明,使用修正的三项PRP 共轭梯度法(M-PRPCG)训练出CNN 图像分类模型的分类准确率更高,实验效果更好。
对于深度学习的CNN 图像分类模型的优化算法部分,本文应用的修正的三项PRP 共轭梯度算法(M-PRPCG)具有不依赖于任何线搜索的充分下降性质,能够保证在每次参数更新后损失函数有足够的下降量。本文在CIFAR-10 图像分类数据集上使用修正的三项PRP 共轭梯度算法(M-PRPCG)分别对ResNet18 和VGG16 模型进行训练。实验结果表明,本文所设计的修正的三项PRP 共轭梯度算法(M-PRPCG)相比于Adam 算法有更好的图像分类效果,可以应用到图像分类任务中去。