推荐搜索中各类排序算法综述

1、LR

逻辑回归,将各特征进行加权和,经过sigmoid变换函数映射到[0,1]之间,得到预估分值,计算如下:

p=sigmoid(∑wi​xi​+b)

若label是0,1值,当做二分类任务,可用交叉熵loss作为损失函数,若是一个回归任务,则可用均方误差MSE。

优点

  • 模型简单,速度快
  • 可解释性强,可扩展性强

 缺点

  • 没有利用高维特征,表达能力有限
  • 需要做较多的特征工程
  • 模型不能自动进行特征交叉组合学习,需要人工提交设计特征交叉组合

2 FM (Factorization Machines)

  • 解决LR不能主动学习特征交叉组合问题
  • 解决特征稀疏,特征交叉,权重矩阵稀疏学习困难问题
  • 解决特征交叉组合,模型参数量过大,复杂度高问题

V∈Rn×k,n是指特征数量,k是指特征向量维度

3、FFM

FFM相比FM基础上,引入了Field-aware,这是什么意思呢?一句话总结就是:受到PITF中个性化推荐启发,特征划分不同的域,所以相对FM中隐向量矩阵V∈Rn×k,变为V∈Rn×f×k,其中f表示的是filed个数。在FFM中,每个特征在每个field上有对应不同的隐向量。

4、wide&deep

wide: 是一个线性模型,对输入的原始特征x = [ x 1 , x 2 , . . . , x d ] x=[x_1, x_2,...,x_d]以及经过转换后的特征ϕ(x),进行加权求和:y=wT[x,ϕ(x)]+b

deep: 一个前向的神经网络模型,稀疏的类别特征,转成稠密的embedding向量,经过模型的非线性变换,学习高阶的语义特征: a (l+1) = f(W(l)a(l)+b(l))
 ,其中l是神经网络层数,f是激活函数,a ( l ) , b ( l ) 和 W ( l ) 分别表示的是在第l层的激活函数输出值,偏置项和模型的参数
y(x)=σ(WwideT​[x,ϕ(x)]+WdeepT​a(lf​)+b)

在这里插入图片描述 其中ϕ(x)表示的转换后的特征,最常见的一种就是cross-product 转换

5、DeepFM

5.1 原理
DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
DeepFM是一个端到端的学习模型,相比Wide & Deep,不需要做特征工程(如cross-product等),DeepFM将FM的隐向量V同时作为Deep的词向量参数,两者共享,让模型自动去学习低阶与高阶的特征交互。

FM部分:

假设field=20, 每个field有50个取值,隐向量大小k=100
则隐向量矩阵V∈R1000×100, 因为20×50=1000,所以V中的行大小为1000,而输入的X∈R 
256×1000,其中256表示的是一个batch size,1000对应one-hot编码
FM计算,其中交叉的wij
 权重是V中第i行向量与第j行向量做内积得来,O(nk)的复杂度,交叉部分计算公式为:1/2×((XV)^2 − X^2 V^2 ) ,再与一阶特征加权和相加,得到FM部分的输出:y_FM

Deep部分:
在Deep部分,与上述介绍的Deep & Wide的最大区别就是Deep部分的词向量权重参数是FM部分的隐向量矩阵V。那么我们来看下,在Deep部分具体计算流程:

输入:feature_inds∈R 256×20, 其中256是batch,20是field总数量,其中每个field是跨越50个值的。

DNN:通过输入的index,经过embedding向量层后,其中embeedding的参数权重是FM中的V∈R1000×100 ,得到向量输出e∈R256×20×100,若是直接将每个filed的特征concat,则e∈R256×2000,再输入到Deep三层全连接层DNN中,得到Deep的输出y_deep

deepFM输出:

最后将两者的输出相加,经过一个sigmoid函数,就可以得到模型的预测分值
y_out=σ(y_FM+y_deep)

在这里插入图片描述

6、PNN 

简介:

该论文提出PNN结构应用于CTR预估,相比Embedding+MLP的传统结构,PNN在embedding层后设计了Product Layer,以显示捕捉基于Field的二阶特征相关性。PNN 已经成为 DNN applied in CTR 的一个经典结构,一些公司在CTR模型转型至NN的探索中曾follow Product Layer的设计思路,如美团酒店搜索业务。

引入动机:

Embedding+MLP结构是DNN应用在CTR预估的标准模式。通常,NN层之间都使用“add operation” ,通过激活函数来引入非线性。作者认为,单纯的“add”也许不足以捕获不同的Filed特征间的相关性,原文表述为:"The ‘add’ operations of the perceptron layer might not be useful to explore the interactions of categorical data in multiple fields. ”

文中指出,一些相关研究表明“product”相比“add”能更好得捕捉特征间的dependence,因此作者希望在NN中显示地引入“product”操作,从而更好地学习不同Field特征间的相关性,在DNN结构中引入product layer即是这样的一个尝试。

7、DeepCross (DCN)

动机:

面对高维稀疏的特征空间、大量的可组合方式,基于人工先验知识虽然可以缓解一部分压力,但仍需要不小的人力和尝试成本,并且很有可能遗漏一些重要的交叉特征。FM可以自动组合特征,但也仅限于二阶叉乘。能否告别人工组合特征,并且自动学习高阶的特征组合呢?Deep & Cross 即是对此的一个尝试。Deep & Cross Network,将Wide部分替换为由特殊网络结构实现的Cross,自动构造有限高阶的交叉特征,并学习对应权重,告别了繁琐的人工叉乘。

Deep&Cross网络结构:

类似Wide & Deep,Deep&Cross的网络结构如图1所示,可以仔细观察下:

文中对原始特征做如下处理:1) 对sparse特征进行embedding,对于multi-hot的sparse特征,embedding之后再做一个简单的average pooling;2) 对dense特征归一化,然后和embedding特征拼接,作为随后Cross层与Deep层的共同输入。

cross layer:

 Cross Layer 设计的巧妙之处全部体现在上面的计算公式中,我们先看一些明显的细节:1) 每层的神经元个数都相同,都等于输入x0的维度  ,也即每层的输入输出维度都是相等的;2) 受残差网络(Residual Network)结构启发,每层的函数f拟合的是x_l的残差,残差网络有很多优点,其中一点是处理梯度消失的问题,使网络可以“更深”.

Cross的设计:

1、叉乘阶数由网络深度决定,深度l的最高叉乘阶数为l+1

2、cross输出包含了从原始输出到l+1的所有叉乘组合,而模型参数仅随输入维度成线形变化,2*l*d

3、不同叉乘项对应的权重不同,但并非每个叉乘组合对应独立的权重(指数数量级), 通过参数共享,Cross有效降低了参数量。此外,参数共享还使得模型有更强的泛化性鲁棒性

揭秘 Deep & Cross : 如何自动构造高阶交叉特征 - 知乎

8、NCF

神经协同过滤通用框架NCF

1、user、item通过one-hot分别生成embedding向量 q,p

2、user向量和item向量点乘,构建协同过滤网络的输入 GMF网络

     将user和item进行拼接得[q,p],作为MLP的输入

3、[ GMF,MLP]拼接作为全链接层的输入

NCF的基本框架

 NCF三种user向量和用户向量结合的方式

方式1:element-wise product的结合方式   (GMF)

方式2:直接拼接的连接方式  (MLP)

方式3:element-wise乘积方式与直接拼接的方式相结合 (NeuMF)

NCF神经协同过滤框架之理论篇 - 知乎

9、FNN

FNN = FM + MLP ,相当于用FM模型得到了每一维特征的嵌入向量,做了一次特征工程,得到特征送入分类器,不是端到端的思路,有贪心训练的思路。

推荐系统之FNN模型原理以及代码实践 - 简书

10、NFM

一句话总结: NFM主要是面向稀疏特征的交叉问题, 将FM对二阶特征的线性交叉,与神经网络对高阶特征非线性交叉无缝的结合在了一起

  • 提出了Bilinear Interaction(Bi-Interaction) pooling操作 (有别于传统的concatenate 或 avg pooling操作)
  • 将FM看作是神经网络的一部分

NFM网络架构的特点非常明显,就是在Embedding层和MLP隐层之间加入特征交叉池化层(Bi-Interaction Pooling Layer)。假设是所有特征域的Embedding集合,特征交叉池化层的具体操作如公式(3)所示。

稀疏特征经过embedding层得到embdding特征,稀疏向量各元素之间的点乘操作

NFM模型理论与实践 - 知乎

11、ftrl

简介

FTRL(Follow the Regularized Leader)的在线逻辑回归算法来解决上述问题。FTRL是一种在线算法,因此算法的核心就是模型的参数会在每一个数据点进行更新(类似SGD)。

引入动机:

普通逻辑回归不适应大规模广告点击率预估。原因有二:第一,数据量太大。传统的逻辑回归参数训练过程都依赖牛顿法或L-BFGS等算法。这些算法并不容易在大规模数据集上得以处理,第二,不容易得到稀疏解。

FTRL的改进:

FTRL对传统逻辑回归的目标函数进行了改写,分为三个部分:

用过去所有的剃度值来重新赋权所有参数值
当前最新的参数值尽可能并不偏差之前所有参数值
希望当前的参数值能够有稀疏的解(通过L1来直接约束)
从三部分目标函数来看,这个算法技能让参数变化符合数据规律(从梯度控制),又能让参数不至于偏离过去已有的数值,从而整个参数不会随着一些异常的数据点而发生剧烈变化。

谷歌点击率预估模型:FTRL算法小结_麦麦在路上的博客-CSDN博客_ftrl模型

12、fibinet

当前的许多通过特征组合进行CTR预估的工作主要使用特征向量的内积或哈达玛积来计算交叉特征,这种方法忽略了特征本身的重要程度。fibinet提出通过使用Squeeze-Excitation network (SENET) 结构动态学习特征的重要性以及使用一个双线性函数来更好的建模交叉特征。

SENET Layer

SENET Layer的主要作用是学习不同特征的一个重要程度,对重要特征加权,对蕴含信息量不多的特征进行削弱。对于该结构的更详细的介绍可以参考论文Squeeze-and-Excitation Networks

该使用特征组的embedding向量作为输入,产生一个特征组权重向量 A,最后将原始特征组embedding向量乘上A得到一组新的embedding向量E

squeeze

 Excitation

Re-Weight

Bilinear-Interaction

传统的特征交叉方式广泛采用了内积(fm,ffm等)和哈达玛积(AFM,NFM等)。而这两种方式在稀疏数据上很难有效对特征交叉进行建模。 文章提出结合内积和哈达玛积并引入一个额外的参数矩阵W来学习特征交叉 

FiBiNET:结合特征重要性和双线性特征交互进行CTR预估 - 知乎

13、din

动机

其实对比DIN模型和Base模型就可以发现在模型结构上的差别主要就在如何聚合多个用户行为Embedding向量,Base模型中直接对多个Embedding向量进行等权的sum-pooling,这种方法肯定会带来信息的丢失,而且相对重要的Embedding向量也无法完全突出自己所包含的信息。所以DIN采取了一个比较直观的方式,就是weighted-sum pooling,而且Attention的本质也可以认为是weighted-sum

权重计算

din计算Attention权重的方式是利用用户行为的Embedding向量和广告的Embedding向量来进行计算,具体文章中采用的是用一个神经网络(activation unit)来得到weight。

其中activation unit的输入包括两个部分,一个是原始的用户行为embedding向量、广告embedding向量;另外一个是两者Embedding向量经过外积计算后得到的向量,文章指出这种方式有利于relevance modeling。

除此之外文章用到的Attention机制不是原始NLP任务中采用的Attention,文章中放宽了对于权重加和等于一的限制,这样更有利于体现不同用户行为特征之间的差异化程度。

小batch内奖赏正则化

mini-batch aware regularization主要解决的就是在大规模稀疏场景下,采用SGD对引入L2正则的loss进行更新时计算开销过大的问题。该方法只对每一个mini-batch中参数不为0的进行梯度更新

自适应激活函数Dice

阿里巴巴DIN模型详解 - 知乎

14、dcnmix

动机

在大规模(几十亿样本)场景下,DCN中cross网络的表达能力有限,无法学到更加有用的特征交叉。现行,工业界很多深度模型还是依赖于传统的DNN来低效地学习特征交叉。

基于DCN的优缺点以及现有的特征交叉方法,论文作者提出了改进版的DCN-M[2]来使模型更容易在大规模工业场景下落地。大量实验结果表明,DCN-M在学习特征交叉时的表达能力更强且效率较高,在主流数据集上能够超过SOTA方法。在引入混合低秩矩阵后效果更好。DCN-M结构简单,容易作为building blocks,且在许多大规模L2R系统中取得了显著的线下和线上指标提升。

改动点

改进Cross network

DCN中cross网络的参数是向量,DCN-M中换成了矩阵来提高表达能力、方便落地。DCN-M是指“DCN-matrix” ,原来的DCN在这里称为DCN-V(“DCN-vector”)。将参数矩阵分解成两个低秩矩阵

损失函数

带正则的log损失函数

复杂度

DCN空间复杂度O(d^2L),dcnmix空间复杂度O(drKL)

推荐系统(11)-DCNMix原理与实践 - 知乎

15、ccpm

卷积点击预测模型(CCPM),其基于卷积神经网络。CCPM可以捕获输入元素的局部特征,无论是在单次点击事件还是在一定时间间隔内顺序点击。

动机

matrix factorization (MF),Factorization Machines (FM),然而,MF与FM仅在单个点击广告中捕获低阶组合特征,而忽视了高阶组合特征。为了充分利用历史的顺序点击的信息,提出了基于RNN的预测模型,这个模型主要是把用户所浏览的历史记录作为序列,通过用户在不同的时间间隔内来划分用户的历史点击序列。然而在真实的场景下,用户对商品的兴趣会随时间而改变,RNN模型在此刻的场景下就受到限制。
在复杂的场景中为了挖掘重要的语义特征,DNN是一个很好的选择,CNN中的卷积层,池化层能够很好的发现局部重要的特征。CCPM是第一个采用CNN来提高点击预测的精度的。

结构

卷积层

每个样本有n个特征,对每个特征使用embeding 得到定长为d的向量ei∈Rd,再构造成一个矩阵s∈Rdxn,得到s矩阵之后就可以套用CNN。

灵活的p-Max池化

由于输入的长度是可变的,为了降低这种影响,对应的池化层的参数应该也是灵活可变的,给出定义pi:  公式有待截图补充

此选择的功能具有许多优点:首先,最后一个池化层具有固定的参数,因此,即使输入实例的长度不同,也可以确保用于输出的完全连接层的矩阵具有统一的维数。与线性函数相比,指数函数起初变化缓慢,这样可以避免一开始丢失太多重要特征。

灵活的p-max池化层不仅可以选择 p个最关键的特征,还可以保留这些特征的相对顺序,这在顺序点击预测中起着至关重要的作用。

CCPM-基于卷积的点击预测模型 - 知乎

A Convolutional Click Prediction Model - 知乎

16、autoint

AutoInt:使用Multi-head Self-Attention进行自动特征学习的CTR模型

AutoInt:使用Multi-head Self-Attention进行自动特征学习的CTR模型 - 知乎

17、afm

pair-wise interaction layer

1.将FM模型中的m个向量,通过element-wise product(哈达玛积,元素逐一相乘)操作扩展到 m(m-1)/2个组合向量,每个向量的维度是k。(k是嵌入向量的维度,m是Embedding Layer中嵌入向量的个数)

attention-based pooling layer

2. Attention-based Pooling Layer的输出是一个k维向量。它对Interacted vector使用Attention score进行了weighted sum pooling(加权求和池化)操作。

为了解决泛化问题,引入多层感知机(MLP),这里称为Attention network; 本文中的Attention network实际上就是一个one layer MLP,激活函数使用ReLU,网络大小用attention factor表示,就是神经元的个数。它的输入是两个嵌入向量element-wise product之后的结果(interacted vector,用来在嵌入空间中对组合特征进行编码);它的输出是组合特征对应的Attention score。最后,使用softmax对得到的Attention score进行规范化。

18、xdeepfm

xDeepFM 是 Wide & Deep 的改进版,在此基础上添加了 CIN 层显式的构造有限阶特征组合。xDeepFM 虽然名字跟 DeepFM 类似,但是两者相关性不大,DCN 才是它的近亲。

DCN的设计非常巧妙,引入Cross层取代 Wide & Deep 的Wide层,Cross层的独特结构使其可以显示自动地构造有限高阶的特征叉乘。

DCN 的Cross层接在Embedding层之后,虽然可以显示自动构造高阶特征,但它是以bit-wise的方式。例如,Age Field对应嵌入向量<a1,b1,c1>,Occupation Field对应嵌入向量<a2,b2,c2>,在Cross层,a1,b1,c1,a2,b2,c2会拼接后直接作为输入,即它意识不到Field vector的概念。Cross 以嵌入向量中的单个bit为最细粒度,而FM是以向量为最细粒度学习相关性,即vector-wisexDeepFM的动机,正是将FM的vector-wise的思想引入Cross部分

xDeepFM的整体结构如图1所示,基本框架依然基于标准的Embedding&MLP,其中Linear、Plain DNN分别类似Wide和Deep部分,而 CIN 部分是我们要讨论的重点。

 

xDeepFM:名副其实的 ”Deep” Factorization Machine - 知乎

参考文献

【1】深入浅出DeepFM - 知乎

【2】经典CTR预估模型:LR, FM, FFM, Wide&Deep, DeepFM, DSSE 算法对比总结_BGoodHabit的博客-CSDN博客

【3】​​​​​​https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf

【4】https://www.csie.ntu.edu.tw/~cjlin/papers/ffm.pdf

【5】​​​​​​https://arxiv.org/pdf/1606.07792.pdf

【6】Welcome to DeepCTR’s documentation! — DeepCTR 0.9.0 documentation

【7】GitHub - shenweichen/DeepCTR: Easy-to-use,Modular and Extendible package of deep-learning based CTR models .

【8】Features — DeepCTR 0.9.0 documentation

【9】详解 PNN: 在NN中显式引入Product - 知乎

【10】揭秘 Deep & Cross : 如何自动构造高阶交叉特征 - 知乎

【11】神经协同过滤NCF|模型篇 - 知乎

【12】CTR深度学习演化——含论文与代码链接 - 简书

【13】基于深度学习的ctr预估模型集合(持续更新) - daiwk-github博客

【14】推荐系统之FNN模型原理以及代码实践 - 简书

【15】

 一文梳理推荐系统中的特征交互排序模型 - 知乎

【16】xDeepFM:名副其实的 ”Deep” Factorization Machine - 知乎

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值