计算机系统应用教程网站

网站首页 > 技术文章 正文

再谈DeepFM模型

btikc 2024-09-11 01:34:14 技术文章 11 ℃ 0 评论


上一期介绍了DeepFM模型,有同学觉得写得太粗糙,那么我们本期将详细介绍为什么DeepFM有用,为什么能够增强模型的表达能力。

为了解释上述两个问题,我们先回顾一下Wide & Deep Learning(WDL)。由于推荐系统中,模型输入的特征是需要人为设计的,这从一定程度上取决于特征设计人员的专业能力。因此,模型的设计主要是在已知的特征工程中进行信息挖掘,为了增强/丰富特征库,Google提出了WDL,目的就是为了通过特征交叉增加模型的特征维度,进而增强模型的表达能力。例如在电子商务场景,对于游戏机的购买用户,其基本特征有性别——男、年龄段——青年,那么我们可以设计性别跟年龄段作为交叉结果作为模型的特征输入,即"男 & 年龄段"作为交叉特征。

虽然WDL设计的这种手动进行特征交叉可以找到很多交叉特征,但是这样的形式也有其缺点, 即人工设计特征交叉,太过繁琐,成本太大,因为推荐系统中的特征维度较大。那么如何解决上述问题呢,Factorization Machine(FM)可以很好地对上述问题进行解决,或者说FM可以从另外的角度去解决上述问题。

接下来,我们来看下FM原理。为了如上述特征交叉一样丰富特征库,我们可以使原来的特征做两两交叉(作哈德玛积),也就是:

这样就可以通过特征的两两交叉,以及权重ρ的使用,就可以类似于注意力机制一样,自动学习出重要的交叉特征,然而这样做无疑其时间复杂度暴增,然而上述问题可以通过一个巧妙的推导降低时间复杂度,接下来我们推导一下。

首先,我们假设ρ是由两个向量内积运算的结果,即:

那么,交叉公式:

因为上述向量级运算还是较为复杂的,因此我们设ω为一个k维向量,将上述等式变形为标量级运算:

这样推导完以后,可以看出,时间复杂度降低了一个指数量级。

那么FM是如何集成到DeepFM模型的呢?

我们从FM的公式中可以看到,FM模型是针对特征的元素级交叉,这其实是不太合理的,例如,一个用户有一个categorical特征(学历高中,one-hot编码特征:0 0 1 0 0 0,依次是小学、初中、高中、大学、研究生、研究生以上),那么这样的特征,如果要是使用元素级交叉,会出现一个categorical特征内部的特征分量进行交叉,这显然是没有任何意义的,而且也可能带来一定的噪声。因此,由引出了另外一个模型Field-aware Factorization Machine(FFM)[1],这个模型主要解决的问题,就是避免categorical特征内部的特征分量进行交叉,而结合深度学习中常用的embedding技术,我们可以在DeepFM中解决这个问题,即不管特征类型是什么,我们均对其做embedding处理,我们做embedding处理后的向量级交叉,那么这样就能避免了一个特征内部的特征分量的交叉。

参考文献

[1] Y. Juan, Y. Zhuang, W. S. Chin, and C. J. Lin, "Field-aware factorization machines for CTR prediction," RecSys 2016 - Proc. 10th ACM Conf. Recomm. Syst., pp. 43–50, 2016, doi: 10.1145/2959100.2959134.

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表