推荐系统之DeepFM

DeepFM模型

DeepFM 简介

对于CTR而言,最重要的是学习到用户点击行为背后隐含的特征组合。在不同的推荐场景中,低阶组合特征或者高阶组合特征都可能会对最终的CTR产生影响。

人工特征工程,通常会有两个问题:第一个是特征爆炸。以Poly-2模型为例,该模型采用直接对二阶特征组合建模来学习它们的权重,这种方式构造的特征数量跟特征个数乘积相关。比如某类特征有1w个可能的取值(如App),另一类特征也有1w个可能的取值(如用户),那么理论上这两个特征组合就会产生1亿个可能的特征项,引起特征爆炸问题;如果要考虑更高阶的特征,如三阶特征,则会引入更高的特征维度,比如第三个特征也有一万个(如用户最近一次下载记录),那么三个特征的组合可能产生1w亿个可能的特征项,这样高阶特征基本无法有效学习。另一个问题是大量重要的特征组合都隐藏在数据中,无法被专家识别和设计,关于这点最有名的例子是啤酒和尿片。依赖人工方式进行特征设计,存在大量有效的特征组合无法被专家识别。实现特征的自动组合的挖掘,称为推荐系统技术的研究热点,深度学习作为一种先进的非线性模型技术在特征组合挖掘方面具有很大优势。

针对上述两个问题,广度模型和深度模型提供了不同的解决思路。其中广度模型包括FM/FFM等大规模低秩(low-rank)矩阵,FM/FFM通过对特征的低秩展开,为每个特征构建隐式向量,并通过隐式向量的点积来建模两个特征的组合关系,实现对二阶特征组合的自动学习。深度模型是通过神经网络结构和非线性激活函数,自动学习特征之间复杂的组合关系。目前在APP推荐领域比较流行的深度模型有FNN/PNN/Wide&Deep。FNN模型是用FM模型来对Embedding层进行初始化的全连接神经网络,PNN模型是在Embedding层和全连接层之间引入了内积/外积层,来学习特征之间的交互关系,Wide&Deep模型是Google提出的将LR和DNN联合训练,并在Google Play上取得了线上效果提升,但仍需要人工特征工程来为Wide模块选取输入特征。总而言之,目前的广度模型和深度模型都有各自的局限,广度模型(LR/FM/FFM)一般只能学习一阶和二阶的特征组合,而深度模型(FNN/PNN)一般学习的是高阶特征组合。

DeepFM模型结合了广度模型和深度模型的优点,联合训练FM模型和DNN模型,来同时学习低阶特征组合和高阶特征组合。此外,DeepFM模型中的Deep Component和FM Component共享Embedding层输入,这样的好处是Embedding层的隐式向量在(残差反向传播)训练时可以同时接收Deep Component和FM Component的信息,从而使Embedding层的信息表达更加准确而最终提升推荐效果。

DeepFM模型的优点如下:

  • DeepFM同时对低阶特征组合和高阶特征组合建模,从而能学习到各阶特征之间的组合关系
  • DeepFM是一个端到端的模型,不需要任何的人工特征工程

DeepFM 原理

在这里插入图片描述
DeepFM模型输入为 x = [ x f i e l d 1 , x f i e l d 2 , , x f i e l d m ] x = [x_{field_1}, x_{field_2}, \cdots, x_{field_m}] ,这是一个 d d 维向量,其中 x f i e l d i x_{field_i} 是第 i i 个field的特征表示,如果是类别,则为one-hot编码后的向量,连续值则为它本身。然后对每个field分别进行Embedding,如下图所示:
在这里插入图片描述
即使各个field的维度不一样,但是Embedding后的长度均为k。接着FM层即为Embedding后结果的内积和一次项的和,最后一层sigmoid后再输出结果。

DeepFM模型包含两部分,左边的FM模块和右边的DNN模块,这两部分共享相同的输入。对于给定的特征 i i w i w_i 用于表示一阶特征的重要性,特征 i i 的隐向量 V i V_i 用于表示和其他特征的相互影响。在FM模块中, V i V_i 用于表征二阶特征,同时在DNN模块用于挖掘高阶的交叉特征,整个模型共享Embedding层,最后结果是把FM模块和DNN模块的结果做sigmoid:
Y = s i g m o i d ( Y F M + Y D N N ) Y = sigmoid(Y_{FM} + Y_{DNN})

Reference

发布了11 篇原创文章 · 获赞 2 · 访问量 662

猜你喜欢

转载自blog.csdn.net/liheng301/article/details/105235308