背景:设计个性化信息检索时,用户行为预测扮演着重要的作用。用户行为预测的目标是估计用户点击、购买等行为的概率,而该概率代表了用户对该item的兴趣程度,用户之前的行为同时也影响着我们随后的排序。如何根据用户的query选择正确的ads并对其进行合理的排序,不仅极大的影响着用户点击、浏览等行为,而且对于搜索广告的收益也起到重要的作用。 LR
Degree-2 Polynomial (Poly2)简介: LR模型具有计算高效、可解释性强等优点,但是需要人工抽取交叉特征。而交叉特征对于模型性能起到重要的作用,相比LR线性模型,Poly2设计了特征自动交叉,从而自动计算交叉特征提升模型性能。 FM简介: Poly2模型虽然能够自动抽取交叉特征,但是当特征维度较高并且稀疏时,权重 FFM![]() 简介: FM算法将所有特征归结到一个field,而FFM算法则按照field对不同特征进行区分,主要体现在交叉项中。在FM算法中user这个特征对应的latent vector不论是对price、genre还是movie都是相同的,而FFM算法中则对特征进行归类,latent vector会区分交叉filed,模型参数个数n(n-1)/2。可以看出来FM算法时FFM算法的一个特例,但是随着FFM算法对latent vector的细化,FM算法中交叉简化将不再适用. ![]() 其中, FwFMs![]() 简介: FFM算法按照field对latent vector进行区分,从而提升模型的效果。但是FFM算法没有区分不同特征交叉的重要性,本文针对不同特征交叉赋予不同的权重,从而达到更精细的计算交叉特征的目的。 网络结构 ![]() 其中, AFM![]() 简介: AFM算法与FwFM算法类似,目标都是希望通过对不同交叉特征采用不同权重,从而减少引入噪声提升模型性能。 AFM的embedding层后,先让 其中, FNN![]() 简介: LR、FM被广泛的应用在工业场景中,但是这些模型对于抽取高阶特征显得无能为力。深度模型可以学习高阶复杂的交叉特征,对于提升模型性能有着重要的作用。由于CTR中大部分特征是离散、高维且稀疏的,需要embedding后才能用nn学习。 FNN模型将embedding层用FM初始化,即每个特征对应一个偏置项 CCPM![]() 简介: 模型结构整体结构相对比较简单,首先将特征映射到embedding稠密向量,然后经过卷积神经网络抽取高维特征,最后通过pooling层抽取主要的高维信息。 PNN![]() 简介: FNN算法实际上是对特征embedding之后进行concatenate,再接FC,虽然使用了激活函数增加了非线性,实际上是对特征进行了加权组合(add 操作)。PNN算法与FNN算法的区别在于PNN算法中间多了一层Product Layer层。其中z为embedding层的线性部分,p为embedding层的特征交叉部分,其他与FNN算法结构相同。 网络结构 ![]() ![]() ![]() ![]() ![]() Product layer分为两部分,其中z代表线性信号向量,而p代表二次信号向量。 1: Inner Product-based Neural Network ![]() ,即用内积来表示特征的交叉,类似于“且”的关系, Wide & Deep![]() 简介: 线性模型具有计算高效、可解释性强等优点,但是模型的泛化性差。深度学习模型对于长尾特征具有更高的泛化性,并且不需要大量的特征工程。然而当交叉特征稀疏时,深度学习模型容易出现over-generalize。本文提出同时对线性模型和深度模型联合训练,从而结合线性模型记忆性强、深度模型泛化性强的优点。 网络结构 1: The Wide Component ![]() wide部分长处在于学习样本中的高频部分,优点是模型的记忆性好,对于样本中出现过的高频低阶特征能够用少量参数学习;缺点是模型的泛化能力差,例如对于没有见过的ID类特征,模型学习能力较差 2: The Deep Component ![]() 其中, DeepFM![]() 简介: FM算法仍然属于wide&deep架构,不过在wide部分做了改进,采用FM替换linear layer,从而通过FM算法对交叉特征的计算能力提升模型的整体性能。其中inner product和deep network共享embedding feature,因此模型能同时从原始特征中学习低阶、高阶特征,并且不需要专业特征。 网络结构 1:FM component ![]() 2:Deep component ![]() 3:combination output layer ![]() NFM![]() 简介: FNN、wide&deep、DeepFM等算法在deep network部分都是对embedding之后的特征进行concatenate,未能充分进行特征交叉计算。本文NFM算法则是对embedding直接采用element-wise后sum起来做特征交叉,然后通过MLP直接将特征压缩,最后concatenate linear部分和deep部分的特征。 网络结构 1: Bi-Interaction Layer ![]() ![]() 其中, NFM算法可退化为FM算法,将向量 DCN![]() 简介: 目前FM、FFM、DeepFM和PNN算法都只计算了2阶交叉,对于更高维度的交叉特征只能通过deep部分去学习。因此作者提出了Deep&cross network,可以任意组合特征,而且不增加网络参数。 网络结构 1:embedding and stacking layer 将稀疏特征用embedding进行表示,比如:country=USA,以一个稠密向量表示USA这个特征,然后将所有的特征concatenate为一个向量用于表示输入。这里将dense特征和embedding特征一起concatenate,然后做为模型的输入。 ![]() 2: cross layer 借鉴于residual network的思想 ,在每一层网络对特征进行交叉 ![]() 3: deep layer ![]() ,其中 xDeepFM![]() 简介: DCN模型做特征交叉时采用的是特征内积,我们知道inner product得到的是一个标量。 ![]() 去掉偏执项
![]() ![]() 其中, 总结: 从LR到xDeepFM算法,模型的优化主要在于从wide和deep两方面去获得更多更合理的交叉特征。wide部分的优化从ploy2、FM、FFM、AFM算法的二阶交叉到DCN、xDeepFM的高阶交叉;deep部分的优化从FNN对embedding进行concatenate,到PNN对embedding进行inner product、outer product,再到NFM对embeding进行bi_interaction。为了获得更好的效果,目前主流的深度学习算法大都采用wide&deep框架,同时结合wide部分和deep部分的优点。
模型效果 ![]() DUPN![]() 简介: 前面列举的算法都是针对单点数据,而用户的行为序列一定程度上代表了用户当前的兴趣,但是行为序列中不是每一次行为都是同等重要的。每一次行为对每一个用户的重要程度都是不同的,因此本文通过user对行为序列做attention计算得到一个user embedding,为了获得更加通用的user embedding,作者将该user embedding应用到多个任务做multi-task建模。 输入item节点特征包含: ![]() ![]() ![]()
RIB![]() 简介: RIB模型和DUPN网络结构类似于,不同之处在于attention计算。另外本文输入特征中加入商品页停留时间特征、用户行为(点击、浏览、购买、加入购物车)和哪个模块进入商品页,具体特征如下:
其中attention计算为: DIN![]() 简介: 与DUPN、RIB算法不同,本文并未采用GRU网络对用户历史行为序列进行建模,而是直接通过attention对行为序列进行加权。DIN模型通过当前item对用户历史行为数据进行加权求和计算用户表征向量,这里通过dice激活函数计算历史行为的权重。与候选广告商品相关的行为赋予更高的权重,对用户兴趣的表示起主要作用。 1:用户历史行为向量 ![]() 其中, ![]() 3:自适应归一化 不归一化时,SGD只需要更新mini-batch中非零稀疏特征。但是加入l2归一化之后,每个mini-batch需要计算所有参数,这将会导致计算负担加重。在CTR任务中,特征较为稀疏并且维度较高,大部分特征只出现几次,而小部分特征出现很多次,即长尾分布,这将会导致模型过拟合。一个较为直接的方式,对出现次数较少的特征进行截断,但是这样将会导致信息的丢失,因此作者提出了一种根据特征频次自适应的更新方式。 1:出现频次较高的特征给予较小的正则化强度 2:出现频次较高的特征给予较高的正则化强度 ![]() DIEN![]() 简介: din算法对用户历史行为通过当前item计算attention,获得最终的user embedding,整个算法计算简单,易于理解。但是模型忽略了用户行为之间的关联关系,因此本文用一个GRU网络(兴趣提取模块)来计算用户兴趣的关联关系。DUPN算法也是通过一个GRU网络计算用户历史行为,然后通过一个additional attention进行加权求和获得最终的user embedding,本文思路与DUPN类似,整体结构仍然是通过GRU计算用户历史行为,然后通过一个attention对不同行为item进行加权求和,得到最终的user embedding,不同之处在于本文通过另一个GRU对时序数据更新进行控制。 Auxiliary loss ![]() 为了充分利用用户历史不同的时刻行为,作者在每个时刻加入auxiliary loss用于表征用户的兴趣(用户点击item为正、随机采样候选集为负)。 Attention ![]() ,其中通过候选item和gru输出计算attention权重。 Interest Evolving Layer GRU with attentional input (AIGRU) ![]() Attention based GRU(AGRU) ![]() GRU with attentional update gate (AUGRU) ![]() ![]() 我们常用attention与GRU输出进行加权求和得到最终的特征表示,但是本文通过另一个GRU网络对第一个GRU网络的输出进行建模,通过attention计算得到当前item与历史行为item的相关度,然后通过该相关度得分做节点更新约束,如果与当前相关性较弱,则 参考文献[1]Factorization Machines |
|