返回介绍

数学基础

统计学习

深度学习

工具

Scala

七、DeepFM [2017]

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

  1. 点击率CTR 预估在推荐系统中至关重要,即估计用户点击推荐 item 的概率。在很多推荐系统中,系统的目标是最大化点击次数,因为返回给用户的 item 可以根据估计的点击率进行排序。而在其它应用场景中,例如在线广告,提高平台的收入也很重要,因此可以将排序策略调整为 CTR x bid,其中出价 bid 是平台在 item 被用户点击时获取的收益。无论哪种情况,很明显,关键在于正确预估点击率。

    了解用户点击行为背后隐式的特征交互feature interaction 对点击率预估很重要。通过我们在主流 app 市场的研究,我们发现人们经常在用餐时间下载外卖 app,这表明 app 类别 category 和时间戳之间的交互(二阶交互)可以作为点击率的信号。作为第二个观察,男性青少年喜欢射击游戏和 RPG 游戏,这意味着 app 类别、用户性别、年龄的交互(三阶交互)是点击率的另一个信号。一般而言,用户点击行为背后的特征交互可能非常复杂,低阶特征交互和高阶特征交互都应该发挥重要作用。根据谷歌的 Wide & Deep 模型的见解,同时考虑低阶特征交互和高阶特征交互,比单独考虑任何一种情况都带来了额外的改进。

    关键的挑战在于有效地建模特征交互。一些特征交互很容易理解,因此可以由专家设计(例如前面的例子)。然而:

    • 大多数其它特征交互都隐藏在数据中,并且难以先验地识别(例如,经典的关联规则 “尿布和啤酒” 是从数据中挖掘出来的,而不是由专家发现的),只能通过机器学习自动捕获。
    • 即使对于易于理解的交互,专家似乎也不太可能对它们进行详尽exhaustively 的建模,尤其是当特征数据量很大时。

    尽管简单,广义线性模型(例如 FTRL)在实践中表现出不错的表现。然而,线性模型缺乏学习特征交互的能力。一种常见的做法是在线性模型的特征向量中手动包含 pairwise 的特征交互。但是这种方法很难推广到建模高阶特征交互、或者建模训练数据中从未出现或者很少出现的特征交互。

    因子分解机 Factorization Machine: FMpairwise 特征交互建模为特征之间潜在向量的内积,并显示出非常有希望的结果。虽然理论上 FM 可以建模高阶特征交互,但是实际上由于复杂性太高,因此通常只考虑二阶特征交互。

    作为学习特征 representation 的强大方法,深度神经网络具有学习复杂特征交互的能力。一些想法将 CNNRNN 扩展到 CTR 预测,但是基于 CNN 的模型倾向于相邻特征之间的交互,而基于 RNN 的模型更适合具有顺序依赖性sequential dependency 的点击数据。FNN 模型在应用 DNN 之前预训练了 FM,因此模型受到 FM 能力的限制。PNNembedding 层和全连接层之间引入了 product layer。正如 Wide & Deep 论文所述,PNNFNN 像其它深度模型一样很少捕获低阶特征交互,而低阶特征交互对于 CTR 预测也是必不可少的。为了同时建模低阶特征交互和高阶特征交互,Wide & Deep 模型结合了线性模型 (wide 部分)和深度模型(deep 部分)。在 Wide & Deep 模型中,wide 部分和 deep 部分分别需要两个不同的输入,并且 wide 部分的输入仍然依赖于专业的特征工程。

    可以看到,现有模型偏向于低阶特征交互(如 FM 模型)、或者偏向于高阶特征交互(如 DNN 模型)、或者依赖于手动特征工程(如 Wide & Deep )。在论文 《DeepFM: A Factorization-Machine based Neural Network for CTR Prediction》 中,论文证明了有可能导出一个学习模型,该模型能够以端到端的方式同时学习低阶特征交互和高阶特征交互,并且除了原始特征之外无需任何手动特征工程。论文的主要贡献如下:

    • 论文提出了一种新的神经网络模型 DeepFM,它集成了 FMDNN 架构。DeepFM 建模了像 FM 这类的低阶特征交互,也建模了像 DNN 这类的高阶特征交互。和 Wide & Deep 模型不同,DeepFM 可以在没有任何特征工程的情况下进行端到端的训练。
    • DeepFM 可以有效地训练,因为它的 wide 部分和 deep 部分共享相同的输入和 embedding 向量,这和 Wide & Deep 不同。在 Wide & Deep 中,输入向量的维度可能很大,因为在它的 wide 部分的输入向量包含手动设计的 pairwise 特征交互,这大大增加了模型的复杂性。
    • 论文在 benchmark 数据和商业数据上评估了 DeepFM,结果显示:和现有的 CTR 预测模型相比,DeepFM 有一致的提升。
  2. 相关工作:本文提出了一种新的深度神经网络用于点击率预测。最相关的领域是推荐系统中的点击率预测和深度学习。这里我们讨论这两个领域的相关工作。

    • 点击率预测在推荐系统中起着重要作用。除了广义线性模型和 FM 之外,还有一些其它模型用于 CTR 预测,例如 tree-based 模型(《Practical lessons from predicting clicks on ads at facebook》)、tensor-based 模型(《Pairwise interaction tensor factorization for personalized tag recommendation》)、支持向量机、贝叶斯模型等等。

    • 另一个相关的领域是推荐系统中的深度学习。在正文部分我们会提到几种用于 CTR 预测的深度学习模型,这里不再赘述。

      除了 CTR 预测之外,推荐任务中还有几种深度学习模型。

      • 《Restricted boltzmann machines for collaborative filtering》 提出通过深度学习来改进协同过滤。
      • 《Improving content-based and hybrid music recommendation using deep learning》 通过深度学习提取内容特征来提高音乐推荐的性能。
      • 《Deep CTR prediction in display advertising》 设计了一个深度学习网络来考虑展示广告的图像特征和基础特征。
      • 《Deep neural networks for youtube recommendations》YouTube 视频推荐开发了一个两阶段深度学习框架。

7.1 模型

  1. 假设训练集 $ \mathcal D=\{\mathbf{\vec x}_i,y_i\}_{i=1}^n $ 包含 $ n $ 个样本,其中:

    • $ \mathbf{\vec x}_i $ 为样本 $ i $ 的特征,包含 useritem 的、一共 $ m $ 个 field 数据。这些 field 可能是离线的categorical 或者连续的。对于离散 field ,我们进行 one-hot 编码从而得到 one-hot 向量。对于连续 field ,我们直接使用特征本身,或者先离散化discretization 之后再进行 one-hot 编码。

      假设样本 $ i $ 在 field $ j $ 的 representation 为 $ \mathbf{\vec f}_i^{(j)} $ ,那么有:

      $ \mathbf{\vec x}_i = \left[\mathbf{\vec f}_i^{(1)}\|\cdots \| \mathbf{\vec f}_i^{(m)}\right] $

      其中 $ || $ 表示向量拼接。

    • $ y_i\in \{0,1\} $ 为 ground truth ,表示用户是否点击。

    通常 $ \mathbf{\vec x}_i $ 为高维、非常稀疏的向量。CTR 预估任务就是构建模型 $ \hat y = \text{CTR_model}(\mathbf{\vec x}) $ 从而预估用户在给定上下文中点击目标 item 的概率。

  2. 我们的目标是同时学习低阶特征交互和高阶特征交互。为此,我们提出了一个基于 Factorization-Machine: FM 的神经网络 DeepFM 。如下图所示,DeepFM 由共享相同输入的两个组件组成:FM 组件和 deep 组件。

    对于特征 $ i $ ,我们使用标量 $ w_i $ 来衡量其一阶重要性,使用潜在向量 $ \mathbf{\vec v}_i $ 来衡量它与其它特征交互的影响。 $ \mathbf{\vec v}_i $ 被馈入 FM 组件从而建模二阶特征交互,同时被馈入 deep 组件从而建模高阶特征交互。

    所有参数,包括 $ w_i $ 、 $ \mathbf{\vec v}_i $ 、以及网络参数(如下面的 $ \mathbf W^{(l)}, \mathbf{\vec b}^{(l)} $ )都是针对组合的预测模型来联合训练的:

    $ \hat y = \text{sigmoid}\left(y_\text{FM} + y_\text{DNN}\right) $

    其中: $ \hat y\in (0,1) $ 为预估的 CTR; $ y_\text{FM} $ 为 FM 组件的输出; $ y_\text{DNN} $ 为 deep 组件的输出。

  3. FM 组件:如下图所示,该部分是一个 FM ,用于学习一阶特征和二阶交叉特征。

    FM 组件由两种操作组成:加法 Addition 和内积 Inner Product

    $ \hat y_{FM} = \sum_{i=1}^d (w_i\times x_i) + \sum_{i=1}^d\sum_{i=j+1}^d (\mathbf{\vec v}_i\cdot \mathbf{\vec v}_j)\times x_{i} \times x_{j } $

    其中: $ \mathbf{\vec v}_i\in \mathbb R^k $ , $ k $ 为每个 fieldembedding 维度, $ d $ 为输入特征的维度。

    第一项 Addition Unit 用于对一阶特征重要性建模,第二项 Inner Product 用于对二阶特征重要性建模。

  4. deep 组件:如下图所示,该部分是一个全连接的前馈神经网络,用于学习高阶特征交互。

    与图像数据、音频数据作为输入(输入纯粹是连续的和稠密的)的神经网络神经网络相比,CTR 预测的输入有很大的不同,这就需要新的网络架构设计。具体而言,CTR 预测的原始特征输入向量通常是高度稀疏的、超高维的、混合了离散和连续的、并按照 field 分组(如性别、位置、年龄)。这建议在馈入第一个隐层之前,embedding 层将输入向量压缩为低维的、稠密的实值向量,否则网络难以训练。

    下图重点显示了从输入层到 embedding 层的子网结构。我们想指出这个子网结构的两个有趣的特性:

    • 虽然不同输入 field 特征向量的长度可以不同,但是它们的 embedding 长度 $ k $ 相同。

    • FM 中的潜在特征向量 $ \mathbf V=\{\mathbf{\vec v}_i\}_{i=1}^d $ 现在用作网络权重,这些权重被学习并用于将输入 field 特征向量压缩为 embedding 向量。

      FNN 中, $ \mathbf V $ 由 FM 预训练并用于网络权重的初始化。在这项工作中,我们没有像 FNN 那样使用 FM 的潜在特征向量来初始化网络,而是将 FM 模型作为我们整体学习架构的一部分。因此,我们消除了 FM 预训练的需要,而是以端到端的方式联合训练整个网络。

    假设 embedding 层的输出为: $ \mathbf{\vec h}^{(0)} = \left[\mathbf{\vec e}_1,\cdots,\mathbf{\vec e}_m\right] $ ,其中 $ \mathbf{\vec e}_i $ 为field iembedding 向量, $ \mathbf{\vec h}^{(0)} $ 为前馈神经网络的输入。则有:

    $ \mathbf{\vec h}^{(l+1)} = \sigma\left(\mathbf W^{(l)}\mathbf{\vec h}^{(l)} +\mathbf{\vec b}^{(l)} \right) $

    其中: $ l $ 为第 l 层, $ \sigma(\cdot) $ 为激活函数, $ \mathbf W^{(l)},\mathbf{\vec b}^{(l)} $ 为第 $ l $ 层的权重矩阵和 bias 向量。

    最终有:

    $ y_{DNN} = \sigma\left(\mathbf {\vec w}_{dnn}\cdot \mathbf{\vec h}^{(L)} + b_{dnn}\right) $

    $ L $ 为deep 部分的网络深度。

  5. DeepFM 和其它神经网络模型的区别:

    • FNNFNN 是一个 FM 初始化的前馈神经网络。FM 预训练策略有两个限制:embedding 参数可能会受到 FM 的过度影响 over affected;预训练阶段引入的开销降低了模型效率。此外,FNN 仅捕获了高阶特征交互。

      相比之下,DeepFM 不需要预训练,可以同时学习高阶特征交互和低阶特征交互。

    • PNN:为了捕获高阶特征交互,PNNembedding 层和第一个隐层之间强加了一个 product layer。根据product 运算的不同类型,有 IPNNOPNNPNN* 三种变体,其中 IPNN 基于向量的内积、OPNN 基于向量的外积、PNN* 同时采用了 IPNNOPNN 结果的拼接。

      为了使得计算更高效,作者提出了内积和外积的近似计算:通过移除一些神经元来近似计算内积;通过将 $ m $ 个 $ k $ 维特征向量压缩为一个 $ k $ 维向量来近似计算外积。

      然而,我们发现外积结果不如内积结果可靠,因为外积的近似计算丢失了很多信息,使得结果不稳定。内积虽然更可靠,但是仍然存在计算复杂度高的问题,因为 product layer 的输出连接到第一个隐层的所有神经元。

      FNN 一样,所有 PNN 都忽略了低阶特交互。

      PNN 不同的是,DeepFM 中的 product layer (即 FM 的二阶交互)的输出仅连接到最终输出层(一个神经元)。并且 DeepFM 同时考虑了高阶特征交互和低阶特征交互。

    • Wide & Deep:虽然 Wide&Deep 也可以对低阶特征和高阶特征同时建模,但是 wide 部分需要人工特征工程,而这需要业务专家的指导。相比之下,DeepFM 直接处理原始特征,不需要任何业务知识。

      另外,Wide & Deep 的一个直接扩展是:使用 FM 代替 wide 部分的LR 模型,记作 FM & DNN 模型,原始的 Wide & Deep 模型记作 LR & DNN 模型。

      FM & DNN 模型更类似于 DeepFM 模型,但是 DeepFMFMDNN 之间共享 embedding 特征。这种特征 embedding 的共享策略同时通过低阶特征交互和高阶特征交互来影响特征的 representation 学习,使得学到的特征 representation 更加精确。

    总而言之,DeepFM 和其它深度模型在四个方面的关系如下表所示。可以看到,DeepFM 是唯一不需要预训练和特征工程的模型,同时捕获了低阶特征交互和高阶特征交互。

7.2 实验

  1. 这里我们根据经验比较 DeepFM 和其它 state-of-the-art 的模型。评估结果表明,我们的 DeepFM 比任何其它state-of-the-art 模型更有效,并且 DeepFM 的效率可以与其它模型中最好的模型相媲美。

  2. 数据集:

    • Criteo Display Ads 数据集:用于预测广告点击率的数据集,包含 13 个连续continuous 特征,26 个离散categorical特征。

      数据包含 7 天的 11 GB 用户日志(约4100万条记录)。我们将数据集拆分为 90% 训练集和 10%测试集。

    • Company* 数据集:为了验证 DeepFM 在实际工业CTR 预估中的性能,我们在Company* 数据集上进行了实验。

      我们从华为 App Store 的游戏中心收集连续 7天的用户点击数据作为训练集,第八天的数据作为测试集,整个训练集+测试集约 10 亿条记录。在这个数据集中,有 app 特征(如 id、类目category 等等)、用户特征(如用户已经下载过的 app )、上下文特征(如操作时间)。

  3. 评估指标:AUCLogloss

  4. baseline 方法:我们比较了 9 种模型,包括:LR, FM, FNN, PNN(3种变体), Wide & Deep, DeepFM

    另外,在 Wide & Deep 模型中,为了省去手动特征工程的工作量,我们将 FM 代替了 LR 作为 wide 部分。这个变体我们称作 FM & DNN,原始的 Wide & Deep 我们称作 LR & DNN

  5. 配置:对于Company*数据集,通过超参数搜索来获取最佳超参数。对于 Criteo 数据集,超参数为:

    • FNNPNNdropout rate = 0.5;采用Adam 优化器;三层网络结构,每层的神经元数量分别为 400 - 400 - 400IPNN 模型的激活函数为为tanh ,其它模型的激活函数为 relu
    • DeepFM :与 FNN/PNN 相同。
    • LR:使用 FTRL 优化器。
    • FM :采用Adam 优化器;FMembedding 向量维度为 10

7.2.1 性能评估

  1. 模型效率 efficiency 对比:深度学习模型的效率对现实世界的application 很重要。我们通过以下公式比较不同模型在 Ctriteo 数据集上的效率:

    $ \frac{\text{模型训练时间}}{\text{LR模型的训练时间}} $

    实验结果如下图所示,包括在 CPU(左图)和 GPU(右图)上的测试。可以看到:

    • FNN 的预训练步骤拉低了它的训练效率。
    • 虽然 IPNNPNN*GPU 上的加速比其它模型更高,但是由于内积的低效运算,IPNNPNN* 的计算成本仍然很高。
    • DeepFM 在所有模型中,训练效率几乎是最高的。

  2. 效果 effectiveness 比较:不同模型在这两个数据集上的点击率预测性能如下表所示。可以看到:

    • 学习特征交互提高了点击率预测模型的性能。这个观察结果是因为 LR 模型(这是唯一不考虑特征交互的模型)比其它模型表现更差。

      作为最佳模型,DeepFMCompany*Criteo 数据集上的 AUCLR 分别高出 0.86%4.18%Logloss 方面分别为 1.15%5.60% )。

    • 同时学习高阶特征交互和低阶特征交互,可以提高 CTR 预测模型的性能。DeepFM 优于仅学习低阶特征交互的模型(即 FM ),也优于仅学习高阶特征交互的模型(即 FNN、IPNN、OPNN、PNN* )。

      和第二好的模型相比,DeepFMCompany*Criteo 数据集上的 AUC 分别提高了 0.37%0.25%Logloss 方面分别为 0.42%0.29% )。

    • 同时学习高阶特征交互和低阶特征交互,并且对高阶特征交互和低阶特征交互共享 feature embedding ,可以提高 CTR 预测模型的性能。

      DeepFM 优于使用单独特征 embedding 来学习高阶特征交互和低阶特征交互的模型(即 LR & DNNFM & DNN )。和这两个模型相比,DeepFMCompany*Criteo 数据集上的 AUC 分别提高了 0.48%0.33%Logloss 方面分别为 0.61%0.66% )。

    总体而言,我们提出的 DeepFM 模型在 Company* 数据集上的 AUCLogloss 分别超过了竞争对手 0.37%0.42% 。事实上,离线 AUC 评估的小幅提升很可能会导致在线 CTR 的大幅提升。正如 Wide & Deep 报道的,相比较于 LRWide & Deep 离线 AUC 提高了 0.275%,但是在线 CTR 提高了 3.9%Company*’s App Store 每天的营业额为数百万美元,因此即使点击率提高几个百分点,每年也会带来额外的数百万美元。

7.2.2 超参数研究

  1. 我们在 Company* 数据集上研究了不同深度模型的不同超参数的影响,其中包括:激活函数、dropout 比率、每层神经元数量、隐层的层数、网络形状。

  2. 激活函数:根据论文 《 Product based neural networks for user response prediction》relutanhsigmoid 更适合深度模型。这里我们比较了 relutanh 激活函数,结果如下图所示。

    可以看到:几乎所有的深度学习模型中,relutanh 效果更好。但是 IPNN 是例外,可能原因是 relu 导致了稀疏性。

  3. dropout:我们将 dropout 设置为 [1.0, 0.9, 0.8, 0.7, 0.6, 0.5] ,结果如下图所示。当设置正确的 dropout 比例(从 0.6~0.9 )时,模型可以达到最佳性能。这表明向模型添加一定的随机性可以增强模型的鲁棒性。

  4. 每层的神经元数量:当其它超参数保持不变,增加每层的神经元数量会带来复杂性。

    如下图所示,增加神经元数量并不总是带来好处。例如,当每层神经元数量从 400 增加到 800 时,DeepFM 性能稳定,而 OPNN 的表现更差。这是因为过于复杂的模型很容易过拟合。在我们的数据集中,每层 200 ~ 400 个神经元是个不错的选择。

  5. 隐层的层数:如下图所示,一开始增加隐层的层数会提高模型性能。但是,如果隐层的层数不断增加,模型的性能就会下降。这种现象也是因为过拟合。

  6. 网络形状:我们测试了四种不同的网络形状:恒定形constant、递增形increasing、递减形decreasing、菱形diamond

    当我们改变网络形状时,我们固定隐层的数量和神经元总数。例如,当隐层的数量为 3、神经元总数为 600 时,四种不同形状的每层神经元数量为:恒定性 200 - 200 -200、递增形 100 - 200 - 300、递减形 300 - 200 - 100、菱形 150 - 300 - 150

    实验结果如下图所示,可以看到:恒定形网络在经验上优于其它三种形状,这与《Exploring strategies for training deep neural networks》 的研究结果一致。

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

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

发布评论

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