深度排序模型概述(一)Wide&Deep/xDeepFM

https://www.cnblogs.com/hellojamest/p/11067736.html
本文记录几个在广告和推荐里面rank阶段常用的模型。
广告领域机器学习问题的输入其实很大程度了影响了模型的选择,因为输入一般维度非常高,稀疏,同时包含连续性特征和离散型特征。模型即使到现在DeepFM类的方法,其实也都很简单。模型的发展主要体现于对特征的充分挖掘上,比如利用低阶和高阶特征、尝试自动学习交叉特征而非手动、尝试更精准地实现高阶特征(bounded-degree)。

广告相关的领域最早大行其道的模型当属LR模型,原因就是LR模型简单,可解释性好,拓展性高,精心细调之后模型效果也会非常好。人工特征工程的初期,加些交叉特征,无论是离线评估指标还是线上的业务指标都会很容易提高,当然大家都会很开心。吃掉容易收割的80%之后,基本上就到了瓶颈。这时候就会发现即使深挖业务场景貌似也找不到比较好的特征了,加了一堆特征搞不好效果还降了。继续做得话,除了特征工程,还可以尝试特征选择,改进优化算法(比如加快收敛),在线学习之类的。

随着业务的持续迭代,手动交叉特征被视为脏活累活,那肯定要想如何做自动交叉特征。这方面的工作同时也有进展。Rendle在2010年提出的FM模型。FM模型利用特征的隐向量做内积来实现特征的交叉。后续阮毓钦提出了Field-aware FM模型,一个特征对应多个隐向量,在criteo举办的ctr比赛上崭露头角。这些其实都已经算是ctr领域的常用套路。FM类模型由于复杂度的原因一般都只能实现二阶交叉。所以不能利用高阶交叉总会让人感觉缺少点意思,毕竟很多场景高阶交叉的确有意义。另外不得不提的特征组合的工作就是Facebook提出的gbdt+lr的方法,通过gbdt来实现监督式的特征组合。

浅层模型尝试之后势必要引入深层模型,毕竟深度学习很大作用就是作为特征表示学习。大厂引入肯定要更早一些,毕竟核心业务都要长时间持续投入人力进行模型优化。至于思路,我觉得可能跟现有市面上看到的模型差不多。一般多层感知机mlp认为可以实现特征高阶交叉(high-order feature interactions)。
2016年出现wide&deep、fnn和pnn等工作。wide&deep算影响力比较大的工作了。wide部分是手动特征交叉(负责memorization),deep部分利用mlp来实现高阶特征交叉(负责generalization),wide部分和deep部分joint train。fnn比较暴力,直接使用预训练的fm隐向量传给mlp。PNN则是先做特征交叉然后给mlp处理。fnn和pnn这两种方法的缺点就是忽视了低阶特征交叉。

2017年出现DeepFM、Deep&Cross和NFM等工作。DeepFM模型和Deep&Cross(包含下面要介绍的xDeepFM)都可以认为是Wide&Deep架构输入和wide部分进行改进。DeepFM和之前模型相比优势在于两点,一个是相对于Wide&Deep不再需要手工构建wide部分,另一个相对于FNN把FM的隐向量参数直接作为网络参数学习。DeepFM将embedding层结果输入给FM和MLP,两者输出叠加,达到捕捉了低阶和高阶特征交叉的目的。Deep&Cross和DeepFM类似,cross network模块可以实现bounded-degree feature interactions。
总结来说,涌现了这么模型,到底哪个好,我觉得很难一锤定音。每个模型都有存在的价值和合适的应用场景。有时候也不一定非得效果提示才行,有时候效果没提升但是可以大大减少特征工程的工作也算有收益。根据实际的场景、业务需求和迭代阶段选择合适的模型,花费合理的成本,取得最大的业务价值才是最重要的。

深度排序模型的结构可以分为两种,一种是并行结构,分别做低阶和高阶特征组合;一种是串行结构,如PNN、NFM、AFM等。这也构成了深度排序模型的两条演进路线,如何更有效地捕获特征组合是核心,沿着以下两个演进路线发展:

一:更有效地捕获二阶特征:
Wide&Deep -> DeepFM -> NeuralFFM -> DeepFFM
二、显式建模2阶/3阶/4阶…K阶特征组合:
DeepCross -> xDeepFM

深度排序模型概述(一)
深度排序模型概述(二)

你可能感兴趣的:(深度排序模型概述(一)Wide&Deep/xDeepFM)