聂庭焜,刘梦赤
(华南师范大学 计算机学院 广州市大数据智能教育重点实验室,广东 广州 510000)
互联网发展至今,各种推荐算法与推荐模型已经应用到了我们生活的方方面面,其中点击率(Click-through Rate, CTR)预测在在线广告领域发挥了重要作用[1],同时促进推荐系统取得长足的进步。
随着当前互联网中的数据种类更加复杂,量级更加巨大,传统的推荐算法,如逻辑回归(Logistic Regression, LR)推荐算法,因为多特征问题的存在,已经很难适应当前复杂的环境。于是有学者提出因子分解机(Factorization Machines,FM)模型[2],FM模型采用了隐向量交叉来表示特征权重,从而解决了LR模型中特征交叉困难的问题。但是FM模型难以交叉3阶以上的高阶特征。随着神经网络在计算机视觉[3]与自然语言处理[4]领域取得成功,有学者将神经网络与协同过滤相结合提出了神经网络协同过滤(NCF)模型[5],虽然NCF模型有着较强的表达能力,但其并没有解决高阶特征交互的问题。因此有学者将深度神经网络(Deep Neural Networks, DNN)结构与FM相结合提出了DeepFM[6]。DeepFM在解决了高阶特征交互问题的同时,也解决了需要人工进行特征工程(需要人工进行特征组合)的问题。在此之后的模型大量使用了DNN结构。
随着注意力机制[7]被证明能够提升模型的推荐效果,AFM[8]首次将注意力机制与FM模型结合,取得了好于FM模型的预测效果,随后注意力机制也被众多模型采用。
近些年,很多优秀的模型被提出,FiBiNET[9]将自然语言处理领域的压缩激励网络(Squeeze and Excitation Networks, SENET)引入推荐系统并提出了双线性特征交互方式。Autoint[10]将多头自注意力机制与DNN结合。xDeepFM[11]显示的学习特征有更好的可读性。DIFM[12]在向量(Vector)级注意力机制中采用多头注意力,而在位(Bit)级注意力机制中采用简单的全连接网络,这种多维度的特征权重学习在DIFM论文中被证明有效。LSRL[13]则使用强化学习技术增加推荐的准确性。
随着广告与商品这些传统推荐领域的蓬勃发展,教育领域的习题推荐需求也在日益增大[14]。现有的习题推荐大多选择知识追踪[15]或认知诊断[16]等技术。将广告推荐领域的模型与教育推荐领域结合一直是教育领域的研究热点之一,如认知诊断的个性化习题推荐方法[16]中将认知诊断对学生建模与推荐模块分开并取得了较好的效果,本文依据该思路提出一种基于双路注意力机制的推荐模型压缩激励因子分解机(Squeeze and Excitation Factorization Machines,SEFM)。在现有的模型中,对双线性交互方式的研究较少,双路注意力结构则是当前推荐模型的研究热点之一,本文将这两种创新点有效结合并取得了较好的效果。在FM部分添加基于全连接网络的注意力机制,从位层面学习特征间的关系,在DNN部分添加基于SENET[17]网络的注意力机制,从向量层面学习特征间的关系,分别对特征向量进行重新赋值,然后通过FM与DNN计算得分,从而提升预测的准确率。
本文的主要贡献是:
(1) 对FM模型进行创新,将FM模型中特征的交互方式改进为双线性方式;
(2) 对FM模型添加注意力机制,与FiBiNET组成双路注意力机制;
(3) 在广告领域数据集上进行实验表明,模型在AUC(Area Under Roc)[18]与对数损失(LOGLOSS)上的表现优于其他基线模型。在教育领域数据集上的实验证明了,模型与教育领域进一步结合的可能性。
FM模型作为一类处理实值特征向量的预测模型,能够在数据显著稀疏时完成预测。FM预测目标如式(1)所示。
(1)
其中,参数w0是偏置项,vi∈Rk,R为实数,k为特征向量的维度,vi表示第i个特征向量,wi是第i个特征的标量形式,x表示当模型对一个用户预测时,表示用户在各特征中实际表现的特征分量,n表示特征向量总数,〈vi,vj〉表示vi与vj特征交互,FM选择的方式是点积。
但FM模型难以交叉二阶以上的高阶特征,因此在FM模型发表后许多学者对FM模型进行改进,如DeepFM,xDeepFM,DIFM等。DeepFM解决了人工特征工程的问题,但是模型缺乏可解释性。xDeepFM提高了模型的可解释性,但并没有使用注意力机制。DIFM则引入了多头注意力机制[12]。
基于DNN的模型是为了解决FM模型表达能力不足问题。DNN结构前i层的前馈结构如式(2)所示。
(2)
其中,σ为激活函数,本文选择的是RELU激活函数,ID为DNN的输入向量,ai为神经网络第i层输出,Wi为第i层参数矩阵,bi为第i层偏置向量。RELU激活函数如式(3)所示。
(3)
另外,与DNN一起被引入推荐领域的还有嵌入层,输入层对原始输入特征onehot编码后采用稀疏表示,嵌入层能够将稀疏特征嵌入到低维、稠密的实值向量中。嵌入层的输出是一个嵌入向量E={e1,…,ef},其中f表示特征域的数量。
学者们从Deep Crossing[19]模型发现了DNN在推荐领域的应用前景,提出了众多基于DNN的优秀模型。FiBiNET模型是于2019年提出的CTR模型,该模型首次将自然语言处理领域的SENET注意力网络应用于推荐领域,同时提出了一种新的特征交互方式。FiBiNET的整体结构如图1所示。Autoint[10]利用多个初始化矩阵实现了多头注意力机理,并将其与DNN相结合。DCN[19]具有简单的结构,并且在保证推荐效果的情况下参数数目较少。
图1 FiBiNET结构示意图
本文提出的模型全称为压缩激励因子分解机SEFM,SEFM的整体结构如图2所示。模型分为三个部分: 线性部分、位因子分解机(Bit Factorization Machines,BFM),SENET注意力部分。为了突出本文的核心工作,我们将着重介绍BFM与SENET部分。模型的整体结构类似于DeepFM[6],区别在于我们分别在FM部分与DNN部分加上了简单与复杂两种不同的注意力机制,从而实现双路注意力机制。在FM部分的注意力机制称为位级别注意力机制,整体结构称为BFM。在DNN部分添加的注意力机制称为向量级别的注意力机制,整体结构称为SENET,这一结构的作用在FiBiNET[9]中已经得到了验证。
图2 SEFM结构示意图
由于深度神经网络更偏好于处理稠密的数据,所以在读取数据后对其进行分类,分为稠密数据与稀疏数据,稠密数据是每一条数据都不会为空的关键信息,包括做题数据中的学生、习题、得分等。稀疏数据是一条数据中起到辅助作用的数据,包括学生的年龄、班级等。这里的稀疏数据还有一个重要作用,DNN通过这些额外数据的学习,可以在一定程度上解决新用户的冷启动问题。对稠密数据与稀疏数据我们采取不同的嵌入方式,保证在减少计算量的情况下所有数据都能符合BFM与SENET的输入标准。
FM组合二阶特征时能发挥较好的性能,也常用于各种模型中,BFM结构是一种新颖的将双线性交互式FM结构和位注意力网络相结合的方法,可以使该模型在二次特征组合中保持更好的性能。
在BFM部分,首先对嵌入层输出的特征向量E进行拆分,然后连接,连接方式如式(4)所示。
(4)
其中,ei为E中第i个向量,计数i与j的范围为1≤i≤f,i≤j≤f,f为特征域总数,也等于E的长度。ei1表示ei中第1个值。特征向量E在拆分连接后进行注意力权重赋值,注意力机制使用两层全连接层(Fully Connected,FC)结构,如图3所示。
图3 位注意力网络结构示意图
BFM的注意力网络中第1至第i层与一般DNN结构一致。其中最后一层的计算如式(5)所示。
ol=σl(Wlal-1+bl)
(5)
其中,ol代表注意力网络输出,bl代表最后一层的偏置向量,al-1表示上一层的神经网络输出,σl代表最后一层的激活函数,这里使用的是Softmax激活函数,如式(6)所示。
(6)
其中,i为计数变量,e为常数,k为输入向量的长度,yi为输入向量中索引为i的值,Si为Softmax得到的yi权重。
注意力网络计算出权重后得到权重向量,再与之前的输入向量进行加权操作,得出的结果向量作为FM结构的输入,如式(7)所示。
FMinput=Sbit⊙Ibit
(7)
其中,Ibit代表位注意力网络的输入向量,FMinput代表下一结构FM的输入向量,Sbit代表位注意力网络输出的权重。
然后在FM结构中对FMinput进行交互,交互方式没有选择传统的内积或者元素积,而是使用由FiBiNET提出的双线性特征交互方式[9]。双线性特征交互方式的结构如图4所示。
图4 双线性交互方式示意图
双线性特征交互的作用是使特征能更好地表现,此处双线性结构有三种组合方式: ①All: 所有特征共用一个W矩阵; ②Each: 每一个特征域使用一个W矩阵; ③Interaction: 每一次特征交互使用一个W矩阵。SEFM中选择的是Interaction组合方式,结构的输出P计算如式(8)所示。
Pij=vi·Wij⊙vj
(8)
Wij为两个特征向量交互产生需要从参数矩阵,vi与vj为两个特征域,索引i与j的范围为1≤i≤f,i≤j≤f,f为特征域总数,参数矩阵W的数量Nw计算如式(9)所示。
(9)
经过初始化得出,W全为正数,一个W参数矩阵训练所需要的参数量Wx的计算如式(10)所示。
Wx=k×k
(10)
其中,k为嵌入向量的长度。FM结构的预测得分如式(11)所示。
(11)
Pij为双线性特征交互后得到的向量,x为FMinput向量,Sorcebf为BFM结构最终的输出得分。
SENET注意力机制最早出现于2017年[17],它在获得了ImageNet 2017竞赛分类任务的冠军之后受到各领域的关注。SEFM模型中创新性地将SENET注意力机制与FM结合,SENET在模型中起到向量级别的注意力机制的作用。SENET注意力机制分为三个部分,压缩(Squeeze)、激励(Excitation)和权重赋值(Reweight)。SENET整体结构如图5 所示。
图5 SENET注意力网络示意图
压缩的主要作用为特征融合,即对已经经过嵌入层压缩的特征向量进行二次压缩,有三种可以选择的压缩方式。在SENET原文中,使用的是最大值池化方式,而在SEFM模型中选择的是平均值池化方式。在经过Squeeze的二次压缩之后,得到了一个特征向量池化后的值组成的向量。计算过程如式(12)所示。
(12)
激励的主要作用是学习池化后特征之间的关系。SENET选择的学习方式是通过两层的全连接层来进行学习。这里使用的第一个全连接层是参数W1的降维层,其中降维率r为超参数,使用σ1作为非线性激活函数。第二个全连接层随参数增加维数,参数为W2。权重A如式(13)所示。
A=σ2(W2σ1(W1Z))
(13)
A为嵌入层输出的向量E的权重,A={a1,…,af},σ1与σ2为两层全连接层的激活函数,σ1为RELU激活函数,σ2为Softmax激活函数。第一层学习的参数W1的形状如式(14)所示。
(14)
第二层学习的参数W2的形状如式(15)所示。
(15)
其中,r为降维比。
权重赋值的作用是将在激励模块中学习到的权重赋值给特征向量,计算如式(16)所示。
V=E⊙A=[a1·e1,…,af·ef]
(16)
V为带权重的嵌入层输出向量E,也作为SENET结构的输出,V={v1,…,vf}。然后将带有权重的特征向量V与原特征向量E交由带有DNN的双线性结构进行特征交互,经过DNN预测得出的预测得分Scorese交给组合层。Scorese的计算如式(17)所示。
Scorese=σl2(Wl2σl1(Wl1(V+E)))
(17)
其中,σl1,σl2为RELU激活函数,Wl1,Wl2为两层神经网络的参数。
组合层是SEFM模型中的最后一层,在本层中会对LR部分、BFM部分与SENET部分得出的得分进行整合并输出最终结果,得分的计算如式(18)所示。
Scoretotal=Scorelr+Scorebf+Scorese
(18)
得到Scoretotal数组后就可以对其内部进行排序,最后得出推荐物排序并给出推荐结果。
实验部分将对SEFM模型与最新的模型进行比较,以验证其可行性与有效性,通过消融实验与超参数实验验证模型中各模块与超参数的作用。
实验环境选取的操作系统为Windows 10旗舰版64位,CPU为AMD锐龙7,显卡为NVIDIA RTX1650TI,使用的语言为Python 3.6版本,深度学习部分使用到的包有PytorchCUDA 10.2版本,以及Tensorflow 1.14-gpu版本,使用到的软件为Pycharm。
实验采用的数据集有三个: Criteo、Avazu与Assistments2009。前两个数据集为推荐领域内常用的公共数据集,第三个数据集为教育领域的公共数据集。选用前两个数据集的目的是验证SEFM模型的先进性,而第三个数据集的作用是验证SEFM模型在教育领域也同样有效。
Criteo数据集是Criteo Labs发布的在线广告数据集,包含数百万个展示广告的功能值和点击反馈。数据集具有40个属性,第一个属性是标签,其中值1表示已单击广告,而值0表示未单击广告。该属性包含13个整数列和26个类别列。对Criteo数据集进行分类处理,13个整数列标记为I0至I12,26个类别列标记为C0至C25。
Avazu数据集是用于CTR预测赛事的广告数据集。该数据集包含千万级别的广告数据。我们的实验选用其中前100万条作为数据集。其结构与Criteo类似,实验中同样将其标记为数字列与标记列。
Assistments2009数据集是学生在类似的问题(同一个知识点)上不断练习,直到能准确地回答连续的N个问题(N一般设置为3)。我们在该数据集实验中只选取其中比较关键的几列数据作为实验数据使用,包括assignment_id(作业ID),user_id(用户ID),problem_id(问题ID),correct(是否正确)。
实验中选择的评价指标为AUC与LOGLOSS。
AUC是推荐领域常用的指标之一,分别随机从正负样本集中抽取一个正样本、一个负样本,正样本的预测值大于负样本的概率。AUC的取值范围为[0,1],值越大表示模型预测的准确率越高。
LOGLOSS同样是推荐领域常用的指标,LOGLOSS 反映了样本的平均偏差,经常作为模型的损失函数来对模型进行优化,如式(19)所示。
(19)
为了使实验数据能被模型所读取,我们对三个数据集进行类似的预处理: 首先是数据填充,对数据集中的空数据进行填充,填充方式为对整数列中的空数据填充为0,类别列的空数据填充为-1。其次是对于类别的编码,编码中使用到了sklearn包中的LabelEncoder函数,将类别编码转换为整数,然后再对整数大小进行调整,使它们的数值限制在[0,1]之中。然后将类别列与整数列重新整合,整合后进行训练集与测试集划分,训练集与测试集采用 4∶1 的比例。
为了验证SEFM模型的性能,实验中选择了一共8个模型作为对比基线,在实验中分为经典模型与深度模型两类。经典模型包括线性回归模型LR、因子分解机FM。深度模型包括FiBiNET(2019),DIFM(2020),FRNET(2021),xDeepFM(2019),DeepFM(2016),Autoint(2019)。模型选择包含基于FM的与基于DNN的经典模型,也包含近3年最新的模型。由于SEFM中许多结构受到经典模型启发,所以与经典模型进行对比能起到消融实验的作用。与最新的模型进行对比则能体现SEFM性能上的进步。
实验参数的设置如表1所示,在参数介绍前先对实验过程中的参数选择进行整体性的说明,实验过程中使用到的模型参数选择遵循以下规则: 如果模型论文原文中对比实验使用到了该数据集,则选择论文中的参数进行实验,在表中参数设置为斜杠代表与原文参数一致。如果模型论文原文中对比实验没有使用该数据集,但超参数实验有对某个参数的推荐值,则使用原文的推荐值;否则,为了公平起见,参数的设置将与SEFM参数保持一致,而对于一些模型中特有的参数,如DIFM中的多头注意力数量参数,则选择论文中推荐的参数,如DIFM中推荐的多头注意力数量为4。
表1 实验参数设置
在表1中,Layer代表DNN结构的深度,Size表示一次训练所需要选取的样本数(Batch Size),Dim表示嵌入维度,Cin-layer表示Cin网络的深度[11],Attention Size表示注意力系数[20],r表示减缩率。对于ASSISTments2009实验的参数,除Size与Dim参数不同外,其他参数与CRITEO实验一致。
为保证实验的公平性与性能,进行以下三点设置:
(1) 由于优化器的选择对模型的性能影响巨大,各模型选择的神经网络优化器均为论文原文中使用的,基线模型与SEFM选择的优化器都为Adam[21],学习率设置为0.001。
(2) 丢弃率(Dropout)可以通过丢弃DNN中的一部分节点实现网络结构的不断变化,从而达到防止过拟合的作用。所有模型除非原文有要求,否则设置为0.5。
(3) 迭代次数(Epoch)实验中使用早停法控制迭代次数,这样可以防止模型实验结果收敛后继续迭代导致性能下降。
实验结果如表2所示。LR&DNN与FM&DNN由于自身在特征交互方面的劣势表现较差, Deep-FM作为早期的深度学习模型,在面对复杂种类的特征时表现要优于LR&DNN与FM&DNN,但低于更新的带有注意力机制的模型。xDeepFM与DeepFM类似。总体来说,深度学习模型整体表现好于传统机器学习模型,带有注意力机制的模型表现好于没有注意力机制的模型。而在教育数据集Assistments2009上,由于特征简单,不需要复杂的特征交互,带有FM的模型都取得了不错的实验结果,包括FM,DIFM,SEFM等。SEFM与深度学习模型在Criteo与Avazu等传统的广告数据集上差距较小,最小差距达到了0.2%,深度学习模型之间的差距也在2%以内,而对于教育数据集,SEFM的优势较为明显,与深度学习模型的差距最大在5%以上。原因是SEFM中BFM与SENET不同粒度的双路注意力机制发挥了作用,同时也说明了SEFM在教育领域提高推荐效果的可行性。
表2 对比实验结果
消融实验可以证明模型中各部分的作用。在SEFM中一共包含BFM,SENET两个创新部分,SEFM_NO_BFM表示去除BFM部分的模型,SEFM_NO_SE表示去除SENET部分的模型。
实验结果如表3所示。SEFM模型中各个结构都能起到正向的作用,完整的SEFM模型在三个数据集上的两个评价指标中均好于SEFM_NO_BFM与SEFM_NO_SE,在Criteo数据集上对比去除SENET后的模型提升最大,达到2.9%。原因是对于特征复杂的Criteo数据集,模型仅依靠BFM模块不能很好的进行特征交互。而在Avazu与 ASSISTments2009 数据集上SEFM_NO_SE表现好于SEFM_NO_BFM也印证了这一观点。
表3 消融实验对比结果
本节研究的是在实验过程中比较重要的超参数造成的影响。在实验过程中会保证其他参数一致,只修改要验证的参数,验证实验均在Criteo数据集上进行。要研究的超参数包括以下几个: ①嵌入维度: 控制嵌入层输出向量的维度。②丢弃率: 控制神经网络在某次迭代中丢弃某个节点的概率。③降维比: SENET激励过程中参数的缩减比率。
嵌入维度的实验结果如图6所示,可以看到嵌入维度从5增加到40,评价指标AUC与LOGLOSS都是在嵌入维度等于10时达到高点与低点。这是由于过低的嵌入维度会损失原有向量的特征,而过高的嵌入维度则会影响神经网络计算速度与准确率。所以在实验过程中选择的嵌入维度参数为10。
图6 嵌入维度的实验结果
丢弃率的实验结果如图7所示,在丢弃率的实验中丢弃率从0增加到0.9,评价指标AUC与 LOGLOSS 分别是在丢弃率0.2与0.5时达到高点与低点,这是由于维持一定的丢弃率可以防止过拟合,然后随着丢弃率的增加,AUC反而下降,这是由于丢弃率过高导致DNN中可用的节点过少导致欠拟合。所以模型选择的参数0.2到0.5均可。实验中选择的是0.5。
图7 丢弃率的实验结果
降维比的实验结果如图8所示, 降维比通过控制SENET网络的注意力权重间接控制模型的最终预测结果,可以看到当降维率达到2时,也就是在进行预测的神经网络中特征域的宽度缩减为一半的情况下,注意力网络能达到最好的性能。所以在实验过程中选择的缩减率为2。
图8 降维比的实验结果
为了研究CTR预测模型中注意力机制在教育领域的前景,本文提出一种基于SENET注意力网络与FM模型的新型推荐模型SEFM。通过简单与复杂两种注意力机制的结合,提出了一种新的双路注意力机制。同时在进行特征交互时使用双线性交互,保证了交互中特征向量的表现能力。在Criteo、Avazu数据集上的表现验证了模型在传统推荐问题上的有效性,在Assistments2009数据集上的表现证明了模型在教育习题推荐领域的前景。下一步我们将在模型上针对习题推荐进行特征优化,以提高模型在教育领域的影响。