推荐系统DeepFM模型(A Factorization-Machine based Neural Network)

Posted 天泽28

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐系统DeepFM模型(A Factorization-Machine based Neural Network)相关的知识,希望对你有一定的参考价值。

推荐系统(十)DeepFM模型(A Factorization-Machine based Neural Network)

推荐系统系列博客:

  1. 推荐系统(一)推荐系统整体概览
  2. 推荐系统(二)GBDT+LR模型
  3. 推荐系统(三)Factorization Machines(FM)
  4. 推荐系统(四)Field-aware Factorization Machines(FFM)
  5. 推荐系统(五)wide&deep
  6. 推荐系统(六)Deep & Cross Network(DCN)
  7. 推荐系统(七)xDeepFM模型
  8. 推荐系统(八)FNN模型(FM+MLP=FNN)
  9. 推荐系统(九)PNN模型(Product-based Neural Networks)

DeepFM是哈工大和华为合作发表在IJCAI2017上的文章,这篇文章也是受到谷歌wide&deep模型的启发,是一个左右组合(混合)模型结构,不同的是,在wide部分用了FM模型来代替LR模型。因此,强烈建议在看这篇文章之前,先移步看完我之前写的关于wide&deep的博客: 推荐系统(五)wide&deep。我们来看看DeepFM相比较wide&deep模型的改进点及优势(前提是你已经很了解wide&deep模型了):

  1. 在wide部分使用FM代替了wide&deep中的LR,有了FM自动构造学习二阶(考虑到时间复杂度原因,通常都是二阶)交叉特征的能力,因此不再需要特征工程。Wide&Deep模型中LR部分依然需要人工的特征交叉,比如【用户已安装的app】与【给用户曝光的app】两个特征做交叉。另外,仅仅通过人工的手动交叉,又回到了之前在讲FM模型中提到的,比如要两个特征共现,否则无法训练。
  2. 在DeepFM模型中,FM模型与DNN模型共享底层embedding向量,然后联合训练。这种方式也更符合现在推荐/广告领域里多任务模型多塔共享底座embedding的方式,然后end-to-end训练得到的embedding向量也更加准确。

其实如果你很熟悉wide&deep模型,再经过上面的介绍,你基本已经知道DeepFM的大体网络结构了。接下来,本文将从两个方面介绍deepFM:

  1. DeepFM的模型结构细节
  2. DeepFM的代码实现
  3. 总结

一、DeepFM的模型结构细节

来看下DeepFM的模型结构(图片来自王喆《深度学习推荐系统》,ps:原论文的图不清晰,所以没有直接从原论文取图)

整体模型结构也比较简单,自底向上看分别为:

  1. 原始输入层:onehot编码的稀疏输入
  2. embedding层:FM和DNN共享的底座
  3. FM与DNN
  4. 输出层

1.1 FM

重点说下FM层,先来回顾下FM的公式:
y ^ ( x ) = w 0 + ∑ i = 1 n w i x i + ∑ i = 1 n ∑ j = i + 1 n < v i , v j > x i x j (1) \\haty(x) = w_0 + \\sum_i=1^nw_ix_i + \\sum_i=1^n\\sum_j=i+1^n<v_i, v_j>x_ix_j \\tag1 y^(x)=w0+i=1nwixi+i=1nj=i+1n<vi,vj>xixj(1)
上面的公式分为两个部分:

1.1.1 一阶部分

w 0 + ∑ i = 1 n w i x i (2) w_0 + \\sum_i=1^nw_ix_i \\tag2 w0+i=1nwixi(2)

其实就是个LR,没什么要说的。

1.1.2 二阶部分

∑ i = 1 n ∑ j = i + 1 n < v i , v j > x i x j (3) \\sum_i=1^n\\sum_j=i+1^n<v_i, v_j>x_ix_j \\tag3 i=1nj=i+1n<vi,vj>xixj(3)

在讲解 推荐系统(三)Factorization Machines(FM)的博客里讲过,公式(3)直接算(两两交叉算内积)时间复杂度为 O ( N 2 ) O(N^2) O(N2),FM论文中给出了推导,把时间复杂度降低至 O ( K N ) O(KN) O(KN)
∑ i = 1 n ∑ j = i + 1 n < v i , v j > x i x j = 1 2 [ ∑ i = 1 n ∑ j = 1 n < v i , v j > x i x j − ∑ i = 1 n < v i , v i > x i x i ] = 1 2 ( ∑ i = 1 n ∑ j = 1 n ∑ f = 1 k v i , f ⋅ v j , f x i x j − ∑ i = 1 n ∑ f = 1 k v i , f ⋅ v i , f x i x i ) = 1 2 ∑ f = 1 k ( ( ∑ i = 1 n v i , f x i ) ( ∑ j = 1 n v j , f x j ) − ∑ i = 1 n v i , f 2 x i 2 ) = 1 2 ∑ f = 1 k ( ( ∑ i = 1 n v i , f x i ) 2 − ∑ i = 1 n v i , f 2 x i 2 ) (4) \\beginaligned & \\sum_i=1^n\\sum_j=i+1^n<v_i, v_j>x_ix_j \\\\ &= \\frac12 \\tag 4[\\sum_i=1^n\\sum_j=1^n<v_i, v_j>x_ix_j - \\sum_i=1^n<v_i, v_i>x_ix_i] \\\\ &= \\frac12(\\sum_i=1^n\\sum_j=1^n\\sum_f=1^kv_i,f \\cdot v_j,f x_ix_j - \\sum_i=1^n\\sum_f=1^kv_i,f \\cdot v_i,f x_ix_i) \\\\ &=\\frac12\\sum_f=1^k((\\sum_i=1^nv_i,fx_i)(\\sum_j=1^nv_j,fx_j) - \\sum_i=1^nv_i,f^2x_i^2) \\\\ &=\\frac12\\sum_f=1^k((\\sum_i=1^n v_i,fx_i)^2 -\\sum_i=1^nv_i,f^2x_i^2) \\endaligned i=1nj=i+1n<vi,vj>xixj=21[i=1nj=1n<vi,vj>xixji=1n<vi,vi>xixi]=21(i=1以上是关于推荐系统DeepFM模型(A Factorization-Machine based Neural Network)的主要内容,如果未能解决你的问题,请参考以下文章

论文研读1.1 基于 DeepFM 模型的广告推荐系统研究(郁等)

推荐系统FM系列文章-- AFM模型

推荐系统rerank模型梳理&论文推荐

值得借鉴:360推荐系统架构演进

推荐模型复现:精排模型DeepFMDIN

摆脱 FM!这些推荐系统模型真香