FmFM(场矩阵因子分解机)模型论文解读

文章所发表的会议

        WWW2021


作者及其单位

        Yang Sun, JunWei Pan, Alex Zhang, Aaron Flores,他们都来自雅虎研究。


文章主要思想

        众所周知,FM(因子分解机)模型可以用来解决机器学习问题中的回归、分类等任务,并且非常善于解决稀疏数据,因而对于经常进行one-hot编码的推荐系统CTR预测问题来说,是非常合适作为模型去处理的。之前在FM的基础上,有人提出了field(场)的概念,即把所有相似的特征放在一类,称为一个field。本文提出的FmFM模型便能够更好的去模拟场的信息,使得模型更加精准。


FM族模型的基本公式

FM:\hat{y} = w_{0} + \sum_{i}^mw_{i}x_{i}    + \sum_{i=1}^m\sum_{j=i+1}^m <v_i,v_j > x_ix_j

FFM: \hat{y} = w_{0} + \sum_{i}^mw_{i}x_{i}    + \sum_{i=1}^m\sum_{j=i+1}^m <v_{i,F(j)},v_{j,F(i)} > x_ix_j

FwFM: \hat{y} = w_{0} + \sum_{i}^mw_{i}x_{i}    + \sum_{i=1}^m\sum_{j=i+1}^m <v_{i},v_{j} > x_ix_j r_{F_i,F_j}

FmFM: \hat{y} = w_{0} + \sum_{i}^mw_{i}x_{i}    + \sum_{i=1}^m\sum_{j=i+1}^m <v_{i}M_{F(i),F(j)},v_{j} > x_ix_j

        上面的式子都是由LR(线性回归)演变而来的。w_{0}是常数项系数,第二项是一次项,而二次项则是FM族模型的创新之处。如果是普通的二次回归,则二项式系数的参数量有m(m-1)/2个,但是FM模型巧妙地利用每个特征embedding结果的向量内积作为系数,使得参数量减少到了Km个,其中K是embedding向量的维度,m是特征的数量。另一个这样做的好处是,向量内积的形式削弱了二阶参数之间的独立性,使得泛化能力更强(K越大,模型越精细,反之模型泛化能力更强)。这也是其处理稀疏问题取得良好表现的原因。下文中,我们把v_{i}叫做隐向量。

        后来,有学者引入了field的概念,把相同或近似性质的特征归为一个field。可以看到,后面的三个模型的隐向量内积的部分都不仅仅与这个特征自己有关,还跟这个特征所属于的field有关。第四个式子即为本文提出的模型。F(i)的意思是特征i所属的feild的序号。M_{F(i),F(j)}即为与特征i与特征j的feild有关的矩阵。计算FmFM的二次交叉项的步骤如下图:


FmFM交叉项的计算方法

       简单来说,计算交叉项的步骤分为三步。第一步,对特征i和特征j分别进行embedding,得到v_iv_j。第二步,把v_i和矩阵M_{F(i)F(j)}相乘。第三步,用第二部相乘的结果与v_j作内积。


FM族模型的参数量

        以下表格中mK的参数量跟上文中一样,而n表示field的数量。


一些模型在Criteo数据集上的参数数量

可以看到,FFM模型的参数量明显大于其他FM族模型,而本文提出的FmFM与其他FM族模型的参数量在一个数量级上。


FmFM模型的优化方法(注意:不是更新参数的过程!)

        由于FmFM引入了场矩阵,故参数量也比较巨大,作者针对其作出了下面几个方面的优化,从而减少计算量以及参数量

        1、对于不同的特征,可以不固定隐向量的维度k,而是视该特征的方差具体分析。比如对于Criteo数据集,作者刚开始都使用了16维的隐向量。拟合模型以后,便可以得到每个field中有多少信息(方差),然后对这些属于同一个field的隐向量进行PCA降维,取包含95%原始方差的新维度。这样,对于那些方差较小的field来说,它所包含的所有特征的隐向量的维度便可以大大减小,从而减少了模型的参数数量。与此同时,我们也要注意到,由于属于不同field的特征之间的隐向量的维度不一样,那么场矩阵就经常不能为方阵了,如下图:


属于不同field之间特征的交叉项的运算,这里v_iv_j分别是5维和7维的

        2、减少中间缓存向量的维度。

        利用公式<v_i M_{F(i),F(j)}, v_j> = 。我们假设v_i是2维的而v_j是14维的,那么采用等式右边的计算方法最后一步只需要计算一个2*2的向量内积,而采用等号左边的方法则是14*14。

        3、改进一次项系数。

        将线性项\sum_{i=1}^m x_iw_i 改为\sum_{i=1}^m x_i<v_i, w_{F(i)}>,即学习一些与field类有关的新隐向量w_{F(i)},这样需要学习的一次项参数个数即为\tilde{K}n   (\tilde{K} 是应用方法1降维后的二次交叉项隐向量的平均维度),一般情况下都小于特征数m


实验部分

(未完待续)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容