FM的应用
由于LR在特征工程上的高昂成本,具有隐性特征交叉向量的FM(Factorization Machines)成为挖掘二阶特征组合的CTR预估。FM的核心思路是,为每一个特征设置一个隐向量,根据该向量的值来表示该特征与其他特征之间的关系。对于任意两个特征的组合,只需要求出两个隐向量的内积即可得到其权重值。
FM在CTR预估作业上的潜力被不断挖掘,先是FFM(Field-aware Factorization Machines)提出了“field”概念。原始的FM是每个特征只有一个隐向量 w i \boldsymbol w_i wi,而FFM则认为特征应该被分为不同的field,如果一共被分为 n n n个不同field的话,每个特征就应该具备 n n n个不同的隐向量。当两个特征进行组合时,将参与内积运算的应该是每个特征对应对方field的向量,比如两个特征分别为特征 i i i和 j j j,则它们所处的field分别记作 f i f_i fi和 f j f_j fj。此时交叉特征的权重为 w i , f j w j , f i \boldsymbol{w}_{i,f_j}\boldsymbol{w}_{j,f_i} wi,fjwj,fi。
在Wide&Deep取得成功后,FM也被集成进DNN模型。DeepFM就是使用FM对特征进行embedding,之后再将embedding结果与DNN共享,使DNN学习更为高阶的特征组合特性。
Attention机制
Attention机制的核心就是为不同特征的组合分配权重系数。在NLP和CV的任务中,attention机制都取得了巨大的成功。在推荐系统中,attention机制也被不断尝试与DNN进行结合,比如DIN(Deep Interest Network)就是通过注意力机制对用户的历史兴趣进行有侧重的利用与挖掘。由于认为FM对于各个特征组合的结果进行等权重加和的设定较为朴素,AFM为每个特征组合设定了一个注意力得分,相当于是“权重的权重”。
AFM
AFM(Attentional Factorization Machines)是2017年ZJU和NUS合作发表在IJCAI上面的论文,相比于其他FM相关的模型,AFM提供了基于注意力机制的池化层,通过注意力得分为每组特征组合分配权重,从而突出对CTR影响最大的特征组合情况。
模型
由上图可知,AFM的模型内部存在两个比较核心的部分,一个是embedding后的Pair-wise Interaction Layer,另一个是用来训练注意力得分的Attention Network。
Pair-wise Interaction Layer
AFM给出了一种特征间的新的pair-wise interaction。如果将特征向量 x x x中的非零特征组成的集合记作 X \mathcal{X} X,将embedding layer所有输出记作 ε = { v i x i } i ∈ X \varepsilon=\{\boldsymbol v_ix_i\}_{i\in\mathcal{X}} ε={vixi}i∈X,则pair-wise interaction layer的输出则可以表示为向量集合: f P I ( ε ) = { ( v i ⊙ v j ) x i x j } ( i , j ) ∈ R x , f_{PI}(\varepsilon)=\{(\boldsymbol{v}_i\odot \boldsymbol{v}_j)x_ix_j\}_{(i,j)\in\mathcal{R}_x}, fPI(ε)={(vi⊙vj)xixj}(i,j)∈Rx,其中 ⊙ \odot ⊙表示两个向量的element-wise product, R x = { ( i , j ) } i ∈ X , j ∈ X , j > i \mathcal{R}_x=\{(i,j)\}_{i\in\mathcal{X},j\in\mathcal{X},j>i} Rx={(i,j)}i∈X,j∈X,j>i,即所有非零特征的组合。通过定义pair-wise interaction layer,FM可以使用神经网络的结构进行表示。首先将 f P I ( ε ) f_{PI}(\varepsilon) fPI(ε)送入sum pooling,之后通过FC layer将结果映射为预测分数: y ^ = p T ∑ ( i , j ) ∈ R x ( v i ⊙ v j ) x i x j + b , \hat{y}=\boldsymbol{p}^T\sum_{(i,j)\in\mathcal{R}_x}(\boldsymbol{v}_i\odot \boldsymbol{v}_j)x_ix_j+b, y^=pT(i,j)∈Rx∑(vi⊙vj)xixj+b,其中 p ∈ R k \boldsymbol{p}\in\mathbb{R}^k p∈Rk与 b ∈ R b\in\mathbb{R} b∈R分别表示prediction layer的权重与偏差。当 p \boldsymbol p p取 1 \boldsymbol 1 1并且 b b b取0的时候,上式即为一般形式的FM。
Attention-based Pooling Layer
Attention机制的核心思想是,FM中不同的特征组合在统一表示时也应当对结果产生不同贡献。不同于FM的直接求和,AFM在特征交叉部分引入了attention实现了权重求和: f A t t ( f P I ( ε ) ) = ∑ ( i , j ) ∈ R x a i j ( v i ⊙ v j ) x i x j , f_{Att}(f_{PI}(\varepsilon))=\sum_{(i,j)\in\mathcal{R}_x}a_{ij}(\boldsymbol{v}_i\odot \boldsymbol{v}_j)x_ix_j, fAtt(fPI(ε))=(i,j)∈Rx∑aij(vi⊙vj)xixj,其中 a i j a_{ij} aij是特征组合 w ^ i j \hat{w}_{ij} w^ij的注意力得分,即 w ^ i j \hat{w}_{ij} w^ij对于目标预测的重要性。通常,要计算 a i j a_{ij} aij,最先想到的方式可能是直接通过最小化预测损失来学习 a i j a_{ij} aij的值,这在工程上也确实是可行的。但是这样做的问题在于,相比于LR,FM的一大优势是特征组合的权重学习不要求该组合在训练集上共现,而这一做法对于没有共现的特征组合是无法学习到注意力得分的。为了解决这个问题,AFM的作者设计了一个multi-layer perceptron(MLP),即attention network,将交叉特征的向量作为输入。定义attention network为: a i j ′ = h T R e L U ( W ( v i ⊙ v j ) x i x j + b ) , a'_{ij}=\boldsymbol{h}^TReLU(\boldsymbol{W}(\boldsymbol{v}_i\odot \boldsymbol{v}_j)x_ix_j+\boldsymbol b), aij′=hTReLU(W(vi⊙vj)xixj+b), a i j = e x p ( a i j ′ ) ∑ ( i , j ) ∈ R x e x p ( a i j ′ ) , a_{ij}=\frac{exp(a'_{ij})}{\sum_{(i,j)\in\mathcal{R}_x}exp(a'_{ij})}, aij=∑(i,j)∈Rxexp(aij′)exp(aij′),其中 W ∈ R t × k , b ∈ R t , h ∈ R t \boldsymbol{W}\in\mathbb{R}^{t\times k}, \boldsymbol{b}\in\mathbb{R}^t, \boldsymbol{h}\in\mathbb{R}^t W∈Rt×k,b∈Rt,h∈Rt都是模型参数, t t t是attention factor,表示attention network的隐层大小。注意力得分最终通过softmax函数进行归一化。基于AFM作者的实践,ReLU作为激活函数表现很好。
Attention-based pooling layer的输出是一个将所有特征组合通过重要性压缩得到的 k k k维向量。AFM模型的完整模型公式可以表示为: y ^ A F M = ( x ) = w 0 + ∑ i = 1 n w i x i + p T ∑ i = 1 n ∑ j = i + 1 n a i j ( v i ⊙ v j ) x i x j , \hat{y}_{AFM}=(x)=w_0+\sum^n_{i=1}w_ix_i+\boldsymbol{p}^T\sum^n_{i=1}\sum^n_{j=i+1}a_{ij}(\boldsymbol{v}_i\odot \boldsymbol{v}_j)x_ix_j, y^AFM=(x)=w0+i=1∑nwixi+pTi=1∑nj=i+1∑naij(vi⊙vj)xixj,其中 a i j a_{ij} aij已经在前面定义,模型包含参数为 Θ = { w 0 , { w i } i = 1 n , { v i } i = 1 n , p , W , b , h } \Theta=\{w_0, \{w_i\}^n_{i=1},\{\boldsymbol{v}_i\}^n_{i=1}, \boldsymbol{p}, \boldsymbol{W}, \boldsymbol{b}, \boldsymbol{h}\} Θ={w0,{wi}i=1n,{vi}i=1n,p,W,b,h}。
学习方式
AFM直接从数据建模方向上对FM进行了提升,可以被直接应用于多种预测任务,如回归,分类,以及排序。不同的任务类型需要不同的目标函数。对于预测值为实数的回归任务,常见的目标函数是均方误差: L r = ∑ x ∈ τ ( y ^ A F M ( x ) − y ( x ) ) 2 , L_r=\sum_{x\in\tau}(\hat{y}_{AFM}(\boldsymbol{x})-y(\boldsymbol{x}))^2, Lr=x∈τ∑(y^AFM(x)−y(x))2,其中 τ \tau τ表示训练集,对于二分类问题或者隐式反馈的推荐任务,可以最小化log loss。通过TF等常见框架的AutoDiff功能即可实现 y ^ A F M ( x ) \hat{y}_{AFM}(\boldsymbol{x}) y^AFM(x)部分的SGD,从而完成学习。
防止过拟合
AFM在pair-wise interaction layer部署了dropout,在attention network加入了 L 2 L_2 L2正则,此时attention network部分的目标函数变为: L r = ∑ x ∈ τ ( y ^ A F M ( x ) − y ( x ) ) 2 + λ ∥ W ∥ 2 , L_r=\sum_{x\in\tau}(\hat{y}_{AFM}(\boldsymbol{x})-y(\boldsymbol{x}))^2+\lambda\left\|\boldsymbol W\right\|^2, Lr=x∈τ∑(y^AFM(x)−y(x))2+λ∥W∥2,其中 λ \lambda λ是正则项的权重。AFM并没有在attention network部分使用dropout,其作者解释为在pair-wise interaction layer以及attention network都部署dropout后会引入一些稳定性问题,同时模型表现会受到影响。