前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >推荐系统炼丹笔记3:排序篇,一本家谱

推荐系统炼丹笔记3:排序篇,一本家谱

作者头像
炼丹笔记
发布2021-12-02 15:36:39
6230
发布2021-12-02 15:36:39
举报
文章被收录于专栏:炼丹笔记炼丹笔记

炼丹笔记·推荐系统

作者:炼丹笔记

第3期,排序篇 本文介绍在排序阶段交叉模块的思考和基于LR+GBDT、FM等开始的排序模型的演变,后续将继续梳理成相关系列。本文小编大部分内容摘自炼丹笔记之前的汇总.....实在是太懒了。

在排序模型阶段,交叉模块是非常重要的模块,在早期序列化探索还没有那么强的时候,Poly2,FM,FFM这些模型都是在探索特征之间的交叉信息的,而这些统计信息是可以带来非常大提升的。

1. FM + NFM + TFNET特征交叉思路的组合尝试

这里希望验证的内容主要是:

  • 特征交叉哪种类型(简单的乘积,还是Bilinear形式的?)效果最佳?
  • 特征冗余是否会影响我们的效果,在早期的kaggle的方案中,很多FM/FFM都是枚举形式的,但是在双塔的结构中,我们发现User侧和Item侧的交叉效果更好。

当然如果是搜索任务可能还需要考虑Query的情况,我们默认将Query当做User侧的embedding加入。而在大量的实验结果中,我们基本可以得到下面的结论:我们将UI的所有emebdding信息进行拼接, 我们将拼接之后的信息用UI表示,

  • 假设

, U和I拼接我们得到

这一块的实验结论大致可以归纳为:

  • UI进行枚举式的交叉相较于没有交叉能带来不错的提升;
  • UI进行枚举式的交叉同时选取上三角的信息,也就是过滤了

重复值的情况,效果相较于枚举式的效果要好很多,这也验证了冗余信息对于模型的危害;

  • 我们只使用U和I做简单的交叉,即,

,然后再展开输入到模型的下一层,效果相较于UI枚举式交叉并且取上三角的信息的效果差不大,但是U和I简单的交叉可以节省更多的时间;

  • 我们将上面的简单相乘的方式替换为Bilinear的操作,可以发现Bilinear的操作能帮助CTR带来微量的收益。
  • 模拟TFNET实现张量的操作等,效果和Bilinear类似,相较于U和I的简单乘积的方式可以带来微量的收益。

简单总结就是,U和I分开进行Bilinear的操作可以为我们的CTR带来些许帮助,但是对最终我们期望的曝光到转化的预估没能带来太大的正向收益。

2.模仿ONN思路

在大量的数据竞赛中,19年及之前有较大优势的是ONN以及xDeepFM两种,考虑到xDeepFM时间计算代价较大,我们尝试往ONN的思路迁移。因为目前我们线上的Embedding维度不能太大,但是又希望有类似于FFM这种的效果怎么办?

此处偷个懒,不细分field,而是每个Item的特征都对应一个field,同样的每个User的特征也都对应一个,等价于暴力转换

代码语言:javascript
复制
#  [U, d] * Tensor(like:[d, d, V]) = [U, d, V] 
#  [V, d] * Tensor(like:[d, d, U]) = [V, d, U]

得到上面的形式之后,再用下面的方式做cross:

代码语言:javascript
复制
IF_trans = tf.transpose(IF,perm=[0, 3, 2, 1])                      # [?, U, d, V]
UIF      = tf.reduce_sum(UF * IF_trans, axis=-2)                   # [?, U, V]

Tensor因为是自行设计的,中间的*也可以自定义为其他操作,最终我们就得到一个形式上类似的新的"embedding"....

这么做的话,我们发现实验在CTR和曝光到转化的预估上可以带来一些收益,不过非常小。受限于资源等的问题,我们没法直接和ONN以及FFM中,直接在初始的过程中就执行转化,相信后面资源扩充了这么做肯定还是能有帮助的。

3.模仿TFNET细化embedding内积操作

UI的Cross内积,, 然后把所有的内积结果concat输入到下一层,接入MLP等,但是我们看MLP的形式是

, 也就是说最后我们的输出其实是:

,从表面来看,我们不会再深入到embedding的内部进行操作,都是在内积的基础上做,所以我们模仿一些NFM,TFNET,FiBiNET等文章思路先做内部交叉。

然后在此基础上加入张量的思想,将扩充成张量的形式。

这个思路在论文中也存在。

  • FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction

该思路在实验中效果还不错,基本在CTR和曝光到转化的预估中基本都能带来一定幅度的提升。

炼丹之前,先放一张CTR预估系列的家谱,让脉络更加清晰。

(1)FiBiNET:结合特征重要性和双线性特征交互进行CTR预估

1.1 背景

本文发表在RecSys 2019,主要通过动态学习不同特征的特征重要性权重,解决CTR预估中对不同场景下不同特征的权重(ReWeight)重定义问题,同时,双线性的使用解决稀疏数据在特征交叉建模时的有效性问题。

1.2 创新

由模型结构图我们可以发现,本文核心结构主要有两个,Embedding Layer中的SENET Layer Bilinear-Interaction Layer

(1)其中 SENET Layer又包含3个步骤,分别是

  • 对每个Field用Max Pool或者Mean Pool 操作的Squeeze Step;
  • 对每个Field用两层FC层计算特征重要性权重的Excitation;
  • 对原始每个Field利用Excitation得到的特征重要性权重重新赋权的ReWeight。

(2)而 Bilinear-Interaction Layer 层提出一种结合Inner Product和Hadamard Product方式,并引入额外参数矩阵W,学习特征交叉。

主要通过3种方式得到交叉向量,分别是

1)Field-All Type:所有特征组交叉时共享额外参数矩阵W;

2)Field-Each Type:每个特征组Field-i 维护一个参数矩阵W-i;

3)Filed-Interaction Type:每对交互特征P(i,j)都有一个参数矩阵W(i,j)。

最后,Bilinear-Interaction Layer 将原始的特征Embedding向量 和 SENET层输出的Embedding向量分别得到交叉向量p和q。

1.3 效果

(2)DSIN:利用用户时序行为中兴趣变化进行CTR预估

2.0 前言

在读本文之前,我们需要先搞清楚两个概念,Sequence和Sessions。

基于用户行为Behavior Sequence进行兴趣特征挖掘的方式目前被用于绝大数的CTR任务中。Sequence和Sessions的相同点在于它们都是由Behaviors组成的,但不同的是Sessions是根据一定的规则将用户的历史点击行为Behavior 进行划分得到的,也就是说,通过用户的点击时间对Sequence进行划分后,可以得到多个Sessions。

2.1 背景

本文发表在IJCAI 2019,主要通过将用户的历史点击行为划分为不同session,然后利用Transformer对每个Session进行学习得到兴趣向量后,使用BiLSTM学习用户在多个Session之间的兴趣变化,从而更好地完成CTR预估。

2.2 创新

由模型结构图我们可以发现,本文核心结构主要有4个。

1)Session Division Layer 完成对用户历史点击行为的划分,以30分钟为划分依据,得到多个Sessions;

2)Session Interest Extractor Layer 使用Bias Encoding 方式表征不同Session间的顺序,同时考虑到用户兴趣可能来自不同因素,利用 multi-head self-attention对每个session 建模得到兴趣向量表征;

3)Session Interest Interacting Layer 在得到用户的兴趣向量表征之后,利用Bi-LSTM学习不同Session之间的由顺序带来的兴趣变化;

4)Session Interest Activating Layer 利用注意力机制学习不同Session和Item之间的相关性,混合上下文信息的兴趣信息之后,对距离Item较近的Session赋予更大的权重。

2.3 效果

(3)DIEN:深度兴趣进化网络

3.0 前言

DIEN在笔者实际应用中,并未复现出原文的效果。这其中的原因可能很多,我想很多读过该论文的读者在进行复现,也可能遇到过类似的问题。但从学习的角度,不影响我们去对论文中一些创新点去进行学习和思考。

3.1 背景

在推荐场景下,用户的兴趣会随着时间(如季节等)和空间(如不同场景等)的变化而发生变化,只通过用户历史数据中的兴趣因素,而不关注兴趣的变化,使得现有的一些模型无法很好的在CTR预估任务中对用户兴趣的变化进行刻画捕捉。DIEN利用双层GRU对用户兴趣序列进行刻画捕捉。

3.2 创新

由模型结构图我们可以发现,本文核心结构主要有3个。

(1)Behavior Layer 将用户浏览过的商品按照浏览时间转换成对应的embedding。

(2)Interest Extractor Layer 兴趣抽取层利用GRU提取用户兴趣特征。具体地,作者加入了一个二分类模型来计算兴趣抽取的准确性,选取下一个行为作为正样本,也从未点击的样本中选取一个作为负样本,别与抽取出的兴趣表征结合输入到设计的辅助网络中,得到预测结果,并通过logloss计算辅助网络的损失。

(3)Interest Evolution Layer 兴趣演化层,利用Attention(局部激活能力)配合 GRU(序列学习能力)的形式,,从时序特征中构建与目标Item相关的兴趣演化特征。

3.3 效果

(4)DIN:深度兴趣网络

4.0 前言

DIN(Deep Interest Network)模型在介绍之前,需要对BaseModel(Embedding+MLP)具有一定了解才能更好的理解DIN模型的创新点和它能够在实际生产环境有效的原因。

4.1 背景

在BaseModel中,不同维度的Embedding在最后进行拼接,这样方法通过NN可以拟合高阶非线性关系,但用户的Embedding是不变的,这就很难获取用户多兴趣的场景。

4.2 创新

(1)Attention机制使用。其实这点挺有历史的巧合,因为DIN的提出并没有借鉴已有的Attention概念,它的的出发点是看到消费者往往不是在看同一类东西,模型上如何建模用户的多峰兴趣。因为直接显示构建多峰兴趣有些麻烦,所以作者转而用反向激活函数构建一个和预测Item有关的非参数化兴趣表达。巧合的是,当DIN团队构建好模型后发现这和NLP领域刚提出的Attention结构一样,所以论文里就必须写成Attention。作者认为问题的出发点和解题思路更重要,而不是简化的看这是不是Attention。

(2)DICE激活函数的设计。由于ReLU和PReLU激活函数都是在0处进行变化,但并非所有输入都会在0处变化,因此文章设计了Dice激活函数,根据每层的输入来自适应的调整激活点的位置。

(3)GAUC的使用。相比于常用的AUC,在CTR预估场景中,不同的用户之间存在着差异,这种差异可以理解为一个闲逛的购物者和一个要买小米手机的购物者间的差异。因为AUC表示的是正样本排在负样本前面的概率,所以不能很好地解决不同用户点击率分布的差异。文章提出GAUC作为线下评估指标,通过曝光点击进行加权平均,较少用户之间个性差异对模型造成的影响。

(4)Adaptive正则化方法。CTR预估场景下,构造的模型越复杂参数越多,越容易过拟合。实际场景中,存在着大量的长尾数据,这些数据的存在一方面在训练过程中增加了复杂度,另一方面在结果上产生了过拟合。直接去掉这些长尾数据是一种简单的处理方式,但也丢掉了很多信息。因此,DIN文章中给出了自适应正则化调整的方式,对高频减小正则,对低频增大正则。

4.3 效果

(5)xDeepFM:线性、显式、隐式的组合拳

5.1 背景

使用CIN交叉网络和DNN的双路结构,同时以显式和隐式的方式学习高阶特征。

5.2 创新

(1)Linear、CIN与DNN的结构化组合。Linear部分从输入数据中学习线性特征,交叉网络CIN部分由交互(interaction)和压缩(compression)两步通过VectorWise角度学习高阶交叉特征,同时共享Embedding输入的方式让模型更具有适应性;

(2)CIN。交叉网络通过VectorWise学习高阶特征之间的交互,特征交互部分在Embedding的每个维度上进行外积计算。特征压缩部分借鉴了卷积和池化的方式。同时最后将多层CIN的输出进行拼接。

(3)DNN。通过BitWise隐式的学习高阶特征。

5.3 效果

(6)DeepFM:将Wide&Deep模型的LR部门替换为FM

6.1 背景

解决在高纬度特征的情况下,人工特征工程的高成本和无法实现的问题。同时解决FM只能获取二阶特征,无法获取高阶特征的问题。解决传统DNN在隐式交叉方式在高稀疏特征无法很好获取表征的问题。

6.2 创新

(1)FM部分通过显式向量和点积的方式学习二阶交叉特征,配合DNN部分使模型对高阶特征组合能够更好的进行特征提取。

(2)Deep部分将原始稀疏特征表示映射为稠密表示,同时FM和DNN部分共享Embedding层特征表达。

6.3 效果

(7)AFM:FM串行结构加入Attention机制

7.1 背景

串行结构,将FM的输出作为后续神经网络的输入,利用FM解决稀疏特征问题及浅层交互特征,利用深度网络解决深层交互特征的获取。

7.2 创新

(1)和NFM一样,文章使用Pair-wise Interaction层,同时在Sum Pooling之后接了一个FC层。该方法从思路上具有一定的创新性。但实际中应用却存在一定的问题,较高的时间复杂度在实际复现中无法通过矩阵实现。

(2)Attention-based Pooling Layer 关注不同的交叉特征和目标之间的关系,通过加权的方式处理不同特征对结果的贡献度,同时利用MLP进一步处理训练数据中未出现样本的的评估问题,从而达到泛化模型的目的。

7.3 效果

(8)NFM:FM串行引入DNN并加入Bi-interaction Pooling操作

8.1 背景

在FM基础上,串行加入DNN模型,并使用Bi-interaction Pooling操作对二阶交叉特征进行处理,解决传统FM作为线性模型表达有限的问题和对高阶交叉特征学习不充分的问题。

8.2 创新

Bi-interaction Pooling操作作为NFM的核心,本质是Pooling操作。在实际场景中,我们发现直接对Embedding向量进行Concat拼接之后接MLP进行模型训练在获取二阶交叉特征时的效果是一般的。Bi-interaction Layer与FM二阶交叉相比,没有引入额外的参数,将Embedding向量进行两两交叉相乘后对所有对应元素求和的方式,以线性复杂度具有良好的实际应用价值,同时在曾经的CTR竞赛中一度成为王者模型

8.3 效果

(9)FNN:使用FM参数进行Embedding初始化

9.1 背景

传统的FM受限于计算复杂度,对特征只能进行二阶交叉,对更高阶的特征交叉却无能为力,同时实践证明,高阶的特征交叉组合方式对CTR预估模型具有更好的效果,为了解决这个问题,引入DNN。其实FNN的思想比较简单,从模型结构图里我们就可以看出,主要是利用FM后直接接DNN网络,利用FM参数初始化Embedding层。

9.2 创新

二段式训练方式,使用FM层模型的参数初始化Embedding,替换随机初始化方式,然后接DNN进行高阶特征提取。但这种方式优点和缺点都比较明显,优点是使用预训练初始化的方式,降低了训练的不稳定性。缺点是二阶段训练方式在应用中便利性不够。

9.3 效果

(10)DCN:替换Wide&Deep模型的Wide部分为Cross

10.1 背景

通过对比Wide&Deep和DCN网络的架构图,不难发现后者是对前者Wide部分进行了替换,提出CrossNetwork替换Wide用于自动化特征交叉,从而无需人工特征工程。

10.2 效果

模型主要由Embedding and Stacking layer、Cross Network、Deep Network、Combination output layer 组成。但相较于其他模型,他的创新点主要在Cross Network 部分,它的设计理念是通过参数共享的方式减少向量压缩变换时产生参数量过多的情况,从而减少模型的过拟合,增强模型的泛化能力。同时Cross Network的方式将模型复杂度降为层级线性增长,具有很好的应用价值。

10.3 效果

(11)PNN:在Embedding MLP模式中设计加入Product Layer

11.1 背景

传统Embedding+MLP的方式并不能很好对高阶交叉特征进行获取,同时FNN用FM初始化参数接DNN的方式也并不完美,针对这些缺点PNN进行了改进,并不只是关注高阶交叉特征,通过设计Product层对特征进行交叉组合,改变原有对特征进行ADD的操作方式。

11.2 创新

Product Layer的设计,是本文的核心结构。Product层利用內积(Inner PNN)和外积(Outer PNN)两种方式实现对特征的交叉组合。其中,IPNN本质上利用共享参数来减少参数量,采用一阶矩阵分解来近似矩阵结果的同时牺牲了一定的精度,保证计算开销控制在可接受的范围内。OPNN,从公式层面,该方法的时间空间复杂度比IPNN更高,作者使用了Sum Pooling的方式来降低复杂度,但同时也造成了精度的严重损失。

11.3 效果

(12)AutoInt:利用多头注意力构造高阶特征

12.1 背景

CTR预估领域面临着诸多挑战,输入特征的稀疏高维问题,高阶特征的计算复杂度问题等。本文将数值特征和类别特征映射到同一个低维空间,利用带残差连接的多头注意力机制显式的进行交叉特征获取,提出了一种能够自学习特征高阶交叉的方法。

12.2 创新

Interacting Layer 是本篇论文中最核心的创新点,借鉴了NLP问题中的Multi-head Self-Attention方法,利用Key-Value Attention,每个Attention Head对应三个转换矩阵,Query、Key、Value。本文利用內积的方式计算每个特征与其他特征的相似度,然后通过计算softmax归一化注意力分布后,加权得到新特征。以上步骤为一层Attention,作者简单的拼接多个Attention head的输出,引入标准的残差连接作为最终输出,构造更高阶的组合特征。

12.3 效果

参考资料

1)FiBiNET:Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction

2)Deep Session Interest Network for Click-Through Rate Prediction

3)AutoInt_Automatic Feature Interaction Learning via Self-Attentive Neural Networks

4)Deep Interest Evolution Network for Click-Through Rate Prediction

5)Deep Interest Network for Click-Through Rate Prediction

6)Product-based Neural Networks for User Response Prediction

7)Deep & Cross Network for Ad Click Predictions

8)Deep Learning over Multi-field Categorical Data_A Case Study on User Response Prediction

9)Attentional Factorization Machines - Learning the Weight of Feature Interactions via Attention Networks

10)DeepFM_A Factorization-Machine based Neural Network for CTR Prediction

11)Neural Factorization Machines for Sparse Predictive Analytics

12)xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 炼丹笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 背景
  • 1.2 创新
  • 1.3 效果
  • 2.0 前言
  • 2.1 背景
  • 2.2 创新
  • 2.3 效果
  • 3.0 前言
  • 3.1 背景
  • 3.2 创新
  • 3.3 效果
  • 4.0 前言
  • 4.1 背景
  • 4.2 创新
  • 4.3 效果
  • 5.1 背景
  • 5.2 创新
  • 5.3 效果
  • 6.1 背景
  • 6.2 创新
  • 6.3 效果
  • 7.1 背景
  • 7.2 创新
  • 7.3 效果
  • 8.1 背景
  • 8.2 创新
  • 8.3 效果
  • 9.1 背景
  • 9.2 创新
  • 9.3 效果
  • 10.1 背景
  • 10.2 效果
  • 10.3 效果
  • 11.1 背景
  • 11.2 创新
  • 11.3 效果
  • 12.1 背景
  • 12.2 创新
  • 12.3 效果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档