返回介绍

数学基础

统计学习

深度学习

工具

Scala

二十八、FwFM [2018]

发布于 2023-07-17 23:38:25 字数 77261 浏览 0 评论 0 收藏 0

  1. CTR 预估所涉及的数据通常是 multi-field categorical data,这类数据具有以下特性:

    • 首先,所有的特征都是 categorical 的,并且是非常稀疏的,因为其中许多是 id 。因此,特征的总数很容易达到数百万或数千万。
    • 其次,每个特征都唯一地属于一个 field ,而且可能有几十到几百个 field

    下表是一个用于 CTR 预估的现实世界 multi-field categorical data set 的例子。

    multi-field categorical data 的特性对建立有效的机器学习模型进行 CTR 预测提出了几个独特的挑战:

    • 特征交互feature interaction 是普遍存在的,需要专门建模。在和标签关联方面,特征拼接 feature conjunction 与单个特征不同。例如,nba.com 上展示的耐克广告的点击率,通常比所有网站上耐克广告的平均点击率、或 nba.com 上展示的所有广告的平均点击率高很多。这种现象在文献中通常被称为特征交互。
    • 来自一个 field 的特征往往与来自其他不同 field 的特征有不同的交互。例如,我们观察到,来自 field GENDER 的特征通常与 field ADVERTISER 的特征有很强的交互,而它们与 field DEVICE_TYPE 的特征交互却相对较弱。这可能是由于具有特定性别的用户更偏向于他们正在观看的广告,而不是他们正在使用的设备类型。
    • 需要注意潜在的高模型复杂性。由于实践中通常有数以百万计的特征,模型的复杂性需要精心设计和调整,以适应模型到内存中。

    为了解决这些挑战的一部分,研究人员已经建立了几个解决方案,Factorization Machine: FMField-aware Factorization Machine: FFM 是其中最成功的:

    • FM 通过将 pairwise 特征交互的影响建模为两个 embedding 向量的内积来解决第一个挑战。然而, field 信息在 FM 中根本没有被利用。
    • 最近,FFM 已经成为 CTR 预估中表现最好的模型之一。FFM 为每个特征学习不同的 embedding 向量,从而用于当特征与其他不同 field 的特征进行交互。通过这种方式,第二个挑战被显式地解决了。然而,FFM 的参数数量是特征数量乘以 field 数量的数量级,很容易达到数千万甚至更多。这在现实世界的生产系统中是不可接受的。

    在论文 《Field-weighted Factorization Machines for Click-Through Rate Prediction in Display Advertising》 中,作者引入了 Field-weighted Factorization Machines: FwFM 来同时解决所有这些挑战。论文贡献:

    • 经验表明,不同的 field pairslabel 的关联程度明显不同。按照同样的惯例,论文称它为 field pair interaction
    • 基于上述观察,论文提出了 Field-weighted Factorization Machine: FwFM 。通过引入和学习 field pair weight matrixFwFM 可以有效地捕获 field pair interaction 的异质性。此外,FwFM 中的参数比 FFM 中的参数少几个数量级,这使得 FwFM 成为现实世界生产系统中的首选。
    • FwFM 通过用 embedding vector representation 取代线性项的 binary representation 而得到进一步的增强。这种新的处理方法可以有效地帮助避免过拟合,提高预测性能。
    • 论文在两个真实世界的 CTR 预估数据集上进行了综合实验,以评估 FwFM 与现有模型的性能。实验结果表明:FwFM 仅用FFM4% 的参数就能达到有竞争力的预测性能。当使用相同数量的参数时,FwFMFFMAUC 提升了 0.9%

28.1 模型

  1. 假设有 m $ m $ 个 unique 特征 {f1,,fm} $ \{f_1,\cdots,f_m\} $ ,以及 n $ n $ 个不同的 fields {F1,,Fn} $ \{F_1,\cdots,F_n\} $ 。每个特征 fi $ f_i $ 仅属于一个 field,记做 F(i) $ F(i) $ 。

    给定数据集 S={y(s),x(s)}s=1N $ \mathcal S = \left\{y^{(s)},\mathbf{\vec x}^{(s)}\right\}_{s=1}^N $ ,其中: y(s){1,1} $ y^{(s)}\in \{1,-1\} $ 为 label 表示是否点击; x(s){0,1}m $ \mathbf{\vec x}^{(s)}\in \{0,1\}^m $ 为二元特征向量,xi(s)=1 $ x_i^{(s)}=1 $ 表示特征 fi $ f_i $ 是 active 的。

    例如,假设有两个 field :性别、学历,那么 n=2 $ n=2 $ 。假设有六个特征:f1=,f2=,f3=,f4=,f5=,f6= $ f_1= 男性,f_2= 女性,f_3=博士,f_4=硕士,f_5=本科,f_6=本科以下 $ ,那么 f1,f2 $ f_1,f_2 $ 属于性别这个 fieldf3f6 $ f_3\sim f_6 $ 属于学历这个 field,它们的取值都是 01

    • LR 模型为:

      (29)minwλw22+s=1Nlog(1+exp(y(s)ΦLR(w,x(s))))

      其中:λ $ \lambda $ 为正则化系数,w $ \mathbf{\vec w} $ 为模型权重,ΦLR(w,x)=w0+i=1mxiwi $ \Phi_\text{LR}(\mathbf{\vec w}, \mathbf{\vec x}) = w_0 + \sum_{i=1}^m x_iw_i $ 。

      注意,因为这里将 label 取值空间设为 {1, -1} 而不是 {1, 0} ,因此这个损失函数与交叉熵不同,而是指数损失函数。

    • Poly2:然而,线性模型对于诸如 CTR 预估这样的任务来说是不够的,在这些任务中,特征交互是至关重要的。解决这个问题的一般方法是增加 feature conjunction 。已有研究表明,Degree-2 Polynomial: Poly2 模型可以有效地捕获特征交互。Poly2 模型考虑将 ΦLR $ \Phi_\text{LR} $ 替换为:

      (30)ΦPoly2(w,x)=w0+i=1mxiwi+i=1mj=i+1mxixjwh(i,j)

      其中:h(i,j) $ h(i,j) $ 是一个哈希函数,它将 i $ i $ 和 j $ j $ 哈希到位于哈希空间 H $ \mathcal H $ 中的一个自然数,从而减少参数规模。否则,模型中的参数数量将达到 O(m2) $ O(m^2) $ 的数量级。

    • FMFactorization Machine: FM 为每个特征学习一个 embedding 向量 viRK $ \mathbf{\vec v}_i\in \mathbb R^K $ ,其中 K $ K $ 为一个小的整数(如 K=10 $ K=10 $ )。FM 将两个特征 i $ i $ 和 j $ j $ 之间的交互建模为它们相应的 embedding 向量 vi $ \mathbf{\vec v}_i $ 和 vj $ \mathbf{\vec v}_j $ 之间的内积:

      (31)ΦFM((w,v),x)=w0+i=1mxiwi+i=1mj=i+1mxixj<vi,vj>

      其中:<,> $ <\cdot,\cdot> $ 为向量的内积。

      在涉及稀疏数据的应用中(如 CTR 预估),FM 的表现通常优于 Poly2 模型。原因是,只要特征本身在数据中出现的次数足够多,FM 总能为每个特征学习到一些有意义的 embedding 向量,这使得内积能很好地估计两个特征的交互效应 interaction effect ,即使两个特征在数据中从未或很少一起出现。

    • FFM:然而,FM 忽略了这样一个事实:当一个特征与其他不同 field 的特征交互时,其行为可能是不同的。Field-aware Factorization Machines: FFM 通过为每个特征(如 i $ i $ )学习 n1 $ n-1 $ 个 embedding 向量来显式地建模这种差异,并且只使用相应的 embedding 向量 vi,F(j) $ \mathbf{\vec v}_{i,F(j)} $ 与来自 field F(j) $ F(j) $ 的另一个特征 j $ j $ 交互:

      (32)ΦFM((w,v),x)=w0+i=1mxiwi+i=1mj=i+1mxixj<vi,F(j),vj,F(i)>

      虽然 FFMFM 有明显的性能改进,但其参数数量是 O(mnK) $ O(mnK) $ 的数量级。在现实世界的生产系统中,FFM 的巨大参数数量是不可取的。因此,设计具有竞争力的和更高内存效率的替代方法是非常有吸引力的。

  2. field pair 的交互强度:我们特别感兴趣的是,在 field level ,交互强度是否不同。即,不同 feature pair 的平均交互强度是否不同。这里的平均交互强度指的是:给定一个 field pair,它包含的所有 feature pair 的平均交互强度。

    例如,在CTR 预估数据中,来自 field ADVERTISER 的特征通常与来自 field PUBLISHER 的特征有很强的交互,因为 advertiser 通常针对一群有特定兴趣的人,而 PUBLISHER 的受众自然也是按兴趣分组的。另一方面, field HOUR_OF_DAY 的特征往往与 field DAY_OF_WEEK 的特征没有什么交互,这不难理解,因为凭直觉,它们的交互对点击量没有什么贡献。

    为了验证 field pair interaction 的异质性,我们使用 field pair (Fk,Fl) $ (F_k,F_l) $ 和标签变量 Y $ Y $ 之间的互信息来量化 field pair 的交互强度:

    (33)MI((Fk,Fl),Y)=(i,j)(Fk,Fl)yYp((i,j),y)logp((i,j),y)p(i,j)p(y)

    其中:

    • p(i,j) $ p(i,j) $ 表示所有样本中,特征 fi=1 $ f_i=1 $ 且特征 fj=1 $ f_j=1 $ 的概率。
    • p(y) $ p(y) $ 表示所有样本中, y=1 $ y=1 $ 的概率。
    • p((i,j),y) $ p((i,j), y) $ 表示所有样本中,特征 fi=1 $ f_i=1 $ 且特征 fj=1 $ f_j=1 $ 且 y=1 $ y=1 $ 的概率。

    下图是每个 field pair 和标签之间的互信息的可视化,由 Oath CTR 数据计算得出。不出所料,不同 field pair 的交互强度是相当不同的。一些 field pair 有非常强的交互,如 (AD_ID,SUBDOMAIN)(CREATIVE_ID,PAGE_TLD),而其他一些 field pair 有非常弱的交互,如 (LAYOUT_ID,GENDER)(Day_OF_WEEK,AD_POSITION_ID)

    虽然分析结果并不令人惊讶,但我们注意到,现有的模型都没有考虑到这种 field level interaction 的异质性 。这促使我们建立一个有效的机器学习模型来捕获不同 field pair 的不同交互强度。

  3. FwFM:我们提出对不同 field pair 的不同交互强度进行显式的建模,其中 feature pair (i,j) $ (i,j) $ 的交互被建模为:

    (34)xixj<vi,vj>rF(i),F(j)

    其中:rF(i),F(j)R $ r_{F(i),F(j)}\in \mathbb R $ 是用于建模 field pair (F(i),F(j)) $ (F(i),F(j)) $ 之间交互强度的权重。

    核心要点:在 FM 基础上乘以 rF(i),F(j) $ r_{F(i),F(j)} $ 。实现简单,效果好。

    进一步地,我们是否可以在 field 的概念之上继续遵循这种做法。比如,可以把 field 进行分组:用户年龄、性别等等 field 是一组,item 类别、品牌等等是另一组、用户历史行为序列是其它一组,然后设定 field group 的权重:

    (35)xixj<vi,vj>rF(i),F(j)×rG(i),G(j)

    其中 rG(i),G)j $ r_{G(i),G)j} $ 为 field group 之间的权重。

    我们将得到的模型称为 Field-weighted Factorization Machine: FwFM

    • 模型复杂度:FM 的参数数量为 m+mK $ m+mK $ ,其中 m $ m $ 为线性部分的参数数量,mK $ mK $ 为 embedding 向量的参数数量。FwFM 使用了额外的 n(n1)/2 $ n(n-1)/2 $ 个参数用于每个 field pair,因此总的参数数量为 m+mK+n(n1)/2 $ m+mK+n(n-1)/2 $ 。相比之下,FFM 的参数数量为 m+m(n1)K $ m+m(n-1)K $ ,因为每个特征有 n1 $ n-1 $ 个 embedding 向量。

      考虑到通常 nm $ n\ll m $ ,因此 FwFM 的参数与 FM 相当,显著少于 FFM

    • 线性项:我们认为,embedding 向量 vi $ \mathbf{\vec v}_i $ 捕获到关于特征 i $ i $ 的更多信息,因此我们提出使用 xivi $ x_i\mathbf{\vec v}_i $ 来在线性项中代表每个特征。

      我们为每个特征学习一个线性权重 wi $ \mathbf{\vec w}_i $ ,因此 FwFM 的线性项变为:

      (36)i=1mxi<vi,wi>

      这需要 mK $ mK $ 个参数。因此,FwFM 的总参数数量为 2mK+n(n1)/2 $ 2mK + n(n-1)/2 $ ,记做 FwFM_FeLV

      这相当于为每个特征学习两个 embeddingembedding vi $ \mathbf{\vec v}_i $ 用于建模特征交互,embedding wi $ \mathbf{\vec w}_i $ 用于建模线性项。好处有两个:

      • 首先,这种方法的表达能力更强。
      • 其次,实现起来更简单。原始的线性项需要把特征表示成 sparse 形式从而节省内存和计算量(大量的零存在),在实现的时候需要特殊的逻辑(稀疏张量的转换和计算)。而这里直接用 embedding lookup,与现有的逻辑保持一致。

      或者,我们为每个 field 学习一个线性权重 wF(i) $ \mathbf{\vec w}_{F(i)} $ ,此时线性项变为:

      (37)i=1mxi<vi,wF(i)>

      此时总的参数数量为 nK+mK+n(n1)/2 $ nK+mK + n(n-1)/2 $ ,记做 FwFM_FiLV

      这相当于为每个 field 学习一个 embedding

      原始线性权重的 FwFM 记做 FwFM_LW

      或者我们是否可以用 wi=s=1dvi,d $ w_i = \sum_{s=1}^dv_{i,d} $ 来作为权重?这相当于将 wF(i) $ \mathbf{\vec w}_{F(i)} $ 固定为全 1 的向量,一定程度上降低了参数规模同时缓解过拟合。原因如下:考虑 <vi,wi>+<vi,vj>+<vj,wj> $ <\mathbf{\vec v}_i, \mathbf{\vec w}_i> + <\mathbf{\vec v}_i, \mathbf{\vec v}_j> + <\mathbf{\vec v}_j, \mathbf{\vec w}_j> $ ,如果 v $ \mathbf{\vec v} $ 放大 10 $ 10 $ 倍、w $ \mathbf{\vec w} $ 缩小 10 $ 10 $ 倍,则结果完全相同。因此这种方式的自由度太大,需要打破这种对称性,例如: <vi,1>+<vi,vj>+<vj,1> $ <\mathbf{\vec v}_i, \mathbf{\vec 1}> + <\mathbf{\vec v}_i, \mathbf{\vec v}_j> + <\mathbf{\vec v}_j, \mathbf{\vec 1}> $ ,此时 v $ \mathbf{\vec v} $ 方法或缩小会完全影响最终结果。

      在后面的实验部分,确实发现参数更少的 FwFM_FiLV 的测试 AUC 更高。那么是否 wF(i) $ \mathbf{\vec w}_{F(i)} $ 固定为全 1 的向量时效果还要好?

28.2 实验

  1. 数据集:

    • Criteo CTR 数据集:我们将数据按 60%: 20%: 20% 随机分成训练集、验证集和测试集。

    • Oath CTR 数据集:我们使用两周的点击日志作为训练集,下一天的数据作为验证集、下下一天的数据作为测试集。

      对于 Oath CTR 数据集,正样本的比例通常小于 1% 。我们对负样本进行降采样,使正负样本更加平衡。对验证集和测试集不做降采样,因为评估应该在反映实际流量分布的数据集上进行。

    对于这两个数据集,我们过滤掉所有在训练集中出现少于 τ $ \tau $ 次的特征,用一个 NULL 特征代替,其中 τ $ \tau $ 在 Criteo 数据集中被设置为20 ,在 Oath 数据集中为10

    这两个数据集的统计数字如下表所示:

  2. 实现:我们使用 LibLinear来训练 Poly2 ,并使用哈希技巧将 feature conjunctions 哈希到 107 $ 10^7 $ 的哈希空间。所有其他的模型都在 Tensorflow 中实现。TensorflowFwFM 的结构如下图所示。

    输入是一个稀疏的二元向量 xRm $ \mathbf{\vec x}\in \mathbb R^m $ ,只有 n $ n $ 个非零项,因为有 n $ n $ 个field 。对每个样本而言每个 field 都有一个且只有一个活跃的特征。

  3. FwFM 和已有模型的比较:我们评估了带原始线性项的 FwFM ,即 FwFM_LW 。对于所有的超参数,我们在验证集上进行调优,然后在测试集上进行评估。可以看到:

    • 在两个数据集上,FwFM 都能取得比 LRPoly2FM 更好的性能。这种改进来自于 FwFM 显式地建模了 field pair 的不同交互强度。
    • FFM 总是在验证集和测试集上获得最佳性能。然而,FwFM 的性能相比 FFM 具有相当的竞争力。

  4. FwFMFFM 在具有相同参数规模的情况下的比较:

    FFM的一个关键缺点是其参数数量在 O(mnK) $ O(mnK) $ 的规模。有两种解决方案可以减少 FFM 的参数数量:使用较小的 K $ K $ 、或者使用哈希技巧(具有较小的哈希空间 H $ \mathcal H $ )。《Field-aware factorization machines in a real-world online advertising system》 提出对 FFM 使用较小的 KFFM=2 $ K_\text{FFM} = 2 $ ,以及通过使用较小的哈希空间 HFFM $ \mathcal H_\text{FFM} $ 从而将参数规模进一步减少到 O(nmFFMKFFM) $ O(nm_\text{FFM}K_\text{FFM}) $ 。

    这里我们通过选择合适的 KFFM $ K_\text{FFM} $ 和 HFFM $ \mathcal H_\text{FFM} $ ,使得 FFMFwFM 的参数数量相同。我们不计算线性项的参数,因为它们与交互项的数量相比可以忽略。我们选择 KFwFM=10 $ K_\text{FwFM} = 10 $ 、KFFM=2 $ K_\text{FFM} = 2 $ 以及 KFFM=4 $ K_\text{FFM} = 4 $ 。实验结果如下表所示。可以看到:当使用相同数量的参数时,FwFMCriteoOath 数据集的测试集上得到更好的表现,提升幅度分别为 0.70%0.45%

  5. 具有不同线性项的 FwFM:下表给出了不同线性项的 FwFM 的性能。可以看到:

    • FwFM_LWFwFM_FeLV 在训练和验证集上比 FwFM_FiLV 能取得更好的性能。原因是这两个模型的线性项(m $ m $ 和 mK $ mK $ )比FwFM_FiLVnK $ nK $ )有更多的参数,所以它们能比 FwFM_FiLV 更好地拟合训练集和验证集。
    • 然而,FwFM_FiLV 在测试集上得到了最好的结果,这表明它有更好的泛化性能。
    • 此外,当我们使用相同数量的参数将 FwFM_FiLVFFM 进行比较时,在Oath 数据集和Criteo 数据集上的AUC 提升分别为0.92%0.47%

  6. 超参数调优:以下所有的评估都是 FwFM_FiLV 模型在 Oath 验证集上进行的。

    • L2 正则化系数 λ $ \lambda $ :如 Figure3 所示,λ=105 $ \lambda =10^{-5} $ 在验证集上得到最好的性能。

      正则化系数作用于所有的 parameters

    • 学习率 η $ \eta $ :如 Figure4 所示,我们选择 η=104 $ \eta = 10^{-4} $ 。

    • embedding 维度 K $ K $ :如下表所示,我们选择 K=10 $ K=10 $ 。

  7. 学到的 field 交互强度:这里我们比较了 FMFFMFwFM 在捕获不同 field pair 的交互强度方面的能力。我们的结果表明,由于 field pair 交互权重 rFk,Fl $ r_{F_k,F_l} $ 的存在,FwFM 可以比 FMFFM 更好地建模交互强度。

    field pair 的交互强度通过互信息( field pair 和标签之间的互信息 MI((Fk,Fl),Y) $ \text{MI}((F_k,F_l),Y) $ )进行量化,并在 Figure 5(a) 中通过热力图进行了可视化。

    为了衡量学到的 field 交互强度,我们定义了以下指标:

    (38)(i,j)(Fk,Fl)I(i,j)×#(i,j)(i,j)(Fk,Fl)#(i,j)

    其中:

    • #(i,j) $ \#(i,j) $ 为 feature pair (i,j) $ (i,j) $ 在训练数据中出现的次数。

    • I(i,j) $ I(i,j) $ 为 feature pair (i,j) $ (i,j) $ 学到的交互强度。

      • 对于 FMI(i,j)=|<vi,vj>| $ I(i,j) = |<\mathbf{\vec v}_i,\mathbf{\vec v}_j>| $ 。
      • 对于 FFMI(i,j)=|<vi,Fl,vj,Fk>| $ I(i,j) = |<\mathbf{\vec v}_{i,F_l},\mathbf{\vec v}_{j,F_k}>| $ 。
      • 对于 FwFMI(i,j)=|<vi,vj>×rFk,Fl| $ I(i,j) = |<\mathbf{\vec v}_i,\mathbf{\vec v}_j>\times r_{F_k,F_l}| $ 。

    注意,我们将内积项的绝对值相加,否则正值和负值会相互抵消。

    如果一个模型能够很好地捕捉到不同 field pair 的交互强度,我们期望其学习到的 field 交互强度接近于互信息 MI((Fk,Fl),Y) $ \text{MI}((F_k,F_l),Y) $ 。为了便于比较,我们在 Figure 5 中以热力图的形式绘制了由 FM, FFM, FwFM 学到的field 交互强度,以及 field pair 和标签之间的互信息 MI((Fk,Fl),Y) $ \text{MI}((F_k,F_l),Y) $ 。我们还计算了皮尔逊相关系数,以定量地衡量所学到的 field 交互强度与互信息的匹配程度。

    • Figure 5(b) 中我们观察到:FM 学到的交互强度与互信息完全不同。这并不奇怪,因为 FM 在建模特征交互强度时没有考虑 field 信息。
    • Figure 5(c) 中我们观察到:FFM 能够学习与互信息更相似的交互强度。
    • Figure 5(d) 中我们观察到:FwFM 学到的交互强度的热力图与互信息的热力图非常相似。

    为了了解权重 rFk,Fl $ r_{F_k,F_l} $ 在建模 field pair 的交互强度方面的重要性,我们在 Figure 6 中绘制了 rFk,Fl $ r_{F_k,F_l} $ 的热力图,以及没有 rFk,Fl $ r_{F_k,F_l} $ 的FwFM (退化回 FM )的学到的 field 交互强度。可以看到: rFk,Fl $ r_{F_k,F_l} $ 的热力图与 Figure 5(a) 的互信息热力图、Figure 5(d)FwFM 学到的 field 交互强度都非常相似。这意味着 rFk,Fl $ r_{F_k,F_l} $ 确实可以学到不同 field pair 的不同交互强度。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文