李胜东 吕学强
1(中国人民大学信息学院 北京 100872)2(廊坊燕京职业技术学院计算机工程系 河北廊坊 065200)3(网络文化与数字传播北京市重点实验室(北京信息科技大学) 北京 100101)
图片问答是让机器根据图片回答自然语言问题.通用的模型采用卷积神经网络(convoltional neural networks, CNN)抽取全局图片特征,采用长短期记忆网络(long short-term memory, LSTM)抽取问题特征,然后将这2种特征融合后以推断问题答案.对于简单问题,这种模型能够得到较好的结果.但当问题比较复杂时,为了过滤掉噪声信息,需要对问题进行多步推理才能准确定位答案相关的局部图片区域.此时,该模型往往不能得到准确答案.为了解决该问题,文献[1]提出堆叠注意力网络(stacked attention networks, SANs).该模型在4个公开的视觉问答数据集上进行综合评估,其性能都显著超过当时最好的结果.
虽然SANs模型在解决图片问答问题时取得良好的效果,但问题的复杂多样性和答案的稀疏性导致该模型不能完全学习到语料的普遍规律.这容易使该模型因陷入不好的局部最优解而引发模型定位到错误区域,从而导致问答错误.统计表明,该类错误占测试错误总数的22%[1],如图1所示:
Fig. 1 Model locates the wrong area and causes errors图1 模型定位到错误区域而导致错误
图1中的问题是What swim in the ocean near two large ferries?.该问题是What类型,答案应该为object.图1(a)中的object有clouds,sky,boats,ducks,ocean.根据图1(b),第1步推理定位的答案为object(boats,ducks)和概念(swim in the ocean,near two large ferries).根据图1(c),模型在第1步推理的基础上进行第2步推理,初步定位到boats和ducks.由于它们的形状相似,而boats更大且更容易识别,模型最终定位到boats.这导致模型预测错误答案(boats),而不是正确答案(ducks).
为了解决该问题,对随机梯度下降算法进行调研和分析,提出基于图片问答的静态重启随机梯度下降算法.本文的主要贡献有4个方面:
1) 重启的思想与随机梯度下降算法融合,提出基于静态重启的随机梯度下降算法.该算法优化SANs模型,提出基于图片问答的静态重启随机梯度下降算法.实验结果和分析表明它的准确率比基于图片问答的动量随机梯度下降算法提高0.29%,但其收敛速度慢于基于图片问答的动量随机梯度下降算法.
2) 为了验证改善的显著性,对实验结果进行统计假设检验.T检验结果证明在收敛到全局最优解的过程中它的改善性能在统计意义上是极其显著的.
3) 为了验证它在同类算法中的有效性,本文将它和当前最好的一阶优化算法RmsProp,Adam,AdaDelta进行有效性实验.实验结果和分析证明它在解决图片问答问题时更有效.
4) 算法的泛化性能与数据集的选取有关.算法的推广价值与任务的选择有关.为了验证它的泛化性能和推广价值,针对图像识别任务,在经典的Cifar-10数据集上进行图像识别实验.实验结果和T检验结果证明它在收敛到全局最优解的过程中具有良好的泛化性能和较好的推广价值.
若求解机器学习算法中的模型参数,并对算法中的目标函数进行优化以找到它的最小值,梯度下降是最常用的方法之一.该算法沿着导数的方向逐步收敛到函数的最优解.
(1)
梯度下降算法简单、可操作性强,在深度学习和机器学习领域得到广泛的应用.但该算法收敛速度极慢且容易陷入局部最优解.为了解决这2个缺点,研究人员提出随机梯度下降算法.
xz+1=xz-ηz×gz.
(2)
虽然随机梯度下降算法在不同程度上解决梯度下降算法的2个缺陷,但为了使它能够针对具体问题获得最佳的处理效果,众多研究人员针对具体问题特性对它优化深度学习和机器学习问题进行大量研究,提出它的很多变种,取得较满意的效果.Yang等人[1]采用基于动量的随机梯度下降算法优化图片问答模型,提出SANs模型,解决图片问答问题;Wu等人[3]采用基于最小批的随机梯度下降算法优化图片问答模型,提出将图片内容与外部知识库提取的信息级联在一起进行多元输入的模型,解决自由形式的视觉问答问题;Yu等人[4]采用基于动量和最小批的随机梯度下降算法优化图片问答模型,提出多层注意力网络(multi-level attention network,MLAN),解决图片问答问题;Gu等人[5]和Lu等人[6]采用Rmsprop算法优化图片问答模型,较好地解决图片问答问题;Anderson等人[7]采用基于最小批的AdaDelta算法优化图片问答模型,提出自下而上和自上而下相结合的注意力机制,解决图片问答问题;Loshchilov 等人[8]将重启的思想应用到多模态学习问题中,提出基于重启的随机梯度算法,解决分类问题;Bianchi 等人[9]在随机梯度下降算法基础上提出一种新的多机系统的分布式约束的非凸优化算法的收敛性分析框架;姜纪远等人[10]针对随机梯度下降算法在求解强凸优化中的正则优化问题时的收敛速度过慢的问题,将COMID算法和α-suffix平均技巧结合,提出LIMD -α算法;杨双涛等人[11]提出异步双随机梯度算法,解决异步单随机梯度算法在集群环境中的通信冲突问题;陈振宏等人[12]针对基于模型合并的大规模随机梯度下降算法忽略参与合并模型的内在差异性而导致模型收敛速度慢和性能较差的问题,提出基于模型差异的合并策略;李平等人[13]采用基于随机梯度下降的逻辑回归方法进行文本情感分类,并利用模拟退火原理自适应选择步长,解决随机梯度下降算法中步长难以确定的问题;王功鹏等人[14]提出自适应更新学习率的随机梯度下降算法,解决学习率参数设置不当对随机梯度下降算法造成的不利影响.
总之,随机梯度下降算法在一定程度上解决梯度下降算法的2个明显缺陷,具有广泛的应用场景和良好的应用效果.在具体应用场景中,需要针对具体问题对随机梯度下降算法进行改进,得到随机梯度下降算法的变种.常用的改进方法有设置最小批、在算法中加入动量、调整学习率等.改进后的随机梯度下降算法与其他算法相结合,使目标函数逐步收敛到最小值点,从而达到算法优化的目的.
本文借鉴随机梯度下降算法改进的常规思路,分析随机梯度下降算法的工作原理和工作机制,同时考虑数据集的特点,在SANs模型的基础上提出基于图片问答的静态重启随机梯度下降算法.
若初始学习率设置不当,随机梯度下降算法在优化深度神经网络时易陷入局部最优解.在算法中引入动量后,可以帮助深度神经网络跳出局部最优解的限制.基于动量的随机梯度下降算法通过多次迭代在目标函数值递减的方向上累积1个速度矢量以加速梯度下降[15].
设vz表示当前的速度矢量,γ表示动量系数.该算法的数学表达形式[15]为
vz+1=vz×γ-ηz×gz,
(3)
xz+1=xz+vz+1.
(4)
该算法仅仅增加一部分之前的速度矢量.当梯度下降保持原来的方向时,它能增加下降的步幅,从而更快地到达最小值点;当梯度下降改变方向时,它能使改变量平滑一点,这对于不好的网络初始值具有重要的弥补作用[15].因此,它能使深度神经网络较快地达到最小值点而没有太多震荡.它优化SANs模型,在4个公开的视觉问答数据集中获得当时最好的结果,本文将其作为评估基准.
随机梯度下降算法常用于解决机器学习算法中的参数优化问题.如果考虑随机性,重启的思想能够用于随机梯度下降算法[8].在深度神经网络中,梯度和目标函数值可以从一个最小批到下一个最小批的范围内变化,故重启算法也能够用于深度神经网络.深度神经网络的解空间类似于无边无际、高低起伏、绵延不绝的高山组成的峡谷,随机梯度下降算法优化的目标是找到峡谷的最低点,即目标函数值最小的点.目前的方法采用海量数据训练深度神经网络,通过随机梯度下降算法优化该网络,尽可能地在解空间中找到这个全局最低点.但随机梯度下降算法在优化深度神经网络时,若设置较大的学习率,算法收敛速度快,容易跳过最低点;若设置较小的学习率,算法收敛速度慢,且容易陷入不好的局部最低点.为了在图片问答任务中解决该问题,提出基于图片问答的静态重启随机梯度下降算法.该算法在搜索局部最优解的过程中采用退火策略,使学习率由大到小逐步减小,解决学习率过大造成算法跳过最优解的问题,同时使收敛速度适中;当最优解不是全局最优解或算法陷入不好的局部最优解时,采用静态重启策略给算法一个较大的重启学习率,使算法能跳出局部最优解,并继续寻找全局最优解.在理论上,该算法能够找到全局最优解,提高深度神经网络的性能.
设ω表示当前最小批数,e表示训练次数,β表示重启周期的最小批数,φ表示重启缩放因子,ηmax表示学习率变化的上界,ηmin表示学习率变化的下界,σ表示学习率变化率.
若ω%β=0,ηz≥ηmin,则更新学习率:
ηz+1=ηz×σ.
(5)
若ω%β≠0,ηz≥ηmin,则更新学习率:
ηz+1=ηz.
(6)
若ω%β=0,ηz<ηmin,则更新学习率:
ηz+1=ηmax×φ.
(7)
静态重启算法中的学习率更新随机梯度下降算法中的学习率,提出基于静态重启的随机梯度下降算法.该算法优化SANs模型,提出基于图片问答的静态重启随机梯度下降算法.它通过自适应地调节学习率寻求图片问答的全局最优解.若SANs模型接近极值点时,它缓慢地给予模型一个较小的学习率,便于模型逐步收敛到局部最优解;若该最优解不是全局最优解时,通过重启算法给予模型一个较大的学习率,便于模型跳出不好的局部最优解,并试探性地找到全局最优解.为了防止通过重启而获得的学习率太大,导致模型跳到下一个不好的局部最优解的附近,在重启时通过重启缩放因子调节重启学习率,使它在合理的范围内变化.
基于堆叠注意力网络的图片问答模型由基于CNN的图片模型、基于CNN的问题模型、基于attention的堆叠注意力模型组成.
图片模型用于抽取图片特征,一般采用CNN[16]模型,很少一部分采用Faster R-CNN[17]框架.CNN模型可以采用VGGNet[18],ResNet[19],GoogLeNet[20]实现.
本文采用基于VGGNet的CNN模型抽取图片特征[1].经过VGGNet处理,维度为448×448的原始图片抽取维度为14×14的图片特征.每个维度的图片特征是一个1×512维的局部图片特征向量.这些特征向量不是来自最后的全连接层,而是来自最后的池化层.因为这一层保留原始图片的空间信息,故采用这一层的图片特征能够收到更好的效果.最后,1×512维的局部图片特征向量通过单层感知机转换成与问题向量同维度的新特征向量Ii(i=0,2,…,195).196个新特征向量形成图片特征矩阵I,用于在堆叠注意力模型中与问题特征进行特征融合.
问题模型用于抽取问题特征,常采用BOW(bag of words)[21],GRU(gated recurrent unit)[22],LSTM[23],RNN(recurrent neural network)[24],CNN[1]实现.
对于简单问题,单层模型足以准确定位答案相关的局部图片区域.但对于复杂问题,需要多层模型进行多步推理才能准确定位答案相关的局部图片区域.多层模型与单层模型类似,唯一的区别是输入层中用前一层的查询向量替代Q,其他都不变.如果需要k层模型才能准确定位答案相关的局部图片区域,那么采用qk作为查询向量推断最终答案[1].本文采用2层模型,因为3层或者更多层模型不能进一步改进问答性能[1].
本文在基于SANs的图片问答模型上评估基于图片问答的静态重启随机梯度下降算法.基准算法为基于图片问答的动量随机梯度下降算法.评估方法为视觉问答评估算法,根据问答评估结果评估算法性能.评估数据为最复杂的VQAv1数据集.
常用的图片问答数据集有DAQUAR[25],COCO-QA[26],Visual7W[27],VQA[28],FM-IQA[29].
本文采用最复杂的VQAv1数据集.该数据集包含82 783个训练集图片和40 504个验证集图片.每个图片有3个问题,每个问题有10个答案.答案由10个不同人进行标注,故这10个答案可能相同,也可能不相同.问题类型较多,答案长度也不同,最长为17个单词.
在对数据集进行预处理时,统计答案出现的频次,根据频次对答案进行降序排列,然后抽取前1 000个高频答案(占答案总数的82.67%[1])作为对问题进行分类的类标签.训练集用于训练模型;验证集一分为二[1],分别作为验证集和测试集,用于验证训练的模型和测试训练的模型.
根据VQAv1数据集的特点,每个问题有10个答案,它们可能相同,也可能不同,故图片问答模型对该数据集的评估方法不能采用机器学习和深度学习中常用的评估算法,只能采用文献[30]中的视觉问答度量方法,该方法的数学表达形式为
acc(a)=min((#humans that saida)/3,1).
(8)
它是一个全新的评估指标.只要人工标注的10个答案中有3个或3个以上的答案跟机器给予的答案匹配,就评估机器对该问题的回答完全正确;否则,评估机器对该问题的回答部分正确.除此之外,在评估之前,对机器产生的答案和人工标注的答案进行预处理,仅仅保留答案中的核心词.因此,该评估算法对不同人对同一个答案的不同表达形式具有较强的鲁棒性,能够产生比较客观且准确的评估结果,从而保证该算法评估图片问答结果的有效性和可靠性.
在基准算法实验中,γ=0.9,β=1 000,e=50,η0=0.1.根据训练数据量和训练次数,最小批的总数为145 400.算法每经过β个最小批的训练更新一次学习率.在更新学习率时,测试集测试训练的模型,并输出1个测试结果.因此,算法共得到146个测试结果,从中获得全局最优结果作为算法的实验结果.
在基于图片问答的静态重启随机梯度下降算法实验中,σ=0.9,ηmax=0.1,ηmin=0.000 5,φ=0.5,其他模型配置与基准算法一致.
根据上述实验配置,得到实验结果.为了便于在同一数量级下比较实验结果中的各个参数之间的变化趋势,学习率值放大到原来的30倍,最小批数缩小到原来的150 000,得到图片问答结果acc(a)随当前最小批数ω、学习率η、目标函数值loss变化的实验结果,如图2和图3所示:
Fig. 2 The experimental results of baseline图2 基准算法的实验结果
Fig. 3 The experimental results of static restart stochastic gradient descent图3 静态重启随机梯度下降算法的实验结果
为了全面评估算法特性,本文抽取图2和图3中的全局最优实验结果和高性能算法在达到低性能算法的全局最优实验结果时的结果,如表1所示.在表1中,M和R分别表示基准算法和基于图片问答的静态重启随机梯度下降算法;符号=的左侧是高性能算法,其右侧是低性能算法.
Table 1 The Global Optimal Experimental Results表1 全局最优实验结果
根据图2所示,在学习率不变的条件下,基准算法在优化图片问答模型时,随着最小批数增加,目标函数值沿着比较平滑的单调曲线方向逐渐减小,图片问答评估结果沿着比较平滑的单调曲线方向逐渐增加.对于局部异常点,比如第25个结果,目标函数值骤然上升,相应的图片问答结果也急剧下降.因此,基准算法在优化图片问答模型时,各个参数与结果之间的变化是合理的,说明它的实验结果是可信的和有效的.
根据图3所示,基于图片问答的静态重启随机梯度下降算法在优化图片问答模型时,随着最小批数增加,学习率在0.1和0.000 5或者0.05和0.000 5之间上下波动,目标函数值也相应地比较平缓地上下变化,图片问答评估结果沿着目标函数值曲线的单调性相反的方向变化.因此,基于图片问答的静态重启随机梯度下降算法在优化图片问答模型时,各个参数与结果之间的变化是合理的,没有发现异常情况,说明它的实验结果是可信的和有效的.
根据表1所示,基准算法在ω=78 000时获得全局最优实验结果,其值为52.18%;基于图片问答的静态重启随机梯度下降算法在ω=137 000时获得全局最优实验结果,其值为52.47%;基于图片问答的静态重启随机梯度下降算法在ω=114 000时能够收敛到与基准算法的全局最优实验结果相同的结果,其值为52.2%.因此,基于图片问答的静态重启随机梯度下降算法的全局最优实验结果比基准算法高0.29%,但基于图片问答的静态重启随机梯度下降算法在收敛到基准算法的全局最优实验结果的过程中,其收敛速度慢46.15%.收敛速度变慢的原因是重启学习率.每次重启学习率时,算法都跳出不好的局部最优解而重新尝试找到较好的局部最优解,并尽可能找到全局最优解.算法不断重启、迭代、探索,这个过程导致算法收敛速度变慢.
根据实验评估方法和性能度量标准,实验结果和分析表明基于图片问答的静态重启随机梯度下降算法的问答准确率高于基准算法.但它的性能改善是否显著呢?为了回答这个问题,本文对表1中的实验结果进行统计假设检验.
为了对表1中的结果进行统计假设检验,本文分别从2个算法的全局最优实验结果附近连续抽取21个样本.根据抽样结果,采用T检验法[31]对样本做统计假设检验,检验结果(显著度α=0.05)如表2所示:
Table 2 The Results of T Test表2 T检验结果
根据表2所示,t=4.596,P=4.584E-05.因此,T检验结果中的P<0.0001,即P≪0.05,说明在收敛到全局最优解的过程中它的性能改善在统计意义上是极其显著的.
基于图片问答的静态重启随机梯度下降算法属于一阶优化算法.当前最好的同类算法有RmsProp[32],Adam[33],AdaDelta[34].为了验证它在同类算法中的有效性,在图片问答任务上进行优化算法实验,实验结果如表3所示:
Table 3 The Global Optimal Experimental Results of Optimization Algorithm表3 优化算法的全局最优实验结果
根据表3所示,在解决图片问答任务时,基于图片问答的静态重启随机梯度下降算法的准确率高于其他优化算法.因此,它在解决图片问答问题时更有效.
Fig. 4 The experimental results of generalization performance and promotion value图4 泛化性能和推广价值的实验结果
算法结果与数据集的选取有关.如果换一个数据集,基于图片问答的静态重启随机梯度下降算法是否有效呢?即它是否具有良好的泛化性能呢?算法结果与任务的选择有关.如果换一个任务,它是否有效呢?即它是否具有良好的推广价值呢?为了回答这2个问题,针对图像识别任务,在经典的Cifar-10数据集[35]上采用5层深度残差网络[36]进行图像识别实验.在基准算法为动量随机梯度下降算法的图像识别实验中,η0=0.1.在基于图片问答的静态重启随机梯度下降算法的图像识别实验中,e=16,β=3,ηmax=0.1,ηmin=0.000 5,σ=0.69.算法每被训练集训练3次更新1次学习率,每被训练集训练1次,测试集测试训练的模型1次,并输出测试结果.根据模型配置,得到图像识别结果,如图4所示:
根据图4所示,基于图片问答的静态重启随机梯度下降算法的全局最优实验结果为88.83%,基准算法的全局最优实验结果为85.00%.除了训练初期的个别结果外,基于图片问答的静态重启随机梯度下降算法的大部分结果都比基准算法好.但性能改善是否显著呢?从图4中的算法全局最优实验结果附近连续抽取6个样本进行T检验.t=9.655 8,P=3.207E-05.P<0.000 1,说明在收敛到全局最优解的过程中性能改善在统计意义上是极其显著的.因此,基于图片问答的静态重启随机梯度下降算法在收敛到全局最优解的过程中具有良好的泛化性能和较好的推广价值.
针对SANs模型解决图片问答过程中的问题,观察模型处理的细节,分析数据集的特点,发现基于动量的随机梯度下降算法在优化SANs模型时存在一定的缺陷是导致问题发生的重要原因.为了解决该问题,调研随机梯度下降算法,结合SANs模型的特点,提出基于图片问答的静态重启随机梯度下降算法.在VQAv1数据集、Cifar-10数据集、同类优化算法上进行量化对比实验.实验结果和T检验结果证明它的显著性、有效性、泛化性、推广价值.因此,它在一定程度上解决基于图片问答的动量随机梯度下降算法中的问题,具有良好的性能和较高的应用前景.