接下来将 FwFM 分解成了3个子模块:第一个模块是线性加和模块 ( 上图中 S 表示 ),不区别 field 学习的特征;第二个模块是矩阵分解模块 ( 上图中的 MF 部分 ),用来学习 field 粒度下的特征组合,比如 user field 和 item field 的二阶交叉;第三个模块是 FM 模块,用来学习 field 内部 feature 粒度的特征组合。
2.2 FwFM 和 FFM 相比
(1) FwFM 模型尺寸相对 FFM 少 M-1 倍。在美图实际应用中,特征量大约可减少30倍。
(2) FwFM 模型引入了 Field 相关的权重 ri,j ,解决了 FM 存在的不相关特征在学习过程中互相干扰的问题。
因此,在 field 内部引入 FM,用来显式学习用户侧 feature 粒度的所有特征的二阶交叉组合。具体来讲,给 user field 引入一个 FM 模型,对用户的年龄、性别等特征的二阶交叉,同样的算法也用于 item field 等。这样,FwFM 模型就演化成了下图这样一个 Field-wise Bi-Interaction 组件。引入 FM 模型后,模型的 AUC 指标提升了约0.002。
具体来讲,先从伯努利分布中采样出由{0,1}组成的向量,再用该向量和 FM 模型计算得到的表示二阶特征交叉组合的向量进行相乘,这样可以随机丢弃部分二阶交叉项。在预估的时候是将 FM 做了 Bi-Interaction 后得到的向量,乘以伯努利分布的期望 β,用来对齐计算过程中丢失的数据的大小。引入如上思路之后,AUC 提升约0.001。
2.6 总结
总体来讲,我们从 FwFM 演化出 Field-wise Bi-Interaction 组件,包含线性加和模块用来学习一阶特征,还包括矩阵分解 ( MF ) 模块和 FM 模块,用来学习特征 field 粒度和 feature 粒度的特征交叉。相比于上一代 NFM 模型,使用这样的模型,在计算量和参数量都减少了6倍的情况下,点击率得到了5.19%的提升。