引言
工业推荐系统一般包含两个部分:召回和排序。召回阶段根据用户的兴趣和历史行为,从海量的物品库里,快速找回小部分用户潜在感兴趣的物品。排序模型需要融入各种特征(例如用户端的特征、物品端的特征等),使用较为复杂的模型,对召回阶段输出的物品集合进行排序,为用户做精准的个性化推荐。排序模型融入特征不仅需要考虑单独每一个特征,更需要考虑特征之间的交互。特征交互也叫特征组合,通过将两个或多个特征组合起来,进行一系列操作,来实现对样本空间的非线性变换,增加模型的非线性能力,以达到对于不同的特征组合都能进行有效预测的目标。
那么如何建模特征交互?最容易想到的方法是对所有特征的组合都枚举一遍。但是,这种显式地特征交互有一定的局限性:(1)非线性建模能力有限(2)更高阶的特征交互计算量大,难以实现(3)数据稀疏性大时,出现次数少的特征难以训练(4)不能自动化实现特征交互,人工代价大。随着深度学习时代的到来,特征交叉方案变得更加丰富,很多工作利用深度神经网络(DNN)来隐式地建模特征交互的高阶关系,来解决显式特征交互带来的问题。一些典型的工作例如PNN,Wide&Deep,NFM,DeepFM,xDeepFM,DIN等。
本文梳理了从LR到CAN,推荐系统发展过程中比较知名的32个特征交互排序模型。文章一共包含5个部分:
- 非深度特征交互 :LR, FM, FFM, FwFM, LorentzFM, FM^2
- 深度特征交互 : DNN(FNN), DeepCrossing, Wide&Deep, PNN, NFM, AFM, DeepFM, DCN, xDeepFM, FiBiNET, ONN. DCN V2
- 自动特征交互 : AutoInt, AFN, AutoFIS, AIM
- 基于图的特征交互 : Fi-GNN, L0-SIGN, PCF-GNN, DG-ENN
- 基于序列的特征交互 : DIN, DIEN, DSIN, DMR, CAN
其中,严格来说3、4、5三个部分也属于深度特征交互这一类,但因为其各自有明显的特点,因此将它们单独归类。读者可以选择自己不熟悉的方向进行阅读。
下图是本文涉及到的排序模型的发展历程,让脉络更加清晰。
特征交互排序模型发展历程
1 非深度特征交互
LR
Predicting Clicks Estimating the Click-Through Rate for New Ads, WWW 2007
LR模型没有使用特征交互的线性函数,对于每一个特征使用一个参数w作为权重。它可以处理大规模的离散化特征,并且易于并行化、可解释性强。同时LR有很多变种,例如支持在线实时模型训练(FTRL)。
FM
Factorization Machines, ICDM 2010
LR模型假设特征之间是相互独立的,忽略了特征之间的交互,而FM则是针对这一点进行改进。FM模型融入了二阶特征交互,对于每两个特征x_i和x_j的交互组合,用一个参数w_ij来作为权重。
为了解决了特征交互稀疏的问题,作者对参数w_ij进行了分解,分解为了两个向量的点积:
FFM
Field-aware Factorization Machines for CTR Prediction, RecSys 2016
在FM中,每一个特征只学习一个隐向量,这篇文章的作者一些特征应当属于不同的特征域,因此应该分别建模。具体来讲,FFM针对每个特征都会学习f个隐向量,f表示field的数量。假设样本的 n 个特征属于 f 个field,那么FFM的二次项有 nf个隐向量,而在FM模型只有有n个隐向量。
FwFM
Field-weighted Factorization Machines for Click-Through Rate Prediction in Display Advertising, WWW 2018
FFM对不同的交互方式可以精确的建模,取得很好的效果。但是,FFM中的参数个数跟特征数和域数的乘积同阶,在实际应用中开销较大。FwFM提出带权重的FFM,对不同域中不同的特征交互建模时更加高效。
LorentzFM
Learning Feature Interactions with Lorentzian Factorization Machine, AAAI 2020
洛伦兹因子分解机模型没有使用深度模型的结构,但可以达到深度模型的准确率,而且降低了深度模型的参数量和训练时间。具体来讲,LorentzFM建模特征交互时,利用了双曲空间中两个特征之间距离是否违背三角不等式来构造特征交互,同时双曲三角形特殊的几何特性可以替换掉现在普遍使用的MLP层,达到了减少参数量的目标。
FM^2
FM^2: Field-matrixed Factorization Machines for CTR Prediction, WWW 2021
FmFM(FM^2)可以看做FwFM的升级版,并且FM、FwFM等模型都可以统一到FmFM框架下,并通过embedding向量维度和中间向量缓存优化,在模型效果持平的前提下,提升计算效率。具体来讲,特征 F(i) 与特征 F(j) 交叉时,引入矩阵M,特征 F(i) 对应向量先与矩阵相乘得到中间向量,再与特征 F(j) 对应向量点积。FM和FwFM可以统一到该框架下。FM在进行二阶特征交互时,特征对应向量直接进行点积,等价于把FmFM中的M矩阵设置为单元矩阵(对角线全为1)。FwFM进行特征交互时,每对特征引入权重 ,等价于把FmFM中的转化矩阵设置对角线全为 r 的矩阵(非对角线为0),矩阵参数可学习,对角线元素相同。
2 深度特征交互
DNN(FNN)
Deep Learning over Multi-field Categorical Data, ECIR 2016
DNN模型通常由Embedding层+MLP层组成。通过Embedding层,将高维离散特征转换为固定长度的连续特征,然后通过多个全连接层,最后通过一个激活函数得到点击的概率。这种方法的优点在于通过神经网络拟合高阶特征交互的非线性关系,同时减少了人工特征的工作量。这篇论文中提到的FNN则是用训练好的FM作为初始化参数,再接DNN。
DeepCrossing
Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features , SIGKDD 2016
微软于2016年提出的Deep Crossing可以说是深度学习CTR模型的基础性模型,旨在解决特征工程中特征组合的难题,降低人工特征组合的工作量。它的整体结构与DNN类似,不同的地方在于Deep Crossing采用的MLP是由残差网络组成的(文中提到这是第一次残差单元被用于图像识别之外)。通过多个残差单元,对特征向量各个维度进行交叉组合,使模型获得了更多的非线性特征和组合特征信息,从而提高了模型的表达能力。
Wide&Deep
Wide & Deep Learning for Recommender Systems, RecSys 2016
Wide&Deep 是由Google于2016年提出的,是推荐领域取得较大成功的最早深度模型。模型包括Wide和Deep两个部分,Wide 部分为 LR,这部分对样本中的特征与目标有较为明显的关联进行记忆性学习,即对于样本中出现过的高频低阶特征能够用少量参数学习,缺点是泛化能力差;Deep部分为DNN,旨在学习到样本中多个特征与目标之间的隐式关联,对于少量出现过的样本甚至没有出现过的样本能做出预测。在Wide&Deep的框架下,一个优势是Wide部分可以沿用之前非深度特征交互的成果,尤其是特征工程部分。这一点也促进了之后DeepFM等工作的诞生。
PNN
Product-based Neural Networks for User Response Prediction, ICDM 2016
传统Embedding+MLP的方式并不能很好对高阶交叉特征进行获取,同时FNN用FM初始化参数接DNN的方式也并不完美,针对这些缺点PNN进行了改进,通过引入特征交互层 Product Layer,显式的对特征进行交互,以提升模型的表达能力。Product层利用内积(Inner PNN)和外积(Outer PNN)两种方式实现对特征的交叉组合。其中,IPNN本质上利用共享参数来减少参数量,采用一阶矩阵分解来近似矩阵结果。OPNN的时空复杂度比IPNN更高,作者使用了Sum Pooling的方式来降低复杂度,但也造成了精度的损失。 实际使用更多的是IPNN。
NFM
Neural Factorization Machines for Sparse Predictive Analytics, SIGIR 2017
NFM将FM得到的交互特征用于DNN层的输入,并使用Bi-interaction Pooling操作对二阶交叉特征进行处理,解决传统FM作为线性模型表达有限的问题和对高阶交叉特征学习不充分的问题,公式如下:
Bi-interaction Pooling与FM相比,没有引入额外的参数,且具有线性复杂度。
AFM
Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks, IJCAI 2017
与NFM类似,AFM首先利用FM解决稀疏特征问题及浅层交互特征,同时利用深度注意力网络获取深层交互特征。模型的核心是注意力层(Attention-based Pooling Layer)通过关注不同的交叉特征和目标之间的关系,得到不同程度的贡献分数,然后加权求和。同时利用MLP进一步处理训练数据中未出现样本的的评估问题,从而达到泛化模型的目的。
DeepFM
DeepFM: A Factorization-Machine based Neural Network for CTR Prediction, IJCAI 2017
将Wide&Deep模型的LR替换为FM。解决FM只能获取二阶特征,无法获取高阶特征的问题;解决传统DNN的隐式交叉方式在高稀疏特征无法很好获取表征的问题。DeepFM是一个端到端的深度学习模型,模型FM和DNN部分共享Embedding层。
DCN
Deep & Cross Network for Ad Click Predictions, ADKDD 2017
DCN对Wide&Deep中的Wide部分进行了替换,提出CrossNetwork用于特征交叉。它的设计理念是通过参数共享的方式减少向量压缩变换时产生参数量过多的情况,从而减少模型的过拟合,增强模型的泛化能力。同时Cross Network的方式会将模型复杂度降为层级线性增长。
xDeepFM
xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems, SIGKDD 2018
使用CIN交叉网络和DNN的双路结构,同时以显式和隐式的方式学习高阶特征。其中模型的核心部分是交叉网络CIN部分,由交互和压缩两步,通过vector-wise角度学习高阶交叉特征,CIN与DNN两个部分同时共享Embedding层。
FiBiNET
FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction, RecSys 2019
结合特征重要性和双线性特征交互进行CTR预估。主要通过动态学习不同特征的特征重要性权重,解决CTR预估中对不同场景下不同特征的权重reweight的问题;双线性的使用解决稀疏数据在特征交叉建模时的有效性问题。核心结构包括SENET Layer和Bilinear-Interaction Layer。其中 SENET Layer会对每个field用pooling操作和FC层计算特征重要性权重的Excitation;对原始每个field利用Excitation得到的特征重要性权重重新赋权。而 Bilinear-Interaction Layer 提出一种结合Inner Product和Hadamard Product方式,学习交互特征。
ONN
Operation-aware Neural Networks for user response prediction , NN 2020
目前大多数模型对于一个特征在进行不同的操作时都使用相同的表示。但对于不同的操作,一个特征的最好的表示不总是相同的。ONN解决该问题的一个思路是在基本的通用的Embedding+MLP结构下,将PNN与FFM结合起来,实现了在embedding层的每一个特征对于不同操作(内积或者外积)有不同的表示,这对于之后进入MLP学习高阶特征交互时有更好的帮助。与PNN相比,ONN实现了operation-aware的embedding layer,即一个特征有多种embedding,对于不同操作可以选择不同的特征表示。和FFM模型最大的区别在于ONN加入了MLP,深度神经网络能够更好的挖掘特征深层次的依赖,学习到复杂的特征交互关系。
DCN V2
DCN V2: Improved Deep & Cross Network and Practical Lessons for Web-scale Learning to Rank Systems, WWW 2021
DCN V2是DCN的作者提出的一个改进版本。核心的改进在于cross network。
这是DCN的cross layer
这是DCN V2的cross layer
从两幅图的公式可以对比看出,模型最大的变化是将原来的向量w变成了矩阵W。矩阵相比向量来说,拥有更多的参数来保留高阶交叉信息,提高模型的表达能力。但是引入矩阵会增加计算量,为了减少开销,作者提出了对W矩阵进行低秩分解,即用两个低秩子矩阵代替原来的矩阵,实验证明这种方式精度损失很低。另外,文章对deep层和cross层还尝试了stacked(串行,cross层的输出作为deep层的输入)和 parallel(并行,cross层和deep层同时进行,最后将两部分的输出拼接)两种不同的组合方式,实验表明两种组合方式在不同的数据集上的表现效果不同,没有优劣之分。
3 自动特征交互
现有的特征交互的工作通常分为二阶交互和高阶交互,而且需要指定一个交互阶数,迭代出所有的交互特征。这样做一方面计算量容易变得很大,不利于实际应用;另一方面可能会潜在引入噪声,即不重要的特征交互组合。自动特征交互这一类工作的目标是希望模型可以自动学出应该保留哪些交互的特征以及应该进行几阶交互。
AutoInt
AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks, CIKM 2019
受Transformer的启发,模型利用带残差连接的多头自注意力机制显式的进行交互特征的获取,能够自动学习高阶特征交叉。核心部分是Interacting Layer,将输入的embedding转换为Query、Key、Value,通过自注意力的方式计算每个特征与其他特征的相似度,加权求和得到新特征。模型也包含多个注意力层以构造更高阶的组合特征。
AFN
Adaptive Factorization Network: Learning Adaptive-Order Feature Interactions, AAAI 2020
现有的特征交互的工作通常指定一个交互阶数,迭代出所有的交互特征,这样做一方面计算量很大,另一方面会引入噪声的特征组合。AFN本文借鉴了Logarithmic Neural Network (LNN)的思想,模型中的Logarithmic Transformation Layer可以自动学习保留出应该交互的特征以及应该进行几阶交互。其核心思想是引入对数mic变换,将特征对数化,再去做交叉运算。这样能将特征交互中每个特征的幂转换为带系数的乘法。
AutoFIS
AutoFIS: Automatic Feature Interaction Selection in Factorization Models for Click-Through Rate Prediction, SIGKDD 2020
AutoFIS的目标是自动识别出有效的特征交互组合,避免引入噪声特征交互。模型整体分为两个阶段: 搜索阶段(检测有效特征交互)和重训练阶段(去除冗余的特征交互,并重新训练模型)。模型会为每个特征交互引入门控单元来控制是否选择它。搜索阶段门控打开,正常学习每个特征交互的权重;重训练阶段,关闭不重要特征交互的门控,即在训练时丢掉这个特征交互。
AIM
AIM: Automatic Interaction Machine for Click-Through Rate Prediction, TKDE 2021
AIM是AutoFIS的扩展版,包含三个核心组件:特征交互搜索(FIS)、交互函数搜索(IFS)和嵌入维数搜索(EDS)。其中IFS以及FIS负责特征交互搜索,EDS负责特征表示搜索。FIS负责搜索特征交互的组合,可以看到FIS的结构与AutoFIS一致,但基本的FIS结构只能探索特征间的二阶交互,这里作者设计了 P 阶特征交互的搜索算法。IFS为每个特征交互组合设计了不同的运算选择,具体而言,本文设计了inner,outer与kernel product三种运算。在搜索阶段,IFS与FIS同时进行搜索,因为不同特征组合与组合间的运算是紧密联系的。特征交互搜索在自底向上的搜索过程中同时完成了特征组合搜索与特征组合间的运算搜索。EDS结构,它为特征embedding的每个值分配一个剪枝搜索权重,用来修改重参化后的embedding。最后根据搜索非0权重位置构建embedding table的稀疏表示。
4 基于图的特征交互
这部分主要介绍了近三年来应用图神经网络到CTR模型中,来建模特征交互的工作。
Fi-GNN
Fi-GNN: Modeling Feature Interactions via Graph Neural Networks for CTR Prediction, CIKM 2019
Fi-GNN首次尝试将GNN用于建模特征之间的复杂交互,属于开创性的工作。基本思想是构建特征图,将特征作为图的节点,两两节点之间都存在一条边,边上的权重代表特征交互的重要程度,以此将特征之间的复杂交互转化为特征图的节点之间的交互。在Embedding层中,模型使用了多头注意力网络层得到新的field embedding,蕴含了该field和其它特征field的高阶特征交互。输出为一个特征图,作为后面Fi-GNN模型的输入。Fi-GNN由多步组成。每一步会对节点做更新:使用注意力网络聚合邻居节点的信息,然后使用一个GRU单元对节点N进行状态更新。在Fi-GNN中,每个节点通过和邻居节点交换状态信息,以循环的方式更新自身的状态,图网络上更新的步数相当于特征交互的阶数。
L0-SIGN
Detecting Beneficial Feature Interactions for Recommender System, AAAI 2021
特征交互对于在推荐系统中实现高精度推荐至关重要。然而,一些特征交互可能与推荐结果无关,可能会引入噪声并降低推荐精度。处理组合问题一个很好的数据结构就是图。为了充分利用特征交互,L0-SIGN构造了特征图,所有的特征当成图的顶点,图中有没有边来表示两个节点之间有没有交互,边的权重表示特征交互的重要性。同时文章提出了一种带有L0激活正则化的边预测模型,来自动检测那些在推荐准确性方面有益的特征交互,从而过滤掉带来噪声的特征交互。
PCF-GNN
Explicit Semantic Cross Feature Learning via Pre-trained Graph Neural Networks for CTR Prediction, SIGIR 2021
和Fi-GNN用端到端建模不一样,PCF-GNN是一个两阶段的模型。第一阶段是GNN的预训练:通过构建一种基于特征共现关系的GNN,节点表示每一个特征,边的权重为特征共现度,显式地建模特征共现目标。进行相应的预训练(没有像Fi-GNN一样用多头注意力机制学习节点初始表示),显式地预测和输出特征的交互关系,对于没有出现过的新的交互,也可泛化预测。第二阶段是下游的应用:GNN可以固定参数,作为交互特征提取器,在应用的阶段首先推断出交互特征的值,然后和其余特征拼接在一起作为后面DNN的输入;也可以做预训练的范式,在下游CTR模型训练过程中微调GNN,更新每个特征的表示。
DG-ENN
Dual Graph enhanced Embedding Neural Network for CTR Prediction, SIGKDD 2021
现有工作存在两个主要的问题:特征稀疏性,特征交互依赖于特征之间的共现信息,稀疏特征在训练集很少出现,因此很难训练充分;行为稀疏性,用户行为呈长尾分布,大部分用户的交互行为比较稀少。
针对特征稀疏性,参考前面两篇工作,引入特征图来自动建模特征交互,high-degree的特征能够辅助邻近的low-degree稀疏特征的表示学习,缓解特征共现带来的偏差和不置信。针对行为稀疏性,可以构建user-item的交互图,这样能够利用其它用户行为中蕴含的协同信息来解决目标用户行为稀疏的问题。最终模型把增强的用户表示、物品表示、属性表示、上下文表示做调整,输入到DNN中。
5 基于序列的特征交互
DIN
Deep Interest Network for Click-Through Rate Prediction, SIGKDD 2018
在传统的特征交互模型中,不同维度的Embedding在拼接后输入到MLP中以拟合高阶非线性关系,但这种框架下用户的Embedding是不变的,很难获取用户的多兴趣。本文的动机是模型上如何建模用户的多峰兴趣。DIN创新性地加入了Attention机制,把target item作为query在动态聚合user的历史行为,这样在不同场景中,用户不同的浏览历史会构建出不同的用户表示。另外,这篇文章还有一些其他重大的创新,例如dice激活函数,group_auc指标等。
DIEN
Deep Interest Evolution Network for Click-Through Rate Prediction, AAAI 2019
在推荐场景下,用户的兴趣会随着时间和空间的变化而发生变化,只通过用户历史数据中的兴趣因素,而不关注兴趣的变化,使得现有的一些模型无法很好的在CTR预估任务中对用户兴趣的变化进行刻画捕捉。DIEN利用双层GRU对用户兴趣序列进行刻画。Behavior Layer将用户浏览过的商品按照浏览时间转换成对应的embedding。Interest Extractor Layer利用GRU提取用户兴趣特征。具体加入一个二分类模型来计算兴趣抽取的准确性,用辅助网络得到预测结果。Interest Evolution Layer中利用Attention(局部关注)配合 GRU(序列学习)的形式,从时序特征中构建与目标物品相关的兴趣演化特征。
DSIN
Deep Session Interest Network for Click-Through Rate Prediction, IJCAI 2019
DSIN通过将用户的历史点击行为划分为不同session,然后利用Transformer对每个Session进行学习得到兴趣向量后,使用BiLSTM学习用户在多个Session之间的兴趣变化。Session Division Layer完成对用户历史点击行为的划分,得到多个Sessions;Session Interest Extractor Layer使用Bias Encoding的方式表征不同Session间的顺序,同时考虑到用户兴趣可能来自不同因素,利用多头注意力机制对每个session 建模得到兴趣向量表示;Session Interest Interacting Layer在得到用户的兴趣向量表征之后,利用Bi-LSTM学习不同Session之间的由顺序带来的兴趣变化;Session Interest Activating Layer利用注意力机制学习不同Session和Item之间的相关性,混合上下文信息的兴趣信息之后,对距离较近的Session赋予更大的权重。
DMR
Deep Match to Rank Model for Personalized Click-Through Rate Prediction, AAAI 2020
现有工作主要集中在用户表示上,很少关注用户和物品之间的相关性。本文提出了一种深度匹配排名方法(DMR),将协同过滤与匹配的思想相结合,用于CTR预测中的排名任务。模型分为user-to-item网络和item-to-item网络两部分。在user-to-item网络中,借助协同过滤的思想,通过embedding空间中相应表示的内积直接计算用户与物品之间的相关性,从用户行为中提取用户表示。考虑到最近的行为可以更好地反映用户的时间兴趣,使用注意力机制来自适应地了解每种行为在行为序列中的位置的权重。本文也提出了一个辅助匹配网络,帮助更好地训练user-to-item网络。辅助匹配网络可看作是一种匹配方法,其任务是根据用户的历史行为来预测下一个要点击的项目,DMR需要同时训练匹配模型和排名模型。在item-to-item网络,与DIN类似,通过包含位置信息的注意力机制,计算用户交互物品与目标物品之间的物品之间相似度,然后进行聚合,以获得另一种形式的用户与物品的相关性表示。
CAN
CAN: Feature Co-Action for Click-Through Rate Prediction, WSDM 2022
CAN主要以一种新的方式重新思考高阶特征交互。本文首先提出co-action的概念,指出特征交互对最终预测的影响。如果原始特征的co-action信息建模本身有用,那么笛卡尔积就是建模co-action最直接的方式。最直接的使用二维笛卡尔积的方式来显式做co-action建模会带让参数量急剧上升。为了解决这个问题,本文提出了Co-Action Unit使用模型化的方案建模特征之间的交互。具体来讲:Co-action Unit的输入包含两部分——希望建模交互关系的两个特征,一端信息作为输入,另一端信息作为MLP的参数,用MLP的输出来表达Co-action信息。
对序列做DIN/DIEN类似的聚合,在co-action的视角下可以看做是对原始行为序列的embedding做一个纯量的修正,item的表示只有一套。而CAN是用向量来建模的,并且使用的新的embedding和原始序列的embedding完全独立,因此模型自由度和容量更大。
CAN提供了一种新的特征交互思路,在特征工程上手动特征交叉和模型上自动特征交叉之间做了折衷,也是记忆性和泛化性的互补。可以看作是特征交互的一种新范式。