文章目录
一、前言
本文仅简单记叙推荐系统中CTR技术的一些历史演变,或许能够在抓耳挠腮想idea的时候从历史进程中获得一些灵感,对于一些具体的技术细节并不详细展开。
在讲述之前,先了解一下CTR任务的特点:
大量离散特征
大量高维度稀疏特征
特征工程(特征组合)对于效果非常重要
二、逻辑回归时代
1、LR
这个阶段的CTR预估问题以LR等传统线性模型为主。LR是广义线性模型,与传统线性模型相比,LR使用了Logit变换将函数值映射到0~1区间,映射后的函数值就是CTR的预估值。
LR的优势在于处理离散化特征,而且模型十分简单,很容易实现分布式计算。关于LR的变种也有许多,比如Google的FTRL,其实这些变种都可以看成:LR+正则化+特定优化方法。
LR的缺点也很明显,特征与特征之间在模型中是独立的,对于一些存在交叉可能性的特征(比如: 衣服类型与性别,这两个特征交叉很有意义),需要进行大量的人工特征工程进行交叉。虽然模型简单了,但是人工的工作却繁重了很多。而且LR需要将特征进行离散化,归一化,在离散化过程中也可能出现边界问题。这里便为GBDT+LR的方案进行了铺垫。
2、GBDT+LR
GBDT(Gradient Boost Decision Tree)是一种常用的非线性模型,它基于集成学习中的boosting思想,每次迭代都在减少残差的梯度方向新建立一颗决策树,迭代多少次就会生成多少颗决策树。
GBDT的思想使其具有天然优势可以发现多种有区分性的特征以及特征组合,决策树的路径可以直接作为LR输入特征使用,省去了人工寻找特征、特征组合的步骤。
为什么会这么有效呢?
因为GBDT是在函数空间对残差进行连续的逼近,精度很高,但是容易过拟合;
在裁剪过后,利用叶子节点编码,有效的把连续特征离散化,因此适合LR。
GBDT与LR的融合方式,Facebook的paper有个例子如下图所示,图中Tree1、Tree2为通过GBDT模型学出来的两颗树,x为一条输入样本,遍历两棵树后,x样本分别落到两颗树的叶子节点上,每个叶子节点对应LR一维特征,那么通过遍历树,就得到了该样本对应的所有LR特征。由于树的每条路径,是通过最小化均方差等方法最终分割出来的有区分性路径,根据该路径得到的特征、特征组合都相对有区分性,效果理论上不会亚于人工经验的处理方式。
GBDT的缺点也很明显:
GBDT善于处理连续值特征,但是推荐系统的绝大多数场景中,出现的都是大规模离散化特征,如果我们需要使用GBDT的话,则需要将很多特征统计成连续值特征(或者embedding),这里可能需要耗费比较多的时间。同时,因为GBDT模型特点,它具有很强的记忆行为,不利于挖掘长尾特征,而且GBDT虽然具备一定的组合特征的能力,但是组合的能力十分有限,远不能与dnn相比。
三、深度学习时代
这是目前大家科研的主要重心区域,附一张经典的图片吧(忘了来自哪里了)
从图中不难看出,大概分为两条主线,一条是红色的基于FM模型进行演变,另一条是黑色的基于Embedding+MLP的框架进行扩展。
比较一下FM和 Embedding+MLP:
FM可以学习特征组合,但是不够深入高阶特征;
MLP可以学习高阶特征,但是缺乏低阶特征。
1、FM
从矩阵分解的角度来说:
丛神经网络的角度:
2、FFM
FFM(Field-aware Factorization Machine)其实就是FM的进阶版。
FFM将FM中的隐向量v又进一步细化(引入了field的概念,即将特征所在的不同的field这个信息也考虑进去),其公式如下:
3、FNN
FNN使用FM的隐层向量作为user和item的Embedding,从而避免了完全从随机状态训练Embedding。由于id类特征大量采用one-hot的编码方式,导致其维度极大,向量极稀疏,所以Embedding层与输入层的连接极多,梯度下降的效率很低,这大大增加了模型的训练时间和Embedding的不稳定性,使用pre train的方法完成Embedding层的训练,无疑是降低深度学习模型复杂度和训练不稳定性的有效工程经验。
简单总结就是:
在Embedding+MLP的基础上,把初始的特征替换为FM预训练的结果,且每一组的大小保持一致。
4、PNN
PNN的全称是Product-based Neural Network,PNN的关键在于在embedding层和全连接层之间加入了Product layer。
传统的DNN是直接通过多层全连接层完成特征的交叉和组合的,但这样的方式缺乏一定的“针对性”。
首先全连接层并没有针对不同特征域之间进行交叉;其次,全连接层的操作也并不是直接针对特征交叉设计的。
但在实际问题中,特征交叉的重要性不言而喻,比如年龄与性别的交叉是非常重要的分组特征,包含了大量高价值的信息,我们急需深度学习网络能够有针对性的结构能够表征这些信息。因此PNN通过加入Product layer完成了针对性的特征交叉,其product操作在不同特征域之间进行特征组合。并定义了inner product,outer product等多种product的操作捕捉不同的交叉信息,增强模型表征不同数据模式的能力 。
5、Deep Crossing
微软于2016年提出的Deep Crossing可以说是深度学习CTR模型的最典型和基础性的模型。如上图的模型结构图所示,它涵盖了深度CTR模型最典型的要素,即通过加入embedding层将稀疏特征转化为低维稠密特征,用stacking layer,或者叫做concat layer将分段的特征向量连接起来,再通过多层神经网络完成特征的组合、转换,最终用scoring layer完成CTR的计算。
跟经典DNN有所不同的是,Deep crossing采用的multilayer perceptron是由残差网络组成的。可以理解为Embedding+MLP结构中的MLP部分增加跳跃连接成残差网络。
6、Wide&Deep
把单输入层的Wide部分和经过多层感知机的Deep部分连接起来,一起输入最终的输出层。
其中Wide部分的主要作用是让模型具有记忆性(Memorization),单层的Wide部分善于处理大量稀疏的id类特征,便于让模型直接“记住”用户的大量历史信息;Deep部分的主要作用是让模型具有“泛化性”(Generalization),利用DNN表达能力强的特点,挖掘藏在特征后面的数据模式。最终利用LR输出层将Wide部分和Deep部分组合起来,形成统一的模型。
7、Deep&Cross
Google 2017年发表的Deep&Cross Network(DCN)同样是对Wide&Deep的进一步改进,主要的思路使用Cross网络替代了原来的Wide部分。其中设计Cross网络的基本动机是为了增加特征之间的交互力度,使用多层cross layer对输入向量进行特征交叉。单层cross layer的基本操作是将cross layer的输入向量xl与原始的输入向量x0进行交叉,并加入bias向量和原始xl输入向量。DCN本质上还是对Wide&Deep Wide部分表达能力不足的问题进行改进,与DeepFM的思路非常类似。
8、DeepFM
在Wide&Deep之后,诸多模型延续了双网络组合的结构,DeepFM就是其中之一。DeepFM对Wide&Deep的改进之处在于,它用FM替换掉了原来的Wide部分,加强了浅层网络部分特征组合的能力。事实上,由于FM本身就是由一阶部分和二阶部分组成的,DeepFM相当于同时组合了原Wide部分+二阶特征交叉部分+Deep部分三种结构,无疑进一步增强了模型的表达能力。
9、AFM
AFM的全称是Attentional Factorization Machines,通过前面的介绍我们很清楚的知道,FM其实就是经典的Wide&Deep结构,其中Wide部分是FM的一阶部分,Deep部分是FM的二阶部分,而AFM顾名思义,就是引入Attention机制的FM,具体到模型结构上,AFM其实是对FM的二阶部分的每个交叉特征赋予了权重,这个权重控制了交叉特征对最后结果的影响,也就非常类似于NLP领域的注意力机制(Attention Mechanism)。为了训练Attention权重,AFM加入了Attention Net,利用Attention Net训练好Attention权重后,再反向作用于FM二阶交叉特征之上,使FM获得根据样本特点调整特征权重的能力。
10、DIN
AFM在FM中加入了Attention机制,2018年,阿里巴巴正式提出了融合了Attention机制的深度学习模型——Deep Interest Network。与AFM将Attention与FM结合不同的是,DIN将Attention机制作用于深度神经网络,在模型的embedding layer和concatenate layer之间加入了attention unit,使模型能够根据候选商品的不同,调整不同特征的权重。
11、DIEN
DIEN的全称为Deep Interest Evolution Network,它不仅是对DIN的进一步“进化”,更重要的是DIEN通过引入序列模型 AUGRU模拟了用户兴趣进化的过程。具体来讲模型的主要特点是在Embedding layer和Concatenate layer之间加入了生成兴趣的Interest Extractor Layer和模拟兴趣演化的Interest Evolving layer。其中Interest Extractor Layer使用了DIN的结构抽取了每一个时间片内用户的兴趣,Interest Evolving layer则利用序列模型AUGRU的结构将不同时间的用户兴趣串联起来,形成兴趣进化的链条。最终再把当前时刻的“兴趣向量”输入上层的多层全连接网络,与其他特征一起进行最终的CTR预估。
12、ESMM
将CTR和CVR一块进行训练
13、总结
(图片来源:https://mp.weixin.qq.com/s)
在我们熟悉这些已有模型的时候,深度学习CTR模型的发展从没有停下它的脚步。从阿里的多模态、多目标的深度学习模型,到YouTube基于RNN等序列模型的推荐系统,再到Airbnb使用Embedding技术构建的搜索推荐模型,深度学习的应用不仅越来越广泛,而且得到了越来越快的进化。
四、强化学习与CTR
深度学习处理的问题大多是静态的,而强化学习处理动态问题其实更符合我们的现实生活。
不过目前该领域的技术还不太成熟,就不列举了,不过有很多文章值得一看(后续我会将其链接附在这里)
参考:
https://blog.csdn.net/lilyth_lilyth/article/details/48032119
https://mp.weixin.qq.com/s?__biz=MzU3Njc2ODczNw==&mid=2247483728&idx=1&sn=d2293e1a43094d6b8ee3a58d0f4cd904&chksm=fd0f9edeca7817c8afff58c2b3b0de318751c950e93912249e7010ccfcf93cc3a64e5235b390&mpshare=1&scene=1&srcid=1014ZBXFjEleSu2k9gHjUPjT&sharer_sharetime=1571046495076&sharer_shareid=10b6ac244fdeaab813ebbb62309bb50f&pass_ticket=y7o6%2FerLINvgym9x7FQU7hLsx2P8X4MDQHJvE0NZBSP4hWZ9rB0sNVHF%2FFdD%2B5Oe#rd
https://blog.csdn.net/lilyth_lilyth/article/details/48032119
https://blog.csdn.net/lovejay7/article/details/81878537
https://blog.csdn.net/muyimo/article/details/82834604
https://zhuanlan.zhihu.com/p/32689178
https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/10711225.html