DeepFM
文章目录
参考:
论文原文
FM、FFM、DeepFM学习笔记
CTR论文精读(七)–DeepFM
FM系列算法解读(FM+FFM+DeepFM)
CTR预估是目前推荐系统的核心技术,其目标是预估用户点击推荐内容的概率。在CTR预估任务中,用户行为的隐式low-order和high-order特征都起到十分重要。有些特征是易于理解的,可以通过领域专家进行人工特征工程抽取特征。但是对于不易于理解的特征,如“啤酒和尿布”,则只能通过机器学习的方法得到。同样的对于需要特别巨量特征的模型,人工特征工程也是难以接受的。所以特征的自动学习显的十分重要。
CTR预估数据特点:
- 输入中包含类别型和连续型数据。类别型数据需要one-hot,连续型数据可以先离散化再one-hot,也可以直接保留原值
- 维度非常高
- 数据非常稀疏
- 特征按照Field分组
之前的模型的缺点和局限
线性模型的局限性
线性模型的优点是简单、方便、易于求解,但缺点在于线性模型中假设不同特征之间是独立的,特征之间不会相互影响。
对于CTR问题,被证明的最有效的提升任务表现的策略是特征组合(Feature Interaction), 在CTR问题的探究历史上来看就是如何更好地学习特征组合,进而更加精确地描述数据的特点。可以说这是基础推荐模型到深度学习推荐模型遵循的一个主要的思想。而组合特征大牛们研究过组合二阶特征,三阶甚至更高阶,但是面临一个问题就是随着阶数的提升,复杂度就成几何倍的升高。这样即使模型的表现更好了,但是推荐系统在实时性的要求也不能满足了。所以很多模型的出现都是为了解决另外一个更加深入的问题:如何更高效的学习特征组合?
多项式模型的问题
为了解决简单线性模型无法学得特征间交叉影响的问题,SVM通过引入核函数来实现特征的交叉,实际上和多项式模型是一样的,这里以只考虑两个特征交叉的二阶多项式模型为例:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uJCNpSPv-1616221167091)(media/16161447753552/v2-aad7a160bc93e9c413002b25a9184555_1440w.jpg.png)]
多项式模型的问题在于二阶项的参数过多,设特征维数为n,那么二阶项的参数数目为 n ( n + 1 ) / 2 n(n+1)/2 n(n+1)/2。对于广告点击率预估问题,由于存在大量id特征,导致n可能为 1 0 7 10^7 107维,这样一来,模型参数的量级为 1 0 14 10^{14} 1014,这比样本量 4 ∗ 1 0 7 4*10^7 4∗107多得多!这导致只有极少数的二阶组合模式才能在样本中找到,而绝大多数模式在样本中找不到,因而模型无法学出对应的权重,参数学习失败。也正是这个缘故,我们实际使用SVM时所用到的核函数都是预先定义好的,而非在训练过程中学习得到。
而且组合后的特征不会都有效,实际上大部分都是无效的。
DNN的局限性
当我们使用DNN网络解决推荐问题的时候存在网络参数过于庞大的问题,这是因为在进行特征处理的时候我们需要使用one-hot编码来处理离散特征,这会导致输入的维度猛增。为了解决DNN参数量过大的局限性,可以采用非常经典的Field思想,将OneHot特征转换为Dense Vector,此时通过增加全连接层就可以实现高阶的特征组合。但是仍然缺少低阶的特征组合。
为了解决上述问题,出现了FM(Factorization Machines,因子分解机)和FFM来优化。并且在这个时候科学家们已经发现了DNN在特征组合方面的优势。结合FM和DNN,有并行和串行两种方式。在DeepFM之前所以出现了FNN和PNN等使用深度网络的模型,虽然在影响力上可能并不如DeepFM.
FM(因子分解机)
FM(Factorization Machine)主要是为了解决数据稀疏的情况下,特征怎样组合的问题。FM于2010年被提出,想法是对 w i j w_{ij} wij解耦,通过学习得到每一个特征的隐向量因子。这样,在需要特征组合时,可以拿出各自的隐因子向量做点积,即可得到两个特征向量的组合特征的权重了。
为了降低上述模型中习得参数的难度,我们很容易想到,可以对二阶项参数施加某种限制,减少模型参数的自由度。FM 施加的限制是要求二阶项系数矩阵是低秩的,能够分解为低秩矩阵的乘积:
以上所讨论的都是只考虑两个特征交叉的情况,若扩展到考虑三个特征交叉的情况,则FM模型方程的第三项变为:
目前FM的学习算法主要包括以下三种:
- 随机梯度下降法(Stochastic Gradient Descent, SGD)
- 交替最小二乘法(Alternating Least Square Method,ALS)
- 马尔科夫链蒙特卡罗法(Markov Chain Monte Carlo,MCMC)
FM模型不单可以建模1阶特征,还可以通过隐向量点积的方法高效的获得2阶特征表示,即使交叉特征在数据集中非常稀疏甚至是从来没出现过。这也是FM的优势所在。
从上式可以看出二项式的参数数量由原来的 n ( n − 1 ) / 2 n(n−1)/2 n(n−1)/2个减少为nk个,远少于多项式模型的参数数量。另外,参数因子化使得 x h x i x_h x_i xhxi的参数和 x h x j x_h x_j xhxj的参数不再相互独立,因为有了 x h x_h xh特征关联。因此我们可以在样本系数的情况下相对合理地估计FM的二次项参数。具体来说, x h x i x_h x_i xhxi<