APP下载

基于深度置信网络的广告点击率预估的优化∗

2019-10-26陈杰浩王树良史继筠赵子芊

软件学报 2019年12期
关键词:驻点预估节点

陈杰浩,张 钦,王树良,史继筠,赵子芊

(北京理工大学 计算机学院,北京 100081)

近年来,互联网广告已成为大部分互联网公司的主要盈利手段,得到了极大的发展.为了达到最佳互联网广告投放效果,广告点击率(click-through rate,简称CTR)预估成为了计算广告(computational advertising)[1]领域工业界和学术界研究的焦点.

广告精确投放,依赖于预测目标受众对相应广告的CTR[2].例如,搜索广告为互联网广告的重要组成部分,该类广告依据受众搜索关键字的相关性进行广告投放.广告投放的变现能力,即广告此次投放后的期望收益,是决定广告主是否愿意投放此次广告的根本依据.千次有效点击(effective cost per mile,简称eCPM)是期望收益的重要指标,其公式为

其中,eCPM为点击的变现能力,即期望收益;μ为广告CTR;v为点击的期望收益.由公式可知,广告的变现能力由广告CTR和点击期望收益决定.由于点击期望收益与产品本身有关,因此对于广告投放平台和广告主,精确的广告CTR预估成为了决定广告变现能力的关键.

为提高CTR预估的精确度,本文将深度置信网络(deep belief net,简称DBN)应用于CTR预估领域,进行了大量实证研究,并提出了有效的优化策略.本文的主要贡献总结如下.

(1) 在CTR预估问题中引入DBN,设计了模型结构及训练方法,通过实验探讨了不同的隐藏层层数、隐含节点数目对预测结果的影响.

(2) 将本文模型与基于梯度提升决策树(gradient boost decision tree,简称GBDT)和逻辑回归(logistics regression,简称LR)[3]的传统模型以及模糊深度神经网络(fuzzy deep neural network,简称FDNN)的深度模型进行对比.实验结果表明,基于DBN的预估方法相比现有的CTR预估算法具有更好的预估精度,在均方误差、曲线下面积和对数损失函数指标上优于GBDT+LR模型2.39%,9.70%和2.46%,优于FDNN模型1.24%,7.61%和1.30%.

(3) 为了解决DBN在大数据规模较大的工业界解决方案中的训练效率问题,本文通过实验证明:CTR预估中DBN的损失函数存在大量的驻点,并且这些驻点对网络训练效率有极大的影响.

(4) 为了进一步提高模型效率,从发掘网络损失函数特性入手,提出了基于随机梯度下降算法(stochastic gradient descent,简称SGD)和改进型粒子群算法(particle swarm optimization,简称PSO)[4,5]的融合算法来优化网络训练.最终,融合算法在迭代步长小于阈值时可以跳出驻点平面,继续正常迭代.实验证明,使用融合方法训练深度置信网络训练效率可提高30%~70%.

本文第1节介绍优化深度神经网络(deep neural network,简称DNN)训练效率的两种主要思路,并结合文献进行了分析.第2节提出基于DBN的CTR预估模型,并给出了训练方式.第3节设计实验取得模型参数最佳取值,验证模型CTR的预估效果.第4节根据训练过程讨论驻点对DBN训练的影响,针对驻点的特性,提出基于SGD和PSO的训练优化算法,并通过实验证明训练优化策略的有效性,进行结果分析.最后总结全文,并对未来值得关注的研究方向进行初步探讨.

1 相关工作

1.1 广告点击率预估

成熟的CTR预估模型常采用机器学习的方法.Chapelle等人[6]提出了基于LR的CTR预估机器学习框架,主要解决雅虎的CTR预估问题,其采用了4组特征(包含类别特征和连续特征)作为模型输入:广告主特征、网页出版商特征、用户特征和时间特征.该框架在LR模型的基础上加入了参数的二范数正则化项,该方法可以产生更稀疏的模型,使得非零参数增加避免过拟合的问题;本文还提出了针对稀疏数据的哈希方法,通过哈希函数使得原本很稀疏的数据映射到一个固定长度的数据空间中.Facebook[3]于2014年提出了基于GBDT方法,针对其广告系统进行CTR预估研究,利用用户的自身信息以及网页信息等作为特征,由决策树模型进行模型训练,得到的输出结果是一个固定维度的二值向量;而后,使用决策树模型的输出结果作为LR模型的输入重新进行模型训练,并根据误差进行权值的调整.这种模型融合的方法结合了非线性决策树模型能够拟合非线性特征的特点,以及线性LR模型优秀的扩展性、模型训练速度快的特点.

现有的CTR预估模型发展比较完备,在经过大量的训练后均可达到较好的预估效果,但需要人工投入大量精力进行特征的选取、处理与构造工作,广告数据特征提取不充分,不同特征之间的非线性关联无法得到充分体现,其预测结果准确程度多与数据分析人员经验丰富程度正相关.深度学习具有多层非线性映射的深层结构,可以完成复杂的函数逼近,近年来,在计算广告领域成为研究热点[7,8].Zhang等人[9]提出一种基于循环神经网络(recurrent neural networks,简称RNN)的新型CTR预估模型.与传统模型相比,该模型直接对用户行为顺序进行建模,优于LR模型1.11%~3.35%.Chen等人[10]提出了基于长短时记忆模型(long-short term memory,简称LSTM)的RNN模型,该模型优化了RNN的梯度问题,预测结果优于LR模型5%.Jiang等人[11]提出了FDNN模型,该算法基于模糊受限玻尔兹曼机(fuzzy restricted Boltzman machine,简称FRBM)和高斯-伯努利受限玻尔兹曼机(Gaussian-Bernoulli restricted Boltzmann machine,简称GBRBM),从原始数据集自动提取隐藏的解释性信息,放大长尾重要信息,削弱无关信息,预测结果优于LR模型3.25%.

然而,RNN模型应用于CTR领域时,需基于用户或广告的历史行为进行时序性建模,现有的广告数据集大多不包含该类特征,并且在实际工业运用时采集难度大.

1.2 深度神经网络训练效率优化算法

由于DNN模型的并行性能相对较差,在训练数据规模较大时,其训练效率是影响网络性能的关键.目前,对网络训练效率的研究主要集中于设计更出色的通用优化算法和发掘网络损失函数特性,并根据特性寻求特定优化算法两个方面.这些方法在DBN的训练中同样适用.

1.2.1 通用优化算法

在通用优化算法[12]方面,Rumelhart等人[13]提出了基于动量(momentum)的优化算法,期望使用前一次迭代的信息改进当前迭代的步长;Sutskever等人[14]基于Nesterov的工作提出Nesterov Momentum算法,该算法考虑并尝试解决了Momentum算法迭代过程中的震荡问题;Gabriel等人[15]则提出了自适应梯度(adagrad)算法,该算法通过历史梯度调整学习率,使学习率跟随梯度变化变化,从而达到调整步长的目的.

1.2.2 针对损失函数特性的优化算法

针对损失函数特性的优化算法主要挖掘损失函数特性并针对性地进行优化[16].在高维空间中,存在各方向梯度均为0的点,被称为驻点.驻点分为局部极值点与鞍点.近年来,很多研究人员认为,损失函数的局部极值点是影响DNN训练效率的最大原因.Lo等人[17]对多层感知器中局部极值点的影响进行了研究;Chen等人[18]提出了随机模糊向后传播(random fuzzy back-propagation,简称RFBP)学习算法,使得迭代时能够逃离局部值.

然而,最新研究证明:在实际的高维问题中,局部极小值相对数量较少[18,19]:Leonard等人[19]发现,在某些神经网络的损失函数中不存在局部极小值;Daniel等人[20]研究表明,高维神经网络中存在一些局部极小值点,但他们的质量相差不大(即通过不同极值点对应的神经网络得到的最终预测正确率相差不大),并且通用优化算法(如momentum等)的效果优劣并不明确,甚至有时不如最基本的参数调优算法.

目前,继续挖掘特定DNN模型的损失函数特性、寻找对其训练效率影响最大的因素并提出解决方案,成为DNN训练优化策略的研究热点.

2 基于深度置信网络的广告点击率预估模型

2.1 深度置信网络基本原理

DBN由多个受限玻尔兹曼机(restricted Boltzmann machine,简称RBM)堆叠而成.RBM是一个两层的无向图模型,结构如图1所示.RBM可以被用来作为构建DBN的组成部分,它包括一层可视单元和一层隐藏单元,可视单元与隐藏单元之间任意连接,但可视单元、隐藏单元自身没有连接关系.RBM中的可见层和隐层单元可以是二值节点,也可以是任意指数族单元,例如高斯单元、泊松单元、softmax单元等.

Fig.1 Structure of RBMs图1 RBM的结构

DBN最顶的两层之间是无向连接,称为联想记忆层(associative memory);而其余层与层之间均为有向连接,分为向下的认知权重和向上的生成权重.其结构如图2所示.

Fig.2 Structure of DBN图2 DBN结构

本文的研究中,对DBN的学习和训练包括两个部分.

(1) 对模型进行无监督的预训练.将DBN每两层看作一个RBM模型,下层RBM的隐藏层作为上层的可视层,依次进行训练.最终训练获得的参数作为DBN的初始化参数.

(2) 使用Wake-sleep算法,无监督地对预训练之后的模型参数进行调优.除了顶端的两层为联想记忆层之外,网络中其他层之间的连接均为有向连接,分为自底向上的认知权重和自顶向下的识别权重.调优的过程分为“wake”和“sleep”两个阶段.

➢ “wake”阶段是一个识别事物的过程,使用认知权重将底层的输入样本数据自底向上的抽象为各层的隐含特征.在此过程中,通过对比散度差算法对生成权重进行调整.在联想记忆层中进行T步吉布斯采样,并对联想记忆层的权重进行调整.

➢ “sleep”阶段是生成样本数据的过程,使用生成权重自顶向下利用各隐含层抽象出的隐藏特征对输入样本数据进行生成重构.

为了避免过拟合,在本文使用的DBN的训练过程中,采用权值衰减策略(weight-decay).模型各节点间的权重更新方法如公式(2)所示.

其中,Δwij(t−1)为上一次权重的更新值.模型训练参数见表1.

Table 1 Training parameters表1 训练参数

2.2 广告点击率预估模型及训练

本文采用的CTR预估模型为DBN,共分为1个可视层、多个隐藏层和一个输出层.输出层使用LR模型进行输出,整体结构如图3所示.

CTR预估模型训练主要分为以下3个阶段.

(1) 利用DBN进行深层次的有效特征提取,将降维后的特征数据作为模型的输入,通过DBN的认知权重,转化为深层次的抽象特征.

(2) 结合LR模型进行CTR预估.使用DBN模型的最顶层的隐藏层作为LR模型的输入;同时,在模型的顶层增加一层(包含1个节点)作为LR模型的输出;接着,对LR模型进行训练.

(3) 在对LR模型进行训练的同时,使用标签数据,对深度网络模型的参数进行有监督的调优.将整个网络模型(包括DBN和LR模型)看作是由向上的认知权重进行连接的标准前馈型神经网络,模型可视层输入样本数据进行前向传播,而后利用训练样本的标签数据计算模型输出误差,使用反向误差传播算法(error back propagation,简称BP)进行误差传播对模型的参数进行进一步调优.

在整个DBN的模型中,各个节点的激活函数均采用sigmoid函数,以便引入非线性,并保证数据在传递的过程中不发散.经过处理后的样本特征数据从模型的可视层进入网络,经过多个隐藏层的抽象转化,在模型的顶层形成了深层抽象特征.最后,模型利用DBN提取得到的深层抽象特征作为LR模型的输入,加入标签信息,进行CTR的预测.模型的输出层包含一个sigmoid节点,其与DBN的顶层隐藏节点共同构成LR模型.

Fig.3 Structure of CTR prediction model图3 CTR预估模型结构

模型输出层节点的激活概率如公式(3)所示.

其中,x为DBN顶层节点状态,θ为模型输出层与DBN顶层之间的连接参数,而b则表示输出层节点的偏置.

其中,N为测试样本总数,yi为第i个样本的目标值(点击为1,未点击为0),1/eix bipθ−+=为第i个样本模型给出的估计值(预估CTR).使用梯度下降算法可以求出参数θ和b的梯度,如公式(5)和公式(6)所示.

3 广告点击率预估实验

3.1 数据集及衡量标准

本文进行的实验基于Kaggle数据挖掘比赛平台的Click-Through Rate Prediction比赛数据集.该数据集由Avazu提供,数据集描述见表2.本文使用数据集中随机选取的1 000万条数据,并使用10折交叉法作为实验验证方法.

在本文实验中,针对整体模型CTR预估效果的指标为均方误差(mean squared error,简称MSE)、曲线下面积(area under curve,简称AUC)和对数损失函数(LogLoss).针对DBN训练效率的衡量指标为损失值(loss)、迭代次数(iterations)和训练时间.

Table 2 Description of dataset表2 数据集描述

3.2 广告点击率预估准确率实验

本节将首先针对DBN中的重要参数进行单独实验,考察不同的参数对预估结果的影响,获取算法最优的预测结果.实验中,使用AUC指标对不同模型的CTR预估结果进行评估,实验总共分为3个部分.

(1) 通过实验,探讨DBN隐藏层层数对CTR预估结果的影响.

(2) 通过实验,对模型逐层验证不同的隐藏节点数目对CTR预估结果的影响.

(3) 通过实验,研究基于DBN的CTR预估模型预估效果.

3.2.1 深度置信网络隐藏层数实验

深度模型的隐藏层的个数是模型预估能力关键因素,经验表明,模型的特征表征和提取能力在一定程度上与隐藏层层数正相关;同时,层数越多,深度模型训练过程越复杂.在实际应用中,通常隐藏层层数的设置要根据实际情况,通过实验确定.在本节中,对DBN中隐藏层的层数设定进行实验分析,在进行实验的时候,各隐藏层节点数目均设置为256,逐步添加隐藏层的层数,最终得出的实验结果如图4所示.

Fig.4 Curves of the MSE,AUC and LogLoss while training DBN with different hidden layers图4 用不同隐藏层数训练DBN的MSE、AUC和LogLoss曲线

随着神经网络隐藏层数目的增加,CTR预估准确率出现了明显的上升,说明在利用深度模型进行深层次特征提取的时候,隐藏层的数目越多,对于输入层样本数据特征学习的就越充分,能够更好地反映数据深层的特征;而当隐藏层数目大于4层时,实验结果的准确率出现了较快的下滑,说明仅通过增加深度模型的隐藏层数量不能无限制地增加模型预测效果,且进行实验的过程中隐藏层数目过多,容易导致模型出现过拟合,因此需要通过实验来确定最合适的隐藏层数目.

3.2.2 深度置信网络隐藏层节点数实验

在本节中,主要考察DBN模型中各个隐藏层节点数目对于实验结果的影响.首先,考察第1层隐藏层对实验结果的影响,此时固定第2层~第4层隐藏层节点数为256.实验结果如图5所示.

Fig.5 Curves of the MSE,AUC and LogLoss while training DBN with different units in the 1st hidden layer图5 用不同的隐藏层第1层节点数训练DBN的MSE、AUC和LogLoss曲线

在固定隐藏层数和其他层节点数的实验中,随着第1层隐藏层节点数的增加,实验结果的准确率逐渐升高.当节点数大于512时,整体模型同样出现过拟合的现象,因此512为最佳取值.此时,固定第1层节点数为最佳取值512,其他层节点数为256,进行第2层节点数的实验,其结果如图6所示.

Fig.6 Curves of the MSE,AUC and LogLoss while training DBN with different units in the 2nd hidden layer图6 用不同的隐藏层第2层节点数训练DBN的MSE、AUC和LogLoss曲线

随着隐藏层节点数的增加,实验结果的准确率逐渐升高.当节点数目大于512时,模型同样出现了过拟合的现象,因此512为第2层节点数最佳取值.

同理可以得到第3层、第4层隐藏层节点数目对实验结果的影响,如图7和图8所示.可以看出,第3层、第4层隐藏层节点数目同样也应该设置为512.

Fig.7 Curves of the MSE,AUC and LogLoss while training DBN with different units in the 2nd hidden layer图7 用不同的隐藏层第2层节点数训练DBN的MSE、AUC和LogLoss曲线

Fig.8 Curves of the MSE,AUC and LogLoss while training DBN with different units in the 2nd hidden layer图8 用不同的隐藏层第2层节点数训练DBN的MSE、AUC和LogLoss曲线

通过实验结果可以看出,随着隐藏层节点数目的增加,模型CTR预估能力出现了先增后减的现象.这是因为,一方面,随着隐藏层节点数目的增加,模型对于样本数据的隐含特征学习的更加充分;另一方面,如果隐藏层节点过多的话,容易致使特征学习的过于充分,极度放大不同的特征对预测结果的影响,使得模型对CTR的预测结果过于敏感和不稳定.

3.2.3 对比实验及结果

本节中进行了本文模型与GBDT+LR及FDNN模型的对比实验,其中,GBDT+LR模型结构及训练过程参考文献[2],FDNN模型结构及训练过程参考文献[6].

利用与第3.2.2节相似的参数调优方法,逐步固定某一参数进行调优,取得GBDT+LR以及FDNN模型的最优参数,见表3.

Table 3 Bset parameters of GBDT+LR and FDNN表3 GBDT+LR和FDNN模型的最优参数取值

最终对比实验结果如表4所示,本文提出的基于DBN的互联网广告CTR模型,CTR预测效果分别在MSE、AUC和LogLoss指标上优于GBDT+LR的融合模型2.39%,9.70%和2.46%,优于FDNN模型1.24%,7.61%和1.30%.证明了DBN在隐含特征提取和抽象方面更加强大,提取出的深层次特征更能反映事物的本质,这也说明了本文设计的融合模型在互联网广告CTR预估的准确率方面达到了预期的实验效果.

Table 4 MSE,AUC and LogLoss of GBDT+LR,FDNN and DBN表4 GBDT+LR,FDNN和DBN实验的MSE、AUC和LogLoss指标

3.3 分析与结论

本节分别进行了DBN隐藏层数实验、DBN隐藏层节点数实验和融合模型与其他模型的对比实验.随着隐藏层层数和隐藏层节点数目的增加,模型对于样本数据的隐含特征学习的更加充分;隐藏层层数和隐藏层节点过多,容易致使特征学习的过于充分,极度放大不同的特征对预测结果的影响,使模型对CTR的预测结果过于敏感和不稳定.最终,基于DBN的模型CTR预测效果分别在MSE、AUC和LogLoss指标上优于GBDT+LR的融合模型2.39%,9.70%和2.46%,优于FDNN模型1.24%,7.61%和1.30%.

4 深度置信网络训练优化策略

在将DNN[21,22]用于训练数据规模较大的工业界解决方案时,常因其有限的并行性而受到训练效率的制约.作为DNN中的一种,DBN存在着相同的问题.本节基于网络损失函数特性,发现在DBN的损失函数中存在大量严重影响训练效率的驻点.针对这些驻点的特性,提出了一种基于SGD和改进型PSO的网络训练优化算法.

4.1 驻点对深度置信网络训练的影响实验与结果

驻点包括局部极值点与鞍点.本节通过实验分别证明在DBN的损失函数平面中存在这两种点,以及他们对网络训练的影响.

4.1.1 极值点与鞍点判定方式

在数学中,Hessian矩阵是一个多变量实值函数的二阶偏导数组成的方块矩阵,假设有一实数函数f(x1,x2,…,xn),若函数f的所有二阶偏导数都存在,则f的Hessian矩阵的第ij项为

当Hessian矩阵为正定矩阵时,该点为极小值点;当Hessian矩阵为不定矩阵时,该点为鞍点.

4.1.2 局部极值点

局部极值点是指梯度在各方向上都为0,并在邻域内取值最大或最小的点,在本文研究的问题中,为网络损失函数的极小值点,而网络训练的最终目的在于找到一个达到精度要求的极小值点.本节通过在梯度下降过程中使用不同训练算法和不同网络参数初始值,来对比不同训练过程和不同初始状态下网络的训练结果.其结果如图9、图10、表5、表6所示.

Fig.9 Curves of the loss while training DBN with SGD and Momentum图9 用SGD和Momentum训练DBN的损失曲线

Fig.10 Curves of the loss while training DBN with SGD in different initial parameters图10 用SGD在不同初值条件下训练DBN的损失曲线

Table 5 Results while training DBN with SGD and Momentum表5 用SGD和Momentum训练DBN的结果

Table 6 Results while training DBN with SGD in different initial parameters表6 用SGD在不同初值条件下训练DBN的结果

由表5、表6可知:不论迭代次数和训练时间如何,在最终收敛时其MSE、AUC和LogLoss指标相差均小于1%.由此可得出结论:高维网络最终能够到达的极值点之间差异不大,只要能够找到一个可接受的极值点,网络训练都可以认为是成功的.

如图11、图12所示的是用SGD和Momentum训练的loss曲线,图中字母处的小图代表着各字母点处步长的变化趋势.先减小后增加的步长趋势代表着训练陷入平缓平面并最终跳出.

Fig.11 Curve of the loss while training DBN with SGD图11 用SGD训练DBN的损失曲线

Fig.12 Curve of the loss while training DBN with Momentum图12 用Momentum训练DBN的损失曲线

两次实验中训练过程在极值点周围的平缓平面上停留的迭代次数分别达到总次数的37.95%和5%.如图11点e、图12点g所示,证明了极值点对训练效率的影响.

4.1.3 鞍点

鞍点也是各方向梯度等于0的点,但它并非是邻域内的取值最小值点,即在某些方向上,鞍点可以继续训练下降.实验测试了使用SGD算法和Momentum算法时的损失函数值下降过程.实验结果表明:在使用SGD算法和Momentum算法进行训练的过程中,损失函数值的下降过程存在较明显的阶梯形态,即过程中会遇到许多鞍点区域.损失函数停留在这些区域内浪费了大量的时间[23−25].除图11点e、图12点g外,其他点均为鞍点平面.

在使用SGD算法作为优化算法的实验中,在不算最后一次属于极值点平面的情况下,迭代次数中有24.18%在鞍点平面内,Momentum算法中为54.34%.

4.1.4 分析与结论

一方面,在CTR预估问题的高维网络中,收敛到的不同极值点对最终结果的影响不大,即不需要太过在意最终收敛解的质量.另一方面,驻点,即极值点与鞍点对网络训练的效率影响非常大,总体上,在使用SGD算法时有62.13%、使用Momentum算法时有59.34%的迭代是在驻点平面内进行,这极大地拖累了网络训练的效率.

4.2 基于随机梯度下降和改进型粒子群的训练优化算法

4.2.1 融合方法流程

跳出驻点的判断标准依靠判断其Hessian矩阵的正定性,计算复杂度为O(n3),且在驻点附近的驻点平台上训练同样会被拖慢.根据第3节的实验结果,当迭代步长小于0.3时,极有可能陷入驻点平台.为简化计算,以判断步长为激活条件,融合方法使用单次迭代效率较高的SGD算法作为基础算法,并在陷入驻点平台时激活PSO算法进行跳出.融合方法的伪代码如图13所示.算法流程图如图14所示.

Fig.13 Pseudocode of fusion method图13 融合算法伪代码

Fig.14 Flowchart of the fusion method图14 融合算法流程图

4.2.2 随机梯度下降算法

SGD算法是最常用的DNN模型优化算法之一,发展成熟,存在较为完善的实现方式,且训练速度快,故融合算法使用SGD作为基础优化算法.与梯度下降算法(gradient descent)和批量梯度下降(batch gradient descent)算法不同的是:SGD算法计算损失函数的每个参数的偏导数,并在每次迭代时使用单一样本进行梯度下降.SGD的优化函数公式为

其中,θ代表被优化的参数,J(θ)为损失函数,α为学习率.当损失函数是方差时,其形式为

其中,x(j)代表数据集中第j个样本.

4.2.3 改进的粒子群算法

粒子群算法参数少,易于调整,并具有易实现、收敛快、应用灵活等优点,在函数优化、神经网络训练和模糊系统控制中均有良好的应用效果.本文根据驻点性质,改进了标准版本的PSO算法.引入PSO的目的不在于寻找局部极值点,而是跳出驻点平面.改进的PSO在初始化、迭代和退出判断等方面均与标准版本不同.

(1) 初始化

改进的PSO算法首先初始化初始粒子P0,其值等于DBN中需要被训练的参数值.接着,该算法引入冲量[11]的思想初始化一系列如标准PSO中的粒子,使用初始粒子P0的值作为基准值,根据上一次迭代的方向和距离,将每个粒子值的方向设置为在各个维度内与上次迭代方向偏角不超过45°的随机值,粒子与初始粒子的距离大小为与上一次迭代前进步长相关的随机值,公式如下:

其中,Addki是第k个粒子的第i个参数的增量,rand(M)是值域为−M,M的随机函数,LastStep0i为上次迭代时第i个参数的步长,max(Addki)是属于第k个粒子的所有参数的最大值.

(2) 迭代

迭代过程中,与标准PSO算法相同,记录每个粒子的历史最优值和所有粒子的历史最优值.算法使用公式(14)和公式(15)计算粒子下一个位置:

其中,speedki指第k个粒子第i个参数此次的迭代步长;w即惯性因子,即此次迭代步长中保留了上一次迭代的惯性;c1,c2分别为个体学习率和全局学习率,分别乘上个体历史最优与当前位置的差,和全局最优与当前位置的差;rand是0~1的随机值.由于希望向外搜索而非向内搜索,本文将学习率设置为大于1的值,此处c1,c2均设置为2.

(3) 退出判断

由于本文中PSO算法并不需要收敛到一个极值点,而是向外找到一个驻点平面以外的点,考虑两种情况.

a) PSO算法与梯度算法相比效率较低,为了确保融合算法的整体效率,需要为PSO算法的迭代次数设置上限,即如果在一定次数的迭代后算法仍然没有找到驻点平面外的点,算法被强行退出.根据实验经验,本模型中迭代次数上限为10次.

b) 如果在迭代次数上限之内算法找到了当前驻点平面以外的点,即算法找到的最优粒子的损失值与初始粒子P0的损失值相差大于某个阈值,则算法成功运行并退出.根据实验经验,此处阈值设为30.

4.2.4 Momentum优化算法

Momentum算法是基于动量的优化算法,核心思路在于在当前梯度上加入上一次迭代的动量,即

其中,Δxt为本次迭代步长,Δxt−1为上次迭代步长,η为学习率,gt为此次迭代梯度,ρ为上一次迭代的动量参数.本文使用Momentum优化算法作为对照组,考察融合算法的优化效果.

4.3 训练优化算法的实验与结果

学习率是一个重要的超参数,它控制着基于损失梯度调整神经网络权值的速度,大多数优化算法对它都有涉及.学习率越小,沿着损失梯度下降的速度越慢.从长远来看,这种谨慎慢行的选择比较保守,但可以避免错过任何局部最优解.然而,过小的学习率也意味着收敛速度变慢.本节将讨论不同学习率下训练优化算法的效果.

4.3.1 较小学习率实验

如图15所示为学习率0.008(较小学习率)时,网络在使用SGD算法,Momentum算法和新融合算法作为优化函数时损失函数值的下降过程.

Fig.15 Curves of the loss while training DBN with SGD,Momentum and SGD+PSO (learning rate 0.008)图15 用SGD,Momentum及SGD+PSO训练DBN的损失曲线(学习率为0.008)

从图中可知,不同算法训练Loss下降速度不同.SGD算法与SGD+PSO算法Loss曲线存在两次交点,在迭代次数小于第1次交点时,融合算法下降速度快;此后,单一SGD算法下降速度反超.但在Loss值逼近2 000时,单一SGD算法下降趋于平缓,陷入了驻点平面;而融合算法通过改进型PSO算法跳出平缓平面,从而继续正常下降.3种算法的详细表现情况见表7.

Table 7 Detailed result of training DBN with SGD,Momentum and SGD+PSO (learning rate 0.008)表7 用SGD,Momentum及SGD+PSO训练DBN的详细结果(学习率为0.008)

如图16所示是在使用这3种算法时每次迭代损失函数下降幅度的log值.在相同的参数下,使用新算法进行优化时每次迭代下降幅度都可以控制在阈值以上.如图8所示,此处阈值为0.3,则新算法下降幅度的log值均大于−0.5.这证明融合算法可以极大地减少网络需要迭代的次数和时间.具体地,使用了融合算法的优化过程迭代次数是仅使用SGD算法的62.34%,迭代用时是仅使用SGD算法的75.87%.

Fig.16 Curves of log(Δloss) while training DBN with SGD,Momentum and SGD+PSO (learning rate 0.008)图16 用SGD,Momentum及SGD+PSO训练DBN时每次迭代loss的log值(学习率为0.008)

4.3.2 较大学习率实验

在学习率为0.02(较大学习率)时,SGD,Momentum和SGD+PSO算法的训练过程和结果如图17所示.

Fig.17 Curves of the loss while training DBN with SGD,Momentum and SGD+PSO (learning rate 0.02)图17 用SGD,Momentum及SGD+PSO训练DBN的损失曲线(学习率为0.02)

如表8所示为3种算法的详细表现情况.在学习率较大的情况下,单一SGD算法和Momentum算法在迭代过程中都出现了Loss值升高的情况,而融合算法保持持续下降态势,证明了融合算法更适应激进的学习策略.融合算法的总迭代次数是单独使用SGD算法的22.35%,运行总时间是SGD算法的35.09%.同时,融合算法迭代次数是单独使用Momentum算法的37.15%,运行时间则缩短为44.85%.

Table 8 Detailed result of training DBN with SGD,Momentum and SGD+PSO (learning rate 0.02)表8 用SGD,Momentum及SGD+PSO训练DBN的详细结果(学习率为0.02)

如图18所示是3种算法每次迭代loss的log值,对比图17可以看出,明显出现了振荡现象.

Fig.18 Curves of log(Δloss) while training DBN with SGD,Momentum and SGD+PSO (learning rate 0.02)图18 用SGD,Momentum及SGD+PSO训练DBN时每次迭代loss的log值(学习率为0.02)

4.3.3 分析与结论

本文提出的DBN模型训练优化融合算法使用SGD作为基础优化算法,该算法是最常用的DNN模型优化算法之一,发展成熟,存在较为完善的实现方式,训练速度快.而作为跳出算法的PSO算法参数少,易于调整,并具有易实现、收敛快、应用灵活等优点,在函数优化、神经网络训练和模糊系统控制中均有良好的应用效果.针对驻点特性,在将PSO算法的初始化、迭代和退出判断进行改进之后,本文提出的融合算法在迭代步长小于阈值时激活改进型PSO算法跳出驻点平面,减少训练过程中的震荡,提升整体训练效率.

在较小学习率和较大学习率实验中,实验结果均证明了本文融合算法的有效性,算法效率在迭代次数和迭代时间方面均有较大提升.从图17中可以得到结论:当学习率较小,每次迭代时loss的下降幅度较小.相对地,图18中显示出较大的学习率会激化训练时的震荡.

学习率越大,改进型PSO算法的采用便越多,融合算法对训练的影响便越大.大的学习率也意味着SGD算法部分更加激进,在地形复杂程度较小的前中期,SGD算法的优化效率自身就可以更高;而当到达地形较为复杂的空间,网络损失函数值的下降幅度一旦有减小的趋势,即训练效率有恶化的迹象时,较大的学习率会使得损失值下降幅度在更少的迭代次数内下降得足够小,甚至产生震荡,而这会导致改进型PSO算法的调用.相反,在学习率较小时,相邻迭代的损失值下降幅度变化较小,从较大下降幅度下降到调用改进型PSO算法的阈值需要的迭代次数较多,这一定程度上降低了融合算法的效率.

通过加大学习率来提高融合算法的优化效率并非无限制的,更高的学习率会导致传统算法震荡现象的大量出现,因此,过大的学习率本身没有任何实用和对比意义.另外,学习率的提高会使得改进型PSO算法调用频率的增加,而改进型PSO算法的迭代效率低于SGD算法,这会导致网络整体迭代效率的下降.

5 总结与展望

本文引入DBN进行CTR预估,给出了其结构及训练方法,通过实验探讨了不同的隐藏层层数,隐含节点数目以及迭代周期对预测结果的影响,并与其他模型的预估结果进行对比分析,实验证明了使用DBN作为构造模型的融合模型相比现有的CTR预估常见算法具有更好的CTR预估效果,预估精度在MSE、AUC和LogLoss指标上优于GBDT+LR模型的融合模型2.39%,9.70%和2.46%,优于FDNN模型1.24%,7.61%和1.30%.

优化策略方面,通过实验证明了在CTR预估问题的DBN模型中,驻点对网络训练效率和结果有很大的影响.接着,本文从发掘DBN损失函数特性入手,针对驻点特征,提出了一种结合了SGD和PSO的融合算法.该融合算法在迭代步长小于阈值时可以跳出驻点平面,继续正常迭代.最终实验结果表明,融合算法能够很好地结合SGD的高效与PSO的梯度无关性,在不影响网络训练结果的前提下,提高了网络训练的效率30%~70%.

本文提出的融合算法仍有一些后续工作值得扩展:(1) 在DNN的训练中,如何系统科学地设置学习率已是研究人员的研究重点[26,27],也是本文提出的融合算法的关键参数之一;(2) 本文使用阈值方法判断驻点和驻点平面,下一步本文考虑引入自适应方法,进行该阈值的动态调节;(3) 引入更多的应用场景,考察本文提出的融合算法对于其他应用场景中的DBN乃至DNN是否存在普适性,以及本文研究结论的一般性.

猜你喜欢

驻点预估节点
美国银行下调今明两年基本金属价格预估
概念格的一种并行构造算法
结合概率路由的机会网络自私节点检测算法
采用贪婪启发式的异构WSNs 部分覆盖算法*
Crosstalk between gut microbiota and antidiabetic drug action
完全催化壁驻点高超声速流动加热地面模拟方法研究
利用远教站点,落实驻点干部带学
2300名干部进村“串户”办实事
“一线为民”的庐阳探索