十六、DeepMCP[2019]

  1. 点击率 click-through rate: CTR预估是预测用户点击某个 item 的概率。它在在线广告系统中扮演着重要的角色。例如,广告排序策略通常取决于 CTR x bid,其中 bid 为广告的点击出价。此外,根据常见的 cost-per-click: CPC 扣费模式,广告主仅在用户点击广告之后才扣费。因此,为了最大限度地提高收入并保持理想的用户体验,准确预估广告的 CTR 至关重要。

    CTR 预估引起了学术界和工业界的广泛关注。例如:

    • 逻辑回归 Logistic Regression: LR 模型考虑了线性的特征重要性,并将预测的 CTR 建模为:y^=σ(b+w→⊤x→) ,其中 σ(⋅) 为 sigmoid 函数,w→ 为权重系数,b 为 bias,x→ 为特征向量。

    • 分解机 Factorization Machine: FM 模型进一步对 pairwise 特征交互interaction 进行建模。它将预估的 CTR 建模为:y^=σ(b+w→⊤x→+∑i∑j(v→i⊤v→j)×xixj),其中 v→i 为第 i 个特征的潜在 embedding 向量,xi 为第 i 个特征的取值。

    • 近年来,深度神经网络 Deep Neural Network: DNN 被广泛用于 CTR 预估和 item 推荐,从而自动学习特征 representation 和高阶特征交互。

    • 为了同时利用浅层模型和深层模型,人们还提出了混合模型。例如:

      • Wide & Deep 结合了 LR 和 DNN,从而提高模型的 memorization 和 generalization 能力。

      • DeepFM 结合了 FM 和 DNN ,从而进一步提高了学习特征交互的模型能力。

      • Neural Factorization Machine: NFM 结合了 FM 的线性和 DNN 的非线性。 尽管如此,这些模型仅考虑了 feature-CTR 关系,并且存在数据稀疏问题。论文 《Representation Learning-Assisted Click-Through Rate Prediction》 提出的 DeepMCP 模型额外考虑了 feature-feature 关系,例如如 user-ad 关系、ad-ad 关系,从而学习更多信息丰富的、统计可靠的特征representation ,最终提高 CTR 预估的性能。下图说明了DeepMCP(图 (b)) 和其它方法图 (a))的主要区别:

    • (a):经典的 CTR 预估方法建模 feature-CTR 关系。

    • (b):DeepMCP 进一步对 feautre-feature 关系进行建模,诸如 user-ad 关系(虚实线)、ad-ad 关系(点线)。

    注意:FM 模型中的特征交互仍然是建模 feature-CTR 关系。可以将其视为tow_features-CTR 关系,因为它建模了特征交互 v→i⊤v→jxixj 和 CTR y^ 的关系,但是并未建模两个特征representation v→i 和 v→j 是否应该彼此相似。其中 v→i 是第 i 个特征的 latent embedding 向量,xi 是第 i 个特征的取值。

    更具体而言,论文提出的 DeepMCP 模型包含三个部分:一个 matching subnet、一个 correlation subnet、一个 prediction subnet ,这也是 DeepMCP 模型名称的由来。这三个部分共享相同的 embedding 矩阵。

    • matching subnet 对 user-ad 的关系(即,广告是否匹配用户的兴趣)进行建模,并旨在学习有用的用户representation 和有用的广告 representation 。

    • correlation subnet 对 ad-ad 的关系(即,哪些广告位于用户点击序列的时间窗口内)进行建模,并旨在学习有用的广告 representation 。

    • prediction subnet 对 feature-CTR 关系进行建模,并旨在预测在给定所有特征的条件下的 CTR 。

    当这些 subnet 在目标label 的监督下联合优化时,学到的特征representation既具有良好的预测能力、又具有良好的表达能力。此外,由于同一个特征以不同的方式出现在不同的 subnet 中,因此学到的 representation 在统计上更加可靠。

    总之,论文的主要贡献是:

    • 论文提出了一种用于 CTR 预估的新模型 DeepMCP。与主要考虑 feature-CTR 关系的经典 CTR 预估模型不同,DeepMCP 进一步考虑了 user-ad 关系和 ad-ad 关系。

    • 论文对两个大规模数据集进行了大量实验,从而比较了 DeepMCP 和其它几个 state-of-the-art 模型的性能。论文还公开了 DeepMCP 的实现代码。

  2. 相关工作:

    • CTR 预估:CTR 预估引起了学术界和工业界的广泛关注。

      • 广义线性模型,如逻辑回归 Logistic Regression: LR 和 Follow-The-Regularized-Leader: FTRL 在实践中表现出不错的性能。然而,线性模型缺乏学习复杂特征交互的能力。

      • 分解机 Factorization Machine: FM 以被涉及特征的潜在向量 latent vector 的形式对 pairwise 特征交互建模。

      • Field-aware FM 和 Field-weighted FM 进一步考虑了特征所属 field 的影响,从而提高 FM 的性能。

      近年来,深度神经网络 Deep Neural Network 被广泛用于 CTR 预估和 item 推荐,以自动学习特征 representation 和高阶特征交互。

      • Factorization-machine supported Neural Network: FNN 在应用 DNN 之前预训练 FM。

      • Product-based Neural Network: PNN 在 embedding layer 和全连接层之间引入了 product layer。

      • Wide & Deep 结合了 LR 和 DNN,从而提高模型的 memorization 和 generalization 能力。

      • DeepFM 像 FM 一样对低阶特征交互进行建模,并像 DNN 一样对高阶特征交互进行建模。

      • Neural Factorization Machine: NFM 结合了 FM 的线性和神经网络的非线性。

      尽管如此,这些方法主要是对 feature-CTR 关系进行建模。我们提出的 DeepMCP 模型进一步考虑了 user-ad 和 ad-ad 的关系。

    • Multi-modal / Multi-task Learning:我们的工作也与多模态/多任务学习密切相关,其中引入了多种信息或辅助任务来帮助提高main task 的性能。

      • 《Collaborative knowledge base embedding for recommender systems》 利用知识库 knowledge base 中的异质信息 heterogeneous information(如结构化内容、文本内容、视觉内容)来提高推荐系统的质量。

      • 《Recommendation with multisource heterogeneous information》 除了利用经典的 item 结构信息之外,还利用文本内容和社交 tag 信息来改进推荐。

      • 《Improving entity recommendation with search log and multi-task learning》 引入上下文感知排序 context-aware ranking 作为辅助任务,以便更好地对实体推荐中的 query 语义进行建模。

      • 《Deep cascade multi-task learning for slot filling in online shopping assistant》 提出了一种多任务模型,该模型额外学习了 segment tagging 和 named entity tagging ,从而用于在线购物助手中的槽位 slot 填充。

      在我们的工作中,我们解决了一个不同的问题。我们引入了两个辅助的、但是相关的任务(即共享了 embedding 的 matching subnet和 correlation subnet)来提高 CTR 预估的性能。

16.1 模型

  1. 在线广告中点击率预估任务是估计用户点击特定广告的概率。下表展示了一些样本实例,每一行都是 CTR 预估的一个样本。其中第一列是 label(点击是 1、未点击是 0)。每个样本可以用多个 field 来描述,例如用户信息field(用户 ID、城市等)和广告信息 field(创意ID、标题等)。field 的实例化对应了一个特征。

    与大多数主要考虑 feature-CTR 关系的现有 CTR 预估模型不同,我们提出的 DeepMCP 模型额外考虑了 user-ad 和 ad-ad 关系。DeepMCP 包含三个部分:一个 matching subnet、一个 correlation subnet、一个 prediction subnet ,如下图 (a) 所示。当这些 subnet 在目标label 的监督下联合优化时,学到的特征representation既具有良好的预测能力、又具有良好的表达能力。

    DeepMCP 的另一个特点是:尽管在训练过程中所有 subnet 都处于活跃状态,但是在测试过程中只有 prediction subnet 处于活跃状态,如下图 (b) 所示。这使得测试阶段变得相当简单和高效。

  2. 我们将特征分为四组:用户特征(如用户 ID、年龄)、query 特征(如 query、query category )、广告特征(如创意ID、广告标题)、其它特征(如一天中的小时、星期)。每个 subnet 使用不同的特征集合。具体而言:prediction subnet 使用所有四组特征,matching subnet 使用 user, query, ad 三组特征,correlation subnet 仅使用 ad 特征。所有 subnet 共享相同的 embedding 矩阵。

    注意:Context ad features 和 Negative ad features 是 correlation subnet 中,位于用户点击序列的时间窗口内上下文广告、以及窗口外的负采样广告。它们仅用于 correlation subnet 。

  3. DeepMCP 的整体结构如下图所示,所有的subnet 共享相同的 embedding 矩阵。

16.1.1 Prediction Subnet

  1. prediction subnet 这里是一个典型的 DNN 模型,它对 feature-CTR 关系进行建模(其中显式地或隐式地对特征交互进行建模)。它旨在在目标 label 的监督下,根据所有特征预估点击率。尽管如此,DeepMCP 模型非常灵活,可以使用任何其它CTR 预估模型来代替prediction subnet,如 Wide & Deep、DeepFM 等。

    prediction subnet 的整体结构为:

    • 首先,单个特征 xi∈R (如用户ID)通过一个 embedding 层,然后映射到对应的embedding 向量 e→i∈RK ,其中 K 为 embedding 向量维度,e→i 为待学习的参数。

      假设特征 xi 的取值集合规模为 N ,则这个特征所有 embedding 的集合构成一个 embedding 矩阵 E∈RN×K 。

      注意:

      • 这里假设所有特征都是离散的。如果存在连续值的特征,则需要首先对其进行离散化。

      • 对于多类别的离散特征(如广告标题中的 bi-gram,一个广告标题可能包含多个 bi-gram),我们首先将每个 bi-gram 映射到一个 embedding 向量,然后再执行一个 sum pooling 从而得到广告标题的、聚合后的 embedding 向量。

    • 接着,我们将样本的所有特征的 embedding 向量拼接为一个长的向量 m→ 。然后向量 m→ 经过若干层全连接层fully connected:FC 层(带有 ReLU 非线性激活函数),从而学到高阶的非线性特征交互。

    • 最后,最后一层 FC 层的输出 z→ 通过一个 sigmoid 函数从而得到预估的 CTR:

      y^=11+exp⁡[−(w→⊤z→+b)]

      其中 w→,b 都是待学习的模型参数。

    为缓解过拟合,我们在每个 FC 层之后都应用了 dropout。

  2. prediction subnet 的损失函数为训练集的交叉熵:

    Lp=−1n∑i=1n[yilog⁡y^i+(1−yi)log⁡(1−y^i)]

    其中:n 为训练样本的数量; yi∈{0,1} 为第 i 个样本是否点击的真实label;y^i 为第 i 个样本预估的CTR 。

16.1.2 Matching Subnet

  1. matching subnet 对 user-ad 的关系(即,广告是否匹配用户的兴趣)进行建模,并旨在学习有用的用户representation 和有用的广告 representation 。它的灵感来自于网络搜索的语义匹配模型semantic matching model 。

  2. 在推荐系统的经典矩阵分解中,rating score 近似为用户ID 潜在向量和item ID 潜在向量的内积。在我们的问题中,我们没有直接 match 用户 ID 和广告ID,而是在更高级别上进行了 match ,并结合了关于用户的所有特征、关于广告的所有特征。

    当用户点击广告时,我们假设所点击的广告至少部分和用户需求相关(考虑到用户提交的 query,如果有的话)。因此,我们希望用户特征(和query 特征)的 representation 和广告特征的 representation 相匹配。

    具体而言,matching subnet 包含两个部分:

    • 用户部分 user part:用户部分的输入是用户特征(如用户ID、年龄)和 query 特征(如 query、query category)。

      像在 prediction subnet 中一样,单个特征 xi∈R 首先经过 embedding 层,然后映射为对应的 embedding 向量 e→i∈RK 。然后我们将单个用户 u 的多种特征的 embedding 拼接为长向量 m→u∈RNu ,其中 Nu 为长向量的维度。

      然后向量 m→u 经过若干层全连接层fully connected:FC 层(带有 ReLU 非线性激活函数),从而学到高阶的非线性特征交互。对于最后一个 FC 层,我们使用 tanh 非线性激活函数(而不是 ReLU),我们后面解释这么做的原因。

      用户部分的输出是一个 high-level 的用户 representation 向量 v→u∈RM ,其中 M 为向量维度。

    • 广告部分 ad part:广告部分的输入是广告特征(如广告ID、广告标题)。

      同样,我们首先将每个广告特征映射到对应的 embedding 向量,然后将单个广告 a 的多种特征的 embedding 拼接为长向量 m→a∈RNa ,其中 Na 为长向量的维度。

      然后向量 m→a 经过若干层全连接层fully connected:FC 层(带有 ReLU 非线性激活函数),从而得到一个 high-level 的广告 representation 向量 v→a∈RM 。同样地,对于最后一个 FC 层,我们使用 tanh 非线性激活函数(而不是 ReLU)。

    注意:通常用户部分、广告部分的输入具有不同的特征维度,即 Nu≠Na 。因为用户特征和广告特征的类别、数量通常都不相等。但是,经过 matching subnet 之后,v→u 和 v→a 具有相同的维度 M 。换句话讲,我们将两组不同的特征投影到一个公共的低维空间中。

    然后我们通过下式计算 matching score s为:

    s(v→u,v→a)=11+exp⁡(−v→u⊤v→a)

    我们并没有使用 ReLU 作为最后一个 FC 层的激活函数,因为 ReLU 之后的输出将包含很多零,这使得 v→u⊤v→a→0 。

    注意:前面 prediction subnet 最后一个 FC 层仍然采用 ReLU,因为其输出为 z→ 是和模型参数 w→ 进行内积。 w→⊤z→ 为零的概率远小于 v→u⊤v→a 。

  3. 至少有两种选择来建模 matching score:

    • point-wise 模型:当用户 u 点击广告 a 时,则 s(v→u,v→a)→1 ;当用户 u 未点击广告 a 时,则 s(v→u,v→a)→0 。

    • pair-wise 模型:如果用户 u 点击了广告 ai 但是未点击广告 aj ,则 s(v→u,v→ai)>s(v→u,v→aj)+δ ,其中 δ>0 为 margin 超参数。

    这里我们选择 point-wise 模型,因为它可以直接将训练数据集重新用于 prediction subnet 。我们将 matching subnet 的损失函数定义为:

    Lm=−1n∑i=1n[y(u,a)log⁡s(v→u,v→a)+(1−y(u,a))log⁡(1−s(v→u,v→a))]

    其中:n 为样本数量;如果用户 u 点击广告 a 则 y(u,a)=1 ,否则 y(u,a)=0 。

  4. matching subnet 也是采用是否点击作为label,这和 prediction subnet 完全相同。二者不同的地方在于:

    • matching subnet 是 uv 粒度,而 prediction subnet 是 pv 粒度。

    • matching subnet 通过representation 向量的内积来建模用户和广告的相关性,用户信息和广告信息只有在进行内积的时候才产生融合。而 prediction subnet 直接建模点击率,用户信息和广告信息在 embedding layer 之后就产生融合。

16.1.3 Correlation Subnet

  1. correlation subnet 对 ad-ad 的关系(即,哪些广告位于用户点击序列的时间窗口内)进行建模,并旨在学习有用的广告 representation 。在我们的问题中,由于用户的点击广告构成了随时间推移的、具有一定相关性的序列,因此我们使用 skip-gram 模型来学习有用的广告representation 。

    给定单个用户点击广告的广告序列 {a1,a2,⋯,aL} ,我们最大化平均对数似然:

    ll=1L∑i=1L∑−C≤j≤Clog⁡p(ai+j∣ai)

    其中: L 是广告序列长度,C 为上下文窗口大小。

  2. 概率 p(ai+j∣ai) 可以通过不同的方式进行定义,例如 softmax、层次 softmax、负采样。由于负采样的效率高,我们选择负采样技术将 p(ai+j∣ai) 定义为:

    p(ai+j∣ai)=σ(h→ai+j⊤h→ai)∏q=1Qσ(−h→aq⊤h→ai)

    其中:

    • Q 为负采样的广告数,σ(⋅) 为 sigmoid 函数。

    • h→ai 为广告 ai 的 high-level representation,它涉及广告 ai 的所有特征,并经过多个 FC 层。

  3. correlation subnet 的损失函数为负的对数似然:

    Lc=1L∑i=1L∑−C≤j≤C[−log⁡[σ(h→ai+j⊤h→ai)]−∑q=1Qlog⁡[σ(−h→aq⊤h→ai)]]

    考虑所有用户的 Lc 则得到 correlation subnet 总的损失。

16.1.4 其它

  1. 离线训练过程:DeepMCP 的最终联合损失函数为:

    L=Lp+αLm+βLc

    其中 α,β 为超参数,它们平衡了不同 subnet 的重要性。

    DeepMCP 通过在训练集上最小化联合损失函数来训练。由于我们的目标是最大化 CTR 预估性能,因此训练过程中我们在独立的验证集上评估模型,并记录验证 AUC。最佳模型参数在最高的验证 AUC 处获得。

  2. 在线预测过程:DeepMCP 模型仅需要计算预估的点击率pCTR,因此只有prediction subnet 处于活跃状态。这使得 DeepMCP 的在线预测阶段相当简单和高效。

16.2 实验

  1. 数据集:我们使用两个大型数据集:

    • Avito 广告数据集:数据集包含来自俄罗斯最大的通用分类网站 avito.ru 的广告日志的随机样本。我们将 2015-04-28 ~ 2015-05-18 的广告日志用于训练、2015-05-19 的广告日志用于验证、2015-05-20 的广告日志用于测试。

      在 CTR 预估中,测试通常是第二天的预测,这里测试集包含 2.3×106 个样本。用到的特征包括:用户特征(如用户 ID、IP ID 、用户浏览器、用户设备)、query 特征(如query、 query category、query 参数)、广告特征(如广告ID、广告标题、广告cateogry)、其它特征(如 hour of day、day of week )。

    • Company 广告数据集:数据集包含来自阿里巴巴商业广告系统的广告曝光日志和点击日志的随机样本。我们使用 2018 年八月到九月连续30 天的日志用于训练,下一天的日志用于验证、下下一天的日志用于测试。

      测试集包含 1.9×106 个样本。用到的特征也包括用户特征、query 特征、广告特征、其它特征。

  2. baseline 方法:我们使用以下 CTR 预估的 baseline 方法:

    • LR:逻辑回归方法。它是线性模型,建模了特征重要性。

    • FM:因子分解机。它同时对一阶特征重要性和二阶特征交互进行建模。

    • DNN:深度神经网络,它包含一个 embedding 层、几个 FC 层、一个输出层。

    • Wide & Deep:它同时结合了 LR(wide 部分)、DNN(deep 部分)。

    • PNN:product-based 神经网络,它在 DNN 的 embedding 层和 FC 层之间引入了一个乘积层production layer 。

    • DeepFM:它结合了 FM(wide 部分)、DNN(deep 部分)。

    • DeepCP:DeepMCP 模型的一种变体,仅包含 correlation subnet 和 prediction subnet 。它等价于在联合损失函数中设置 α=0 。

    • DeepMP:DeepMCP 模型的一种变体,仅包含 matching subnet 和 prediction subnet 。它等价于在联合损失函数中设置 β=0 。

  3. 实验配置:

    • 考虑到每个特征的取值范围很广,因此我们设置每个特征的维度 K=10 ,从而防止 embedding 矩阵规模太大。

    • 对于基于神经网络的模型,我们设置全连接层的层数为 2、维度分别为 512 和 256 。

    • 我们设置 batch size=28,上下文窗口大小 C=2 ,负采样广告数量为 Q=4 ,dropout rate=0.5 。

    • 所有这些方法都在 tensorflow 中实现,并通过 Adagrad 算法进行优化。

  4. 评估指标:测试 AUC (越大越好)、测试 logloss (越小越好)。

  5. 实验结果如下表所示,可以看到:

    • FM 性能要比 LR 好得多,这是因为 FM 建模了二阶特征交互,而 LR 仅建模一阶的特征重要性。

    • DNN 性能进一步优于 FM,因为它可以学习高阶非线性特征交互。

    • PNN 优于 DNN,因为它进一步引入了 production layer。

    • Wide & Deep 进一步优于 PNN,因为它结合了 LR 和 DNN,从而提高了模型的记忆memorization 能力和泛化generalization 能力。

    • DeepFM 结合了 FM 和 DNN,它在 Avito 数据集上优于 Wide & Deep,但是在 Company 数据集上性能稍差。

    • DeepCP 和 DeepMP 在两个数据集上都超越了表现最好的 baseline 。

      由于 baseline 方法仅考虑单个CTR 预估任务,因此这些观察结果表明:考虑额外的 representation learning 任务可以帮助更好地执行 CTR 预估。

    • 还可以观察到 DeepMP 的性能比 DeepCP 更好,这表明:matching subnet 要比 correlation subnet 带来更多的好处。

      这是可以理解的,因为 matching subnet 同时考虑了用户和广告,而 correlation subnet 仅考虑了广告。

    • DeepMCP 在这两个数据集上均表现最佳,这些证明了 DeepMCP 的有效性。

  6. 超参数 α,β 的影响:下图分别给出了 α,β 超参数对于DeepMCP 测试 AUC 的影响,其中 Pred 表示 DNN、Pred+Corr 表示DeepCP、Pred+Match 表示 DeepMP 。可以看到:

    • 当超参数 α 或者 β 开始增加时,测试AUC 开始提升;当 α 或者 β 继续增加时,测试 AUC 开始下降。

    • 在 Company 数据集上,较大的 β 可能导致非常差的性能,甚至比单纯的 DNN 更差。

    • 总体而言,matching subnet 比 correlation subnet 带来更大的测试 AUC 提升。

  7. 隐层维度的影响:下图给出了两层隐层的模型中,测试 AUC 和隐层维度的关系。为了方便阅读,我们仅展示了 DNN, Wide & Deep, DeepMCP 的结果。我们使用收缩结构,其中第二层维度为第一层维度的一半。第一层维度选择从 128 增加到 512 。

    可以看到:当隐层维度增加时,测试 AUC 通常会提升;但是当维度进一步增加时,测试 AUC 可能会下降。这可能是因为训练更复杂的模型更加困难。

  8. 隐层数量的影响:我们对比了不同深度的模型的效果。为了方便阅读,我们仅展示了 DNN, Wide & Deep, DeepMCP 的结果。我们分别使用一层([256])、两层([512, 256])、三层([1024, 512, 256])、四层([2048, 1024, 512, 256])。

    可以看到:

    • 当隐层数量从1 层增加到 2 层时,模型性能通常会提高。这是因为更多的隐层具有更好的表达能力。

    • 但是当隐层数量进一步增加时,性能就会下降。这是因为训练更深的神经网络更加困难。

十七、DMR[2020]

  1. Matching 和 Ranking 是推荐系统中信息检索的两个经典阶段。

    • matching 阶段(又称作候选生成 candidate generation)通过将 user 和 item 进行 matching ,从而从整个item 集合中检索一小部分候选对象candidate。

      基于协同过滤的方法被广泛用于计算 user-to-item 的相关性,并选择最相关的item 。

    • ranking 阶段通过 ranking 模型为不同 matching 方法生成的候选者打分,并将 top-N 打分的 item 呈现给最终用户。

    用户点击是推荐系统中非常重要的评估指标,它是所有后续转化行为的基础。click-through rate: CTR 的预估已经引起了学术界和工业界的广泛关注。

    个性化personalization 是提高CTR预估性能和提升用户体验的关键。已经提出了很多基于深度学习的方法来进行CTR 预估,这些方法可以学习隐式特征交互并提升模型容量capability 。这些方法大多数都关注于设计自动特征交互的网络结构。

    最近,有人提出了几种模型来从点击、购买之类的用户行为数据中提取用户兴趣,这对于用户没有明确显示其兴趣的推荐配置setting而言非常重要。为了表示用户的兴趣,这些模型考虑了用户交互的 item 和目标 item 之间的 item-to-item 相关性。

    但是,这些模型主要聚焦于用户 representation,而忽略了表达 user-to-item 相关性。user-to-item 相关性直接衡量了用户对目标 item 的个性化偏好,并在基于协同过滤的 matching 方法中精心建模。

    基于这些观察,论文 《Deep Match to Rank Model for Personalized Click-Through Rate Prediction》提出了一种新的模型,称作 Deep Match to Rank: DMR 。该模型将协同过滤的思想和 matching 思想相结合,用于 CTR 预估的 ranking 任务,从而提高了 CTR 预估的性能。

    DMR 包含 User-to-Item Network 和 Item-to-Item Network 这两个子网来代表 user-to-item 的相关性。

    • 在 User-to-Item Network ,论文通过embedding 空间中 user embedding 和 item embedding 的内积来表达用户和 item 之间的相关性。其中 user embedding 是从用户行为中抽取而来。

      考虑到最近的行为可以更好地反映用户的时间的兴趣temporal interest ,论文应用注意力机制来自适应地学习每种行为在行为序列中的权重,并考虑行为在序列中的位置position 。

      同时,论文提出一个辅助的match 网络 auxiliary match network 来推动更大larger 的内积从而代表更高的相关性,并帮助更好地拟合 User-to-Item Network 。

      辅助 match 网络可以视为一种 match 方法,其任务是根据用户的历史行为来预测下一个要点击的 item ,然后论文在 DMR 中共同训练 matching 模型和 ranking 模型。据作者所知,DMR 是第一个在 CTR 预估任务中联合训练matching 和 ranking 的模型。

    • 在 Item-to-Item Network,论文首先计算用户交互item 和目标 item 之间的 item-to-item 相似度,其中采用考虑了位置信息position information 的注意力机制。然后论文将item-to-item 相似性相加,从而获得了另一种形式的 user-to-item 相关性。

      注意,一般而言在 matching 阶段,候选者通常是通过多种 matching 方法生成的,以满足用户需求的多样性,并且不同方法之间的 user-to-item 相关性得分是不可比的not comparable 。但是在 DMR 中,可以以统一的方式将相关性强度进行比较。

    论文的主要贡献:

    • 论文指出捕获用户和 item 之间相关性的重要性,这可以使 CTR 预估模型更加个性化和有效。受此启发,论文提出了一种称作 DMR 的新模型,该模型在 mathcing 方法中应用协同过滤的思想,通过 User-to-Item 和 Item-to-Item Network 来表示相关性。

    • 论文设计了辅助 match 网络,可以将其视为 mathcing 模型,从而帮助更好地训练 User-to-Item Network。据作者所知,DMR 是第一个在 CTR 预估模型中联合训练 matching 和 ranking 的模型。

    • 考虑到最近的行为对用户的动态兴趣贡献更大temporal interest ,论文在注意力机制中引入 positional encoding 来自适应地学习每个行为的权重。

    • 论文在公共数据集和工业数据集上进行了广泛的实验,证明了所提出的 DMR 比 state-of-the-art 的模型有着显著提升。

  2. 相关工作:

    • 特征交互:最近,基于深度学习的 CTR 预估模型备受关注并取得了显著的效果。与传统的线性模型相比,基于深度学习的方法可以增强模型容量 capability,并且通过非线性变换学习隐式特征交互。通过从高维稀疏特征中学习低维representation ,深度模型对罕见的特征组合有更好的估计estimation 。

      然而,实际应用中高维稀疏特征带来了很大的挑战:深度模型可能会过拟合overfit 。基于此,人们提出了不同的模型,以便更好地对特征交互进行建模,提高 CTR 预估的性能。

      • Wide & Deep 通过联合训练线性模型和非线性深度模型,从而结合了二者的优势。

      • Deep Crossing 应用深度残差网络来学习交叉特征。

      • PNN 在 embedding layer 和全连接层之间引入一个 product layer,从而探索高阶特征交互。

      • AFM 基于对二阶特征交互建模的分解机 factorization-machine: FM,通过注意力机制来学习加权的特征交互。

      • DeepFM 和 NFM 通过将 FM 与深度网络相结合,从而结合了低阶特征交互和高阶特征交互。

      • DCN 引入了 cross network 来学习某种有界阶次bounded-degree 特征交互。

      在 DMR 模型中,user-to-item 相关性的 representation 可以视为用户和 item 之间的一种特征交互。

    • 用户行为特征:和搜索排序search ranking 不同,在推荐系统和许多其他application 中,用户并没有清楚地表明他们的意图。因此,从用户行为中捕获用户兴趣对于 CTR 预估至关重要,而上述模型对此关注较少。

      • 可变长度的用户行为特征通常通过简单的均值池化转变为固定长度的向量,这意味着所有行为都同等重要。

      • DIN 通过加权 sum 池化来表示用户兴趣,其中每个用户行为相对于目标 item 的权重通过注意力机制自适应学习。

      • DIEN 不仅提取用户兴趣,而且建模兴趣的动态演变temporal evolution 。

      • DSIN 利用行为序列中的会话信息来建模兴趣演变。

      在DMR 模型中,受 Transformer 的启发,论文将 positional encoding 引入注意力机制从而捕获用户的动态兴趣temporal interest 。

    • user-to-item 相关性:尽管取得了很大进展,但是这些方法侧重于用户 representation,而忽略了 user-to-item 相关性的表达,而后者直接衡量了用户对目标 item 的偏好强度。在提出的 DMR 中,论文关注表达 user-to-item 的相关性,从而提高个性化 CTR 模型的性能。

      • 基于协同过滤 collaborative filtering: CF 的方法在构建推荐系统的 matching 阶段非常成功。在这些方法中,item-to-item CF 因其在实时个性化方面的可解释性和效率而被广泛应用于工业推荐 setting 。通过预先计算好 item-to-item 的相似度矩阵,系统可以向用户推荐与该用户历史点击item 相似的 item。

        为了计算 item-to-item 相似度,早期的工作侧重于统计量,例如余弦相似度和 Pearson 系数。基于深度学习的方法 NAIS 采用带注意力机制的 item-to-item CF,从而区分用户不同行为的重要性,这与 DIN 有相似的想法。

        item-to-item CF 可以视为获取 user-to-item 相关性的间接方法。

      • 和 item-to-item CF 不同,基于矩阵分解的 CF 方法通过在低维空间中计算 user representation 和 item representation 的内积来直接计算user 和 item 相关性。以类似的基于内积的形式,人们提出了基于深度学习的方法来从用户的历史行为中学习 user representation ,这可以看作是矩阵分解技术的非线性泛化。

        《Deep neural networks for youtube recommendations》 将 matching 视为极端多分类问题,其中点击预估问题变成了根据用户的历史行为准确地分类用户接下来将要点击的 item 。

        《Session-based recommendations with recurrent neural networks》 将 GRU 应用到基于会话的推荐任务。

        TDM 使用 tree-based 方法来超越基于内积的方法。

      在DMR 模型中,一方面论文使用 user representation 和 item representation 之间的内积来获得一种 user-to-item 的相关性;另一方面论文应用注意力机制来表示 item-to-item 的相似性,并进一步基于这种相似性来获得另一种 user-to-item 的相关性。

17.1 模型

  1. 这里我们详细介绍 Deep Match to Rank:DMR 模型的设计。

    • 首先我们从两个方面概述了基于深度学习的 CTR 模型的基本结构:特征表示feature representation、多层感知机multiple layer perceptron: MLP 。

    • 然后我们介绍建模 user-to-item 相关性的、带有两个子网的 DMR 的总体结构。

17.1.1 Feature Rpresentation

  1. 我们的推荐系统中包含四类特征:

    • 用户画像User Profile:包含用户 ID、消费水平等等。

    • Target Item 特征:包括item ID、category ID 等等。

    • 用户行为 User Behavior:是用户交互的 item 形成的 item 序列。

    • 上下文 Context:包含时间、matching 方法、以及对应的 matching score 等。

    大多数特征都是离散型特征,可以将其转换为高维的 one-hot 向量。在基于深度学习的模型中,one-hot 向量通过 embedding layer 转换为低维稠密特征。

    例如,item ID 的 embedding 矩阵可以表示为:V=[v→1,⋯,v→K]∈RK×dv,其中: K 为item 集合的大小,dv 为 embedding 向量维度,v→j∈Rdv 为第 j 个 item 的 embedding 向量。

    无需在 one-hot 向量和 embedding 矩阵之间进行复杂的矩阵乘法,embedding layer 通过查表 look up table 就可以获取 embedding 向量。

  2. 我们将离散特征 embedding 和 normalized 的连续特征拼接起来,其中:用户画像User Profile 的拼接特征为 x→p、用户行为User Behavior 的拼接特征为 x→b 、Target Item 的拼接特征为 x→t 、上下文Context的拼接特征为 x→c 。

    注意,用户行为序列包含很多个item,因此用User Behavior 的特征是由这些item 的特征向量列表拼接而成 x→b=[e→1||⋯||e→T]∈R(Tde)×1 ,其中:

    • T 为用户行为序列的长度,由于不同用户的行为序列长度不同,因此 T 是可变的。

    • e→t∈Rde 为第 t 个行为的特征向量,de 为对应的维度,|| 表示向量拼接。

    User Behavior 特征和 Target Item 特征位于相同的特征空间,并共享相同的 embedding 矩阵以降低内存需求。

  3. 注意:e→t 是用户第 t 个行为的特征向量,它其实是第 t 个产生行为的item 的 representation。它和 v→j 不同:v→j 仅仅是 item ID 的 embedding 向量,而 e→t 可能包括 item ID 和 cate ID 等embedding 向量的拼接。

17.1.2 MLP

  1. 所有特征向量拼接起来构成样本的完整representation 之后,将representation 灌入 MLP 。MLP 隐层的激活函数为 PRelu,最终输出层采用 sigmoid 激活函数从而用于二分类任务。

    • MLP 输入的长度需要固定,因此需要将User Behavior 特征向量 x→b 进行池化从而转换为固定长度的特征向量。

    • 交叉熵损失函数通常和 sigmoid 函数一起使用,其对数函数可以抵消 sigmoid 函数中指数的副作用。给定样本 (x→,y) ,其中 y∈{0,1} 为标签,x→=[x→p||x→b||x→t||x→c] 为样本特征,则损失函数为:

      Ltarget=−1N∑(x→,y)∈D[ylog⁡f(x→)+(1−y)log⁡(1−f(x→))]

      其中 D 为训练集,N 为总的样本数量, f(x→) 为 MLP 的预测输出的点击概率。

17.1.3 DMR

  1. 基于深度学习 CTR 模型的basic 结构很难通过隐式特征交互来捕获用户和 item 的相关性。在 DMR 中,我们提出了两个子网,即 User-to-Item Network 、Item-to-Item Network,从而建模 user-to-item 相关性,进而可以提高个性化 CTR 模型的性能。

    DMR 结构如下图所示:

    • 输入特征向量是嵌入embedded 的离散特征、和正则化normalized 的连续特征的拼接。

    • DMR 使用两个子网( User-to-Item Network 、Item-to-Item Network)以两种形式来建模 user-to-item 相关性。

    • 两种形式的 user-to-item 相关性、用户的动态兴趣temporal interest的 representation 、以及其它所有特征向量拼接起来,然后馈入到 MLP 中。

    最终损失由 MLP 的 target loss 和辅助的 match network loss 组成。

a. User-to-Item Network
  1. 遵循基于矩阵分解的 matching 方法中的representation 形式,User-to-Item Network 通过user representation 和 item representation 的内积来建模用户和目标 item 之间的相关性,这可以视作用户和 item 之间的一种特征交互。

  2. 为获得user representation,我们求助于 User Behavior 特征。用户不会在推荐场景中明确展现其兴趣,而用户行为则隐式地反映了用户兴趣。

    表达用户兴趣的一种朴素方法是:对用户行为特征使用均值池化。这种方法认为每种行为对于最终用户兴趣做出同等贡献。

    但是,用户的兴趣可能会随着时间而变化。在这种情况下,最近的行为可能会更好地反映用户的时间 temporal 兴趣。根据发生的时刻为每个行为分配权重可以缓解该问题,但是也很难找到最佳权重。

    在 User-to-Item Network 中,我们使用位置编码作为 query 的注意力机制来自适应地学习每个行为的权重,其中用户行为的位置position 是行为序列中按发生时间排序的序列编号。数学描述为:

    at=z→⊤tanh⁡(Wpp→t+Wee→t+b→)αt=exp⁡(at)∑i=1Texp⁡(ai)

    其中:

    • p→t∈Rdp 为第 t 个位置 embedding。

    • e→t∈Rde 为第 t 个行为的特征向量。

    • Wp∈Rdh×dp,We∈Rdh×de,b→∈Rdh,z→∈Rdh 为待学习的参数。

    • αt 为第 t 个行为的归一化权重。

    通过加权的 sum 池化,我们将 User Behavior 特征向量 x→b 映射到固定长度的特征向量,然后由全连接层进行转换以匹配 item representation 的维度 dv 。

    最终用户的 representation u→∈Rdv 的公式为:

    u→=g(∑t=1Tαte→t)=g(∑t=1Th→t)

    其中:

    • g(⋅) 表示非线性的映射,其输入维度为 de、输出维度为 dv 。

    • h→t=αte→t 表示第 t 个行为的加权特征向量。

    这里的 attention 计算的是基于 positional embedding 计算不同位置的、归一化的重要性。这里没有考虑 target item 的重要性,因为计算 user representation 时不会融合 item representation 信息。

  3. 这里的attention 网络有三个细节,为简化起见我们忽略了它们:

    • 首先,可以添加更多的隐层从而具有更好的representation。

    • 其次,除了位置编码之外,还可以将更多的、反映用户兴趣强度的上下文特征添加到 attention 网络中,例如行为类型(如点击、购买、收藏)、停留时长等。在这些特征中,位置在我们的应用中影响力最大。

    • 第三,以行为发生时间的倒序对位置进行编码,从而确保最近的行为获得第一个位置。

  4. 尽管 RNN 擅长处理序列数据,尤其是在 NLP 任务中,但是它不适合建模用户行为序列。和严格遵循某些规则的文本不同,用户行为序列是不确定的 uncertain,并且可能会受到呈现给用户的内容的影响。如果没有特殊设计的结构,那么 RNN 很难提高预测效果。

    此外,串行计算的 RNN 给在线 serving 系统带来了挑战。

  5. 目标 item 的 representation v→′∈Rdv 直接从 embedding 矩阵 V′=[v→1′,v→2′,⋯,v→K′]∈RK×dv 中查找look up 。其中 V′ 是针对target item 的一个独立的 embedding 矩阵,它不是和 embedding 矩阵 V 共享。

    为区分这两个 embedding 矩阵,我们称 V 为Target Item 的 input representation、称 V′ 为Target Item 的 output representation 。尽管这种方式增加了存储空间,但是与 V 和 V′ 相同的方式相比,模型仅仅是将 embedding 大小增加了一倍,而模型具有更强的表达能力。我们将在实验部分验证该结论。

  6. 得到用户representation u→ 和目标 item 的 representation v→′ 之后,我们使用向量内积来表示用户和 item 的相关性:

    r=u→⊤v→′

    我们预期更大的 r 代表更强的相关性,从而对点击预测产生积极的影响。

    但是,从反向传播的角度来看,仅通过点击标签的监督来确保这一点并不容易。此外,embedding 矩阵 V′ 中参数的学习完全依赖于相关单元 relevance unit r 。有鉴于此,我们提出了一个辅助match 网络,该网络从用户行为中引入label,从而监督 User-to-Item Network 。

  7. 辅助 match 网络的任务是基于之前的 T−1 个行为来预测第 T 个行为,这是一个极端extreme 的多分类任务。

    遵从前文中用户 representation u→ 的形式,我们可以从用户的前 T−1 个行为中获取用户 representation ,记作 u→T−1∈Rdv 。则用户具有前面 T−1 个行为的前提下,对 item j 产生第 T 个行为的概率为:

    pj=exp⁡(u→T−1⊤v→j′)∑i=1Kexp⁡(u→T−1⊤v→i′)

    其中 v→j′∈Rdv 为第 j 个 item 的 output representation 。因此,针对target item 的 output representation V′∈RK×dv 可以视为 softmax layer 的参数。

    通过使用交叉熵损失函数,则我们得到辅助 match 网络的损失为:

    Laux=−1Nm∑i=1Nm∑j=1Kyjilog⁡(pji)

    其中:

    • Nm 为辅助 match 网络的样本数量, K 为总的item 数量。

    • yji∈{0,1} 表示辅助 match 网络的样本 i 的target item 是否为第 j 个 item 。yji=1 当且仅当第 i 个用户的行为序列中,最后一个 item 为 item j 时成立。

    • pji 表示辅助 match 网络的样本 i 的target item 为第 j 个 item 的预测概率。

    然而上式中的 pj 计算代价很高,这和item 总数 K 成正比。为了有效训练具有百万类别的分类任务,我们采用了负采样技术。我们将带负采样的辅助match 网络损失函数定义为:

    LNS=−1Nm∑i=1Nm[log⁡σ(u→T−1⊤v→o′)+∑j=1klog⁡σ(−u→T−1⊤v→j′)]

    其中: σ(⋅) 为 sigmoid 函数;v→o′ 为正样本,v→j′ 为负采样的负样本;k 为负采样数量,它远远小于 K 。

    最终的损失函数为:

    Lfinal=Ltarget+βLNS

    其中 β 为一个超参数,用于平衡这两部分损失。

  8. 通过从User Behavior 中引入标签,辅助match 网络可以推动更大的 r 来表示更强的相关性,并帮助更好地训练 embedding 矩阵 V′ 和其它参数。

  9. 理解 User-to-Item Network 的另一种方法是:在统一模型中共同训练 ranking 模型和 matching 模型,其中 matching 模型是辅助 match 网络。

    在 matching 阶段,候选者是通过多路match 来生成,其中每一路match 之间的分数不可比not comparable ,每个候选者仅具有对应 matching 方法的相关性得分。

    和仅将 matching score 作为特征馈入 MLP 不同,User-to-Item Network 能够在给定任务 Target Item 的情况下获得 user-to-item 相关性得分,并且相关性以统一的方式可比comparable 。

b. Item-to-Item Network
  1. 除了直接计算 user-to-item 相关性之外,我们还提出了 Item-to-Item Network 以间接方式来表达相关性。

    首先我们建模用户交互的 item 和 target item 之间的相似性similarity ,然后对这些相似性相加从而得到另一种形式的user-to-item 相关性relevance 。

  2. 为了使得相关性的 representation 更具有表达性,我们使用 attention 机制(而不是 User-to-Item Network 中的内积)来建模 item-to-item 相似性。

    给定用户交互的 item、target item、位置编码作为输入,item-to-item 相似性的公式为:

    a^t=z→^⊤tanh⁡(W^ce→c+W^pp→t+W^ee→t+b→^)

    其中:

    • e→c∈Rde 为 target item 的特征向量, p→t∈Rdp 为第 t 个位置 embedding ,e→t∈Rde 为第 t 个行为的特征向量。

    • W^c∈Rdh×de,W^p∈Rdh×dp,W^e∈Rdh×de,b→^∈Rdh,z→^∈Rdh 都是待学习的参数。

    用户行为和 target item 之间的 item-to-item 相似性之和构成了另一种类型的 user-to-item 相关性:

    r^=∑t=1Ta^t

    通过加权的 sum 池化,UserBehavior 特征 x→b 被转换为固定长度的特征向量 u→^ ,从而构成了与目标相关的动态兴趣表示:

    α^t=exp⁡(a^t)∑i=1Texp⁡(a^i),u→^=∑t=1Tα^te→^t

    其中 α^t 为第 t 个行为的归一化权重。

    注意:计算 r^ 的过程中并未进行归一化。因为归一化之后的注意力系数之和恒为 1.0 。

    和用户representation u→ 不同,目标相关的用户 representation u→^ 针对不同的target item 有所不同。通过注意力机制的局部激活能力,和目标 item 相关的行为的权重更高,并且主导了目标相关的用户 representation u→^ 。

  3. 两种类型的 user-to-item 相关性 r,r^ 、以及用户动态兴趣 u→^ 将和其它输入特征向量拼接起来从而馈入 MLP。MLP 的最终输入为:c→=[x→p,x→t,x→c,u→^,r,r^] 。

注,DMR 模型相当于对模型空间新增了约束:对于正样本,不仅点击率预估为 1.0,还需要 user representation 和 item representation 之间相关性很高。负样本也是类似。

17.2 实验

  1. 数据集:

    • Alimama Dataset (公共数据集):包含从Taobao 连续8 天中随机采样的曝光和点击日志。

      前7 天的日志用于训练,最后1 天的日志用于测试。数据集包含 2600 万条日志,一共有 114 万用户、84 万 item 。

    • 工业数据集:数据集包含从阿里巴巴在线推荐系统收集的曝光和点击日志。

      我们将前 14 天的日志用于训练、第15 天的日志用于测试。数据集包含 11.8 亿条日志,一共有 1090 万用户、4860 万 item 。

  2. baseline 方法:

    • LR :逻辑回归方法。它是一种经典的线性模型,可以看作是浅层神经网络。线性模型通常需要手动特征工程才能表现良好,这里我们添加了 User Behavior 和 Target Item 的叉积 cross-product 。

    • Wide&Deep:它具有一个 wide 部分和一个 deep 部分,因此同时结合了线性模型和非线性深度模型的优势。在我们的实现中,wide 部分和上述 LR 模型完全相同。

    • PNN:它引入了 product 层以及全连接层,从而探索高阶特征交互。

    • DIN:它通过自适应地学习注意力权重从而表示用户对目标 item 的兴趣。

      注意:如果没有两种 user-to-item 相关性、如果没有使用positional encoding,那么我们的 DMR 退化为 DIN 模型。

    • DIEN:DIEN 通过两层 GRU 建模了用户对目标item 的兴趣演化。

  3. 实验配置:

    • 在公共数据集上:我们将学习率设为 0.001,batch size = 256,item embedding 维度为 32,用户行为序列的最大长度为 50,MLP 中的隐层维度分别为 512,256,128 。

      此外,辅助 match 网络中的负样本数设为 2000,辅助损失的权重 β 设为 0.1 。

    • 在工业数据集上:除了将 item embedding 维度设为64,其它超参数和公共数据集相同。

  4. 下表给出了实验结果。我们使用 AUC 作为评估指标,所有实验重复5 次并报告平均结果。 Relative Improvement: RI 表示基于 LR 的相对提升。

    可以看到:

    • LR 的表现明显比 Wide&Deep 和其它基于深度学习的模型更差,这证明了深度神经网络中非线性变换和高阶特征交互的有效性。

    • PNN 受益于 product layer,从而相比 Wide&Deep 实现了更好的特征交互从而性能更好。

    • 在用户没有显式表现其兴趣的推荐场景中,捕获用户的兴趣至关重要。

      • 在基于深度学习的模型中,Wide&Deep 和 PNN 表现最差,尤其是在工业数据集上,这证明了从用户行为中抽取用户兴趣的重要性。

      • DIN 代表了用户对目标item 的兴趣,但是忽略了用户行为中的顺序信息。

      • DIEN 的性能优于 DIN,这主要归因于捕获了用户兴趣演变的两层 GRU 结构。

      • 基于用户兴趣representation,DRM 进一步通过 User-to-Item Network 和 Item-to-Item Network 来分别捕获两种形式的 user-to-item 相关性。

        通过相关性的representation,DRM 充分考虑了用户对目标 item 的个性化偏好,并且大幅度击败了所有baseline 方法,包括 LR、Wide&Deep、PNN、DIN、DIEN 。

  5. 下表给出了公共数据集和工业数据集上具有不同组成部分的 DMR 的比较结果,Relative Improvement: RI 表示基于 DMR 的相对提升。其中:

    • DMR I2I 表示仅有 Item-to-Item Network。

    • DMR U2I 表示仅有 User-to-Item Network。

    • DMR-No-AM 表示没有辅助match 网络。

    • DMR-NO-PE 表示User-to-Item Network 中没有位置编码。

    • DMR-Double 表示 V 和 V′共享 embedding (即 V=V′) ,且使用两倍尺寸的 item embedding 。

    可以看到:

    • user-to-item 相关性的 representation 的有效性:为了获得更具表达能力的 representation,我们应用了不同的操作来建模 user-to-item 相关性。

      User-to-Item Network 使用基于内积的操作来计算相关性,Item-to-Item Network 使用attention 网络来计算相关性。可以看到,这两个子网的组合要比单独使用时表现更好,这说明两种不同类型的 user-to-item 相关性是有效的,并且两种形式的 user-to-item 相关性是互补的,不是冗余的。

    • 辅助match 网络的有效性:和没有辅助match 网络的 DMR 相比,完整DMR 获得了更好的性能。

      辅助match 网络从用户行为中引入标签来监督训练,并在用户representation 和 item representation 之间推入更大的内积从而表示更高的相关性。

    • 额外 embedding 矩阵 V′ 的有效性:User-to-Item Network 使用额外的 embedding 矩阵 V′,可以将其视为辅助match 网络的 softmax layer 中的参数。

      我们尝试将 item embedding 的尺寸翻倍,并且共享 embedding 从而得到 DMR-Double,其参数数量和 原始 DMR 相同。可以看到原始 DMR 的性能优于 DMR-Double。这证明了单独的 embedding 矩阵 V′ 的有效性。

    • 位置编码的有效性:可以看到,在 User-to-Item Network 中没有位置编码的 DMR 要差于完整的 DMR。

      通过位置编码,DMR 会考虑用户行为序列中的顺序信息,并提取用户的动态兴趣。在工业数据集上, User-to-Item Network 没有位置编码的 DMR 甚至要比没有整个 User-to-Item Network 的 DMR (即 DMR I2I )表现更差,这意味着没有位置编码的 User-to-Item Network 很难拟合。

  6. user-to-item 相关性的 representation 的有效性:我们在公共数据集和工业数据集上探索了两个 user-to-item 相关性的值,如下图所示。这些值分别在正样本和负样本中取平均。

    不出所料,正样本的 user-to-item 相关性高于负样本,这意味着我们的 user-to-item 相关性模型是合理的。

  7. 辅助match 网络的有效性:下图显式了 DMR 在公共数据集和工业数据集上的学习曲线 learning curve。可以看到目标损失 Ltarget 和辅助损失 LNS 同时降低,这意味着 matching 和 ranking 联合训练是有效的。其中 β=0.1 。

  8. 位置编码的有效性:我们探索用户行为序列中不同位置的注意力权重。下图给出了公共数据集和工业数据集上 Item-to-Item Network 中的平均权重,其中距离当前时间越近的行为具有越小的位置编号。

    尽管注意力权重受到多个因素的影响,但是总体趋势是:如预期所示,最近的行为获得更高的注意力权重,尤其是在工业数据集上。

  9. 在线 A/B 测试:我们在阿里巴巴的推荐系统中进行在线 A/B 测试。和我们系统中最新版本的 CTR 模型 DIN 相比,DMR 的 CTR 提升了 5.5%,click per user 提升了 12.8%。由于提升如此之大,DMR 已经部署到线上从而提供推荐服务。

十八、MiNet[2020]

  1. 点击率 click-through rate: CTR 预估是在线广告系统中的一项关键任务,它旨在预估用户点击目标广告的概率。预估的CTR 会影响广告 ranking 策略和广告收费模型。因此为了维持理想的用户体验并使收入最大化,准确预估广告的 CTR 至关重要。

    CTR 预估引起了学术界和工业界的广泛关注。例如:

    • 因子分解机 Factorization Machine: FM 用于建模 pairwise 特征交互。

    • 深度神经网络 Deep Neural Network 用于 CTR 预估和 item 推荐,从而自动学习 feature representation 和高阶特征交互。

    • Wide & Deep (结合了逻辑回归和 DNN)之类的混合模型还同时利用了浅层模型和深层模型。

    • 此外,深度兴趣网络 Deep Interest Network: DIN 基于历史行为对动态的用户兴趣进行建模。

    • 深度时空网络 eep Spatio-Temporal Network: DSTN 联合利用上下文广告、点击广告、未点击广告进行 CTR 预估。

    可以看到,目前现有工作主要针对单域 CTR 预估 single-domain CTR prediction ,即它们仅将广告数据用于 CTR 预估,并且对诸如特征交互、用户历史行为、上下文信息等方面建模。不过,广告通常会以原生内容natural content进行展示,这为跨域CTR预估cross-domain CTR prediction 提供了机会。

    论文 《MiNet: Mixed Interest Network for Cross-Domain Click-Through Rate Prediction》 解决了这个问题,并利用来自源域 source domain 的辅助数据来提高目标域 target domain 的 CTR 预估性能。论文的研究基于 UC 头条 (一个集成在 UC 浏览器 APP 中的新闻 feed 服务,每天为数亿用户提供服务),其中源域是新闻(news domain)、目标域是广告(ad domain)。

    跨域 CTR 预估的一个主要优势在于:通过跨域的丰富数据可以缓解目标域中的数据稀疏性和冷启动问题,从而提高CTR 预估性能。为了有效利用跨域数据,论文考虑以下三种类型的用户兴趣:

    • 跨域的长期兴趣:每个用户都有自己的画像特征,例如用户 ID、年龄段、性别、城市。这些用户画像特征反映了用户的长期内在兴趣。基于跨域数据(即用户和他/她互动的所有新闻、广告),我们能够学习语义上更丰富、统计上更可靠的用户特征 embedding 。

    • 源域的短期兴趣:对于要预估CTR 的每个目标广告,在源域中都有相应的短期用户行为(如,用户刚刚查看的新闻)。尽管新闻的内容可能和目标广告的内容完全不同,但是它们之间可能存在一定的相关性。例如,用户在查看一些娱乐新闻之后很可能会点击游戏广告。基于这种关系,我们可以将有用的知识从源域迁移transfer 到目标域。

    • 目标域的短期兴趣:对于要预估CTR 的每个目标广告,在目标域中还存在相应的短期用户行为。用户最近点击过的广告可能会对用户在不久的将来点击哪些广告有很大的影响。

    尽管上述想法看起来很有希望,但是它面临着一些挑战:

    • 首先,并非所有点击的新闻对于目标广告的CTR 有指示作用indicative 。

    • 同样地,并非所有点击的广告都能提供关于目标广告 CTR 的有用信息。

    • 第三,模型必须能够将知识从新闻域迁移到广告域。

    • 第四,针对不同的目标广告,三种类型的用户兴趣的相对重要性可能会有所不同。例如:

      • 如果目标广告和最近点击的广告相似,那么目标域的短期兴趣应该更为重要。

      • 如果目标广告和最近点击的新闻、广告都不相关,那么长期兴趣应该更为重要。

    • 最后,目标广告的representation 和三种类型用户兴趣的representation 具有不同的维数(由于特征数量不同)。维数的差异discrepancy 自然地强化或削弱某些 representation 的影响,这是不希望的。

    为解决这些挑战,论文提出了混合兴趣网络 Mixed Interest Network: MiNet。在 MiNet 中:

    • 长期兴趣是通过拼接用户画像特征 embedding p→u 来建模的。用户画像特征 embedding 是基于跨域数据共同学习,从而实现知识迁移的。

    • 源域的短期兴趣是通过向量 a→s 来建模的,它聚合了最近点击的新闻的信息。

    • 目标域的短期兴趣是通过向量 a→t 来建模的,它聚合了最近点击的广告的信息。

    另外,MiNet 包含 item-level 和 interest-level 两个level 的注意力。

    • item-level 注意力同时应用于源域和目标域,它们可以自适应地从最近点击的新闻/广告中提取有用的信息(从而应对挑战 1 和 2 )。

      我们还引入了一个迁移矩阵transfer matrix ,从而将知识从新闻迁移到广告(从而应对挑战 3)。此外,长期兴趣基于跨域数据来学习,这也可以进行知识迁移(从而应对挑战 3)。

    • interest-level 注意力动态调整针对不同目标广告时,三种类型用户兴趣的重要性(从而应对挑战 4),从而自适应地融合不同的兴趣 representation。

      此外,具有适当激活函数的interest-level 注意力也可以处理维度差异问题(从而应对挑战 5 )。

    离线和在线实验结果都证明了 MiNet 在 CTR 预估方面的有效性。MiNet 的效果优于几种 state-of-the-art 的CTR 预估方法。作者已经在 UC 头条中部署了 MiNet,A/B 测试结果也表明在线 CTR 也有了很大提升。目前 MiNet 已经服务于 UC 头条的主要广告流量。

    论文的主要贡献:

    • 论文提出在跨域 CTR 预估中联合考虑三种类型的用户兴趣:跨域的长期兴趣、源域的短期兴趣、目标域的短期兴趣。

    • 论文提出了 MiNet 模型来实现上述目标。MiNet 模型包含两个 level 的注意力,其中:

      • item-level 注意力可以自适应地从点击的新闻/点击的广告中提取有用的信息。

      • interest-level 注意力可以自适应地融合不同的兴趣 representation。

    • 论文进行了大量的离线实验来验证 MiNet 以及几种 state-of-the-art 的 CTR 预估模型的性能。论文还进行了消融研究,从而提供模型背后的进一步的洞察。

  2. 相关工作:

    • CTR 预估:现有工作主要解决单域single-domain CTR 预估问题,他们对以下方面进行建模:特征交互(如 FM, DeepFM)、feature embedding(如 DeepMP)、用户历史行为(如 DIN,DSTN)、上下文信息(如 DSTN)。

      • 特征交互:

        由于诸如逻辑回归 Logistic Regression: LR 和 Follow-The-Regularized-Leader: FTRL 等广义线性模型缺乏学习复杂特征交互的能力,因此人们提出了因子分解机 Factorization Machine: FM 来解决这个限制。

        Field-aware FM: FFM 和 Field-weighted FM 通过考虑特征所属的 field 的影响来进一步改进 FM。

        近年来,人们提出了深度神经网络DNN 和 Product-based Neural Network: PNN 等神经网络模型来自动学习特征representation 和高阶特征交互。

        Wide & Deep 、DeepFM、Neural Factorization Machine: NFM 等一些模型结合了浅层模型和深层模型来同时捕获低阶特征交互和高阶特征交互。

      • feature embedding:Deep Matching and Prediction: DeepMP 模型结合了两个 subnet 来学习更具有表达能力的 feature embedding 从而用于 CTR 预估。

      • 用户历史行为:Deep Interest Network: DIN 和 Deep Interest Evolution Network: DIEN 基于历史点击行为对用户兴趣建模。

      • 上下文信息:

        《Relational click prediction for sponsored search》 和 《Exploiting contextual factors for click modeling in sponsored search》 考虑各种上下文因子,例如广告交互、广告深度 ad depth、query 多样性等。

        Deep Spatio-Temporal Network: DSTN 联合利用了上下文广告、点击广告、未点击广告进行 CTR 预估。

    • 跨域推荐:跨域推荐旨在通过从源域source domain 迁移知识来提高目标域 target domain 的推荐性能。这些方法大致可以分为三类:协同的collaborative、基于内容的content-based 、混合的hybrid。

      • 协同方法利用跨域的交互数据(如评级rating)。

        《Relational learning via collective matrix factorization》 提出了协同矩阵分解 Collective Matrix Factorization: CMF,它假设一个通用的全局用户因子矩阵 global user factor matrix 并同时分解来自多个域的矩阵。

        《Cross-domain Recommendation Without Sharing User-relevant Data》 提出了用于跨域推荐的神经注意力迁移推荐Neural Attentive Transfer Recommendation: NATR,而无需共享用户相关的数据。

        《Conet: Collaborative cross networks for cross-domain recommendation》提出了协同交叉网络 Collaborative cross Network,它通过交叉连接cross connection 实现跨域的双重知识迁移dual knowledge transfer 。

      • 基于内容的方法利用了用户或 item 的属性。

        《A multi-view deep learning approach for cross domain user modeling in recommendation systems》 将用户画像和 item 属性转换为稠密向量,并且在潜在空间中 match 它们。

        《Collaborative knowledge base embedding for recommender systems》 利用 item 的文本知识、结构知识、视觉知识作为辅助信息来帮助学习 item embedding 。

      • 混合方法结合了交互数据和属性数据。

        《CCCFNet: a content-boosted collaborative filtering neural network for cross domain recommender systems》 在一个统一的框架中结合了协同过滤和基于内容的过滤。

    不同的是,在本文中,作者解决了跨域 CTR 预估问题。论文对三种类型的用户兴趣进行建模,并在神经网络框架中自适应地融合它们。

18.1 模型

  1. 在线广告中的CTR 预估任务是建立一个预估模型来预测用户点击特定广告的可能性。每个样本可以由多个field 描述,如用户信息(用户ID、城市、年龄等)、广告信息(素材ID、Campaign ID 、广告标题等)。每个field 的实例代表一个特征,如用户 ID 字段可能包含诸如 2135147 或 3467291 。

    下表为 CTR 预估任务样本的示例,其中 Label 表示用户是否点击这个广告。

  2. 我们定义跨域CTR 预估问题为:利用一个源域(或多个源域)中的数据来提高目标域中 CTR 预估性能。

    在新闻 feeds 流广告中(如下图所示的 UC 头条 ),源域就是原生natural的新闻feeds 流、目标域是广告。这种情况下,源域和目标域共享同一组用户,但是没有重叠的 item 。

  3. 为了有效利用跨域数据,我们提出了混合兴趣网络Mixed Interest Network: MiNet ,如下图所示。该模型对三种类型的用户兴趣进行了建模:

    • 跨域的长期兴趣是通过拼接用户画像特征 embedding p→u 来建模的。用户画像特征 embedding 是基于跨域数据共同学习,从而实现知识迁移的。

    • 源域的短期兴趣是通过向量 a→s 来建模的,它聚合了最近点击的新闻的信息。

    • 目标域的短期兴趣是通过向量 a→t 来建模的,它聚合了最近点击的广告的信息。

    在 MiNet 中,我们还应用了两种level 的注意力:item-level 注意力、interest-level 注意力。

    • item-level 注意力的目的是从最近点击的新闻/广告中提取有用的信息(和待预估CTR 的目标广告相关),并抑制噪声。

    • interest-level 注意力的目的是自适应地调整三种类型的用户兴趣(即 p→u,a→s,a→t)的重要性,并为目标广告提供更有信息量的信号。

    接下来我们详细描述各个组件。

18.1.1 Feature Embedding

  1. 我们首先将特征编码为 one-hot encoding 。对于某个离散型特征,假设其unique 取值数量为 N 。为了实现跨域的知识迁移,特征的 unique 集合选取的是在两个域中的 unique 取值集合的交集,即:该 unique 值在两个域中都出现过。

    对于该特征的第 i 个取值,其 one-hot encoding 记作:

    v→i=one-hot(i)∈RN

    其中 v→i 的第 i 项为 1 、其它项全部为零。

    然后我们将稀疏的高维 one-hot encoding 映射到适合神经网络的稠密的低维 embedding 向量。具体而言,我们定义一个 embedding 矩阵 E∈RN×D,其中 D 为 embedding 维度且满足 D≪N 。注意,E 是待学习的。

    那么该特征的第 i 个取值可以投影到对应的 embedding 向量 e→i=Ev→i∈RD 。e→i 实际上就是E 的第 i 行,这通常采用查表法来进行(而不是矩阵乘法)。

18.1.2 跨域的长期兴趣

  1. 对于每个广告样本,我们将其特征拆分为用户特征、广告特征。

    • 我们获取所有广告特征,并拼接对应的 embedding 向量,从而获取目标域中的广告的 representation 向量 r→t∈RDt 。

    • 同样地,我们可以在源域中获得新闻 representation 向量 r→s∈RDs 。

    • 对于用户,我们通过相应的用户特征 embedding 向量进行拼接,从而获得长期兴趣 representation 向量 p→u∈RDu 。

      例如,如果用户 u 有特征 UID = u123, City = BJ, Gender = male, OS = ios,则我们有:

      p→u=[e→u123||e→BJ||e→male||e→ios]

      其中 || 表示向量拼接。

      长期兴趣representation 向量 p→u 在各个域之间共享,并使用来自两个域的数据来共同学习。

    这里 Dt,Ds,Du 分别代表广告representation 向量维度、新闻representation 向量维度、用户 representation 向量维度。

18.1.3 源域目标的短期兴趣

  1. 给定一个用户,对于目标域中的每个目标广告,用户通常会在源域中查看新闻。尽管新闻的内容可能和目标广告的内容完全不同,但是它们之间可能存在一定的相关性。例如,用户在查看一些娱乐新闻之后很可能点击游戏广告。基于这种关系,我们可以将有用的知识从源域迁移到目标域。

  2. 令最近点击的新闻的 representation 向量的集合为 {r→s,i}i。由于点击新闻的数量可能会有所不同,因此我们需要聚合这些新闻。

    具体而言,聚合的 representation a→s为:

    a→s=∑iαir→s,i

    其中 αi 为分配给 r→s,i 的权重,从而表示它在聚合期间的重要性。

    聚合的 representation a→s 反映了源域中用户的短期兴趣。

  3. 剩下的问题是如何计算权重 αi 。

    • 一种简单的方法是选择 αi=1|{r→s,i}i| ,即每条被点击的新闻都具有相等的重要性。这显然不是明智的选择,因为某些新闻对于目标广告没有帮助。

    • 另一种方式是基于注意力机制,αi 的计算为:

      α~i=h→s⊤relu(Wsr→s,i),αi=exp⁡(α~i)∑i′exp⁡(α~i′)

      其中 Ws,h→s 为模型参数。

      上式仅单独考虑每条被点击的新闻 r→s,i,它没有捕获新闻和目标广告之间的关系。

      此外,上式也未考虑目标用户。例如,无论目标广告是关于咖啡还是衣服,无论目标用户是 ua 还是 ub ,点击新闻的重要性都保持不变。

    • 我们提出 item-level 注意力,αi 的计算为:

      α~i=h→s⊤relu(Ws[r→s,i∥q→t||p→u||(Mr→s,i⊙q→t)])

      其中: Ws∈RDh×(Ds+2Dt+Du),h→s∈RDh,M∈RDt×Ds 为待学习的参数;Dh 为超参数,指定 attention 隐向量维度; ⊙ 为逐元素乘积。

      上式考虑了以下方面:

      • 源域中点击的新闻 r→s,i∈RDs 。

      • 目标域中的目标广告 q→t∈RDt 。

      • 目标用户 p→u∈RDu 。

      • 点击新闻和目标广告之间的迁移交互 transferred interaction Mr→s,i⊙q→t∈RDt 。

        其中 M 为迁移矩阵 transfer matrix,它将源域的 r→s,i∈RDs 迁移到目标域 Mr→s,i∈RDt 使得 Mr→s,i 可以和目标广告 q→t 进行比较。

      通过这种方式,计算出的 α~i 以及 αi 不仅是需要待分配权重的点击新闻的函数,而且也是目标广告感知的aware、以及目标用户感知的 aware 。另外,它还考虑了点击新闻和跨域目标广告之间的交互interaction 。

      如果采用两层 DNN 来计算 attention,是否可以移除迁移交互项?

  4. 复杂度缩减:item-level 注意力中,迁移矩阵 M 的尺寸为 Dt×Ds。当 Dt 和 Ds 较大时,M 包含很多要学习的参数。

    为降低计算复杂度,我们将 M 分解为:M=M1×M2 。其中: M1∈DDt×C,M2∈RC×Ds ,C 是一个中间维度,可以设为一个较小的值。这样,总的参数数量从 Dt×Ds 降低到 (Dt+Ds)×C 。

18.1.4 目标域的短期兴趣

  1. 给定用户,对于每个目标广告,该用户在目标域中也具有近期行为。用户最近点击的广告对用户不久将来点击的广告有很大的影响。

  2. 令最近点击的广告的 representation 向量集合为 {r→t,j}j ,我们计算聚合的 representation a→t 为:

    β~j=h→t⊤relu(Wt[r→t,j∥q→t||p→u||(r→t,j⊙q→t)]),βj=exp⁡(β~j)∑j′exp⁡(β~j′)a→t=∑jβjr→tj

    其中: Wt∈RDh×(3Dt+Du),h→t∈RDh 为待学习的参数;Dh 为超参数,指定 attention 隐向量维度; ⊙ 为逐元素乘积。

    聚合的 representation a→t 反映了用户在目标域中的短期兴趣。

    上式考虑了以下方面:

    • 目标域中点击的广告 r→t,j∈RDt 。

    • 目标域中的目标广告 q→t∈RDt 。

    • 目标用户 p→u∈RDu 。

    • 点击的广告和目标广告之间的交互 interaction r→t,j⊙q→t∈RDt 。由于它们在相同的域中,因此不需要迁移矩阵。

    类似地,计算出的 β~j 和 βj 不仅是待分配权重的点击广告的函数,而且也是目标广告感知的aware、以及目标用户感知的 aware 。

18.1.5 Interest-Level Attention

  1. 在获得三种类型的用户兴趣 p→u∈RDu,a→s∈RDs,a→t∈RDt 之后,我们将它们一起用于预估目标广告 q→t∈RDt 的 CTR 。

    尽管 p→u,a→s,a→t 都代表了用户兴趣,但是它们反映了不同的方面aspect,并且具有不同的维度。因此,我们不能使用加权和的方式来融合它们。

    • 一种可能的解决方案是将所有可用信息拼接起来作为一个长的输入向量:

      m→=[q→t||p→u||a→s||a→t]

      但是,这样的解决方案找不到针对目标广告 q→t 最有用的用户兴趣信号。例如,如果短期兴趣 a→s,a→t 和目标广告 q→t 不相关,则长期兴趣 p→u 应该更有信息价值。但是现在这里 m→ 中 p→u,a→s,a→t 具有相等的重要性。

    • 因此,我们没有使用 m→ ,而是使用如下的 m→t :

      m→t=[q→t||vup→u||vsa→s||vta→t]

      其中 vu,vs,vt 是动态权重,它们根据不同的用户兴趣信号的取值来调整其重要性。具体而言,这些权重的计算为:

      vu=exp⁡(g→u⊤relu(Vu[q→t||p→u||a→s||a→t])+bu)vs=exp⁡(g→s⊤relu(Vs[q→t||p→u||a→s||a→t])+bs)vt=exp⁡(g→t⊤relu(Vt[q→t||p→u||a→s||a→t])+bt)

      其中:

      • Vu,Vs,Vt∈RDh×(Ds+2Dt+Du) 为参数矩阵。

      • g→u,g→s,g→t∈RDh 为参数向量。

      • bu,bs,bt∈R 为标量参数。bu,bs,bt 的引入是为了建模特定类型用户兴趣的固有intrinsic 重要性,而不管该兴趣的实际取值。

      可以看到,这些权重是根据所有可用信息来计算的,以便在给定其它类型的用户兴趣的条件下考虑特定类型用户兴趣对于目标广告的贡献。

      item-level attention 采用了加权 sum 池化,而 interest-level attention 采用了加权拼接。事实上向量拼接(相比较于池化操作)可以保留尽可能多的信息。

      由于历史行为序列的长度不固定,因此为了得到固定长度的向量所以选择了加权池化。

      由于兴趣 embedding 数量是固定的 3 个,因此可以进行向量拼接从而得到固定长度的向量。

  2. 我们使用 exp⁡(⋅) 来计算权重,这使得 vu,vs,vt 可能大于 1.0 。这是我们想要的效果,因为这些权重可以补偿维度差异问题dimension discrepancy problem 。

    例如,当 q→t 的维度比 p→u 的维度大得多时(由于 q→t 具有更多特征),那么 p→u 的贡献自然会由于这种效应而削弱。

    • 如果我们用 sigmoid 函数代替 exp 函数,使得分配给 p→u 的权重位于 0.0 ~ 1.0 之间,那么也无法解决这个问题。

    • 而如果分配给 p→u 的权重大于 1.0,那么可以很好地缓解这种维度差异效应。

    而且,这些权重是自动学习的,因此在必要时也会小于 1.0 。

    这里并没有对重要性进行归一化,因此得到的是 “绝对相关性”。归一化之后代表的是“相对相关性”。另外为了使得绝对相关性非负,这里使用指数函数 exp 。具体效果可以做实验来对比。

18.1.6 模型和部署

  1. 在目标域,我们让输入向量 m→t 通过具有 ReLU 激活函数的几个全连接层FC layer,从而利用高阶特征交互以及非线性变换。

    具体而言:

    z→1=relu(W1m→t+b→1)z→2=relu(W2z→1+b→2)⋮z→L=relu(WLz→L−1+b→L)

    其中: L 表示隐层数量;Wl,b→l 表示待学习的、第 l 层的参数。

    最后,向量 z→L 通过一个 sigmoid 输出层得到目标广告的预估 CTR:

    y^t=11+exp⁡(−(w→⊤z→L+b))

    其中 w→,b 为输出层待学习的参数。

  2. 为了便于长期兴趣 p→u 的学习,我们还为源域创建了一个输入向量,即 m→s=[q→s||p→u] 。其中 q→s∈RDs 为目标新闻特征的 embedding 向量的拼接。

    同样地,我们让 m→s 经过几个 FC 层和一个 sigmoid 输出层(这些层都具有自己的参数)。最后,我们获得了目标新闻的预估 CTR y^s 。

    m→s 还可以包含最近点击的新闻的 representation 向量的集合 {r→s,i}i ,从而学到更好的长期兴趣 p→u 。

  3. 我们使用交叉熵作为损失函数。在目标域中,训练集上的损失函数为:

    Lt=−1|Y|t∑yt∈Yt[ytlog⁡y^t+(1−yt)log⁡(1−y^t)]

    其中: yt∈{0,1} 为目标广告的真实label,y^t 为目标广告的预估 CTR,Yt 为 label 集合。

    类似地,我们得到源域中的损失函数 Ls 。最终我们的损失函数为:

    L=Lt+γLs

    其中 γ 为一个超参数,用于平衡不同损失的重要性。

    注意:p→u 是跨域共享的,因此当优化联合损失 L 时,将根据两个域的数据共同学习p→u 。

  4. 我们在 UC 头条部署了 MiNet,其广告投放系统架构如下图所示。在 2019 年 12 月到 2020 年 1 月的两周内,我们在 A/B test 框架中进行了在线实验,其中的 basic 模型为 DSTN ,评估指标为实际 CTR 。

    在线 A/B test 表明,和 DSTN 相比,MiNet 使得在线 CTR 提升了 4.12% 。该结果证明了 MiNet 在实际 CTR 预估任务中的有效性。经过 A/B test 之后,MiNet 服务于 UC 头条的主要流量。

18.2 实验

  1. 数据集:

    • Company News-Ads 数据集:该数据集包含UC 头条中从新闻系统和广告系统中随机抽取的新闻、广告的曝光和点击日志。源域是新闻,目标域是广告。

      我们将 2019 年的连续 6 天的日志用于初始训练,随后一天的日志用于验证,再之后一天的日志用于测试。在验证集上找到最佳超参数之后,我们将初始训练集和验证集合并为最终训练集,并使用最佳超参数重新训练。

      使用的特征包括:用户特征(如用户 ID、agent、城市)、新闻特征(如新闻标题、新闻category、新闻tag)、广告特征(如广告标题、广告 ID、广告category)。

    • Amazon Books-Movies 数据集:Amazon 数据集已被广泛用于评估推荐系统的性能。我们选择两个最大的类别来用于跨域 CTR 预估任务,即图书 Books、影视 Movies&TV 。源域是图书,目标域是影视。我们在每个域中只保留至少有 5 次评分的用户。我们将评级为 4,5 分的评分转换为 label 1,其它的评分都视为 label 0 。

      为了模拟 CTR 预估的行业惯例(即,预估未来的 CTR 而不是过去的 CTR),我们按照时间顺序对用户日志进行排序,然后将每个用户的最后一个评分构成测试集、倒数第二个评分构成验证集、其它评分构成初始训练集。在验证集上找到最佳超参数之后,我们将初始训练集和验证集合并为最终训练集,并使用最佳超参数重新训练。

      使用的特征包括:用户特征(用户 ID)、图书/影视特征(item ID、品牌、标题、主类目category 和子类目)。

    这些数据集的统计信息如下表所示。fts. 表示特征features,ini. 表示初始的 initial, insts. 表示实例 instances,val. 表示验证validation,avg. 表示均值 average 。

  2. baseline 方法:我们比较了单域方法和跨域方法。现有的跨域方法主要是为跨域推荐而提出的,必要时我们将其扩展用于跨域 CTR 预估(如,包含属性特征而不是仅包含 ID 特征,并且调整损失函数)。

    • 单域方法:

      • LR :逻辑回归。它是一个广义的线性模型。

      • FM:因子分解机。它同时对一阶特征重要性和二阶特征交互进行建模。

      • DNN:深度神经网络。它包含一个 embedding 层、几个 FC 层、以及一个输出层。

      • Wide & Deep:经典的 Wide & Deep 模型。它结合了逻辑回归( wide 部分)和 DNN(deep 部分)。

      • DeepFM:DeepFM 模型。它结合了 FM(wide 部分)和 DNN(deep 部分)。

      • DeepMP:Deep Matching and Prediction 模型(即 DeepMCP )。它学习了用于 CTR 预估的、更有表达能力的feature embedding 。

      • DIN: Deep Interest Network 模型。它基于历史行为对动态用户兴趣进行建模,从而进行 CTR 预估。

      • DSTN:Deep Spatio-Temporal Network 模型。它利用时空辅助信息(即,上下文信息,点击的广告,未点击的广告)进行 CTR 预估。

    • 跨域方法:

      • CCCFNet:Cross-domain Content-boosted Collaborative Filtering Network。它将协同过滤和 content-based filtering 结合起来的因子分解框架。它与神经网络有关,因为 CF 中的潜在因子等价于神经网络中的 embedding 向量。

      • MV-DNN:Multi-View DNN 模型。它扩展了 Deep Structured Semantic Model: DSSM,并具有 multi-tower 的 matching 结构。

      • MLP++:MLP++ 模型。它利用了两个 MLP ,并且跨域共享的用户 embedding。

      • CoNet:Collaborative cross Network 模型。它在 MLP++ 上添加交叉连接单元cross connection unit ,从而实现双重dual知识迁移。

  3. 模型配置:

    • 每个特征的 embedding 向量维度设置为 D=10 ,即映射到 10 维。

    • item-level 注意力中,迁移矩阵 M 分解的中间维度 C=10 。

    • Company 数据集:

      • 基于神经网络模型中的 FC 层数量设为 L=2 ,隐层维度分别为[512, 256]。

      • attention 隐向量维度 Dh=128 ,源域 batch size 为 512,目标域 batch size为 128 。

    • Amazon 数据集:

      • 基于神经网络模型中的 FC 层数量设为 L=2 ,隐层维度分别为[256, 128]。

      • attention 隐向量维度 Dh=64 ,源域 batch size 为 64,目标域 batch size为 32 。

    所有方法都基于 Tensorflow 实现,并使用 Adagrad 算法。每个方法运行 5 次,并报告平均结果。

  4. 评估指标:AUC, RelaImpr, Logloss。

    • AUC 反映了对于随机选择的正样本和负样本,模型将正样本排序rank 在负样本之上的概率。对于完全随机的模型,AUC = 0.5 。AUC 越大越好。AUC 的一个很小的改进可能会导致在线 CTR 的显著提升。

    • RelaImpr 衡量指定模型相对于基础模型的相对提升。由于随机模型的 AUC 为 0.5,因此 RelaImpr 定义为:

      RelaImpr=(AUC(target model)−0.5AUC(base model)−0.5−1)×100%
    • Logloss:测试集(目标域)的对数损失,即 Lt,越小越好。

  5. 实验结果如下表所示。* 表示和最佳的 baseline 相比,基于成对 t-test 检验的、p<=0.01 的统计显著性。

    可以看到:

    • 就 AUC 而言,诸如 LR 和 FM 之类的浅层模型的表现要比深度模型更差。

    • FM 的性能优于 LR,因为它可以进一步建模二阶特征交互。

    • 与 LR 和 DNN 相比,Wide & Deep 获得了更高的 AUC,表明结合 LR 和 DNN 可以提高预估性能。

    • 在单域方法中,DSTN 表现最佳。因为 DSTN 共同考虑了可能影响目标广告 CTR 的各种时空因素。

    • 在跨域方法中,CCCFNet 优于 LR 和 FM,这表明使用跨域数据可以提高性能。

      • CCCFNet 性能比其它跨域方法更差,因为它压缩了所有属性特征。

      • MV-DNN 的性能和 MLP++ 相近,它们都通过 embedding 共享来实现知识迁移。

      • CoNet 在 MLP++ 上引入了交叉连接单元,从而实现跨域的双重知识迁移。然而,这也引入了更高的复杂度和随机噪声。

    • CCCFNet,MV-DNN,MLP++,CoNet 主要考虑长期的用户兴趣。相反,我们提出的 MiNet 不仅考虑了长期用户兴趣,还考了了这两个域的短期兴趣。通过适当地结合这些不同的兴趣信号,MiNet 显著地超越了这些 baseline 方法。

  6. level of attention:这里我们考察注意力level 的影响。

    我们采用以下配置:没有 attention 机制、仅 item-level attention、仅 interest-level attention (并且使用文中提出的指数激活函数)、仅 interest-level attention (但是用 sigmoid 代替 exp 函数)、同时采用两种 attention 机制。

    实验结果如下图所示(Base model:DNN),可以看到:

    • 没有 attention 的表现最差,这是因为如果没有注意力机制来提取,那么有用的信号很容易被噪音淹没。

    • item-level attention 或者 interest-level attention 都可以提升 AUC,同时使用二者可以获得最高的 AUC。

    • interest-level attention(sigmoid) 效果比 interest-level attention(exp) 更差。这是因为不合适的激活函数无法有效解决维度差异问题。

    这些结果证明了我们提出的分层注意力机制的有效性。

  7. item-level attention:这里我们考察 MiNet 中 item-level 注意力权重,并检查它们是否可以捕获有信息的信号。

    下面给出Company 数据集中随机选择的一个活跃用户(因此具有相同的点击广告集合、点击新闻集合),对于不同目标广告的注意力权重。

    由于隐私问题,我们仅按照类目粒度展示广告和新闻。由于广告位于同一个域中,因此比较容易判断点击广告和目标广告之间的相关性。而广告和新闻位于不同的域中,因此很难判断它们之间的相关性。因此我们根据用户的行为日志来计算概率 p(Ad∣News) 。

    可以看到:

    • 当目标广告为时尚媒体 Publishing & Media:P&M 时,P&M 类目的点击广告权重最高,而娱乐 Entertainment 类目的点击新闻权重最高。

    • 当目标广告为游戏Game时,游戏类目的点击广告权重最高,而体育新闻类目的点击新闻权重最高。

    以上结果表明,item-level 注意力确实可以动态捕获针对不同目标广告的更重要的信息。

    我们还观察到,该模型可以学到点击新闻和目标广告之间的某种相关性。具有较高 p(Ad∣News) 的新闻通常会获得较高的注意力权重。

    理论上 ∑jβj=1.0 以及 ∑iαi=1.0 ,但是这里并未满足。所以这里是 top 3 重要性的历史点击广告和历史点击新闻?

  8. interest-level attention :这里我们研究 MiNet 中不同类型的用户兴趣建模的效果。

    我们观察到两个数据集上完全不同的现象,如下图所示(Base model:DNN)。src. 表示源域 source domain、tar. 表示目标域 target domain 。

    • 在 Company 数据集上,和建模长期兴趣相比,建模短期兴趣可以实现更高的 AUC。这表明短期行为非常有帮助。

    • 在 Amazon数据集上,建模长期兴趣会产生更高的 AUC。这是因为 Amazon 数据集是电商数据集而不是广告,并且评分的性质和点击的性质不同。

    • MiNet 综合考虑所有类型的用户兴趣时,获得了最高的 AUC。这表明不同类型的用户兴趣可以相互补充,联合建模可以带来最好的效果。

十九、DSTN[2019]

  1. 点击率 Click-Through Rate: CTR 预估是用于预测用户点击某个 item 的可能性。它在在线广告系统中起着重要作用。例如,广告 ranking 策略通常取决于 CTR x bid,其中 bid 是点击广告后系统获得的收益。另外,根据常见的 cost-per-click: CPC 计费模式,只有在用户点击广告之后才会对广告主收费。因此,为了最大化程度地增加收入并保持理想的用户体验,准确地预估广告的 CTR 至关重要。

    CTR 预估引起了学术界和工业界的广泛关注。一系列研究方向是利用机器学习方法独立预估每个广告的 CTR。例如,因子分解机 Factorization Machine: FM 根据所涉及特征对应的潜在向量来建模 pairwise 特征交互。近年来,深度神经网络 DNN 被用于 CTR 预估和 item 推荐,以自动学习 feature representation 和高阶特征交互。为了同时利用浅层模型和深层模型,人们还提出了混合模型hybrid model 。例如,Wide & Deep 将逻辑回归 Logistic Regression: LR 和 DNN 结合起来,从而提高模型的memorization 和 generalization 能力。DeepFM 将 FM 和 DNN 相结合,进一步提高了模型学习特征交互的能力。

    这一系列方法独立地考虑每个目标广告,但是忽略了可能影响目标广告 CTR 的其它广告。在本文中,我们从两个角度探讨辅助广告auxiliary ad 。

    • 空域 spatial domain角度:我们考虑在同一个页面上出现的、目标广告上方展示的上下文广告 contextual ad 。

      背后的直觉是:共同展示的广告可能会争夺用户的注意力。

    • 时域temporal domain 角度:我们考虑用户的历史点击和历史未点击广告。

      背后的直觉是:历史点击广告可以反映用户的偏好,历史未点击广告可能一定程度上表明用户的不喜欢。

    这两个角度包含了三种类型的辅助数据auxiliary data(如下图所示):同一个页面上出现的、目标广告上方展示的上下文广告contextual ad;用户的历史点击广告clicked ad;用户的历史未点击广告unclicked ad。

    为有效利用这些辅助数据,我们必须解决以下问题:

    • 由于每种类型辅助广告的数量可能会有所不同,因此模型必须能够适应所有可能的情况。

      例如,可能有 1 个上下文广告、2 个历史点击广告、4 个历史未点击广告,也可能是 0 个上下文广告、3 个历史点击广告、2 个历史未点击广告。

    • 由于辅助广告不一定和目标广告相关,因此模型应该能够提取有用的信息并抑制辅助数据中的噪声。

      例如,如果历史点击广告集合是关于咖啡、衣服、汽车的广告,而目标广告是咖啡广告,那么模型能够学到哪个历史点击广告对目标广告的 CTR 预估更有用。

    • 每种类型辅助广告的影响程度可能会有所不同,并且模型应该能够区分它们的贡献。

      例如,应该区别对待上下文广告和历史点击广告的重要性。

    • 模型应该能够融合所有可用的信息。

    为了解决这些问题,论文 《Deep Spatio-Temporal Neural Networks for Click-Through Rate Prediction》 提出了用于 CTR 预估的深度时空神经网络Deep SpatioTemporal neural Network: DSTN 的三种变体。这些变体包括:池化pooling 模型、自注意力self-attention模型、交互式注意力interactive attention 模型。其中,交互式注意力模型完全解决了上述问题。

    在一个公共数据集和两个工业数据集上的离线实验表明:DSTN 的效果优于几种 state-of-the-art 的 CTR 预估方法。作者在中国第二大搜索引擎 “神马搜索” 中部署了 DSTN 模型。在线 A/B test 表明:和线上最新的 serving 模型相比,DSTN 模型的在线 CTR 得到显著提升。

    论文主要贡献:

    • 论文探索了三种类型的辅助数据,从而提高目标广告的 CTR 预估。这些辅助数据包括:展示在同一个页面上的、目标广告上方的上下文广告,用户历史点击广告,用户历史未点击广告。

    • 论文提出了有效融合这些辅助数据来预测目标广告 CTR 的 DSTN 模型。DSTN 模型能够学习辅助数据和目标广告之间的交互,并强调更重要的 hidden information 。

    • 论文对来自真实广告系统的三个大规模数据集进行了广泛的离线实验,从而测试 DSTN 和几种 state-of-the-art 方法的性能。论文还进行了案例研究,从而提供模型背后的进一步洞察。

    • 论文在中国第二大搜索引擎神马搜索中部署了性能最好的 DSTN。论文还进行了在线 A/B test,从而评估DSTN在实际 CTR 预估任务中的性能。

  2. 相关工作:

    • CTR 预估:学习特征交互效应 effect of feature interaction 似乎对于准确的 CTR 预估至关重要。

      • 广义线性模型,如逻辑回归 Logistic Regression: LR 和 Follow-The-Regularized-Leader: FTRL 在实践中表现出不错的性能。然而,线性模型缺乏学习复杂特征交互的能力。

      • 因子分解机 Factorization Machine: FM 根据所涉及特征的潜在向量对 pairwise 特征交互进行建模。

      • Field-aware FM: FFM 和 Field-weighted FM 通过考虑特征所属的 field 的影响来进一步改进 FM 。

      近年来,深度神经网络 DNN 显示出强大的自动学习有信息量 informative 的 feature representation 的能力。因此,DNN 也被用于 CTR 预估和 item 推荐,以自动学习 feature representation 和高阶特征交互。

      • FNN 在应用 DNN 之前预训练 FM。

      • PNN 在 embedding layer 和全连接层之间引入了一个 product layer。

      • Wide & Deep 模型结合了 LR 和 DNN 来同时捕获低阶特征交互和高阶特征交互。这种结构还同时提高了模型的 memorization 和 generalization 能力。

      • DeepFM 像 FM 一样对低阶特征交互建模、像 DNN 一样对高阶特征交互建模。

      • NFM 结合了 FM 的线性和神经网络的非线性。

    • 利用辅助数据进行 CTR 预估:另外有一系列研究利用辅助数据来提高 CTR 预估性能。

      RNN-based 模型:

      • 《Sequential Click Prediction for Sponsored Search with Recurrent Neural Networks》 考虑用户的历史行为(例如,该用户点击了哪些广告)。论文使用 RNN 来建模用户行为序列的依赖性。

      • 《Improved recurrent neural networks for session-based recommendations》 为 session-based 推荐提出了改进的 RNN。

      基于 RNN 的模型的一个主要问题是:模型生成一个行为序列的整体 embedding 向量,该向量只能保留用户非常有限的信息。即使使用 LSTM 和 GRU 等高级记忆单元结构,长期依赖性仍然难以保留。此外,由于其递归结构,RNN 的离线训练过程和在线预测过程都很耗时。

      CRF-based 模型:

      • 《Relational click prediction for sponsored search》 考虑了同一页面上显示的广告之间的 pairwise 关系,并提出了一种基于条件随机场 Conditional Random Field: CRF 的 CTR 预估模型。

      • 《Exploiting contextual factors for click modeling in sponsored search》 在建模 CTR 时考虑了各种上下文因子,例如广告深度ad depth 、query 多样性、广告交互。

      这些模型的一个主要问题是:需要根据数据分析手动定义顶点特征函数 vertex feature function 和边特征函数 edge feature function ,并且难以将模型推广到其它类型的数据。

    • 差异:本文提出的 DSTN 和先前工作的不同之处在于:

      • DSTN 将异质辅助数据heterogeneous auxiliary data (即上下文、点击广告、未点击广告)集成在一个统一的框架中,而 RNN-based 模型无法利用上下文广告和未点击广告,而 CRF-based 模型无法结合点击广告和未点击广告。

      • DSTN 不是 RNN based,因此更容易实现,并且训练和在线评估都更快。

19.1 模型

  1. 这里我们首先介绍 CTR 预估问题,然后介绍 DSTN 模型的三种变体。

  2. CTR 预估问题:在线广告中的CTR 预估任务是建立一个预估模型来估计用户点击特定广告的概率。

    • 每个样本都可以由多个字段 field 来描述,例如用户信息(用户ID、用户城市、用户年龄等等),以及广告信息(广告创意ID、广告计划ID、广告标题等等)。我们将每个样本称作 ad instance,它不仅包含广告信息,也包括用户信息、上下文信息等。

      字段的实例 instance 是一个特征。例如,用户 ID 字段可能包含诸如 2135147 或 3467291 的特征。下表给出了一些例子,其中:第一列是标签列,1 表示发生点击行为,0 表示未发生点击行为;其它各列均为一个字段。

    • 诸如 FM, DNN, Wide & Deep 之类的经典 CTR 预估模型主要考虑目标广告(如下图所示,target ad 表示目标广告对应的样本),它们聚焦于如何表示样本特征,以及如何学习特征交互。

      与这些方法不同,我们探索了辅助数据(即辅助广告)来提升 CTR 预估。我们必须解决以下问题:

      • 如何适应每种类型辅助广告的不同数量的各种情况。

      • 如何从辅助广告中提取有用的信息并抑制噪音。

      • 如何区分每种类型辅助广告的贡献。

      • 如何融合所有可用信息。

19.1.1 Embedding

  1. 在介绍模型之前,我们首先介绍所有模型中常见的 embedding 过程。embedding 过程是先将每个特征映射到一个 embedding 向量,然后将每个样本表示为相应特征 embedding 向量的拼接 concatenation 。

  2. 假设某个特征有 N 个 unique 值。我们创建一个 embedding 矩阵 E∈RN×K ,其中第 i 行 e→i∈RK 代表对应于特征第 i 个取值的 embedding 向量。这个 embedding 矩阵 E 是在模型训练期间待学习的参数。

  3. 我们将特征分为三种类型并进行不同的处理,如下图所示。cate. 表示 categorical,ft. 表示 feature 。ad instance 表示样本,ad embedding vector 表示样本 embedding 向量。

    • 单值univalent 的离散特征:这类特征仅包含单个值。

      例如用户 ID 就是这类特征的代表,每个用户 ID 特征只有一个用户 ID 值。如果我们使用 one-hot 特征表示,则由于 unique 用户 ID 数量可能高达 108 ,导致特征向量非常稀疏。因此,我们将稀疏的高维离散特征映射为稠密的低维 embedding 向量从而适用于神经网络。

      和 one-hot representation 相比,这些 embedding 向量包含更丰富的信息。

    • 多值multivalent的离散特征:这类特征包含一组值。

      例如广告标题就是这类特征的代表。假设广告标题为 ABCD,那么它的 bi-gram 表示为:AB, BC, CD 。由于这类特征包含取值的数量不是固定的,因此我们首先将每个值映射到 embedding 向量,然后执行池化来生成固定长度的聚合向量。

    • 数值特征:用户年龄是数值特征的典型例子。每个数值特征首先被离散化为离散的桶,然后表示为桶ID,最后将每个桶 ID 映射到 embedding 向量。

  4. 经过 embedding 过程之后,样本的 representation x→ 是所有 embedding 向量的拼接,每个 emebdding 向量对应于一个 field 。

  5. 在 embedding 之后:

    • 每个目标广告target ad 获得了一个 embedding 向量 x→t∈RDt,其中 Dt 为目标广告 embedding 维度。

    • 上下文广告集合获得了 nc 个 embedding 向量 {x→c,i∈RDc}i=1nc ,其中 nc 为上下文广告数量,Dc 为上下文广告 embedding 维度。

    • 历史点击广告集合获得了 nl 个 embedding 向量 {x→l,j∈RDl}j=1nl ,其中 nl 为历史点击广告数量,Dl 为历史点击广告 embedding 维度。

    • 历史未点击广告集合获得了 nu 个 embedding 向量 {x→u,q∈RDu}q=1nu ,其中 nu 为历史未点击广告数量,Du 为历史未点击广告 embedding 维度。

    注意:

    • x→t 包含了用户 embedding、广告 embedding 、上下文 embedding (如 query )。

    • x→l,j,x→u,q 仅包含广告 embedding、上下文 embedding ,而不包含用户 embedding 。

      因为历史点击广告、历史未点击广告和目标广告都是同一个用户,没必要提供冗余的、重复的用户信息。

    • x→c,i 仅包含广告 embedding,而不包含用户 embedding、广告 embedding 。

      因为上下文广告和目标广告都是同一个用户、同一个上下文(如 query )。

19.1.2 DSTN

a. DSTN-Pooling
  1. 由于不同用户的辅助广告数量 nc,nl.nu 可能千差万别,因此这为深度神经网络带来了问题。我们需要解决的第一个问题是:将每种类型的、可变长度的辅助实例auxiliary instance 处理未固定长度的向量。在 DSTN-Pooling 模型中,我们使用 sum 池化来实现该目标,模型结构如下图所示。

    nc 个上下文广告的聚合 representation 向量 x→c、nl 个历史点击广告的聚合 representation 向量 x→l、nu 个历史未点击广告的聚合 representation 向量 x→u 分别表示为:

    x→c=∑i=1ncx→c,i,x→l=∑j=1nlx→l,j,x→u=∑q=1nux→u,q

    如果某种类型的辅助广告完全缺失(例如,根本没有上下文广告)则我们将全零向量作为其聚合representation 向量。

  2. 现在我们有了目标广告的 representation x→t、不同类型辅助广告的 representation x→c,x→l,x→u ,下一个问题是融合这些representation 中包含的信息。

    具体而言,我们生成融合的 representation v→∈RDv 为:

    v→=Wtx→t+Wcx→c+Wlx→l+Wux→u+b→

    其中:

    • Wt∈RDv×Dt,Wc∈RDv×Dc,Wl∈RDv×Dl,Wu∈RDv×Du 为待学习的权重矩阵,它们将不同的类型的 representation 映射到相同的语义空间。

    • b→∈RDv 为待学习的 bias 向量。

    可以看到,我们实际上使用不同的权重来融合来自不同类型数据的输入。这是因为不同类型的辅助数据对于目标广告的影响程度可能不同,因此我们需要区分这些差异。

    此外,融合的representation v→ 具有以下特性:如果一种或者多种类型的辅助广告完全缺失,则融合的representation v→ 不受影响。例如,如果没有上下文广告,那么 x→c=0→ 。结果导致 Wcx→c=0→,因此 v→ 不受影响。

  3. 如果我们将目标广告的 representation x→t、不同类型辅助广告的 representation x→c,x→l,x→u 拼接为 m→=[x→t||x→c||x→l||x→u] ,那么我们可以将上式重写为:

    v→=Wm→+b→

    其中:|| 表示向量拼接;W∈RDv×(Dt+Dc+Dl+Du) 为所有权重矩阵的拼接;b→∈RDv 为待学习的 bias 向量。这种方式大大简化了模型。

    因此,DSTN-Pooling 模型最终的设计为:

    • 首先拼接各个representation 从而获得临时 representaion m→ 。

    • 然后将 m→ 通过若干个带 ReLU 激活函数的全连接层FC layer,从而利用高阶特征交互以及非线性变换。文献表明:ReLU 激活函数在收敛速度和模型效果方面比 tanh 激活函数具有明显的优势。

      z→1=ReLU(W1m→+b→1)z→2=ReLU(W2z→1+b→2)⋮z→L=ReLU(WLz→L−1+b→L)

      其中:L 为全连接层的层数;W→l,b→l 表示第 l 层全连接层的、待学习的参数。

    • 全连接层输出向量 z→L 通过一个 sigmoid 函数来生成目标广告的预估 CTR:

      y^=11+exp⁡[−(w→⊤z→L+b)]

      其中 w→,b 为待学习的参数。

此外,为了避免模拟过拟合,我们在每个全连接层之后应用 dropout 。

  1. 所有的模型参数通过最小化交叉熵损失函数来学习,其中损失函数定义为:

    loss=−1|Y|∑y∈Y[ylog⁡y^+(1−y)log⁡(1−y^)]

    其中: y∈{0,1} 为目标广告的真实label;y^ 为目标广告的预估CTR;Y 为所有真实label 的集合。

  2. 可以看到:在 DSTN-Pooling 模型中,当给定用户在给定位置展示不同的目标广告时只有 x→t 发生变化,而所有的辅助representation x→c,x→l,x→u 都保持不变。这意味着辅助 representation 仅用作静态基础信息。

    而且,由于 x→c,x→l,x→u 是通过 sum 池化生成的,因此有用的信息很容易被淹没在噪声中。例如,如果目标广告是关于咖啡的,但是大多数历史点击广告是关于衣服的、少部分历史点击广告是关于咖啡的。那么,虽然关于衣服的这些历史点击广告对于目标广告的贡献很小,但是 sum 的结果显然是由这些关于衣服的历史点击广告所主导。

b. DSTN-Self Attention
  1. DSTN-Self Attention 模型:鉴于 DSTN-Pooling 的上述限制,我们考虑采用自注意力机制,即 DSTN-Self Attention 模型。

    在我们的 DSTN-Self Attention 模型中,我们在每种类型的辅助数据上应用自注意力从而强调更重要的信息。以上下文辅助广告为例,其聚合representation 向量建模为:

    x→^c=∑i=1ncαc,ix→c,i

    其中 αc,i 为第 i 个上下文广告 representation 的注意力系数,它计算为:

    αc,i=exp⁡(βc,i)∑i′=1ncexp⁡(βc,i′),βc,i=f(x→c,i)∈R

    其中 f(⋅) 为一个函数,它将上下文广告 representation 向量 x→c,i 映射为一个标量权重 βc,i。f(⋅) 的一个可能的实现方式是采用多层感知机 Multilayer Perceptron: MLP 。

    自注意力机制的优点在于:可以根据 self-attention 来加权不同的辅助广告 x→c,i ,从而可以强调有用的信息并抑制噪声。但是,它仍然具有以下局限性:

    • 权重 βc,i 仅仅基于上下文辅助广告 x→c,i 来计算,它并未捕获这个上下文辅助广告和目标广告 x→t 之间的关系。例如,无论目标广告是关于咖啡还是衣服,上下文辅助广告的重要性都保持不变。

    • 归一化的注意力系数 αc,i 通过 {x→c,i}i=1nc 之间的相对重要性来计算,并且 ∑i=1ncαc,i=1 。结果,即使所有的上下文辅助广告 {x→c,i}i=1nc 和目标广告 x→t 无关,由于归一化的存在,最终的注意力系数 αc,i 仍然很大。

    • 每种类型辅助广告的绝对数量也很重要,但是归一化并未捕获这种效果。例如,假设每个上下文辅助广告的重要性都相同,则采用归一化的注意力系数完全无法区分是 1 个上下文辅助广告、还是 100 个上下文辅助广告。

c. DSTN-Interactive Attention
  1. DSTN-Interactive Attention:鉴于 DSTN-Self Attention 的上述限制,我们考虑引入每种类型辅助广告和目标广告之间的显式交互,即 DSTN-Interactive Attention 模型,如下图所示。

    以上下文辅助广告为例,其聚合representation 向量建模为:

    x→~c=∑i=1ncαc,ix→c,iαc,i=exp⁡(h→⊤ReLU(Wt,c[x→t||x→c,i]+b→t,c,1)+bt,c,2)

    其中:h→,Wt,c,b→t,c,1,bt,c,2 为模型参数。

    和 DSTN-Self Attention 相比,这里的 αc,i 现在是目标广告 x→t 和上下文辅助广告 x→c,i 的函数。通过这种方式,αc,i 基于目标广告 x→t 来动态调整上下文辅助广告 x→c,i 的重要性。

    此外,αc,i 现在还不依赖于其它上下文辅助广告 {x→c,i′}i′≠i ,也不需要进行归一化。如果没有任何上下文辅助广告能够提供信息,则所有的 αc,i 都会很小。

    类似地,我们为历史点击辅助广告生成 x→~l、为历史未点击辅助广告生成 x→~u 。

  2. DSTN-Interactive Attention 模型最终得到融合的 representation 为:

    v→=Wtx→t+Wcx→~c+Wlx→~l+Wux→~u+b→

    和 DSTN-Pooling 相比,可以看到:

    • 辅助representation v→ 现在不再使用静态基础信息,而是根据目标广告来动态调整。这意味着模型会针对目标广告自适应地提取辅助数据中的更多有用信息。

      例如,假设历史点击广告和咖啡、衣服、汽车相关。

      • 当目标广告 x→t 和咖啡有关时,历史点击的咖啡广告应该为 x→~l 做出更大的贡献。

      • 当目标广告 x→t 和汽车有关时,历史点击的汽车广告应该为 x→~l 做出更大的贡献。

    • 此外,模型仍然保留了使用不同的权重来融合不同类型辅助数据输入的特点。

    • 最后,模型中的权重 αc,i 并没有在所有上下文辅助广告之间进行比较,这避免了归一化导致的问题。

  3. 最后我们给出 DNN, DSTN-Pooling, DSTN-Interactive Attention 等模型的结构对比,如下图所示。

19.1.3 部署

  1. 我们在中国第二大搜索引擎 “神马搜索” 中部署了 DSTN-I(简称 DSTN )。下图给出了系统的体系架构,其中包括离线阶段、流式 streaming 阶段、在线阶段。

    • 离线阶段:在线用户行为(广告曝光/点击)不断地记录到离线用户日志数据库中。系统从日志数据库中提取训练数据,并训练 DSTN 模型。

      离线训练首先以 batch 方式执行,然后周期性地使用最新的日志数据对训练好的模型进行增量更新。

    • streaming 阶段:在线用户行为也会被发送到用户会话服务器User Session Server(延迟不超过 10s ),该服务器上维护并更新了每个用户历史记录的 hashmap。

      为了减少内存需求和在线计算量,hashmap 保持了每个用户最近3 天内的最多5 个历史点击广告和5 个历史未点击广告。如果超过 5 个,则仅保留最新的 5 个。

    • 在线阶段:收到用户请求之后,Ad Server 首先从User Session Server 检索用户历史记录数据。然后 Ad Server 向 Model Server 请求一组候选广告的 pCTR。

  2. 在线阶段的pCTR 请求是分为几个步骤来完成的。这是因为神马搜索现在每个 app 页面拥有 3-4 个广告位,因此需要为用户返回 3-4 个广告。而且,前面的广告是后面广告的上下文。

    • ①:Ad Server 将候选目标广告集合以及历史点击广告、历史未点击广告一起发送给 Model Server。此时没有上下文广告集合。

    • ②:Model Server 返回这些候选目标广告的 pCTR。

    • ③:Ad Server 根据某些排序策略(依赖于 pCTR)选择 top 候选目标广告。假设该 top 候选目标广告是广告 2 ,然后广告 2 将成为其它目标广告的上下文广告。

      Ad Server 将剩余的候选目标广告集合以及上下文广告(广告 2 )、历史点击广告、历史未点击广告一起发送给 Model Server。

    • ④:Model Server 将返回剩余候选目标广告的 pCTR 。

    理论上讲我们需要多次执行步骤 ③和④,从而依次挑选目标广告并更新上下文广告集合。但是考虑到预测准确率和服务延迟之间的折衷,我们仅执行步骤③和④一次,并在步骤④之后 Ad Server 选择2-3 个得分最高的剩余候选目标广告,并将最终广告列表发送给用户。

    本质是,在线预估的时候上下文广告集合是不确定的,依赖于在线策略的选择。

19.2 实验

  1. 这里我们对三个大型数据集进行实验,从而评估所提出的 DSTN 以及几种 state-of-the-art 的 CTR 预估方法的效果

  2. 数据集:

    • Avito 广告数据集:该数据集包含来自俄罗斯最大的通用分类网站 avito.ru 的广告日志随机采样的样本。我们将 2015-04-28 ~ 2015-05-18 的广告日志用于训练,将 2015-05-19 的广告日志用于验证,将 2015-05-20 的广告日志用于测试。

      我们使用的特征包括:

      • 广告特征,如广告ID、广告标题、广告类别、广告的父类别parent category(类别的上一级类别)。

      • 用户特征,如用户 ID、IP ID、用户 agent、用户 agent OS、用户设备。

      • query 特征,如搜索query、搜索位置location、搜索类别cateogry、搜索参数 parameter 。

    • Search 广告数据集:该数据集包含来自阿里巴巴商业搜索广告系统的广告曝光和点击日志随机采样的样本。我们将 2018 年 6 月连续7 天的广告日志用于训练,将下一天的广告日志用于验证,将下下一天的广告日志用于测试。

      我们使用的特征包括:

      • 广告特征,如广告ID、广告标题、广告行业。

      • 用户特征,如用户ID、IP ID、用户 agent。

      • query 特征,如搜索query、搜索位置location 。

    • News feed 广告数据集:该数据集来自阿里巴巴商业新闻 feed 广告系统的广告曝光和点击日志随机采样的样本。我们将 2018 年 7 月连续7 天的广告日志用于训练,将下一天的广告日志用于验证,将下下一天的广告日志用于测试。

      我们使用的特征包括:

      • 广告特征,如广告ID、广告标题、广告行业。

      • 用户特征,如用户ID、召回的广告主题 matched ad topic 的数量。

      • 交叉特征,如 AdType-AdResource 。

      该数据集中的辅助数据不包含上下文广告。这是因为在我们的新闻 feed 广告系统中,页面上仅显示一个广告。

    数据集的统计信息如下表所示,其中 avg 表示 average、ctxt 表示 contextual、pta 表示 per target ad 。可以看到 distinct 特征数量可以高达 4600 万。

  3. baseline 方法:

    • LR:逻辑回归模型Logistic Regression 。它是一个广义线性模型,建模了一阶特征重要性。

    • FM:因子分解机模型Factorization Machine。它同时对一阶特征重要性和二阶特征交互进行建模。

    • DNN:深度神经网络Deep Neural Network 。每个样本首先经过一个 embedding 层,然后经过几个全连接层。最后输出层利用 sigmoid 函数来预估 CTR 。

    • Wide&Deep:Wide&Deep 模型。它结合了 LR 模型(wide 部分)和 DNN 模型(deep 部分)。

    • DeepFM:DeepFM 模型。它结合了 FM模型(wide 部分)和 DNN 模型(deep 部分),并且在 wide 部分和 deep 部分之间共享相同的输入和 embedding 向量。事实证明,DeepFM 的性能优于 Wide&Deep, FNN, PNN 等模型。

    • CRF:条件随机场Conditional Random Field 方法。它同时考虑了广告的特征、以及该广告和周围广告surrounding ad 的相似性。

      CTR 预估的对数几率通过 w→⊤x→−0.5β×s 给出,其中:w→,β 为模型参数,x→ 为样本特征,s 为周围广告的相似性之和 。相似性是在广告标题和广告描述文本中的字符串上人工定义的manually defined 。

      CRF 在某种程度上是不切实际的,因为在商业广告系统中,无法预先知道目标广告下面的广告。因此,我们仅将上下文广告(即目标广告上方的广告)用作周围的广告。

    • GRU:Gated Recurrent Unit,最先进的 RNN 网络之一。它利用了用户的历史点击广告序列。

    • DSTN-P:DSTN-Pooling 模型。它使用 sum 池化来聚合辅助数据。

    • DSTN-S:DSTN-Self Attention 模型。它使用 self attention 来聚合辅助数据。

    • DSTN-I:DSTN-Interactive Attention 模型。它引入了辅助数据和目标广告之间的显式交互。

    在所有这些方法中,CRF, GRU, DSTN 均考虑辅助广告,而所有其它方法都聚焦于目标广告上。具体而言:CRF 考虑了上下文广告,GRU 考虑了历史点击广告,DSTN 考虑了上下文广告、历史点击广告、历史未点击广告。

  4. 配置:

    • 每个特征的 embedding 向量维度设为 10。因为 distinct 特征数量太高,如果embedding 维度太大则参数规模异常巨大。

    • DNN, Wide&Deep, DeepFM, GRU, DSTN 中全连接层的层数设为 2,每层的维度分别为512,256 。

    • dropout rate 设为 0.5 。

    • GRU 的隐层维度设置为 128。

    • DSTN-S 中的 f(⋅) 函数是具有单隐层的 MLP,隐层维度为 128。

    • DSTN-I 中的 h→ 的维度也设为 128。

    • 所有方法都在Tensorflow 中实现,并通过 Adagrad 算法进行优化。batch size 设为 128。

    • 我们使用用户最近 3 天的历史行为。为了降低内存需求,我们进一步限制 nc≤5,nl≤5,nu≤5 。也就是说,如果历史点击广告数量不超过 5 个,则我们全部使用;如果超过5 个,则我们使用最新的 5 个。

  5. 评估指标:测试集上的 AUC, logloss。

    AUC 反映了对于随机选择的一个正样本和一个负样本,模型对正样本的rank 高于负样本的概率。

  6. 下表给出了实验结果。可以看到:

    • Wide&Deep 比 LR, DNN 获得了更高的 AUC;同样地, DeepFM 比 FM, DNN 获得了更高的 AUC。

      这些结果表明:将 wide 部分和 deep 部分组合在一起可以提高整体的预测能力。

    • CRF 的效果比 LR 好得多,因为 CRF 可以通过一个系数来校正LR 的预测,该系数summarize 了当前广告和上下文广告的相似性。

      但是,这种相似性是基于原始字符串人工定义的,因此遇到了语义gap 的困扰。

    • GRU 在两个数据集上(除了 Search 数据集)的表现优于 LR, FM, DNN, Wide&Deep, DeepFM,因为 GRU 还利用了历史点击广告。

      GRU 的改善在 News Feed 广告数据集上最为明显。这是因为用户没有在 News Feed 广告中提交query,因此历史行为非常有信息量informative 。

    • DSTN-P 优于 GRU。原因有两个:

      • 首先,用户行为序列中的连续行为可能没有很好的相关性。例如,某个用户最近点击了零食和咖啡的广告。下一次点击的广告可能是关于牙膏的,而不是关于食品的。这仅仅取决于用户的需要,而不是与之前点击广告的相关性。因此,考虑用户行为序列可能不一定有助于提高预测性能。

      • 其次,DSTN-P 可以利用上下文广告、历史未点击广告中的信息。

    • 当我们比较 DSTN 的不同变体时,可以观察到: DSTN-S 的性能优于 DSTN-P,而DSTN-I 的性能进一步优于 DSTN-P 。

      这些结果表明:和简单的 sum 池化相比,self attention 机制可以更好地强调有用的信息。而interactive attention 机制显式地引入了目标广告和辅助广告之间的互动,因此可以自适应地抽取比 self attention 更多的相关信息。

    • 我们还观察到,logloss 不一定与 AUC 相关。即 AUC 更大的模型,其 logloss 不一定更小。尽管如此,DSTN-I 在所有数据集上的AUC 最大、 logloss 也最小,这显示了模型的有效性。

  7. 为了检查不同类型辅助数据的影响,我们在DSTN-I 模型中分别仅提供上下文广告、仅提供历史点击广告、仅提供历史未点击广告。为了衡量效果,我们定义并计算以下两个指标:

    • 绝对 AUC 提升absolute AUC improvement: AbsImp:

      AbsImp(ctxt)=AUC(DSTN-I with ctxt ads only)−AUC(DNN)

      其中 ctxt 是上下文的缩写。

    • 标准化的 AUC 提升 normalized AUC improvemen: NlzImp:

      NlzImp(ctxt)=AbsImp(ctxt)Avgerage number of ctxt ads per target ad 

      这里我们针对平均辅助数据的规模进行归一化。

    AbsImp 考虑AUC 的整体提升,而 NlzImp 将AUC 提升效果针对单个辅助广告进行标准化。通常我们关注AUC 的绝对提升而不是相对提升,因为在工业实践中 AUC 的绝对提升更具有意义和指导性。

    实验结果如下图所示。

    • 从 (a) 中可以看到:不同类型辅助数据的效果在不同数据集上有所不同。上下文广告在 Avito 数据集上的 AbsImp 最高,而历史未点击广告在Search 数据集上的 AbsImp 最高。

    • 从(b) 中可以看到:有意思的是,一旦标准化之后,上下文广告、历史点击广告的作用就比历史未点击广告高得多。

      这符合直觉,因为上下文广告可能会分散用户的注意力,而历史点击广告通常会反映出用户的兴趣。相反,历史未点击广告可能会产生很大的噪音:历史未点击可能表明用户对广告不感兴趣,或者用户根本没有查看广告。

  8. 为了检查全连接层深度的影响,我们在DSTN-I 模型中分别选择了三种不同配置的全连接层:单层 256 维、两层 512-256 维、三层 1024-512-256 维。实验结果如下图所示。

    可以看到:

    • 增加全连接层的数量可以在一开始改善 AUC,但是随后添加更多层时,提升的幅度会降低。

    • 最后,添加更多的层甚至可能导致轻微的性能降级degradation。这可能是由于更多的模型参数导致过拟合,以及更深的模型导致训练难度增加而导致的。

  9. 下图分别给出了NN 和 DSTN-I 学到的 ad-embedding 的可视化(基于 t-SNE),不同颜色代表不同的子类目。这些广告是基于 5 个主类目(电子、服装、家具、计算机、个人护理)下的 20 个子类目。我们在每个子类目中随机选择 100 个广告。

    注意:这里可视化的是 target ad embedding,而这里的的 ad embedding 只有广告信息,不包含 query 信息和用户信息。

    可以看到:

    • 两种方法学到的 embedding 均显示了清晰的簇结构,每个簇代表一组相似的广告。

    • 尽管如此,DNN 还是将 iPhone 和 “三星手机” 混在一起,将 “床” 和 “橱柜” 混在一起,将 “礼服” 和 “鞋子” 混在一起。相比之下,DSTN-I 学习到了更清晰的簇,并清楚地区分了不同的子类目。

    这些结果表明,DSTN-I 可以借助辅助广告来学习更具代表性的 embedding 。

  10. 现在我们通过对 Avito 数据集的一些案例研究来检查 DSTN-I 辅助广告的注意力权重。我们很难分别检查每种类型的辅助广告,因为很难找到包含足够数量的、所有辅助类型广告的案例。

    • 上下文广告:下图给出了关于 YotaPhone 的目标广告。我们显示了三个上下文广告,分别是手机镜头、三星手机、HTC 手机。我们给出了上下文广告的注意力权重 αc 。

      可以看到:两个手机广告的权重相差不大(约 0.6),但是手机镜头广告(最不相似)的权重却要高得多(约 0.8)。

      这样的观察结果符合 《Relational click prediction for sponsored search》 中的分析,作者发现:周围的广告和目标广告越相似,目标广告的点击率就越低。这是因为相似的广告可以分散用户的注意力,因为所有这些广告都提供相似的产品或服务。

      相反,相异的广告可以帮助目标广告更加引人注目,因此 DSTN-I 将手机镜头广告给予较大的权重。

      因此对于上下文广告,和目标广告越相似,注意力权重越低。

    • 历史点击广告:目标广告是关于自拍杆。我们给出了历史点击广告的注意力权重 αl 。

      • 第一个历史点击广告是关于婴儿安全座椅,这显然与目标广告无关,其注意力权重为 0.5223。

      • 第二个历史点击广告是关于闪光灯,闪光灯是用于摄影的数码相机的附件,其注意力权重( 0.7057 )要比婴儿安全座椅高得多。

      • 第三个历史点击广告是关于三脚架,三脚架和自拍杆更为相似,因此注意力权重更高(0.8449)。

      • 第四个历史点击广告也是关于自拍杆,其注意力权重最高(0.9776)。

      这些观察结果表明:历史点击广告和目标广告越相似,注意力权重越高。这是因为:如果用户曾经点击了和目标广告类似的广告,则用户也可能会点击目标广告。

    • 历史未点击广告:目标广告是关于 Sony 相机套装的。四个历史未点击广告分别与自行车、自拍杆、相机镜头、相机套装有关。我们给出了历史未点击广告的注意力权重 αu 。

      这些广告和目标广告的相似性依次递增,因此相应的注意力权重也在增加。

      这些观察结果表明:历史未点击广告和目标广告越相似,注意力权重越高。这是因为:如果用户过去没有点击和目标广告类似的广告,那么用户很可能也不会点击目标广告。

    将历史点击广告和历史未点击广告的注意力权重进行比较,我们发现一个有趣的现象:即使历史未点击广告和目标广告非常相似,历史未点击广告的平均权重也要比历史点击广告的平均权重小得多。这是因为历史点击广告会反映出可能的用户偏好,而历史未点击广告则更加模棱两可ambiguous 。

  11. 我们于 2019 年 1 月进行了为期两周的在线 A/B test 实现。基准模型是 Wide&Deep,这是我们最新的在线 serving 模型。我们的在线评估指标是 CTR。

    在线实验结果表明:DSTN 的效果始终优于 Wide&Deep,两周的平均 CTR 提升在 6.92% 。这证明了 DSTN 在实际点击率预估任务中的有效性。目前我们已经在神马搜索中部署了 DSTN 。

二十、BST[2019]

  1. 在过去的十年中,推荐系统已经成为业界最流行的应用application 。并且在过去的五年中,基于深度学习的方法已经广泛应用于工业推荐系统中。在中国最大的电商平台阿里巴巴上,推荐系统一直是Gross Merchandise Volume: GMV 和收入的主要引擎,并且在丰富的电商场景中已经部署了各种基于深度学习的推荐方法。

    阿里巴巴的推荐系统分为两个阶段:match 和 rank 。

    • 在 match 阶段,根据和用户交互的item 选择一组相似的item 。

    • 然后在rank 阶段,我们学习一个经过微调fine-tuned 的预测模型,从而预测用户点击给定候选 item 集合的可能性。

    在论文 《Behavior Sequence Transformer for E-commerce Recommendation in Alibaba》 中,我们重点关注阿里巴巴旗下淘宝(中国最大的 Consumer-to-Consumer: C2C 平台)的 rank 阶段。在这个阶段,我们有数百万的候选item,并且需要在给定用户历史行为的情况下预测用户点击候选 item 的概率。

    在深度学习时代,embedding 和 MLP 已经成为工业推荐系统的标准范式:大量原始特征作为向量被嵌入到低维空间中,然后馈入称作多层感知机multi layer perceptron: MLP 的全连接层中,从而预测用户是否会点击某个 item 。代表作是谷歌的 wide and deep learning: WDL ,以及阿里巴巴的 Deep Interest networks: DIN 。

    在淘宝,我们在 WDL 的基础上构建了 rank 模型,在 Embedding&MLP 范式中使用了各种特征。例如,item 类目category、品牌brand,item 的统计数字,用户画像特征等等。尽管该框架取得了成功,但是它本身远远不能令人满意,因为它实际上忽略了一种非常重要的信号:用户行为序列(即用户按顺序点击的 item )背后的序列信号sequential signal 。

    例如,用户在淘宝上购买了 iphone 之后倾向于点击手机保护套,或者在购买一条裤子之后试图找到合适的鞋子。从这个意义上讲,在淘宝的 rank 阶段部署预测模型时,不考虑这一因素是有问题的。

    • 在 WDL 中,模型只是简单地拼接所有特征,而没有捕获用户行为序列中的顺序信息order information 。

    • 在 DIN 中,模型使用注意力机制来捕获候选 item 和用户历史点击item 之间的相似性,也没有考虑用户行为序列背后的序列性质sequential nature 。

    因此,在这项工作中,为解决 WDL 和 DIN 面临的上述问题,我们尝试将用户行为序列的序列信号融合到淘宝的推荐系统中。

    受到natural language processing: NLP 中机器翻译任务的 Transformer 的巨大成功的启发,我们采用 self-attention 机制,通过考虑 embedding 阶段的序列信息来学习用户行为序列中每个 item 的更好的representation 。然后将这些 item representation 馈入到 MLP 中来预测用户对候选 item 的响应。

    Transformer 的主要优势在于,它可以通过 self-attention 机制更好地捕获句子中单词之间的依赖关系。从直觉上讲,用户行为序列中 item 之间的 'dependency' 也可以通过 Transformer 来提取。因此,我们在淘宝上提出了用于电商推荐的 user behavior sequence transformer: BST 。

    离线实验和在线 A/B test 显示了 BST 与现有方法相比的优越性。BST 已经部署在淘宝推荐的rank 阶段,每天为数亿消费者提供推荐服务。

  2. 相关工作:自从 WDL 提出以来,人们已经提出了一系列基于深度学习的方法来提高 CTR 预估的工作,如 DeepFM、XDeepFM、Deep and Cross 等。然而,所有这些先前的工作都集中在神经网络的特征组合或不同架构上,而忽略了现实世界推荐场景中用户行为序列的顺序特性 sequential nature 。

    最近, DIN 通过注意力机制来处理用户的行为序列。我们的模型和 DIN 之间的主要区别在于,我们提出使用 Transformer 来学习用户行为序列中每个 item 的更 deeper 的 representation ,而 DIN 试图捕获历史点击 item 和目标 item 的相似性。换句话讲,我们的 transformer 模型更适合捕获序列信号。

    在 《Self-attentive sequential recommendation》 和 《BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer》 中,他们使用 Transformer 模型来以 sequence-to-sequence 的方式解决序列推荐问题,而我们的 CTR 预估模型与他们的架构不同。

20.1 模型

  1. 在 rank 阶段,我们将推荐任务建模为点击率Click-Through Rate: CTR预估问题,其定义如下:给定用户 u 点击item 构成的用户行为序列 S(u)={v1,⋯,vn} ,我们需要学习一个函数 F 来预测 u 点击目标item vt (即候选 item ) 的概率。

  2. 我们在 WDL 的基础上构建了 BST,整体架构如下图所示。从图中可以看到 BST 遵循流行的 Embedding&MLP 范式,其中历史点击item 和相关的特征首先被嵌入到低维向量中,然后被馈送到 MLP 。

    具体而言,BST 将用户行为序列(包括target item 和其它特征Other Features)作为输入。其中Other Features 包括:用户画像特征、上下文特征、item 特征、以及交叉特征。

    • 首先,这些输入特征被嵌入为低维向量。为了更好地捕获行为序列中 item 之间的关系,可以使用 transformer layer 来学习序列中每个 item 的更深层representation 。

    • 然后,通过将Other Features的 embedding 和 transformer layer 的输出进行拼接,并使用三层 MLP 来学习 hidden features 的交互作用。

    • 最后,使用 sigmoid 函数生成最终输出。

    注意:Positional Features 被合并到 Sequence Item Features 中。

    BST 和 WDL 之间的主要区别在于:BST 添加了 transformer layer ,从而通过捕获底层的序列信号来学到用户点击item 的更好的 representation 。

    接下来的内容我们将以自下而上的方式介绍 BST 的关键组件:embedding layer、transformer layer、MLP 。

20.1.1 Embedding Layer

  1. 第一个组件是 embedding layer,它将所有输入特征嵌入到一个固定大小的低维向量中。

    • 在我们的场景中有各种特征,如用户画像特征、item 特征、上下文特征、以及不同特征的组合(即交叉特征)。由于我们的工作聚焦于使用 transformer 对用户行为序列进行建模,因此为简单起见我们将所有这些特征都表示为 Other Features,并在下表中给出了一些示例。

      我们将 Other Features 拼接起来,将它们嵌入到低维向量中。对于这些特征,我们创建一个 embedding 矩阵 Wo∈R|F|×do 。其中: do 为 embedding 向量的维度,|F| 为 uniqe 特征数量。

    • 此外,我们还获得了用户行为序列中每个 item (包括目标item)的 embedding 。我们使用两种类型的特征来表示一个 item:Sequence Item Features(红色)、Positional Features(深蓝色)。

      • Sequence Item Features 包括 item id 和 category id。

        注意,一个 item 往往具有数百个特征,而在用户行为序列中选择item的所有这些特征代价太大。正如我们先前的工作 《Billion-scale commodity embedding for e-commerce recommendation in alibaba》 所述,item id 和 category id 足以满足性能要求。因此我们选择这两个稀疏特征来表示嵌入用户行为序列中的每个 item 。

      • Positional Features 对应于下面的 positional embedding 。

      对于每个 item,我们将 Sequence Item Features 和 Positional Features 拼接起来,并创建一个 embedding 矩阵 WV∈R|V|×dV 。其中: dV 为 embedding 向量的维度, |V| 为 item 数量。我们使用 e→i∈RdV 来表示给定行为序列中第 i 个 item 的 embedding 。

  2. positional embedding :在 《Attention is all you need》 中,作者提出了一种 positional embedding 来捕获句子中的顺序信息order information 。同样地,顺序order 也存在于用户行为序列中。因此,我们添加 position 作为bottom layer 每个item 的输入特征,然后将其投影为低维向量。

    注意,item vi 的 position value 计算为:

    pos(vi)=t(vt)−t(vi)

    其中:

    • vt 为 target item, vi 为用户行为序列中第 i 个 item 。

    • t(vt) 表示推荐时间 recommending time,而 t(vi) 表示用户点击 item vi 的时间戳。

    我们采用这种方法,因为在我们的场景中,它的性能优于 《Attention is all you need》 中的 sin 和 cos 函数。

20.1.2 Transformer Layer

  1. 这一部分,我们介绍了 Transformer layer,它通过捕获行为序列中每个item 与其它item 的关系来学习item 的更深 deeper 的 representation 。

  2. self-attention layer:缩放的内积注意力 scaled dot-product attention 定义为:

    Attention(Q,K,V)=softmax(QK⊤d)V

    其中:Q 代表 query, K 代表 key,V 代表 value 。

    在我们的场景中,self-attention 操作将item 的 embedding 作为输入,通过线性映射将其转换为三个矩阵,并将其馈入attention layer 。

    遵从 《Attention is all you need》,我们使用 multi-head attention :

    S=MH(E)=Concat(head1,⋯,headh)W(H)headi=Attention(EW(Q),EW(K),EW(V))

    其中:

    • W(Q),W(K),W(V)∈Rd×d 为映射矩阵。

    • E 为 S(u) 中所有 item 的 embedding 矩阵。

    • h 为 head 数量。

  3. Point-wise Feed-Forward Network:遵从 《Attention is all you need》,我们添加一个 point-wise Feed-Forward Network:FFN 来进一步提升模型的非线性,它定义为:

    F=FFN(S)

    为避免过拟合并且学习层次的有意义的特征,我们同时在 self-attention 和 FFN 中使用 dropout 和 LeakyReLU 。然后 self-attention layer 和 FFN layer 的总输出为:

    S′=LayerNorm(S+Dropout(S))F=LayerNorm(S′+Dropout(LeakyReLU(S′W(1)+b(1))W(2)+b(2)))

    其中:

    • W(1),W(2),b(1),b(2) 为可学习的参数。

    • LayerNorm 为标准的 normalization layer 。

  4. Stacking the self-attention blocks:在第一个 self-attention block 之后,它会聚合所有历史 item 的 embedding。为了进一步建模底层 item 序列的复杂关系。我们堆叠了 K self-attention building block,其中第 k 个 block 定义为:

    S(k)=MH(F(k−1))F(k)=FFN(S(k))

    实践中我们观察到 K=1 可以获得比 K=2,3 更好的性能。为了提高效率,我们并未尝试更大的 K ,并把这个留给以后的工作。

20.1.3 MLP Layer & Loss Function

  1. 我们将Other Features 的 embedding 和应用于 target item 的 Transformer layer 的输出进行拼接,然后使用三个全连接层来进一步学习这些 dense features 之间的交互。这是工业推荐系统的标准做法。

    为了预测用户是否点击 target item vt,我们将其建模为一个二类分类问题,因此使用 sigmoid 函数作为输出单元。

    为了训练模型,我们使用交叉熵损失函数:

    L=−1|D|∑(x→,y)∈D[ylog⁡p(x→)+(1−y)log⁡(1−p(x→))]

    其中:

    • D 代表所有样本的训练集。

    • y∈{0,1} 代表是否点击的 label 。

    • p(x→) 为网络经过 sigmoid 单元之后的输出,代表样本 x→ 被点击的概率。

20.3 实验

  1. 数据集:数据集是根据 Taobao App 的日志来构建的。我们根据用户在八天内的行为来构建离线数据集,其中前七天用于训练集、第八天用于测试集。

    数据集的统计信息如下表所示,可以看到该数据集非常大并且非常稀疏。

  2. baseline:为了显示 BST 的有效性,我们将它和其它两个模型进行比较:WDL 和 DIN。

    此外,我们通过将序列信息合并到 WDL (称作 WDL(+Seq))中来创建 baseline 方法,该方法将历史点击item 的 embedding 进行均值聚合。

    我们的框架是在 WDL 的基础上通过使用 Transformer 添加序列建模而构建的,而 DIN 是通过注意力机制来捕获目标 item 和历史点击item 之间的相似性。

  3. 评估指标:

    • 对于离线结果,我们使用 AUC 得分来评估不同模型的性能。

    • 对于在线 A/B test ,我们使用 CTR 和平均 RT 来评估所有模型。

      RT 是响应时间response time: RT 的缩写,它是给定query (即淘宝上来自用户的一个请求)生成推荐结果的时间成本。我们使用平均 RT 来衡量在线生产环境中各种效率的指标。

  4. 配置:我们的模型是使用 Python2.7 和 Tensorflow 1.4 实现的,并且选择了 Adagrad 作为优化器。

    此外,我们在下表中给出了模型参数的详细信息。

  5. 实验结果如下表所示,其中 Online CTR Grain 是相对于控制组control group (即 WDL )。从结果中我们可以看到 BST 相比于 baseline 的优越性。具体而言:

    • 离线 AUC 从 0.7734 (WDL)和 0.7866 (DIN) 提高到 0.7894 (BST)。

    • 比较 WDL 和 WDL(+Seq) 时,我们可以看到以简单的平均方式结合序列信息的有效性。这意味着BST 在 self-attention 的帮助下,具有强大的能力来捕获底层用户行为序列的序列信号。

      注意:根据我们的实际经验,即使离线 AUC 的收益很小,也可以带来在线 CTR 的巨大收益。Google 的研究人员在 WDL 中报道了类似的现象。

    • 此外,就效率而言,BST 的平均 RT 接近 WDL 和 DIN 的平均 RT,这保证了在现实世界的大型推荐系统中部署诸如 Transformer 之类的复杂模型的可行性。

    • 最后,我们还展示了堆叠 self-attention layer 的影响。可以看到 b=1 获得最佳的离线 AUC。

      这可能是由于以下事实:用户行为序列中的序列依赖性并不像机器翻译任务中的句子那样复杂。因此,较少的 block 数量就足以获得良好的性能。在《Self-attentive sequential recommendation》中报道了类似的观察结果。因此,我们选择 b=1 在生产环境中部署 BST,并且仅在下表中报告 b=1 的在线 CTR 增益。

二十一、ESM2[2019]

  1. 从互联网上大量可用的options 中为用户发现有价值的产品或服务已经成为现代在线 application (如电商、社交网络、广告等等)的基本功能fundamental functionality 。推荐系统Recommender System 可以起到这个作用,为用户提供准确accurate 、及时timely 和个性化personalized 的服务。下图显示了电商平台中在线推荐的架构。它包含两个基础部分 fundamental component,即系统推荐system recommendation 和用户反馈user feedback 。

    • 在分析了用户的长期行为long-term behavior和短期行为short-term behavior之后,推荐系统首先召回了大量相关 related 的 item。然后,根据几种排序指标 ranking metrics (例如点击率Click-Through Rate: CTR、转化率Conversion Rate: CVR 等等)对召回的 item 进行排序并向用户展示。

    • 接下来,当浏览推荐的item 时,用户可能会点击并最终购买感兴趣的 item。这就是电商交易中的典型的用户行为序列路径 user sequential behavior path “曝光impression--> 点击click --> 购买purchase”。

    推荐系统收集了用户的这些反馈,并将其用于估计更准确的排序指标,这对于下一轮生成高质量的推荐确实非常关键。这里,本文重点关注后点击post-click 的 CVR 估计 estimation任务。

    但是,CVR 估计中的两个关键问题使得该任务相当具有挑战性,即样本选择偏差sample Selection Bias: SSB和数据稀疏性Data Sparsity: DS。

    • SSB 指的是训练空间和推断空间之间数据分布的系统性差异systematic difference 。即:常规的 CVR 模型仅在点击的样本上进行训练,但是在所有曝光样本上进行推断inference 。

      直觉地,点击样本仅仅是曝光样本的一小部分,并且受到用户 self-selection (如用户点击)的偏见biased 。因此,当 CVR 模型在线 serving 时,SSB 问题将降低其性能。

    • 此外,由于和曝光样本相比,点击样本相对更少。因此来自行为序列路径 “点击 --> 购买” 的训练样本数量不足以拟合CVR 任务的大的参数空间,从而导致 DS 问题。

    如下图所示说明了传统CVR 预估中样本选择偏差问题,其中训练空间仅由点击样本组成,而推断空间是所有曝光样本的整个空间。另外,从曝光到购买,数据量是逐渐减少。

    如何处理 SSB 和 DS 问题对于开发高效的工业级推荐系统至关重要。已经有一些研究来应对这些挑战。例如,Entire Space Multi-Task Model: ESMM 模型通过多任务学习框架在用户行为序列路径 “曝光--> 点击 --> 购买” 上定义了 CVR 任务。

    • 它使用整个空间上的所有曝光样本进行训练,以完成两个辅助任务auxiliary task(即post-view CTR 和 post-view CTCVR)。因此,当在线推断时,从 CTR 和 CTCVR 导出的 CVR 也适用于相同的整个空间,从而有效地解决了 SSB 问题。

    • 此外,CVR 网络和具有丰富标记样本的辅助 CTR 网络共享相同的特征representation,这有助于缓解 DS 问题。

    尽管 ESSM 通过同时处理 SSB 和 DS 问题从而获得了比传统方法更好的性能,但是由于购买行为的训练样本很少(根据来自淘宝电商平台的大规模真实交易日志,不到 0.1% 的曝光行为转化为购买),它仍然难以缓解 DS 问题。

    在对日志进行详细分析之后,论文《Entire Space Multi-Task Modeling via Post-Click Behavior Decomposition for Conversion Rate Prediction》 发现用户总是在点击之后采取了一些和购买相关的动作purchase-related action 。例如,由于某些原因(如等待折扣),用户可以将青睐的item 添加到购物车(或者 wish list )中,而不是立即购买。此外,这些行为确实比购物行为更加丰富。有鉴于此,该论文提出了后点击行为分解post-click behavior decomposition 的新思想。

    具体而言,在点击和购买之间并行parallel 地插入不相交的购买相关purchase-related 的决定性动作Deterministic Action: DAction、以及购买无关的其它动作 Other Action: OAction ,形成一个新颖的 “曝光 --> 点击 --> D(O)Action --> 购买” 的用户行为序列图 user sequential behavior graph 。其中任务关系由条件概率明确地定义。此外,在这个图上定义模型能够利用整个空间上的所有曝光样本以及来自后点击行为post-click behavior的额外的丰富abundant 的监督信号supervisory signal ,这将有效地共同解决 SSB 和 DS 问题。

    在论文《Entire Space Multi-Task Modeling via Post-Click Behavior Decomposition for Conversion Rate Prediction》 中,作者借助深度神经网络来体现上述思想。具体而言,论文提出了一种新颖的深度神经网络推荐模型,称作 Elaborated Entire Space Supervised Multi-task Model: ESM2。ESM2 包含三个模块:共享embedding 模块 shared embedding module: SEM、分解预估模块decomposed prediction module: DPM、序列合成模块sequential composition module: SCM 。

    • 首先,SEM 通过线性的全连接层将 ID 类型的 one-hot 特征向量嵌入到dense representation 中。

    • 然后,这些 embedding 被馈入到后续的 DPM 中。在该 DPM 中,各个预测子网通过在整个空间上对所有曝光样本进行多任务学习来并行 parallel 预估分解的子目标decomposed sub-target的概率。

    • 最后,SCM 根据图上定义的条件概率规则conditional probability rule defined ,依次合成compose最终的 CVR 和一些辅助概率。在图的某些子路径sub-path 上定义的 multiple losses 用于监督 ESM2 的训练。

    本文的主要贡献:

    • 据我们所知,我们是第一个引入后点击行为分解 post-click behavior decomposition 的思想来在整个空间内对 CVR 建模的。显式分解explicit decomposition 产生了一个新的用户行为序列图 “曝光 --> 点击 --> D(O)Action --> 购买 ”。

    • 我们提出了一种名为 ESM2 的新颖的神经推荐方法,该方法根据用户行为图 user behavior graph 上定义的条件概率规则,在多任务学习框架中同时对 CVR 预估任务prediction task 和辅助任务auxiliary task进行建模。

      通过收集大量带标签的的后点击行为数据post-click action data ,ESM2 可以有效解决 SSB 和 DS 问题。

    • 我们的模型在现实世界的离线数据集上比典型的 state-of-the-art 方法获得了更好的性能。我们还将其部署在我们的在线推荐系统中,并取得了显著的提升,证明了其在工业应用中的价值。

  2. 相关工作:我们提出的方法通过在整个空间上采用多任务学习框架来专门解决 CVR 预估问题。因此,我们从以下两个方面简要回顾了最相关的工作:CVR 预估、多任务学习。

    • CVR 预估:CVR 预估是许多在线应用的关键组成部分,例如搜索引擎search engines 、推荐系统recommender systems 、在线广告online advertising 。然而,尽管最近 CTR 方法得到了蓬勃发展,很少提出针对 CVR 任务的文献。事实上,CVR 建模是非常具有挑战性的,因为转化行为是极为罕见的事件,只有极少量的曝光item 最终被点击和购买。

      近年来,由于深度神经网络在特征 representation 和端到端建模end-to-end modeling 方面的卓越能力,因此在包括推荐系统在内的许多领域都取得了重大进展。在本文中,我们也采用了深度神经网络对 CVR 预估任务prediction task 进行了建模。与上述方法相比,我们基于一种新颖的后点击行为分解post-click behavior decomposition 思想,提出了一个新颖的用户行为序列图 “曝光 --> 点击 --> D(O)Action--> 购买 ” 。根据图中定义的条件概率规则,我们的网络结构经过专门设计,可以并行预测parallel 几个分解的子目标decomposed sub-target,并依次合成从而形成最终的 CVR 。

    • 多任务学习:由于用户的购买行为在时间上具有多阶段性multi-stage nature,如曝光、点击、购买,先前的工作试图通过多任务框架来形式化CVR 预估任务。例如:

      • 《multi-task learning for recommender systems》 通过同时对 ranking 任务和 rating prediction 任务建模,提出了一个基于多任务学习的推荐系统。

      • 《Modeling task relationships in multi-task learning with multi-gate mixture-of-experts》 提出了一种多任务学习方法,称作 multi-gate mixture-of-experts: MMOE, 以从数据中明确学习任务关系。

      • 《Neural Multi-Task Recommendation from Multi-Behavior Data》 提出一种神经多任务推荐模型neural multi-task recommendation model 来学习不同类型行为之间的级联关系cascading relationship 。

        相反,我们通过关联associating 用户的序列行为图来同时建模 CTR 和 CVR 任务,其中任务关系由条件概率明确定义。

      • 《Perceive your users in depth: Learning universal user representations from multiple e-commerce tasks》 提出学习跨多个任务的通用用户 representation,以实现更有效的个性化。

        我们也通过跨不同任务共享 embedded 特征来探索这种思想。

      • 最近,《Entire space multi-task model: An effective approach for estimating post-click conversion rate》 提出了用于 CVR 预估的entire space multi-task model: ESMM 模型。它将 CTR 任务和 CTCVR 任务作为辅助任务添加到主 CVR 任务中。

        我们的方法受到 ESMM 的启发,但有以下显著的不同:我们提出了一个新颖的后点击行为分解post-click behavior decomposition 的思想来重构一个新的用户行为序列图 “曝光 --> 点击 --> D(O)Action --> 购买”。通过在这个图上定义模型,可以同时形式化最终的 CVR 任务以及辅助任务auxiliary tasks 。

        我们的方法可以利用整个空间的所有曝光样本以及来自用户后点击行为post-click behaviors 的丰富的监督信号,这些监督信号和购买行为高度相关,因此可以同时解决 SSB 和 DS 问题。

21.1 模型

  1. 在实践中,一个item 从曝光到购买,这之间可能存在多种类型的序列动作sequential action 。例如,在点击一个感兴趣的 item 之后,用户可以毫不犹豫的直接购买它,或者将其添加到购物车中然后最终进行购买。这些行为路径如下图 (a) 所示。图(a) 为区分从曝光到购买的、包含后点击行为的多条路径multiple path ,例如 “曝光 --> 点击 --> 添加到购物车 --> 购买” 。

    我们可以根据几个预定义的、特定的和购买相关purchase-related 的后点击动作post-click action 来简化和分组这些路径,即添加到购物车Shopping Cart: SCart、添加到愿望清单Wish list: Wish,如下图 (b) 所示。图(b) 为描述简化的购买过程的有向图,其中边上的数字表示不同路径的稀疏性。

    根据我们对真实世界在线日志的数据分析,我们发现只有 1% 的点击行为最终会转化为购买行为,这表明购买训练样本很少。然而,SCart 和 Wish 这样的一些后点击动作的数据量远大于购买量。如, 10% 的点击会转化为加购物车。此外,这些后点击动作与最终购买行为高度相关。例如,12% 的加购物车行为会转化为购买行为、31% 的加愿望清单行为会转化为购买行为。

    考虑到后点击行为post-click behaviors 和购买行为高度相关,我们如何以某种方式利用大量的后点击行为从而使得 CVR 预估收益?直观地讲,一种解决方案是将购买相关的后点击动作与购买行为一起建模到多任务预测框架multi-task prediction framework中。关键是如何恰当地形式化它们,因为它们具有明确的序列相关性sequential correlation 。例如,购买行为可能是以 SCart 或 Wish 行为为条件的。为此,我们定义了一个名为Deterministic Action: DAction 的单个节点node 来合并这些预定义的、特定的与购买相关的后点击动作,例如 SCart 和 Wish ,如下图 (c) 所示。

    DAction 有两个性质:与购买行为高度相关、具有来自用户反馈的丰富的确定性deterministic 的监督信号。例如,1 表示执行某些特定操作(即在点击之后添加到购物车中、或者点击之后添加到愿望清单中),0 表示未执行这些操作。

    我们还在点击和购买之间添加了一个名为 Other Action: OAction 的节点,以处理DAction 以外的其它后点击行为。借此方式,传统的行为路径 “曝光 --> 点击 --> 购买” 就变为新颖novel 的、精巧elaborated 的用户行为序列图 “曝光 --> 点击 --> D(O)Action --> 购买”,如下图 (c) 所示。

    通过在该图上定义模型,可以利用整个空间上的所有曝光样本以及来自 D(O)Action 的额外的丰富的监督信号,这可以有效地避免 SSB 和 DS 问题。我们称这种新颖的想法为后点击行为分解post-click behavior decomposition 。

21.1.1 条件概率分解

  1. 这里我们根据上图 (c) 中定义的有向图来介绍 CVR 的条件概率分解 conditional probability decomposition ,以及相关的辅助任务auxiliary tasks 。

  2. 定义 item i 的 post view ctr pi<ctr> 为:用户浏览到 item i 的情况下点击它的条件概率。这由有向图中的路径 “曝光 --> 点击” 来描述。从数学上讲,这可以写成:

    pi<ctr>=p(ci=1∣vi=1)≜y1,i

    其中:

    • ci∈{0,1} 表示 item i 是否被点击。

    • vi∈{0,1} 表示 item i 是否浏览。

    • y1,i 是一个简单的替代符号。

  3. 定义 item i 的click-through DAction CVR pi<ctavr> 为:用户浏览到 item i 的情况下执行 DAction 动作的条件概率。这由有向图中的路径 “曝光 --> 点击 --> DAction” 来描述。从数学上讲,这可以写成:

    pi<ctavr>=p(ai=1∣vi=1)=∑ci∈{0,1}p(ai=1∣vi=1,ci)×p(ci∣vi=1)=p(ai=1∣vi=1,ci=0)×p(ci=0∣vi=1)+p(ai=1∣vi=1,ci=1)×p(ci=1∣vi=1)=p(ai=1∣vi=1,ci=1)×p(ci=1∣vi=1)≜y2,iy1,i

    其中:

    • ai∈{0,1} 表示 item i 是否被执行 DAction 动作。

    • 这里假设:如果用户未点击item i ,则不会发生下一步的 DAction 动作。即:

      p(ai=1∣vi=1,ci=0)=0
    • y2,i=p(ai=1∣vi=1,ci=1) 表示路径 “点击 --> DAction” 。

      考虑到点击(ci=1)一定意味着浏览(vi=1),因此 y2,i 简化为:

      y2,i=p(ai=1∣ci=1)
  4. 定义 item i 的CVR pi<cvr> 为:在用户已点击item i 的条件下购买item i 的条件概率。这由有向图中的路径 “点击 --> D(O)Action --> 购买” 来描述。从数学上讲,这可以写成:

    pi<cvr>=p(bi=1∣ci=1)=∑ai∈{0,1}p(bi=1∣ci=1,ai)×p(ai∣ci=1)=p(bi=1∣ci=1,ai=0)×p(ai=0∣ci=1)+p(bi=1∣ci=1,ai=1)×p(ai=1∣ci=1)≜y4,i(1−y2,i)+y3,iy2,i

    其中:

    • bi∈{0,1} 表示 item i 是否被购买。

    • y3,i=p(bi=1∣ci=1,ai=1)=p(bi=1∣ai=1) 表示有向图中的路径 “ DAction -> 购买” 。这里我们假设DAction (ai=1)一定意味着点击(ci=1)。

    • y4,i=p(bi=1∣ci=1,ai=0)=p(bi=1∣ai=0) 表示有向图中的路径 “ OAction -> 购买” 。这里我们假设OAction (ai=0)一定意味着点击(ci=1)。

  5. 定义 item i 的 click-through CVR 为 pi<ctcvr> 为:用户浏览到 item i 的情况下购买它的概率。这由有向图中的路径 “曝光 --> 点击 --> D(O)Action --> 购买” 来描述。从数学上讲,这可以写成:

    pi<ctcvr>=p(bi=1∣vi=1)=∑cip(bi=1∣vi=1,ci)×p(ci∣vi=1)=∑ci∑aip(bi=1∣vi=1,ci,ai)×p(ai∣vi=1,ci)×p(ci∣vi=1)

    考虑到如果没有点击就没有任何购买,即:

    ∀ai∈{0,1}:p(bi=1∣vi=1,ci=0,ai)=0

    则上式简化为:

    pi<ctcvr>=p(bi=1∣vi=1)=∑aip(bi=1∣ci=1,ai)×p(ai∣ci=1)×p(ci=1∣vi=1)=y1,i×[y4,i(1−y2,i)+y3,iy2,i]

    因此,上式可以通过将有向图 “曝光 --> 点击 --> D(O)Action --> 购买” 分解为 “曝光 --> 点击”、以及 “点击 --> D(O)Action --> 购买”,并根据链式法则 chain rule整合之前所有的公式(即 pi<ctcvr>=pi<ctr>×pi<cvr>)从而得出。

21.1.2 ESM2 模型

  1. 从前面推导可以看到:pi<ctr>,pi<ctavr>,pi<ctcvr> 可以从四个隐概率变量hidden probability variable y1,i,y2,i,y3,i,y4,i 中推导而来。每个隐概率变量代表有向图中某个子路径sub-path 上的条件概率,其中:

    • y1,i 表示 “曝光 --> 点击“ 的条件概率。

    • y2,i 表示 “点击 --> DAction“ 的条件概率。

    • y3,i 表示 “ DAction -> 购买” 的条件概率。

    • y4,i 表示 “ OAction -> 购买” 的条件概率。

    此外,这四个子目标 sub-target 在整个空间中定义,并且可以使用所有曝光样本进行预测。以 y2,i 为例,仅使用点击样本直接训练 y2,i 会遇到 SSB 问题。 实际上根据前面的推导,y2,i 是从 pi<ctr> 和 pi<ctavr> 派生的中间变量intermediate variable 。由于 pi<ctr> 和 pi<ctavr> 都是使用所有曝光样本在整个空间上建模的,因此派生的 y2,i 也适用于整个空间,因此在我们的模型中没有 SSB 。

    另一方面, 给定用户的日志,pi<ctr>,pi<ctavr>,pi<ctcvr> 的 ground truth label 是可用的,这些 label 可用于监督这些子目标。

    因此,一种直观的方法是通过多任务学习框架同时对它们进行建模。为此,我们提出了一种新颖的深度神经推荐模型neural recommendation model,称作Elaborated Entire Space Supervised Multi-task Mode: ESM2 ,用于CVR 预估。ESM2 之所以取这个名字是因为:

    • 首先,pi<ctr>,pi<ctavr>,pi<ctcvr> 是在整个空间上建模,并使用所有曝光样本进行预测。

    • 其次,派生的 pi<cvr> 也受益于整个空间的多任务建模。这将在实验部分得到验证。

  2. ESM2 由三个关键模块组成:

    • 一个共享的 embedding 模块Shared Embedding Module: SEM。

      SEM 将稀疏特征嵌入到稠密的 representation 中。

    • 一个分解decomposed 的预估模块Decomposed Prediction Module: DPM。

      DPM 可以预估分解目标的概率。

    • 一个顺序sequential 的合成composition 模块Sequential Composition Module: SCM。

      SCM 将预估分解目标的概率按顺序合成在一起,以计算最终的 CVR 以及其它相关的辅助任务(即 CTR、CTAVR、CTCVR )。

    整体模型如下图所示。

  3. 共享的 embedding 模块:首先我们设计一个共享的 embedding 模块,从而嵌入来自user field、item field、user-item cross field 的所有稀疏ID 特征和稠密数值特征。

    • 用户特征包括 user ID、年龄、性别、购买力等等。

    • item 特征包括 item ID、价格、历史日志统计的历史累计CTR 和历史累计 CVR 等等。

    • user-item 特征包括用户对 item 的历史偏好分historical preference score 等等。

    • 稠密特征首先基于它们的边界boundary 来离散化,然后将其表示为one-hot 向量。

    令第 i 个样本第 j 个特征为 fi,j ,进行 one-hot 之后为 f→i,j 。第 i 个样本的 one-hot 特征为:

    f→i=concat(f→i,1,⋯,f→i,m)

    其中 m 为特征数量。

    由于 one-hot 编码的稀疏性,我们使用线性的全连接层将它们嵌入到 dense representation 中。令第 j 个特征的 embedding 矩阵为 Pj ,则第 i 个样本第 j 个特征的 embedding 为:

    g→i,j=Pj⊤f→i,j

    第 i 个样本的 embedding 特征为:

    g→i=concat(P1⊤f→i,j1,⋯,Pm⊤f→i,m)
  4. 分解预估模块 :然后一旦获得了所有的特征 embedding,就将这些 embedding 拼接到一起,馈入几个分解的预估模块,并由每个模型共享。DPM 中的每个预估网络分别在 “曝光 --> 点击”、“点击 --> DAction”、“DAction --> 购买”、“OAction --> 购买” 等路径上预估分解的 target 的概率。

    在本文中,我们采用多层感知机Multi-Layer Perception: MLP 作为预估网络。除了输出层之外,所有非线性激活函数均为ReLU。对于输出层,我们使用 Sigmoid 函数将输出映射为 0.0 ~ 1.0 之间的概率值。从数学上讲,这可以写成:

    yi(k)=σ(φθk(k)(g→i))

    其中:

    • σ(⋅) 为 sigmoid 函数。

    • φθk(k)(⋅) 为第 k 个 MLP 学到的映射函数,θk 为网络参数。

    例如,上图中的第一个 MLP 输出了估计的概率estimated probability y1 ,这实际上是post-view CTR 。

  5. 顺序合成模块:最后我们设计了一个顺序合成模块,根据前面描述的公式合成上述预估概率,从而计算转化率 p<cvr> 和一些辅助的目标auxiliary target(包括post-view CTR p<ctr>、click-through DAction CVR p<ctavr> 、click-through CVR p<ctcvr> 等等)。

    如上图的顶部所示,顺序合成模块是一个无参的前馈神经网络,它表示购买决策有向图purchasing decision digraph 所定义的条件概率。

  6. 注意:

    • 所有任务共享相同的 embedding,使这些任务使用所有曝光样本进行训练。即在整个空间上对这些任务进行建模,从而在推断阶段不会出现 SSB 问题。

    • 轻量级的分解预估模块由共享的 embedding 模块严格正则化,其中共享的 embedding 模块包含了大部分的训练参数。

    • 我们的模型提出了一种高效的网络设计,其中共享的 embedding 模块可以并行运行,因此在在线部署时可以有较低的 latency 。

  7. 训练目标:令 D={(ci,ai,bi;fi)}∣i=1N 表示训练集,(ci,ai,bi) 表示第 i 个曝光样本 的 ground truth label (是否点击、是否发生deterministic action、是否发生购买行为)。然后我们定义所有训练样本的联合 post-view pCTR 为:

    p<ctr>=∏i∈C+pi<ctr>∏j∈C_(1−pj<ctr>)

    其中 C+,C_ 表示点击 label 空间 C 中的正样本和负样本。

    使用负的对数函数进行变换之后,我们得到 p<ctr> 的logloss :

    Lctr=−∑i∈C+log⁡pi<ctr>−∑j∈C_log⁡(1−pj<ctr>)

    类似地,我们得到 p<ctavr> 和 p<ctcvr> 的损失函数为:

    Lctavr=−∑i∈A+log⁡pi<ctavr>−∑j∈A_log⁡(1−pj<ctavr>)Lctcvr=−∑i∈B+log⁡pi<ctcvr>−∑j∈B_log⁡(1−pj<ctcvr>)

    其中: A+,A_ 表示 DAction label 空间 A 中的正样本和负样本; B+,B_ 表示购买label 空间 B 中的正样本和负样本。

    最终的训练目标函数为:

    L(Θ)=wctr×Lctr+wctavr×Lctavr+wctcvr×Lctcvr

    其中:

    • Θ 为 ESM2 模型中的所有参数。

    • wctr,wctavr,wctcvr 分别为 Lctr,Lctavr,Lctcvr 损失函数的权重。在本文中我们将这些权重都设置为 1.0 。

    需要强调的是:

    • 添加中间损失intermediate loss 来监督分解后的子任务,可以有效地利用后点击行为中丰富的标记数据,从而缓解模型受到 DS 的影响。

    • 所有损失都是从整个空间建模的角度来计算的,这有效解决了 SSB 的问题。

21.2 实验

  1. 为了评估 ESM2 模型的有效性,我们针对从现实世界电商场景中收集的离线数据集和在线部署进行了广泛的实验。我们将 ESM2 和一些代表性的 state-of-the-art 方法进行比较,包括 GBDT、DNN、使用过采样over-sampling 思想的 DNN 、ESMM 等。

    首先我们介绍评估设置setting,包括数据集准备、评估指标、对比的 SOTA 方法的简要说明、以及模型实现细节。然后我们给出比较结果并进行分析。接着我们介绍消融研究。最后我们对不同的后点击行为进行效果分析。

  2. 数据集:我们通过从我们的在线电商平台(世界上最大的第三方零售平台之一)收集用户的行为序列和反馈日志来制作离线数据集。

    我们得到超过3 亿个样本,其中包含用户特征、item 特征、user-item 交叉特征以及序列的反馈标签sequential feedback label(如,是否点击、是否DAction、是否购买)。下表给出了离线数据集的统计信息。

    我们将离线数据集进一步划分为不相交的训练集、验证集、测试集。

  3. 评估指标:为了全面评估ESM2 模型的有效性,并将其和 SOTA 方法进行比较,我们使用三种广泛采纳的指标:AUC、GAUC、F1 score 。

    • AUC 刻画了模型的排序能力ranking ability:

      AUC=∑x+∈D+∑x−∈D_I(ϕ(x+)>ϕ(x−))|D+|×|D_|

      其中:

      • D+ 为正样本集合,D_ 为负样本集合,|D+| 为正样本数量,|D_| 为负样本数量。

      • ϕ(⋅) 为预估函数, I(⋅) 为示性函数。

    • GAUC 首先根据每个用户ID 从而将数据划分为不同的组,然后在每个组中计算 AUC,最后对每个组的 AUC 加权平均。即:

      GAUC=∑uwu×AUCu∑uwu

      其中:

      • wu 为用户 u 的权重。在我们离线评估中我们选择为 1。

      • AUCu 为用户 u 的 AUC 。

    • F1 score 定义为:

      F1=2×P×RP+R

      其中 P 为 precision、R 为 recall 。

  4. baseline 方法:

    • GBDT:梯度提升决策树gradient boosting decision tree: GBDT。它遵循gradient boosting machine: GBM 的思想,能够为回归任务和分类任务提供有竞争力的、高度健壮robust 的、可解释性的方法。本文中,我们将其作为 non-deep learning-based 方法的典型代表。

    • DNN:我们还实现了一个深度神经网络baseline 模型,该模型具有和 ESM2 中单个分支相同的结构和超参数。和 ESM2 不同,它是用 “点击 --> 购买” 或者 “曝光 --> 点击” 路径上的样本进行训练,从而分别预估转化率 p<cvr> 或点击率 p<ctr>。

    • DNN-OS:由于 “曝光 --> 购买” 和 “点击 --> 购买” 路径上的数据稀疏性,很难训练具有良好泛化能力的深度神经网络。为了解决该问题,我们训练一个叫做 DNN-OS 的深度模型,它在训练期间利用了过采样 over-sampling 策略来增加正样本。它具有与上述 DNN 模型相同的结构和超参数。

    • ESMM:为了公平地进行比较,我们为 ESMM 使用与上述深度模型相同的主干结构backbone structure 。ESMM 直接在用户序列路径 “曝光 --> 点击 --> 购买” 上对转化率进行建模,而没有考虑和购买相关的后点击行为post-click behavior 。

    简而言之:

    • 前三种方法分别从 “曝光 --> 点击”、“点击 --> 购买” 路径上的样本来学习预估 p<ctr> 和 p<cvr> ,然后将二者相乘从而得到曝光转化率 p<ctcvr> 。

    • 而对于 ESMM 和我们的 ESM2,则是通过在整个空间上直接建模预估 p<ctcvr> 和 p<cvr> 。

  5. 实验配置:

    • 对于 GBDT 模型,以下超参数是根据验证集 AUC 来选择的:

      • 树的数量为 150。

      • 树的深度为 8。

      • 拆分一个顶点的最小样本量为 20。

      • 每次迭代的样本采样率0.6。

      • 每次迭代的特征采样率为 0.6。

      • 损失函数为 logistic loss 。

    • 对基于深度神经网络的模型,它们基于TensorFlow 实现,并使用 Adam 优化器。

      • 学习率为 0.0005,mini-batch size = 1000 。

      • 在所有模型中,使用 logistic loss 。

      • MLP 有5 层,每层的尺寸分别为 512, 256, 128, 32, 2 。

      • dropout 设置为 dropout ratio = 0.5 。

      这些配置(基于深度神经网络的模型)如下表所示。

  6. 离线数据集的评估结果如下表所示。可以看到:

    • DNN 方法相比较 GBDT 模型在 CVR AUC 、CTCVR AUC、CTCVR GAUC 上分别获得了 0.0242、0.0102、0.0117 的增益。这证明了深度神经网络的强大 representation 能力。

    • 和普通的 DNN 不同,DNN-OS 使用过采样策略来解决 DS 问题,从而获得比DNN 更好的性能。

    • 对于 ESMM,它针对 “曝光 --> 点击 --> 购买” 路径来建模,从而试图同时解决 SSB 和 DS 问题。得益于对整个空间的建模以及丰富的训练样本,它的性能优于 DNN-OS 。

      尽管如此,ESMM 忽略了后点击行为的影响,仍然受到购买训练样本稀疏的困扰,因此仍然难以解决 DS 问题。

    • 我们提出的 ESM2 进一步利用了这些后点击行为。在多任务学习框架下并行预测一些分解的子目标之后,ESM2 依次合成这些预测从而形成最终的 CVR。

      可以看到,我们的 ESM2 超越了所有的其它方法。例如,ESM2 相较于 ESMM 模型在 CVR AUC 、CTCVR AUC、CTCVR GAUC 上分别获得了 0.0088、0.0101、0.0145 的增益。值得一提的是,离线 AUC 增加 0.01 总是意味着在线推荐系统收入的显著增加。

    对于 F1 score,我们分别通过为 CVR 和 CTCVR 设置不同的阈值来报告几个结果。

    • 首先,我们根据预估的 CVR 或 CTCVR 分数对所有样本进行降序排序。

    • 然后,由于 CVR 任务的稀疏性(大约 1% 的预估样本为正样本),我们选择三个阈值:top @ 0.1%、top @ 0.6%、top @ 1% ,从而将样本划分为 positive group 和 negative group 。

    • 最后,我们计算在这些不同阈值下,预估结果的 precision, recall, F1 score 。

    评估结果在下表中给出。可以观察到和 AUC/GAUC 类似的趋势。同样地,我们的 ESM2 方法在不同的配置下也达到了最佳性能。

  7. 在线性能:在我们的推荐系统中部署深度网络模型并不是一件容易的事情,因为推荐系统每天服务于数亿用户。例如,在流量高峰时每秒超过1 亿用户。因此,需要一个实用的模型来进行高吞吐量、低延迟的实时 CVR 预估。例如,在我们的系统中,应该在不到 100 毫秒的时间内为每个访客预测数百个推荐的 item 。得益于并行的网络结构,我们的模型计算效率高,可以在 20 毫秒内响应每个在线请求。

    为了使在线评估公平fair、置信confident、可比较comparable,A/B test 的每种部署的方法都包含相同数量的用户(例如数百万用户)。在线评估结果如下图所示,其中我们使用 GBDT 模型作为 baseline 。可以看到:

    • DNN, DNN-OS, ESMM 的性能相当,明显优于baseline 模型,并且 ESMM 的性能稍好。

    • 我们提出的 ESM2 显著优于所有的其它方法,这证明了它的优越性。

      此外,ESM2 相比 ESMM 在 CVR 上提升了 3%,这对于电商平台具有显著的商业价值。

    以上结果说明了:

    • 深度神经网络比 tree-based 的 GBDT 具有更强的 representation 能力。

    • 在整个样本空间中的多任务学习框架可以作为解决 SSB 和 DS 问题的有效工具。

    • 基于后点击行为分解post-click behaviors decomposition 的思想,ESM2 通过在整个空间上对 CVR 建模并利用 deterministic 行为中大量的监督信号来有效解决 SSB 和 DS 问题,并获得最佳性能。

  8. 消融研究:这里我们介绍详细的消融研究,包括深度神经网络的超参数设置、嵌入稠密数值特征embedding dense numerical features 的有效性、以及分解的后点击行为的选择。

    • 深度神经网络的超参数:这里我们以三个关键的超参数(dropout rate、隐层的层数、item 特征的embedding 维度)为例,从而说明了我们的 ESM2 模型中的超参数选择过程。

      • dropout rate 指的是通过在训练过程中随机停止deactivating 一些神经单元的正则化技术。通过引入随机性,可以增强神经网络的泛化能力。

        我们在模型中尝试了不同的 dropout rate,从 0.2 到 0.7 。如图 (a) 所示,dropout rate = 0.5 时性能最佳。因此,如果没有特别指出,那么实验中我们默认将 dropout rate 设为 0.5 。

      • 增加网络的深度可以提高模型容量,但是也可能导致过拟合。因此,我们根据验证集的 AUC 仔细设置了这个超参数。

        从图 (b) 可以看到:在开始阶段(即从两层增加到五层),增加隐层的数量会不断提高模型的性能。但是,模型在五层达到饱和,后续增加更多的层甚至会略微降低验证 AUC ,这表明模型可能对训练集过拟合。因此,如果没有特别指出,那么实验中我们默认使用五层的隐层。

      • item 特征 embedding 的维度是一个关键的超参数。高维特征可以保留更多信息,但是也可能包含噪声并导致模型复杂度更高。

        我们尝试了不同的超参数设置,并在图 (c) 中给出结果。可以看到:增加维度通常会提高性能,但是在维度为 128 时性能达到饱和。而继续增加维度没有更多收益。因此,为了在模型容量和模型复杂度之间的 trade-off,如果没有特别指出,那么实验中我们默认将 item 特征 embedding 的维度设为 128 。

    • 嵌入稠密数值特征的有效性:在我们的任务中有几个数值特征。

      • 一种常见的做法是首先将它们离散为 one-hot 向量,然后将它们与 ID 特征拼接在一起,然后再通过线性投影层将它们嵌入到稠密特征。但是,我们认为对数值特征的离散化 one-hot 向量表示可能会损失一定的信息。

      • 另一种方案将数值特征归一化,然后使用 tanh 激活函数来嵌入它们,即:

        gi,j=tanh⁡(fi,j−μjσj)

        其中:μj 和 σj 为第 j 个数值特征的均值和标准差。使用 tanh⁡(⋅) 函数是为了将特征调整到 (-1,+1) 之间。

        然后我们将归一化的数值特征和嵌入的 ID 特征拼接在一起,作为 ESM2 模型的输入。

        和基于离散化的方案相比,归一化的方案获得了 0.004 的 AUC 增益。因此,如果没有特别指出,那么实验中我们默认对稠密的数值特征使用基于归一化的方案。

    • 分解的后点击行为的有效性:当分解后点击行为时,我们可以将不同的行为聚合到 DAction 节点中。例如only SCart、only Wish、SCart and Wish 。这里我们评估不同选择的有效性,结果如下表所示。

      可以看到:SCart and Wish 的组合达到了最佳的 AUC 。这是合理的,因为和其它两种情况相比,SCart and Wish 有更多的购买相关的标记数据来解决 DS 问题。

  9. 用户行为的性能分析:为了了解 ESM2 的性能以及和 ESMM 的区别,我们根据用户购买行为的次数将测试集分为四组:[0,10]、[11,20]、[21,50]、[51, +) 。我们报告了每组中两种方法的 CVR AUC 和CTCVR AUC,结果如下图所示。可以看到:

    • 两种方法的 CVR AUC (CTCVR AUC) 都随着购买行为次数的增加而降低。

    • 但是我们观察到,每组中 ESM2 相对于 ESMM 的相对增益在增加,即 0.72%、0.81%、1.13%、1.30%。

    通常,具有更多购买行为的用户总是具有更活跃的后点击行为,例如 SCart 和 Wish 。我们的 ESM2 模型通过添加 DAction 节点来处理此类后点击行为,该节点由来自用户反馈的 deterministic 信号来监督学习。因此,它在这些样本上比 ESMM 具有更好的表示能力,并在具有高频购买行为的用户上获得了更好的性能。

    论文没有分析为什么模型在更多购买行为的用户的 AUC 上下降。这表明模型在这些高购买行为的用户上学习不充分,是否可以将他们作为 hard 样本?或者把购买次数作为特征从而让模型知道这个信息?

二十二、MV-DNN[2015]

  1. 推荐系统和内容个性化content personalization 在 web 服务中扮演着越来越重要的角色。最近的很多web 服务都致力于寻找与用户最相关relevant 的内容,以最大限度地提高网站的互动engagement、并最大限度地降低寻找相关内容relevant content 的时间。

    完成该任务的主要方法称作协同过滤 Collaborative Filtering: CF ,它使用用户在网站上的历史交互 interaction 来预测最相关的内容从而进行推荐。另一种常见的方法是基于内容的推荐content-based recommendation,它使用有关 item 特征或/和用户特征来基于特征之间的相似性similarity 从而向用户推荐新的 item 。虽然这两种方法在许多实际应用中运行良好,但是它们通常都面临一定的限制limitations 和挑战challenges ,尤其是在个性化需求日益增加以及考虑推荐质量recommendation quality 的情况下。具体而言:

    • CF 在提供高质量推荐之前需要大量的网站交互 interaction 的历史记录。这个问题被称作用户冷启动问题user cold start problem 。在一个新建的在线服务中,由于用户与网站的历史交互很少或者没有历史交互,因此问题变得更加严重。因此,传统的 CF 方法通常无法为新用户提供高质量的推荐。

    • 另一方面,content-based 推荐方法从每个用户或/和 item 中提取特征,并使用这些特征进行推荐。例如,如果两个新闻News Ni 和 Nj 共享相同的主题topic,并且用户喜欢新闻 Ni ,则系统可以向用户推荐新闻 Nj 。类似地,如果两个用户 Ui 和 Uj 共享某些相似性similarity (如地理位置location 相似、年龄相似、性别相同),则系统可以向用户 Uj 推荐用户 Ui 之前喜欢的 item 。

      在实践中,研究表明:content-based 方法可以很好地处理新 item 的冷启动问题。然而,当应用于对新用户的推荐时,其有效性是有问题的。因为 user-level 特征通常更难获取,并且user-level 特征通常是是从用户在线个人画像user online profiles中的有限信息生成的,而这些信息无法准确地捕获实际的用户兴趣。

      即:精准画像难以获取,而且画像相似不代表兴趣相似。

    为解决这些限制,论文 《 Multi-View Deep Learning Approach for Cross Domain User Modeling in Recommendation Systems》提出了一个利用用户特征和 item 特征的推荐系统。和许多基于用户画像user profile-based 的方法不同,为了构建用户特征,论文提出从用户的浏览和搜索历史中提取丰富的特征来建模用户的兴趣。潜在的假设是:用户的历史在线活动historical online activities 反映了用户的背景 background 和偏好preference ,因此提供了关于用户可能感兴趣的 item 和主题 topic 的精确洞察 precise insight。例如,具有很多与婴儿相关 query 和相关网站访问的用户可能暗示着这个用户是一个新生儿的妈妈。通过这些丰富的用户在线活动user online activities,可以更有效地实现对相关relevant 的 item 的推荐。

    在论文中,作者提出了一种新颖的深度学习方法,该方法从深度结构语义模型 Deep Structured Semantic Model: DSSM 扩展而来,将用户和 item 映射到共享的语义空间,并推荐与用户在语义空间中相似性最大的item 。为此,论文的模型通过非线性转换层将用户和 item (均由丰富的特征集合来表示)投影到紧凑的共享潜在语义空间compact shared latent semantic space 中。在这个语义空间中,用户的语义表示和用户喜欢的 item 的语义表示之间的相似性similarity 被最大化。这使得该模型能够学到兴趣的映射interesting mapping。例如,访问过 fifa.com 的用户喜欢阅读有关世界杯的新闻,并在PC 或者 Xbox 玩足球游戏。

    • 用户侧user side 的丰富特征可以对用户的行为进行建模,从而克服了 content-based 推荐中的诸多限制。

      用 user 的行为来代替用户画像,可以解决用户画像不准或者不全的问题。

    • 该模型还有效地解决了用户冷启动问题,因为该模型允许我们从query 中捕获用户兴趣并推荐相关的 item (例如音乐),即使用户没有使用音乐服务的任何历史记录。

    • 该模型有一个 ranking-based 目标,旨在将正样本(用户喜欢的 item)排名高于负样本。这种 ranking-based 目标已经被证明对推荐系统更有利。

    此外,作者扩展了原始的 DSSM 模型(在本文中称之为 single-view DNN,因为 DSSM 学习来自单个领域domain 的用户特征和 item 特征),从而联合学习来自不同领域的 item 的特征。作者将新模型命名为 Multi-View Deep Neural Network: MV-DNN。

    在文献中,多视图学习 multi-view learning 是一个经过充分研究的领域,它从非共享公共特征空间 not share common feature space 的数据中学习。作者认为 MV-DNN 是多视图学习配置setup 中一种通用的深度学习方法。具体而言,在包含新闻News 、Apps、Movie/TV 日志的数据集中,作者不是为每个领域建立独立的模型来简单地将用户特征映射到领域内的 item 特征,而是建立新的多视图模型来发现潜在空间中用户特征的单个映射,从而与来自所有领域的 item 特征共同进行了优化。MV-DNN 使得我们能够学到更好的用户 representation ,它利用更多的跨域数据,并利用来自所有领域的用户偏好数据从而解决数据稀疏性问题。

    论文在实验中表明:这种多视图扩展同时提高了所有领域的推荐质量。此外,值得一提的是,深度学习模型中的非线性映射使得我们能够在潜在空间中找到用户的紧凑表示compact representation,这使得存储学到的用户映射 user mapping 以及在不同任务之间共享信息变得更加容易。

    使用深度学习来建模丰富的用户特征的另一个挑战是特征空间的高维high dimension ,这使得学习效率低下并可能影响模型的泛化能力。作者提出了几种有效 effective 且可扩展scalable 的降维技术,这些技术在不损失大量信息的情况下可以将维度降低到合理的大小。

    论文的主要贡献:

    • 使用丰富的用户特征来构建通用的推荐系统。

    • 为 content-based 推荐系统提出深度学习方法,并研究不同的技术以扩展该系统。

    • 引入新颖的多视图深度学习模型,通过组合来自多个领域的数据集来构建推荐系统。

    • 通过利用从 multi-view DNN model 中学到的语义特征映射 semantic feature mapping 来解决文献中未充分研究的用户冷启动问题。

    • 使用四个真实世界的大型数据集进行严格的实验,并证明论文提出的方法相对于 state-of-the-art 方法有着显著的优势。

  2. 相关工作:已有大量文献对推荐系统进行广泛的研究。这里我们旨在回顾一组与论文提出的方法最相关的代表性方法。通常推荐系统可以分为协同推荐collaborative recommendation 和基于内容的推荐 content-based recommendation 。

    • 协同推荐系统Collaborative Recommendation Systems 向用户推荐一个 item,如果相似的用户喜欢这个 item 。

      该技术的例子包括:最近邻模型 nearest neighbor modeling、矩阵补全Matrix Completion、受限玻尔兹曼机Restricted Boltzmann machine 、贝叶斯矩阵分解Bayesian matrix factorization 等等。本质上,这些方法都是用户协同过滤user collaborative filtering、item 协同过滤 item collaborative filtering、或者同时 item 和用户的协同过滤。

      • 在user-based 协同过滤中,基于用户喜欢的 item 来计算用户之间的相似度 similarity 。然后,通过组合相似用户在目标item 上的score 来计算当前用户对目标 item 的 user-item pair 的 score 。

      • 在 item-based 协同过滤中,基于喜欢这两个item 的用户来计算 item 之间的相似度 similarity 。然后向用户推荐该用户曾经喜欢的 item 所相似的 item 。

      • 在 user-item based 协同过滤中,基于 user-item 矩阵为 user 和 item 找到公共空间 common space,并结合 item representation 和用户 representation 来找到推荐。几乎所有矩阵分解方法都是这种技术的例子。

      collaborative filtering: CF 可以扩展到大规模设置large-scale setup ,但是它无法处理新用户和新 item。这一问题通常被称作冷启动问题cold-start issue 。

    • content-based 推荐从 item 和/或用户的画像中提取特征,并根据这些特征向用户推荐 item。背后的假设是:相似的用户倾向于喜欢他们以前喜欢的 item 所相似的 item 。

      • 在 《Amazon.com recommendations: Item-to-item collaborative filtering》 中,作者提出了一种方法来构建具有用户历史喜欢的 item 的一些特征的搜索query,从而寻找其它相关的 item 来推荐。

      • 在 《Personalized news recommendation based on click behavior》 中,作者给出了另一个例子,其中每个用户都是由新闻主题topics 上的分布建模的。其中这个主题分布是根据用户喜欢的文章来构建的,并且使用和用户相同地理位置location 的所有其它用户的主题分布偏好preference 作为先验分布 prior distribution 。

        这种方法可以处理新item (新的新闻),但是对于新用户,系统仅使用地理位置特征,这意味着新用户预期看到该用户当地最热门的主题topics 的新闻。这可能是推荐新闻的很好的特性,但是在其他领域(如 Apps 推荐)中,仅使用地理位置信息location information 可能无法得到用户偏好的一个很好的先验 prior 。

    • 最近,研究人员开发了将协同推荐和 content-based 推荐结合在一起的方法。

      • 在 《Content-boosted collaborative filtering for improved recommendations》 中,作者在使用协同过滤之前使用 item 特征来平滑用户数据。

      • 在 《Tied boltzmann machines for cold start recommendations》 中,作者使用受限玻尔兹曼机来学习 item 之间的相似性,然后将其与协同过滤相结合。

      • 在 《Collaborative topic modeling for recommending scientific articles》中开发从一种贝叶斯方法来共同学习item (在他们的场景中 item 是研究论文 research paper) 在不同主题topics上的分布、以及评分矩阵的因子分解。

    • 在推荐系统中处理冷启动问题主要针对新item (没有任何用户评分的 item)进行研究。如前所述,所有 content-based filtering 都可以处理 item 的冷启动,并且有一些方法是专门针对冷启动问题开发和评估的。《Learning preferences of new users in recommender systems: an information theoretic approach》 中的工作研究了如何通过推荐能够提供用户最多偏好信息的 item 、同时最小化推荐不相关内容irrelevant content 的概率,从而为新用户逐步地学习用户偏好。

    • 近年来,通过丰富的特征进行用户建模的研究很多。例如,已经表明用户的搜索query 可以用于发现用户之间的相似性。用户搜索历史中的丰富特征也被用于个性化的 web 搜索。对于推荐系统,《Scalable hierarchical multitask learning algorithms for conversion optimization in display advertising》中的作者利用用户的历史搜索query 来构建推荐广告的个性化分类personalized taxonomy 。

      另一方面,研究人员发现,用户的社交行为也可以用于建立用户画像。在 《Twitter-based user modeling for news recommendations》 中,作者使用 Twitter 数据中的用户推文tweets 来推荐新闻文章。

    • 大多数传统的推荐系统的研究都几种在单个领域 domain 内的数据。最近人们对跨域推荐cross domain recommendation 越来越感兴趣。有不同的方法来处理跨域推荐。

      • 一种方法是假设不同的领域共享相似的用户集合,但是不共享item 集合。如 《Cross-domain collaborative recommendation in a cold-start context: The impact of user profile size on the quality of recommendation》 所示。在他们的工作中,作者从电影评分数据集和书籍评分数据集抽取公共用户并增强数据,然后将增强的数据集用于执行协同过滤。他们表明:这种方法尤其有助于那些在某个领域中几乎没有用户画像的用户(冷启动用户)。

      • 另一种方法处理的场景是:同样的item 集合在不同领域中共享不同类型的反馈(如用户点击、用户显式评分等等)。

        • 在 《Transfer learning in collaborative filtering for sparsity reduction》 中,作者介绍了一种用于跨域矩阵分解的坐标系转换方法coordinate system transfer method。

        • 在 《Transfer learning for collaborative filtering via a rating-matrix generative model》 中,作者研究了在领域之间不存在共享用户或共享 item 的情况下的跨域推荐。他们开发了一个生成模型来发现不同领域之间的公共簇common clusters 。但是,由于计算成本问题,他们的方法无法扩展到中等规模数据集之外。

        • 在 《Cross-domain collaboration recommendation》 中介绍了一种不同的 author collaboration 推荐方法,其中他们建立了一个主题模型来推荐来自不同研究领域的 author collaboration 。

    • 对于推荐系统中的很多方法,目标函数是最小化 user-item 矩阵重构reconstruction 的均方误差。最近,ranking-based 目标函数已经显示出在给出更好的推荐方面更有效。

    • 深度学习最近被提出从而用于为协同过滤和 content-based 方法建立推荐系统。

      • 在 《Restricted boltzmann machines for collaborative filtering》 中,受限玻尔兹曼机模型被用于协同过滤。

      • 在 《Cross-domain collaborative recommendation in a cold-start context: The impact of user profile size on the quality of recommendation》 中,深度学习用于 content-based 推荐,其中深度学习用于学习音乐特征的 embedding。然后使用这个 embedding 在协同过滤中对矩阵分解进行正则化。

22.1 模型

22.1.1 数据集

  1. 这里首先介绍数据集。我们描述了每个数据集的数据收集过程和特征表示feature representation ,以及数据集的一些基本统计信息。这里使用的四个数据集是从微软的几款产品的用户日志中收集的,包括:Bing Web vertical 的搜索引擎日志、Bing News vertical 的新闻浏览历史记录、Windows AppStore 的 App 下载日志、Xbox 的 Movie/TV 观看日志。所有日志都是在 2013-12 ~ 2014-06 期间收集的,并且重点关注美国、加拿大、英国等英语市场English-speaking markets 。

  2. 用户特征:我们从 Bing 收集了用户的搜索query 和他们点击的 URL,从而形成用户特征。

    • 首先对 query 进行规范化normalized 、词干化stemmed,然后将其拆分为 unigram 特征。

      然后,我们使用 TF-IDF 得分来保留最热门 popular 和最重要 non-trivial 的特征。

    • 对于 URL ,我们压缩到仅保留 domain-level (如 www.linkedin.com) 。

    通过对 query 和 URL 的这些操作我们降低了特征的维度。

    总体而言,我们选择了 300 万个 uni-gram 特征和 50 万个域名特征,最终得到的用户特征向量user feature vector 为 350 万维。

    • query 特征向量为 300 万维,分量大小为对应 uni-gram term 的 TF-IDF 得分。

    • 域名特征向量为 50 万维,为域名的 one-hot 向量。

  3. 新闻特征:我们从 Bing News vertical 收集了点击的新闻 News 。每个新闻 item 由三部分的特征来表示:

    • 第一部分是使用字母三元组表示 letter tri-gram representation 编码的标题特征。

    • 第二部分是每篇新闻的 top-level 类目category (如娱乐Entertainment) 编码的二元特征。

    • 第三部分是在每篇新闻中,通过内部专有的 NLP parser 抽取的命名实体Named Entities,这些命名实体也是通过 letter tri-gram representation 来编码。

    这三部分得到的新闻特征向量为 10 万维。

  4. App 特征:我们从 Windows AppStore 日志中收集用户历史下载的 App 。每个App item 由两部分的特征来表示:

    • 第一部分是使用 letter tri-gram representation 编码的App 标题特征。

    • 第二部分是每个 App 的类目category (如游戏 Game) 编码的二元特征。

    考虑到 App 描述信息 descriptions 不断的变化,我们决定不将它纳入特征空间中。最终得到的 App 特征向量为 5 万维。

  5. Movie/TV 特征:我们从 XBox 日志中收集了每个 XBox 用户观看的历史 Movie/TV 。每个 item 由两部分的特征来表示:

    • 第一部分是item 标题和描述信息description 合并为文本特征 text features,然后使用 letter tri-gram 来编码。

    • 第二部分是每个 item 的流派 genre 编码的二元特征。

    最终得到的 Movie/TV 特征向量为 5 万维。

  6. 在我们的神经网络框架中,用户特征被映射到用户视图user view,其它特征被映射到不同的 item 视图item view 。出于训练的目的,每个用户视图都与一个包含相应用户集合的 item 视图相匹配。为实现这一点,我们根据用户 ID(每个用户都有一个唯一的、匿名的、哈希的 Microsoft User ID)来执行 inner join,从而得到 user-item view pair 。这导致每个 user-item view pair 中包含的用户数量不同。

    下表描述了本文所使用的数据的一些基本统计信息。Joint Users 列给出了 item view 和 user view 之间公共用户common users 的数量。

    读者注:为什么用搜索数据作为 User View ?因为搜索数据的规模最大、用户行为最丰富、暴露用户的主动意图,从而能够更好地刻画用户兴趣。

22.1.2 DSSM

  1. 在论文 《Learning deep structured semantic models for web search using click-through data》 中引入了深度结构化语义模型 deep structured semantic model: DSSM ,从而增强 web 搜索上下文中的query document 匹配。考虑到 DSSM 和我们提出的 MV-DNN 模型密切相关,因此这里我们简要回顾一下 DSSM 。

  2. DSSM 的典型体系结构如下图所示。

    • DNN 的输入(原始文本特征)是一个高维的 term vector ,例如 query 或 document 中term 的未归一化的原始计数raw count。

    • 然后 DSSM 通过两个神经网络传递其输入,每个神经网络对应不同的输入(如 query 和 document ),并将每个输入映射到共享语义空间shared semantic space 中的语义向量semantic vector 。

    • 对于 web document ranking,DSSM 将 query 和 document 之间的相关度得分 relevance score 计算为它们对应的语义向量之间的余弦相似度cosine similarity,并通过 document 和 query 的相似度得分对 document 进行排序rank 。

  3. 正式而言,对于DSSM 中的单个神经网络,如果我们将 x→ 表示为输入的 term vector,将 y→ 表示为输出向量,将 h→i,i=1,2⋯,L−1 表示为中间的隐向量 hidden vector 。令 Wi 为第 i 层的权重矩阵,b→i 为第 i 层的偏置向量,那么有:

    h→1=W1x→h→i=f(Wih→i−1+b→i),2=1,⋯,L−1y→=f(WLh→L−1+b→L)

    其中 f(⋅) 为非线性激活函数,这里我们使用 tanh 函数:

    f(x)=1−e−2x1+e−2x

    然后,query Q 和 document D 之间的语义相关性得分 semantic relevance score 为:

    R(Q,D)=cos⁡(y→Q,y→D)=y→Q⋅y→D‖y→Q‖×‖y→D‖

    其中 y→Q 和 y→D 分别为 query 语义向量和 document 语义向量。

    在 web 搜索中,给定 query 条件下,document 按照它和 query 之间的语义相关性得分semantic relevance score 进行排序。

  4. 传统上,每个单词word 由一个 one-hot word vector 来表示,其中向量的维度是词表 vocabulary 的大小。然而,在现实世界的 web 搜索任务中词表通常非常大,因此 one-hot 向量的 word representation 使得模型的学习代价太大。因此,DSSM 使用一个 word hashing layer 来用一个 letter tri-gram vector 来表示一个单词。

    例如,给定一个单词(如 web),在添加了单词边界符号(如 #web# )之后,单词被分割为一系列的 letter n-grams。然后,单词表示为 letter tri-grams 的 count vector 。例如,web 这个单词的 letter tri-gram representation 为:#-w-e, w-e-b, e-b-# 。

    在 DSSM 中,第一层layer 的权重矩阵 W1 表示从 term-vector 映射到 letter tri-gram count vector 的 letter tri-gram 映射矩阵,这不需要学习。

    尽管英语单词的总量可能非常庞大,但是英语(或者其它类似语言)中不同的 letter tri-grams 总量通常是有限的。因此,这种做法可以泛化到没有在训练集中出现的新单词。

  5. 在训练中,假设 query 和针对该query 点击的 document 相关,我们利用这一信号来训练 DSSM 的参数,即权重矩阵 Wi 、偏置向量 b→i。

    • 首先,给定query 的条件下,一个 document 被点击的概率是通过 softmax 函数从它们之间的语义相关性得分来估计:

      p(D∣Q)=exp⁡(γ×R(Q,D))∑D′∈Dexp⁡(γ×R(Q,D′))

      其中:

      • γ 为softmax 函数中的平滑因子 smoothing factor,并且通常是根据实验中的验证集来设定的。

      • D 为待排序的候选document 的集合。理想情况下 D 应该包含所有可能的 document。

        实际上对于每个 (query, clicked-document) 的 pair 对,记作 Q,D+ 其中 Q 为 query 、D+ 为点击的 document,我们使用 D+ 和 q 个随机选择的未点击 document 来近似 D 。即:

        D={D+}⋃{Dj−;j=1,⋯,q}
    • 然后,我们通过最大化在整个训练集上的、给定query 条件下点击document 的 likelihood 来估计模型参数:

      L(Θ)=−log⁡∏Q,D+p(D+∣Q)

      其中 Θ 为模型的参数集合。

      注意,虽然目标函数 L(Θ) 中没有负样本的损失函数,但是 p(D∣Q) 中有负样本参与计算。而且 ∑D∈Dp(D∣Q)=1.0 ,因此 p(D+∣Q) 尽可能大意味着 p(Dj−∣Q) 尽可能小。

22.1.3 MV-DNN

  1. DSSM 可以视作一个多学习框架 multi-learning framework,它将数据的两个不同的视图映射到一个共享视图 shared view 。从这个意义上讲,可以从更一般地角度来学习两个不同视图之间的共享映射 shared mapping 。

    在这项工作中我们提出了 DSSM 的扩展,其中包含有两个以上的数据视图,我们称之为多视图 DNN 模型 Multi-view DNN: MV-DNN 。在这种配置 setting下我们有 K+1 个视图,其中一个中心视图pivot view 称作 Vu,其它 K 个辅助视图 auxiliary views 记作 V1,⋯,VK 。

    • 每个 Vi∈{Vu,V1,⋯,VK} 都有它自己的领域输入 domain input Xi∈RNi×di ,其中 Ni 为第 i 个视图的样本数、 di 为第 i 个视图的输入维度。

    • 每个视图 Vi∈{Vu,V1,⋯,VK} 都有自己的非线性映射层,从而将 Xi 映射到共享的语义空间 shared semantic space Yi 。

    MV-DNN 的体系架构如下图所示。在我们的推荐系统设置setup中,我们将中心视图 Vu 设为用户特征,并为我们要推荐的每种不同类型的 item 创建辅助视图。

    下图中,MV-DNN 将高维稀疏特征(如用户、新闻、App 中的原始特征)映射为联合语义空间joint semantic space 中的低维稠密特征。 DNN 第一个隐层(具有 5 万个单元)完成单词哈希word hashing。然后将 word-hashed 特征通过多个非线性层来投影,其中最后一层的激活值构成了语义空间中的特征。

    注意:该图中的输入的特征维度(5M 和 3M )是假设的,因为实际上每个视图可以具有任意数量的特征。

  2. 给定训练的一组 user-item view pair ,假设第 j 个样本具有中心视图特征 x→j(u)、以及某个活跃的辅助视图特征 x→j(a),其中 1≤a≤K 。所有其它辅助视图的输入 {x→j(k)}k≠a 都设为零向量。

    MV-DNN 的目标函数是为每个视图找到一个非线性映射,使得在语义空间中,中心视图的映射 Yu 和其它所有视图的映射 Y1,⋯,YK 之间的相似度之和最大化。数学上表述为:

    L=∑a=1KLa=∑a=1K∑j=1Naexp⁡(γacos⁡(y→j(u),y→j(a)))∑i=1Iaexp⁡(γacos⁡(y→j(u),y→i(a)))

    其中:K 为辅助视图的总数,Na 为第 a 个辅助视图的样本数,Ia 为第 a 个辅助视图的 item 数量,γa 为第 a 个辅助视图的平滑因子。

    该目标函数就是将各辅助视图的目标函数相加。

    具有该目标函数的直觉是:试图为用户特征找到单个映射 single mapping ,该映射可以将用户特征转换到一个匹配不同视图/领域中用户喜欢的所有 item 的空间中。

    这种共享参数的方式允许没有足够信息的领域通过具有更多数据的其它领域来学习良好的映射。例如,如果我们假设具有相似新闻News 偏好的用户在其他领域中也具有相似的偏好,那么这意味着其它领域也可以从新闻领域学到的用户映射中受益,那么这种方式应该会很好地工作。

    如果该假设成立,那么来自任何领域的样本都将有助于所有领域中更准确accurately 地对相似用户进行分组。实验结果表明,该假设在我们实验的领域是合理的,我们将在实验部分进一步阐述。

    DSSM 和 MV-DNN 的目标函数评估的是:最大化正样本和负样本之间的相对序关系。这和 CTR 预估任务中的 logloss 目标函数不同,后者的目标是准确预估样本的点击率。因此 DSSM 和 MV-DNN 无法直接应用与 CTR 预估任务,而只能用于推荐任务。

  3. MV-DNN训练:可以使用随机梯度下降 Stochastic Gradient Decent: SGD 来训练 MV-DNN。

    实际上每个训练样本都包含一对a pair输入,一个用于用户视图user view、一个用于数据视图data view 。因此,尽管在我们的模型中仅有一个用户视图,但是使用 K 个用户特征文件 user feature files 会更方便,每个文件对应于一个 item 特征文件 item feature file。

  4. MV-DNN 的优势:尽管 MV-DNN 是原始 DSSM 框架的扩展,但是MV-DNN具有几个独特的特点使得它优于 DSSM 。

    • 首先,原始的 DSSM 模型对 query 视图和document 视图使用相同的特征维度,并使用相同的representation (例如 letter tri-gram)进行预处理。这在特征构建步骤feature composition step 中产生了巨大的限制。

      原始的 DSSM 使用相同的塔结构来处理 query 视图和 doc 视图,因此特征维度和预处理方法都一样。

      • 由于推荐系统的异质性heterogeneity,用户视图和 item 视图很可能具有不同的输入特征。

      • 此外,很多类型的特征不能用 letter tri-gram 来最佳地表示。

        例如,URL 域名特征通常包含前缀和后缀,如 www、com、org。如果采用 letter tri-gram ,那么这些前缀、后缀将映射到相同的letter tri-gram。

        在实践中我们发现,在输入的原始文本很短的情况下(如原始 DSSM 模型中的 query 文本和 document 标题), letter tri-gram 的representation 工作得很理想。但是不适合为通常包含大量query 和 URL 域名的 user-level 特征来建模。

      通过消除这些约束,新的 MV-DNN 模型可以融合类别特征categorical feature (如电影题材、app类目)、地理位置特征(如国家、地区)、以及来自用户输入的uni-gram 或 bi-gram 表示的原始文本特征。

    • 其次,MV-DNN 有能力扩展到很多不同的领域,而这是原始 DSSM 框架无法做到的。

      通过在每个 user-item view pair 之间执行 pair-wise 训练,我们的模型能够轻松地采用新的 view pair 。这些新的 view pair 可能包含完全独立的用户集合和 item 集合。例如,可以添加从 Xbox games 收集的新的数据集。

      通过在每次训练迭代中交替 user-view pair ,我们的模型最终可以收敛到最优的用户视图 embedding。这个用户视图 embedding 通过所有 item 视图来训练。

      注意,虽然理论上我们可以在不同的 item 视图中使用不同的用户集合,但是在我们的实验中我们选择在所有视图中保持相同的用户集合。这是为了同时考虑便利性convenience 和更容易特征归一化 feature normalization 。

22.1.4 降维和数据缩减

  1. 在实践中,MV-DNN 通常需要在高维特征空间中为用户视图处理大量的训练样本。为了系统的可扩展性,我们提出了几种降维技术来减少用户视图中的特征数量。

    然后,我们提出了一种压缩compact和摘要summarize 用户训练样本的思想,从而将训练数据的数量缩减 reduce 到用户数量的线性关系。

  2. 用户特征降维技术(仅用于用户视图):

    • top 特征:一种简单的用户特征降维方法是选择 top-K 的最高频 most frequent 特征。

      我们选择特征出现频率 >= 0.001 的用户特征。 主要的基本假设是:可以使用一组相对较小的、解释用户常见在线行为 common online behavior 的常用特征 frequent feature 来很好地描述用户。

      注意,用户的原始特征使用 TF-IDF 得分进行预处理,以便我们选择的 top 特征不再包含搜索query 中的常见停用词。最终用户特征的维度为 8.3 万。

    • K-means:K-means 是一种众所周知的聚类技术,旨在创建多个聚类使得每个点与其最近的聚类之间的距离之和最小化。

      这里的基本思想是:将相似的特征分组到同一个簇中。

      • 给定输入 X∈RN×d ,我们根据列来拆分得到 d 个样本点point (X1,⋯,Xd) 。

      • 然后对这 d 个点聚类为 C 个簇, C≪d 。

      • 然后我们统计这些簇中分别有多少个点。假设簇 1≤c≤C 中有 nc 个点,则我们得到簇向量 f→=(n1,⋯,nC)⊤ 。其中 ∑c=1Cnc=d 。

        这相当于将 d 个特征降维到 c 个特征。这是基于特征的聚类,而不是基于样本的聚类。

      • 然后我们归一化 f→ ,得到 f→∗ 。

        实际上可以不用归一化。可以通过实验对比归一化和未归一化的效果。

      对于用户特征向量 x→i∈Rd ,我们假设它在的非零特征为 (xi,1,⋯,xi,m) ,这些特征对应的簇为 1≤c1,⋯,cm≤C 。则用户特征向量降维为:

      xi,c′=∑1≤s≤m,cs=cf∗(c)×xi,s,1≤c≤Cx→i′=(xi,1′,⋯,xi,C′)⊤∈RC

      为了能够使用 K-means 提取合理数量的特征,我们需要有相对较大的簇数量。因为考虑到用户特征的维度为 350 万,较少的簇(比如 100)将导致大块 large chunk 特征在同一个簇中。因此,这将产生难以学到有用模式的特征。为了缓解这个问题,我们将簇数量设置为 10k。这意味着平均每个簇有 350 个用户特征。

      大规模的簇和大规模的原始特征使得运行 K-means 的计算量很大。在我们的实验中,我们使用了一个基于云计算的 Map-Reduce 实现来运行 K-means 。

    • LSH:局部敏感哈希Local Sensitive Hashing: LSH 的工作原理是使用随机投影矩阵random projection matrix 将数据投影到一个低得多的低维空间,使得原始空间中的 pair-wise 余弦距离cosine distance 仍然在新空间中保留preserved 。

      LSH 需要一个变换矩阵 A∈Rd×C ,其中 d 为原始空间中的特征数量,C 为随机投影的数量。这意味着 A 包含 C 个不同的投影,我们记作 a→i∈Rd,i=1,2⋯,C 。每个投影 a→i 将原始输入向量 x→∈Rd 映射到一个哈希值 yi∈R 。LSH 的输出向量 y→∈RC 可以通过拼接所有不同的哈希值 yi 来得到。

      具体而言,为了计算每个 yi,我们使用以下方程:

      yi={1,a→i⋅x→≥00,else

      两个输入向量 x→1,x→2∈Rd 的余弦相似度可以近似为cos⁡(H(y→1,y→2)Cπ) ,其中 H(y→1,y→2) 为LSH 输出向量 y→1 和 y→2 的汉明距离。为了以更高的准确率accuracy 保持余弦相似度,我们需要提高投影数量 C 。我们使用 C=10000 ,这和 k-Means 聚类的簇数量相同。

      LSH 可以独立地应用于每个特征向量,并且可以独立地计算所有投影,因此使得该算法在 Map-Reduce 框架内高度可分布distributable。但是,LSH 算法需要生成变换矩阵 A,在我们的case 中该矩阵包含从标准正态分布 N(0,1) 中随机生成的 3.5M×104 个元素,这大概需要 300GB 的存储空间。此外,在计算 LSH 向量的时候,必须将 A 存储在每个计算节点上。这些问题使得 LSH 在 Map-Reduce 框架中代价太大。

      人们已经提出了很多方案来解决这个问题,其中大多数方案都是基于生成稀疏矩阵 A 。这里我们使用《Online generation of locality sensitive hash signatures》 中介绍的池化技巧pooling trick。 基本思想是:保留一个由 N(0,1) 生成的、size 为 m 的随机数池子 B,其中 m 通常要远远小于 A 的 size 。为了获得元素 Ai,j ,只需要应用 i,j 的一致哈希函数consistent hash function 来获得 B 中的索引并查找对应的值。在我们的实验中,我们设置 m=1000000 ,这样一来内存需求减少了 10000 倍,并且可以在 Map-Reduce 期间仅使用 10M 的存储空间轻松地存储在每个节点上。

  3. 减少训练样本的数量:每个视图的训练数据包含 pair 对 (Useri,Itemj) 的集合,其中 Useri 偏好 Itemj 。实践中,用户可能会喜欢很多item,这可能使得训练数据非常大。例如,在我们的新闻News 推荐数据集中,pair 对的数量远远超过 10 亿。即使使用优化的 GPU 实现optimized GPU implementation,训练也会非常慢。

    为了缓解这个问题,我们压缩了训练数据,使得每个视图中每个用户都包含一个训练样本。具体而言,压缩的训练样本使用了用户在该视图中喜欢的所有 item 的特征的均值(即对 item 特征进行均值池化)。这样可以将每个视图的训练样本数量降低为用户数量,从而大大减少了训练数据的大小。

    注意,这种技术的一个问题是:目标函数现在变成了最大化用户特征和用户喜欢的item 的平均特征之间的相似性。在评估的时候有细微的差异,因为在测试期间每个用户只能提供一个 item 。但是,这种逼近approximation 是必要的,使得系统有很好的可扩展性。此外,实验结果表明:这种逼近在实践中仍然会产生非常有前景的结果。

22.2 实验

  1. 这里我们将解释我们的实验研究过程,并简要回顾了我们作为 baseline 的几种推荐算法。

  2. 数据集:对于每个数据集,我们旨在评估已经在该领域中具有历史交互的用户(老用户)、以及在该领域中没有任何历史交互但是在用户视图中具有历史搜索和浏览行为的用户(新用户)。为了进行评估,我们根据以下标准将数据集划分为训练集和测试集:

    • 首先,以 0.9 : 0.1 的比例为每个用户随机分配一个 train 或者 test 的标记。

    • 然后,对于每个带 test 标记的用户,我们以 0.8 : 0.2 的比例将其进一步随机分配一个 old 或者 new 标记。

    • 接着,对于每个带 old 标记的用户,他们的 50% 的 item 用于训练、剩余的用于测试。

      于每个带 new 标记的用户,他们的所有 item 都用于测试,从而确保这批用户的 user-item 的 pair 永远不会出现在训练过程中。通过这种方式,这批用户都成为系统的全新用户。

    数据集的详细划分信息在下表所示。

  3. 性能评估:对于训练数据集中的每个 (useri,itemj) 的 pair 对,我们随机选择其它的 9 个 item {itemr1,⋯,itemr9} ,其中 r1,⋯,r9 都是随机的索引,然后创建 9 个测试的 pair 对 {(useri,itemr1),⋯,(useri,itemr9}) 并添加到测试数据集。

    评估指标是:衡量系统对用户 useri 是否将正确的 pair 对 (useri,itemj) 排序在随机的 pair 对 {(useri,itemr1),⋯,(useri,itemr9}) 之上。因此,我们采用了两个指标:

    • 平均倒数排名Mean Reciprocal Rank: MRR:计算所有 item 中正确 item 的排名的倒数,然后对整个测试数据集的得分进行平均。

    • Precision@1: P@1:计算系统将正确item 排名为 top 1 item 的次数占比。

    注意:这种随机抽取item 为负样本的方式有可能导致负样本太简单。可以考虑同类目或者同主题下抽取负样本,从而得到 hard 负样本来评估。

  4. baseline 方法:

    • 标准的 SVD 矩阵分解:在这个 baseline 中,我们构建 user-item 矩阵,并使用 SVD 执行矩阵分解。这是协同过滤技术的标准 baseline 。

      实际上,该 baseline 仅在相对较小的数据集(在我们的 case 中为 Apps 数据)上在计算上是可行的。此外,该方法不能为新用户提供推荐,因为他们没有出现在 user-item 矩阵中。

    • 最热门item:由于 SVD 无法处理新用户的推荐,因此我们使用最热门item 作为新用户的简单 baseline 。

      它的工作原理是首先计算训练集中每个 item 的频次frequency,然后针对每个测试样本 (useri,itemj) 及其随机pair 对{(useri,itemr1),⋯,(useri,itemr9}) ,该方法根据训练集中 item 的频次来排序。

    • Canonical Correlation Analysis: CCA:CCA 是一种传统的多视图学习技术,旨在找到两对 two pair 线性变换,每个输入视图一对,使得变换后 transformed 的数据之间的相关性最大化。

      CCA 和 DSSM 相似,但是有两个主要区别:

      • 尽管 CCA 的 kernel 版存在非线性变换,但是 CCA 经常使用线性变换,因为kernel 版在大规模数据中计算量是不可行的。

      • CCA 在某种固定方差 certain fixed variance 约束下最大化相关性,而DSSM 最大化 correct pair 的排序rank 。排序目标函数 ranking objective 已经被证明是一个更好的推荐系统目标函数。

      在我们针对 CCA 的实验中,我们仅使用 top-k 的用户特征,因为其它两种降维技术(K-means 和 LSH)产生了一个非常稀疏的特征向量,这会使得相关性矩阵 correlation matrix 过于稠密dense 从而无法有效地计算。

    • 协同主题回归Collaborative Topic Regression: CTR:CTR 是最近提出的推荐系统,它结合了贝叶斯矩阵分解 Bayesian matrix factorization 和 item 特征来创建 item 推荐。它在学术论文推荐academic paper recommendation 方面已被证明是成功的。

      在 CTR 模型中有两个输入:协同矩阵 collaborative matrix、item 特征(以 bag-of-words 来表示)。该模型通过最大化协同矩阵的重构误差 reconstruction error 并将 item 特征作为额外信号extra signal 从而匹配用户和 item 。这有助于对训练数据中没有出现过的新 item 进行建模。对于我们场景中的新用户推荐,我们将协同矩阵 A 的转置作为输入,并提供用户特征而不是 item 特征。

    • single-view DNN:对于 Apps 和 News 数据集,我们运行三组实验来训练单视图 DNN 模型,每组实验对应于一种降维方法(SV-TopK、SV-Kmeans、SV-LSH )。

    • MV-DNN:我们针对 MV-DNN 进行了另外三组实验。

      • 前两个使用 TopK 或 Kmeans 降维的用户特征(MV-TopK、MV-Kmeans)来联合训练 Apps 和News 数据。

      • 第三组实验使用 TopK 用户特征(MV-TopK w/Xbox)来联合训练 Apps、News、Movie/TV 数据。

  5. 我们评估了 App 数据集(第一张表)和 News 数据集(第二张表)中的不同方法获得的结果,如下表所示。我们将算法分为三类:第一类是 baseline 方法,第二类是我们的单视图模型,第三类是MV-DNN 模型。可以看到:

    • 第一类方法:

      • 朴素的最热门item 的 baseline 表现很差,这证明了对新用户的简单解决方案在我们的场景下不会很好地工作。

      • 即使对于在协同过滤矩阵中存在的老用户,标准的 SVD 矩阵分解方法在该任务中也不够好。

      • 出乎意料的是,CCA 模型的表现并不比对 Apps 数据的随机猜测更好。这表明在 DSSM 中使用非线性映射以及基于排序的目标函数ranking-based objective 对于系统很重要。

      • CTR 模型对于老用户而言表现不错,但是对于新用户却表现不佳。

    • 第二类方法:对于单视图 DNN,结果表明性能取决于所使用的的降维方法。

      • 对于 Apps 和 News 数据而言,最好的降维方法是 top-K 特征降维方法,该方法的性能远远优于其它两种方法。

        这可以被视为对以下假设的证实:用户可以使用相对较少的、有信息量informative 的特征的集合来建模。这也表明 K-means 和 LSH 在正确捕获用户行为语义方面不太有效。

      • 作为单视图 DNN 和传统推荐方法的直接比较,我们的最佳模型 (SV-TopK) 的性能优于最佳的 baseline 方法(CTR,它也利用了 item 特征来进行推荐),其中在所有用户上提升了 11%(MRR 得分为 0.497 vs 0.448) 、在新用户上提升了 36.7% (MRR 得分为 0.436 vs 0.319)。

        在 P@1 指标上,我们看到了更大的提升:在所有用户上提升 13%、在新用户上提升 88.7%。这表明我们的系统在推荐 top-rated item 方面的有效性。

    • 第三类方法:对于 MV-DNN,结果表明添加更多领域确实有助于同时改善所有领域。具体而言:

      • 通过将 News 视图和 Apps 视图进行联合训练,我们发现 News 和 Apps 数据集在这两个指标中都有显著提升。

        具体而言,在 App 数据中,和最佳单视图模型相比,所有用户的 MRR 得分从 0.497 提升到 0.517 ,相对提升 4% 。更重要的是,我们看到新用户有大幅提升,这表明一个视图中缺少新用户的数据可以通过其它视图该用户的数据来弥补。这可以从 App 数据集中新用户的相对提升来说明,其中新用户的 MRR 指标提升了 7% ( 0.436 vs 0.466 )、P@1 指标提升 11% (0.268 vs 0.297)。

      • 因此,我们迫切地想知道:我们能否安全地得出结论,即更多的视图确实有助于提升系统的性能?为了回答这个问题,我们进一步将 Xbox 数据添加到框架中,并使用三个 user-item view pair 来训练了一个 MV-DNN 模型。

        结果令人振奋: 在 Apps 数据中所有用户的 MRR 得分进一步提升了 6%、新用户的 MRR 得分进一步提升了 8% 。

        另一方面,通过和 state-of-the-art 算法进行比较,我们具有 top-K 特征的 MV-DNN with Xbox view 的方法相比 CTR 模型在所有用户上的 P@1 指标提升 25.2%(0.277 vs 0.347)、在新用户上的 P@1 指标提升 115%(0.142 vs 0.306)。

    News 数据集也可以观察到类似的结果:相对于 CTR 模型,MV-DNN 在所有用户上的 P@1 指标提升 49%、在新用户上的 P@1 指标提升 101% 。注意,在该数据集中缺少 CCA 和 SVD 的结果。由于包含 150 万用户和超过 10 亿条数据,这两种传统算法无法处理如此大规模的数据。很明显,我们基于 DNN 的方法可以很轻松地扩展到数十亿条数据,同时产生出色的推荐结果。

    下表为 App 数据集的结果:

    下表为 News 数据集的结果:

  6. 为了探索从系统中学到的模型的有效性,我们执行以下实验来测试单特征输入single-feature input 的推荐性能。具体而言,我们采用了性能最佳的系统(带 top-k 特征的MV-DNN),并构建了仅开启 URL 域名特征的用户特征user feature 。由此产生的用户特征只有一个值,即域名 ID 。然后,我们针对其它视图运行我们的预测模型,以便在所有现有 item 中找到最匹配的 News 和 Apps 。下表显示了其中的一些结果。可以看到,学到的推荐系统确实非常有效。

    • 在第一个示例中,我们假设用户仅访问了 brackobama.com。匹配度最高的新闻显示了和奥巴马总统 Obama 以及 Obamacare health 的所有相关信息,这些信息都和该网站有关。另一方面,这个示例中最匹配的 Apps 也和健康有关。

    • 在第二个例子中,我们有一个用户访问了 www.spiegel.de,这是一个主要的在线的德国新闻网站,除了用户会阅读德语之外,它没有告诉关于用户的更多信息。该系统为用户匹配了 2014 年 FIFA 世界杯的文章,这似乎是德国人在这段时间内的共同兴趣。

    • 在最后一个例子中,用户似乎对婴儿相关的信息感兴趣,最匹配的News 和 Apps 都和婴儿、怀孕等相关。

    注意:在这个实验中我们仅使用域名ID,域名的名字domain name 对于目标任务而言是未知的。

  7. 公共数据集:为进一步展示我们的方法在跨域用户建模方面的优势,我们对公共数据集进行了一系列实验。

    数据集包含来自五个领域(数据挖掘、理论等等)的 33739 位作者,其中每条数据包含研究领域的name、论文的标题和摘要、论文的作者列表、论文的发表年份。目标是推荐来自另一个领域的作者进行跨领域合作cross-domain collaboration 。

    我们使用single-view DNN 来建模这种跨领域协作(如数据挖掘和理论研究学者之间的协作)。在这种情况下,用户视图和 item 视图都共享相同的特征表示。具体而言,我们使用作者在训练期间(1990~2001 年)发表的论文的标题和摘要中的 uni-gram 单词作为特征,从而得到 31932 维的特征向量。我们随机选择训练期间已经有跨域协作、并且在测试期间至少由五个跨域协作的作者作为我们的测试集。对于不同领域之间的每个协作集合,我们将迭代 100 次来训练一个 single-view DNN。注:这里仅评估了single-view DNN (即 DSSM)。

    结果如下表所示。总体而言,除了 P@20 指标之外,我们的方法在所有四个跨域数据集中的性能均明显优于 CTL 方法。特别是,我们在 P@100 时实现了更高的召回率,这对于 DM to theory 提升了 96% 的推荐性能。

    结果表明,将丰富的用户特征和非线性深度神经模型结合使用,确实可以捕获更多语义,而这些语义无法使用传统的 word-based 共享模型(例如生成式的主题模型 topic model )准确地建模。我们相信,使用多视图 DNN 模型可以进一步提高性能。但是我们将其留待将来研究。

    在效率方面,作者报告了整个数据集的 CTL 方法的训练时间为 12~15 小时。而我们的算法运行速度非常快,每个模型仅用 5~7 分钟就可以在 GPU 机器上以相同数量的数据完成 100 次迭代。

  8. 可扩展性:这里我们根据训练时间来比较各种算法的性能。我们的方法使用 SGD 进行训练,因此可以使用分布式训练来处理大量数据。下表给出了不同方法的性能的详细信息。

    可以看到:

    • 对于较小的 Apps 数据集,SVD 和 CCA 训练完成时间相对较快(大约四个小时),但是推荐性能却很差。

    • single-view DNN 模型(SV-TopK)在 33 小时内完成了 100 次训练迭代。

    • content-based CTR 模型需要花费很长的时间进行训练,原因是 CTR 需要使用 LDA 模型训练的主题比例 (θ) 和主题分布 (β ) 的初始种子。

      然后 CTR 获取了这些文件,并优化了用户特征和 item 特征之间的关联。因此,对于这两个数据集,训练 CTR 比我们的深度学习模型更昂贵。

    • 另一方面,我们看到 SV-TopK 和 MV-TopK 都表现出对数据大小的 (亚)线性训练时间。因为当更多的数据可用时,SGD 通常会花费更少的时间来收敛。

    另外,下图显示了 News 和 Apps 视图在 MV-TopK 模型的每次迭代期间的训练误差。在我们的实验中,我们手动将训练迭代次数设置为 100 次。有两个原因:

    • 一个原因是,尽管随着时间的推移效果提升越来越小,但是我们仍然能够看到所有视图的性能都有所提升。

    • 另一个原因是,我们发现在实践中,某些视图的收敛速度比其他视图更快。例如,对于下图中的特定模型,News 视图在 20 次迭代后迅速收敛,而 Apps 视图大约花费了 70 次迭代才能达到收敛。

      由于训练期间交替使用 user-item view pair 的过程以及不同视图的收敛速度不同,因此使用早停以进一步提高模型的可扩展性成为未来的关键工作。

二十三、CAN[2020]

  1. 随着机器学习模型,尤其是推荐系统模型的日益复杂,如何有效地处理丰富的输入特征成为一个关键问题。对于工业环境中的在线推荐器recommender,模型通常使用 one-hot 编码的十亿级二元稀疏特征进行训练。每个特征也可以视为一个 unique ID:它首先被映射到一个低维的 embedding,然后被输入到模型中。

    处理大规模输入的一种简单方法是考虑特征之间相互独立。在这种假设下,特征之间没有联系,因此可以直接训练广义线性模型,从而基于特征的组合来估计点击率CTR。然而,推荐系统中的target item 和 “用户历史点击” 等特征是高度相关的,即存在对最终预测目标(如点击率)的特征协作效应 feature collective effect ,称作 feature co-action 。例如,点击历史中有 “泳衣” 的一名女性用户,由于 “泳衣” 和 “泳镜” 的co-action ,很可能会点击推荐的 “泳镜”。

    feature co-action可以被认为是对一组原始特征的子图进行建模。如果子图仅包含两个特征,那么建模feature co-action相当于对两个 ID 之间的边进行建模。co-action effect解释了一组特征如何与优化目标相关联。如下图所示,feature co-action显式地将特征 pair 对 [A, B] 连接到 target label 。

    近年来,已有一些工作致力于建模feature co-action,这些方法可以分为三类:

    • 基于聚合aggregation的方法聚焦于学习如何聚合用户的历史行为序列,从而获得 CTR 预估的有区分性discriminative 的 representation 。这些方法利用feature co-action对历史行为序列中的每个 user action 的权重进行建模,然后对加权的用户行为序列进行sum 池化从而表示用户兴趣。

    • 基于图的方法将特征视为节点,这些节点被连接成有向图或无向图。在这种情况下,feature co-action作为信息沿着边传播的 edge weight 。

    • 和基于聚合的方法、基于图的方法不同(这两种方法将feature co-action建模为权重),组合嵌入combinatorial embedding方法通过显式组合特征 embedding 来对feature co-action进行建模。

    尽管这些方法以不同的方式导致 CTR 预估的提升,但是它们仍然存在一些缺点:

    • 基于聚合的方法和基于图的方法仅通过 edge weight 对feature co-action进行建模,但是 edge 仅用于信息聚合information aggregation 而不是用于信息增强information augmentation 。

    • combinatorial embedding 方法将两个特征的 embedding 相结合,从而对feature co-action进行建模。 例如,PNN 执行两个特征的内积或外积以增强augment 输入。

      combinatorial embedding 方法的一个主要缺点是:embedding 同时承担了representation learning 和co-action modeling的责任。representation learning 任务和co-action modeling可能会相互冲突,从而限制了性能。

    在论文 《 CAN: Revisiting Feature Co-Action for Click-Through Rate Prediction》 中,论文强调了 feature co-action建模的重要性,并认为 state-of-the-art 方法严重低估了 co-action 的重要性。由于表达能力有限,这些方法无法捕获到 feature co-action。捕获feature co-action以增强输入的重要性在于它可以降低模型学习和捕获 co-action 的难度。假设存在一个最优函数 F∗(A,B) 来建模特征 A 和 B 之间的 co-action,通过在输入阶段显式提供 F∗(A,B) 可以大大减轻学习难度。

    为了验证论文的假设,即当前的方法无法完全捕获feature co-action,论文回顾了 state-of-the-art 的方法和设计实验,从而表明探索feature co-action潜力的简单方法可以提高性能。例如,如果选择了特征 A 和 B,那么 A,B 的共现co-occurrence 将被视为一个新特征并馈入到模型中。作者将这个 baseline 称作笛卡尔积cartesian product 模型。虽然笛卡尔积是 co-action modeling 的直接方法,但是它存在一些严重的缺陷,如参数量太大、特征完全独立的 embedding learning 。然而令人惊讶的是,根据论文的一些初步实验,作者发现大多数 state-of-the-art 的 combinatorial embedding 方法完全被笛卡尔积击败。作者推测这种情况可能是因为这些方法的表达能力差,并且无法学到平衡 representation 和 co-action modeling 的 embedding。

    为此,作者提出了feature co-action网络 Co-Action Network: CAN,它可以在输入阶段捕获feature co-action,并有效利用不同特征 pair 对的互信息mutual information 和公共信息common information 。CAN 不是直接参数化parameterize 笛卡尔积 embedding,而是参数化 embedding 生成网络generation network 。这种参数化将追加参数的规模从 O(N2×D) 降低到 O(N×T) 而且实现更好的性能,其中 N 为特征数量、D 为特征维度、T 为 embedding 维度,T≪N,D<T 。

    具体而言,CAN 区分了用于 representation learning 和 co-action modeling 的 embedding 空间,其中 embedding 生成网络派生自 co-action modeling 空间。通过这种方式,CAN 丰富了它的表达能力,缓解了 representation learning 和 co-action learning 的之间的冲突。与笛卡尔积模型相比,CAN 由于提高了参数的利用率,因此显著降低了存储成本和计算成本。

    本文主要贡献:

    • 作者强调了feature co-action建模的重要性,而 state-of-the-art 方法严重低估了这一点。具体而言,论文重新回顾了现有的建模feature co-action的方法。实验结果表明:这些方法无法捕获笛卡尔积 baseline 的性能。这表明当前的 CTR 模型没有充分探索原始feature co-action的潜力。

    • 受观察的启发,作者提出了一个轻量级模型Co-Action Network: CAN ,从而建模原始特征之间的co-action。CAN 可以有效地捕获feature co-action,在降低存储代价和计算代价的同时提高模型性能。

    • 论文对公共数据集和工业数据集进行了广泛的实验,一致的优势验证了 CAN 的有效性。到目前为止,CAN 已经部署在阿里巴巴的展示广告系统中,带来了平均 12% 的点击率提升、平均 8% 的 RPM 提升。

    • 论文介绍了在工业环境中部署 CAN 的技术。CAN 利用feature co-action的思想和作者学到的经验教训可以泛化到其它的 setup,因此受到研究人员和业界从业者的关注。

  2. 相关工作::一些研究工作致力于CTR 预估中建模feature co-action。这些方法可以分为三类:aggregation-based方法、graph-based 方法、combinatorial embedding方法。

    • aggregation-based 方法:深度CTR 预估模型通常遵循 embedding & MLP 的范式。在这些方法中,大规模稀疏输入特征(即 ID 特征)首先映射到低维向量,然后以group-wise 的方式聚合为固定长度的向量。最终拼接好的向量馈入多层感知机 MLP。

      一系列工作聚焦于学习如何聚合特征以获得 CTR 预估的、有区分性discriminative 的 representation 。CNN、RNN、Transformer、Capsule 等不同的神经架构被用于聚合特征。

      • DIN 是采用注意力机制进行特征聚合的代表性工作之一。它使用注意力来激活关于给定 target item 的局部历史行为,并成功地捕获到用户兴趣的多样性特点diversity characteristic 。

      • DIEN 进一步提出了一种辅助损失来从历史行为中捕获潜在的兴趣。此外,DIEN 将注意力机制和 GRU 相结合,对用户兴趣的动态演化进行建模从而进行特征聚合。

      • MIND 认为单个向量可能不足以捕获用户和 item 中的复杂模式。MIND 引入了胶囊网络和动态路由机制来学习多个 representation 来聚合原始特征。

      • 受到 self-attention 架构在 seq-to-seq learning 任务中取得成功的启发,DSIN 引入了 Transformer 以进行特征聚合。

      • MIMN 提出了一种 memory-based 的架构来聚合特征并解决长期long-term 用户兴趣建模的挑战。

    • graph-based 方法:图包含节点和边,其中 ID 特征可以由节点 embedding 表示,feature co-action可以沿着边建模。基于图的方法(如 Graph Neural Network: GNN)对每个节点进行特征传播,并在传播过程中聚合了邻域信息。feature co-action被建模为边权重,用于特征传播从而沿着边局部平滑节点 embedding 。

      • 《Spectral Networks and Locally Connected Networks on Graphs》 首先提出了一种基于谱图spectral graph 的卷积网络扩展,从而用于特征传播。

      • GCN 进一步简化了图卷积层。在 GCN 中,边是预定义的,边的权重是一维实数。边的权重用于聚合邻域信息以建模feature co-action。

      • GAT 学习每个中间层 intermediate layer 分配不同的边权重。GAT 也通过边权重对feature co-action进行建模,但是由于注意力机制,GAT 中的权重是节点的函数。因此注意力机制使得 GAT 更有效地对feature co-action进行建模。

      • 还有一些工作利用不同节点之间的 meta-path 进行 embedding learning。

      尽管基于图的方法在图结构化数据中取得了巨大的成功,但是feature co-action仅由表示连接强度的一维权重来建模。这种表达能力可能不足以建模feature co-action。

    • combinatorial embedding 方法:组合 embedding 方法根据组合 embedding 来度量feature co-action。

      • FM 是浅层模型时代的代表性方法。在 FM 中,feature co-action被建模为特征的latent vector 的内积。然而,FM 在不同类型的 inter-field 相互作用中使用相同的 latent vector,这可能会导致耦合梯度coupled gradient 问题并降低模型容量。

        假设有三个特征:性别、地点、星期。某个样本的特征为:“男性”、“上海”、“周日”。因此有:

        y^FM=b+w男+w上海+w周日+v→男⋅v→上海+v→男⋅v→周日+v→上海⋅v→周日

        因此有梯度:

        ∇v→男y^FM=v→上海+v→周日

        假设性别和星期是独立的,那么理想情况下 v→男 应该和 v→周日 是正交的。但是上述梯度会沿着 v→周日 的方向更新 v→男 。这就是梯度耦合问题,这是由于在不同类型的 inter-field 相互作用中使用相同的 latent vector 引起的。

        此外,FM 的表达能力也受到浅层的限制。

      • 受到深度学习成功的启发,最近的 CTR 预估模型也已经从传统的浅层方法过度到现代的深度方法。DNN 在 bit-wise level 建模非线性交互的能力非常强大,但是feature co-action是隐式学习的。许多工作已经表明: 通过组合特征 embedding 来显式建模feature co-action有利于 CTR 预估。

      • Wide&Deep 手动设计的笛卡尔积作为 wide 模块的输入,其中 wide 模块是一个广义的线性模型。wide 模块结合深度神经网络来预估 CTR 。

      • DeepFM 在 Wide&Deep 中将 wide 部分替换为 FM 模块,从而无需手动构建笛卡尔积。

      • Productbased Neural Network: PNN 引入一个 product layer 来捕获 inter-field category 之间的feature co-action。product layer 的输出馈入到后续的 DNN 来执行最终的预测。

      • Deep & Cross Network: DCN 在每一层应用特征交叉。

      尽管和普通 DNN 相比,这些方法取得了显著的性能提升,但是它们仍然存在一些局限性。具体而言,每个 ID embedding 同时承担 representation learning 和 co-action modeling 的责任。representation learning 和 co-action modeling 之间的相互干扰可能会损害性能。因此, combinatorial embedding 的限制没有充分利用feature co-action的能力。

23.1 模型

  1. feature co-action 回顾:这里我们首先简要介绍一下 CTR 预估中的feature co-action,然后我们回顾建模feature co-action的 state-of-the-art 方法。

    在广告系统中,用户 u 点击广告 a 的预估点击率 y^ 是通过以下方式计算:

    y^=DNN(E(u1),⋯,E(ui),E(a1),⋯,E(aj))

    其中:

    • {u1,⋯,ui} 为用户 u 的特征集合,包括浏览历史、点击历史、用户画像等等特征。

    • {a1,⋯,aj} 为广告 a 的特征集合。

    • E(⋅)∈Rd 为 embedding 函数,它将稀疏的 ID 特征映射到可学习的、稠密的 embedding 向量。其中 d 为 embedding 维度。

    除了这些一元特征,一些工作将特征交互建模为 DNN 的附加输入:

    y^=DNN(E(u1),⋯,E(ui),E(a1),⋯,E(aj),{F(us,at)}(s,t)=(1,1)(i,j))

    其中 F(us,at)∈Rd 表示用户特征us 和广告特征 at 之间的特征交互。

    特征交互的融合改善了预测结果,这表明来自不同 group 的特征组合提供了额外的信息。直观的原因是:在 CTR 预估任务中,某些特征组合与 label 的关系,比单独isolated 的特征本身与 label 的关系更强。以用户点击行为为例,由于用户兴趣的存在,用户点击历史与用户可能点击的target item 之间存在很强的关联。因此,用户点击历史和target item 的组合是 CTR 预估的有效共现co-occurrence 特征。我们将这种与label 关系密切的特征交互称作特征协同feature co-action 。

    仔细回顾以前的 DNN-based 方法,可以发现一些深度神经网络即使不使用组合特征作为输入,也可以捕获特定特征之间的交互。例如,DIN 和 DIEN 使用注意力机制来捕获用户行为特征和 item 之间的交互。然而,这些方法的弱点在于它们仅局限于用户兴趣序列的特征交互,并且都是处理特征的 embedding 向量。而低维空间中的 embedding 向量往往会丢失很多原始信息。

    最直接的实现方法是为每个组合特征学习一个 embedding 向量,即笛卡尔积cartesian product 。然而,这也存在一些严重的缺陷:

    • 第一个问题是参数爆炸问题。例如,取值空间大小为 M 和 N 的两个特征做笛卡尔积,那么参数空间从 O(M+N) 扩展到 M(M×N) ,这会给在线系统带来很大的负担。

    • 此外,包含相同特征的两个组合之间没有信息共享,这也限制了笛卡尔积的表达能力。

      另外,笛卡尔积的方式也无法泛化到训练期间 unseen 的特征组合。

    一些工作尝试使用特殊的网络结构来建模 feature co-action。然而,大多数这种相互交互的结构,与特征组 feature groups 的 representation 之间没有任何区别。

  2. 为了不受笛卡尔积和其它先前工作缺陷的情况下利用feature co-action,我们提出了一个 Co-Action Network: CAN 模型来有效地捕获 inter-field 交互。根据以上分析,以往的工作并没有充分挖掘feature co-action的潜力。受笛卡尔积中特征组合独立编码的启发,CAN 引入了一个可插拔pluggable 模块:协同单元 co-action unit 。

    co-action unit聚焦于扩展参数空间parameter space ,并有效地应用参数来建模feature co-action。具体而言,co-action unit充分利用一侧(例如用户侧)的参数来构建应用于另一侧(例如广告侧)的多层感知机MLP 。这种特征交叉范式给模型带来了更大的灵活性。

    • 一方面,增加参数维度意味着扩展 MLP 参数和层数。

    • 另一方面,和在具有相同特征的不同组合之间不共享信息的笛卡尔积相比,co-action unit提高了参数利用率,因为 MLP 直接使用 feature embedding 。

    • 此外,为了在模型中融入高阶信息,我们引入了多阶增强multi orders enhancement ,它显式地为co-action unit构建了一个多项式输入。多阶信息促进了模型的非线性,有助于更好的feature co-action。

    此外,我们提出了包括 embedding 独立性、组合独立性、阶次独立性的 multi-level independence ,并通过拓宽broadening 参数空间来保证 co-action learning 的独立性。

  3. CAN 的整体架构如下图所示。用户特征和 target item 特征以两种方式输入到 CAN 中。

    • 在第一种方式中,所有的用户特征 x→user 和target item 特征 x→item 都使用 embedding layer 编码为稠密向量,然后分别拼接为 e→user 和 e→item 。

    • 在第二种方式中,来自 x→user 和 x→item 的部分特征被选择并映射到co-action unit 的 p→user 和 p→item 从而进行 co-action modeling。co-action unit的算子operator 定义为:

      H(p→user,p→item)

      它扮演 MLP 的角色,它的参数来自于 p→item、输入来自于 p→user。co-action unit的细节后面详述。

    CAN 的最终架构形式化为:

    y^=DNN(e→user,e→item,H(p→user,p→item;ΘCAN);ΘDNN)

    其中: y^ 为预估的点击率,ΘCAN 为co-action unit的 lookup table 的参数,ΘDNN 为 DNN 的参数。

    ground truth 记作 y∈{0,1} 。我们最终最小化 y^ 和 y 之间的交叉熵损失函数:

    minΘCAN,Θe,ΘDNN−ylog⁡y^−(1−y)log⁡(1−y^)

    其中 Θe 为feature embedding 的参数(用于计算 e→user,e→item)。

  4. co-action unit: co-action unit 的详细结构如上图左侧部分所示。每个 item 特征通过 MLP table lookup 从而对应一个多层感知机 MLPcan ,而用户特征被视为这些 MLP 的输入。 输出的feature co-action和 common feature embeddings 一起用于最终的 CTR 预估。

    注意:上图中 Parameter lookup 独立于 Embedding Layer,这使得 representation learning 和 co-action modeling 是独立的。

    Pitem∈RM×T 作为 MLPcan 中每一层的 weight 和 bias,Puser∈RM×D 作为 MLPcan 的输入从而得到 co-action 输出 H ,其中 M 为 unique ID 数量,D 和 T 为向量维度,D<T 。

    • 事实上 Puser 也可以作为 MLPcan 的参数、Pitem 也可以作为 MLPcan 的输入。根据经验,在广告系统中,候选 item 是所有 item 中的一小部分,因此其数量小于用户点击历史中的 item 数量。因此,我们选择 Pitem 作为 MLPcan 的参数。

    • Puser 的维度和 MLPcan 输入的维度相同;而 Pitem 的维度更高,因为它需要reshape 为 K 层MLP 的权重矩阵和 bias 向量。

    给定某个 item ID 特征的参数 p→item∈RT 、给定某个 user ID 特征的参数 p→user∈RD 。我们首先将一维向量 p→item reshape 为 MLPcan 中所有层的权重矩阵和 bias 向量,即:

    p→item=concate({flatten(W(i),b→(i))}i=0,1,⋯,K−1)

    其中 W(i) 和 b→(i) 为 MLPcan 第 i 层的权重和偏置,一共有 K 层。

    然后 feature co-action计算为:

    h→(0)=p→userh→(i)=σ(W(i−1)h→(i−1)+b→(i−1)),i=1,2,⋯,K−1h→=H(p→user,p→item)=h→(K)

    其中:σ 为激活函数, h→ 为feature co-action。

    读者注:本质上是将向量内积这种线性交互形式替换为 MLP 这种非线性交互形式。在 MLP 中,输入为用户侧embedding 、权重为广告侧 embedding 的 respahe 。

    对于像用户点击历史这样的序列特征,co-action unit应用于每个历史点击 item,然后对序列进行 sum 池化;对于用户画像这样的非序列特征,co-action unit 并未进行池化。

    和其它方法相比,我们提出的co-action unit至少有三个优势:

    • 和以往在不同类型的 inter-field 相互作用中使用相同的 latent 向量不同,co-action unit利用 DNN 的计算能力,通过动态参数和输入而不是固定模型来耦合两个分特征component feature ,从而提供更大容量来保证两个 field 特征的更新并且避免耦合梯度。

    • 其次,可学习参数的规模较小。co-action learning 的最终目标是学习每个co-action feature 的良好的representation 向量。但是,直接学习分特征component feature 的笛卡尔积的 embedding 需要学习相当大规模的参数。例如,考虑两个具有 N 个 ID 数量的特征。如果我们通过学习笛卡尔积的 embedding 来学习 co-action representation,则参数的规模应该是 O(N2×D) ,其中 D 为 embedding 维度。但是,通过使用co-action unit,这个规模可以降低到 O(N×T),其中 T 为co-action unit的维度。更少的参数不仅有利于学习,还可以有效减轻在线系统的负担。

    • 第三,和之前的其他工作相比,co-action unit对新的特征组合具有更好的泛化能力。给定一个新的特征组合,只要之前训练过两侧的 embedding,co-action unit仍然可以工作。

  5. 读者注:为简化讨论,假设 co-action unit 没有非线性激活函数、也没有 bias 。

    假设 co-action unit 只有一层,用户侧的 embedding p→user∈RD ,item 侧的 embedding 可以拆分为 D1 个 embedding {q→item,i(1)}i=1D1∈RD1×D 的拼接:

    q→item=[q→item,1(1)||q→item,2(1)||⋯||q→item,D1(1)],D1×D=T

因此特征组合得到新的交叉特征为 p→user(1)=(p→user⋅q→item,1(1),⋯,p→user⋅q→item,D1(1))∈RD1 。

如果 co-action unit 为 K 层,则 item 侧的 embedding 可以拆分为:

{q→item,i(1)}i=1D1∈RD1×D,⋯,{q→item,i(K)}i=1DK∈RDK×DK−1,∑iDk×Di−1=T

得到的交叉特征为:

p→user(K)=(p→user(K−1)⋅q→item,1(K),⋯,p→user(K−1)⋅q→item,DK(K))∈RDK

因此 item 侧的 embedding 可以视为高阶的(K 阶)、multi-head (第 k 阶的 head 数量为 Dk )的 embedding 。如果muti-head 退化为 single-head、并且不同阶次的 item embedding 共享,则 co-action unit 退化回 Deep Cross Network 。

因此这篇论文创新点存疑,并且 co-action unit 是否能够捕获feature co-action 也是存疑的。

此外,CAN 用了两套 embedding:一套用于建模 feature co-action、另一套建模 feature representation,这大大增加了模型的参数(几乎翻倍)。

  1. 多阶加强Multi-order Enhancement:前面提到的feature co-action基本上是基于一阶特征形成的,也可以在高阶上估计特征交互。虽然co-action unit可以利用深层 MLP 隐式地学习高阶特征交互,但是学习过程被认为很漫长。为此,我们在co-action unit中显式引入多阶信息从而获得多项式输入。这是通过将 MLPcan 应用于 p→user 的不同阶次来实现的:

    h→=H(p→user,p→item)=∑c=1CMLPcan((p→item)c)≃MLPcan(∑c=1C(p→user)c)

    其中 C 为阶次。

    这里的近似是假设不同阶次之间的权重是共享的。

    注意:当 c=1 时,使用 SeLU 作为激活函数;当 c>1 时我们使用 tanh 激活函数,从而避免由于高阶项引起的数值问题。

    多阶增强multi-order enhancement 有效地提升了模型对 co-action modeling 的非线性拟合能力,而不会带来额外的计算和存储成本。

  2. 多level 独立性 Multi-level Independence:learning independence 是co-action modeling 的主要关注点之一。为了确保学习的独立性,我们根据重要性从不同方面提出了三个 level 的策略:

    • level 1:参数独立性,这是必须的。如前所述,我们的方法区分了 representation learning 和 co-action modeling 的参数。参数独立性是我们 CAN 的基础。

    • level 2:组合独立性,这是推荐的。随着特征组合数量的增加,feature co-action线性增长。根据经验, target item 特征像 item_id, category_id 被选为权重侧 embedding,而用户特征则用于输入侧embedding。由于权重侧 embedding 可以和多个输入侧embedding 组合,反之亦然,因此我们的方法以指数方式扩大了它们的维度。假设有 M 个权重侧 embedding 和 N 个输入侧 embedding,那么我们将权重侧 embedding 的维度扩大 N 倍、将输入侧 embedding 的维度扩大 M 倍:

      |p→item|=(∑i=1K|W(i)|+|b→|)×N,|p→user|=|x→|×M

      其中 |x→| 为 MLPcan 的输入维度,|⋅| 为参数维度。

      在前向传播中,这些 embedding 被分为几个部分来完成 MLP 操作。

    • level 3:阶次独立性,这是可选的。为了进一步提高多阶输入中co-action modeling的灵活性,我们的方法对不同的阶次使用了不同的权重侧 embedding 。权重侧 embedding 的维度也相应增加了 orders 倍。

      注意,此时由于 MLPcan 在不同阶次中不共享参数,因此以下的近似不可行:

      ∑c=1CMLPcan((p→item)c)≠MLPcan(∑c=1C(p→user)c)

    协作独立性co-action independence 有助于co-action modeling,但是同时也带来了额外的内存访问和计算成本。在独立性level 和部署成本之间存在 tradeoff。从经验上来讲,模型使用的独立性level 越高,模型需要的训练数据就越多。在我们的广告系统中,我们使用了 三个 level 的独立性。但是由于缺乏训练样本,我们在公共数据集中仅使用了 embedding 独立性。

23.2 实验

  1. 数据集:我们使用三个公开可访问的数据集进行 CTR 预估任务的实验:

    • Amazon 数据集:包含来自 Amazon 的产品评论和元数据。在 24 个产品类目中,我们选择 Books 子集,其中包含 75053 个用户、358367 个 item 、1583 个类目。

      由于 Amazon 数据集最初不是 CTR 预估数据集,因此未提供负样本。遵从前人的工作,我们随机选择未被特定用户评论的item 作为该用户的负样本,并创建相应的用户行为序列(点击和未点击)。最大序列长度限制为 100 。

    • Taobao 数据集:来自淘宝推荐系统中用户行为的集合。数据集包含大约 100 万用户,用户行为包括点击、购买、加购物车、收藏。我们获取每个用户的点击行为,并根据时间戳进行排序从而构建用户行为序列。最大序列长度限制为 200 。

    • Avazu 数据集:是 Avazu 提供的移动广告数据,包含 11 天的真实工业数据,前 10 天用于训练、第 11 天用于测试。

      对于Amazon 数据集和 Taobao 数据集,我们根据用户行为序列对feature co-action进行建模。相反,对于 Avazu 数据集,我们使用离散特征对feature co-action进行建模,因为 Avazu 数据集包含各种数据字段,适合验证序列/非序列对feature co-action建模的影响。

      在训练期间,第 10 天被视为验证集。

    数据集的统计信息如下表所示。

  2. baseline 方法:在本文中,我们使用 DIEN 作为 CAN 的base model。请注意,由于co-action unit是可插拔模块,因此允许使用其它任何模型。

    为了验证我们方法的有效性,我们将 CAN 和当前聚焦于特征交互的方法进行了比较。为了公平比较,DIEN 被用作这些方法的 basis 。

    • DIEN:它设计了一个兴趣抽取层来从用户行为序列中捕获用户兴趣。兴趣演化层进一步用于对兴趣演化过程进行建模。

    • 笛卡尔积Cartesian Product:它是将两个集合相乘从而形成所有有序pair 对的集合。有序pair 对的第一个元素属于第一组集合、第二个元素属于第二组集合。

    • PNN:它使用 product layer 和全连接层来探索高阶特征交互。

    • NCF:它提出了一种神经网络架构来学习user 和 item 的潜在特征,这些特征用于使用神经网络对协同过滤进行建模。

    • DeepFM:它是一种新的神经网络架构,它结合了FM 和深度学习的能力。

  3. 实现:我们使用 Tensorflow 实现了 CAN。

    • 对于 p→item,我们使用八层的 MLP,权重维度为 4 x 4,这导致 p→item的维度为 (4 x 4 + 4) x 8 = 160 (包括 bias)。

    • 我们使用多阶加强,其中 p→user 的阶次为 2 。

    • 模型从头开始训练,模型参数初始化为高斯分布(均值为 0、标准差为 0.01 )。优化器为 Adam ,batch size = 128 ,学习率为 0.001。

    • 我们使用三层 MLP 来预测最终的 CTR,隐层维度为 200 x 100 x 2 。

    模型的评估指标为 AUC 。

  4. 下表给出了 Amazon 数据集和 Taobao 数据集上的实验结果。可以看到:

    • CAN 在两个数据集上都优于其它 state-of-the-art 的方法。

      和 base 模型 DIEN 相比,CAN 分别将 AUC 提高了 1.7% 和 2.1%。同时 CAN 在很大程度上优于其它 co-action 方法,这证明了我们的方法在co-action modeling上的有效性。

    • 值得注意的是,作为纯粹的 representation learning 方法,笛卡尔积方法和其它组合 embedding 方法(如 PNN、NCF、DeepFM)相比,可以获得更好的性能。这表明虽然这些组合 embedding 方法可以抽取一些 co-action 特征,但是笛卡尔积确实可以学习具有良好 representation 和 co-action 的 embedding。

      相比之下,CAN 取得了比笛卡尔积和组合 embedding 方法更好的结果,这意味着基于网络机制的 CAN 可以同时学习 representation 和 co-action 。

  5. 消融研究:为了研究每个组件的影响,我们进行了几项消融研究,如下表所示。

    • 多阶multi order:首先我们评估多阶的影响。在 p→user 一阶项的基础上,我们逐渐增加了二阶项、三阶项、四节项。可以看到:

      • 从一阶到二阶,AUC 提升了很多。

      • 之后随着阶次的增加,差距开始缩小甚至造成负向影响。

      多阶对于性能增益的影响很小,因此在实践中我们使用 2 阶或者 3 阶是合适的。

    • MLP 深度:其次,我们展示了 MLPcan 架构对于 co-action modeling 的影响。具体而言,我们分别训练了具有不同 MLP 层数的模型,分别为 1/2/4/8。MLP 层的输入和输出维度不变。

      可以看到:

      • 一般而言,更深的 MLP 会带来更高的性能。

      • 但是当层数超过 4 时,没有明显的 AUC 增益,即 8 层 MLP 相比较 4 层 MLP 仅增加了 0.02% 的 AUC。主要原因是训练样本对于如此深的架构来说是不够的。

    • 激活函数:最后,我们比较了不同激活函数的影响。可以看到:

      • 非线性使得 AUC 提高了 0.03% ~ 0.41%。

      • 在阶次为 2 的情况下,Tanh 相比 SeLU 表现出更显著的性能,因为 Tanh 起到了 normalizer 的作用,从而避免高阶次的数值稳定性问题。

  6. 模型通用性 universality 和泛化 generalization:为了验证 CAN 的特征通用性和泛化能力,我们从两个方面对 CAN 和其它方法进行比较:验证具有非序列的 co-action 特征,并预测训练期间未见过的 co-action 特征的样本。

    • 通用性:虽然 CAN 主要针对包含大量行为序列的真实工业数据而设计,但是它仍然能够处理非序列输入。Avazu 数据集包含 24 个数据字段,我们从中选择 9 个字段构建 16 种特征组合。实验结果如下表所示。可以看到:CAN 优于大多数方法并且和笛卡尔积相当。

      DNN 作为 basic 模型,没有包含任何序列特征。因此除了 DNN 之外,其它方法都包含了 16 种组合特征。

    • 泛化能力:在真实的商业场景中,每天都会出现无数的特征组合,这就需要 CTR 模型的快速响应。泛化能力对于实际应用非常重要。

      为此,我们从Amazon 测试集中删除了包含现有特征组合的样本。通过这种方式,我们获得了一个新的测试集,其特征组合对于训练好的模型而言是全新的。注意:我们仅要求特征组合为 zero shot,而不是所有特征都是 zero shot。

      实验结果如下表所示可以看到:

      • 笛卡尔积在这种场景下是无效的(DIEN+Cartesian 相比于 DIEN 几乎没有提升),因为它依赖于训练好的 co-action embedding ,但是测试集中这种 co-action embedding 不可用。

      • 相反,CAN 仍然运行良好。与其它方法相比,CAN 显示出对新特征组合的出色泛化能力。

      在真实的工业环境中,特征组合非常稀疏,只要 Pitem 和 Puser 训练好,使用 CAN 处理新的特征组合就容易的多。

  7. 工业数据集上的结果:

    • 在线 Serving 和挑战:一开始我们在我们的系统上部署了笛卡尔积模型,这造成了很多麻烦。

      • 一方面,即使使用 ID 低频过滤,模型大小也以极大的速度扩大。

      • 另一方面,额外的 M×N 的 ID 也带来了无法接受的 embedding look up 操作的数量以及系统响应延迟。

      相比之下,CAN 在这方面要有好的多。为了在我们的广告系统上部署 CAN,我们选择了 21 个特征,包括 6 个广告特征、15 个用户特征来生成特征组合,以便由于co-action 独立性而分配了额外的 21 个 embedding 空间。

      显著增加的 embedding 空间仍然导致在线serving 的巨大压力。由于用户特征大多数为长度超过 100 的行为序列,因此需要额外的内存访问,导致响应延迟上升。此外,feature co-action 的计算成本根据特征组合的数量线性增加,这也给我们的系统带来了相当大的响应延迟。

    • 解决方案:为了解决这些问题,我们付出了很多努力来减少响应延迟。我们从三个方面简化模型:

      • 序列截断:16 个用户特征的长度从 50 到 500 不等。为了降低内存访问成本,我们简单地对我们的用户特征应用序列截断。例如,长度为 200 的所有用户行为序列都截断到 50 。最近的用户行为被保留。

        序列截断将 Query Per Second: QPS 提高 20%,但是导致 AUC 降低 0.1%,这是可以接受的。

      • 组合缩减:6 个广告特征和 15 个用户特征最多可以获得 90 个特征组合,这是一个沉重的负担。经验上,同一类型的广告特征和用户特征的组合可以更好地对特征共现co-occurrence 进行建模。根据这个原则,我们保留 item_id、item_click_history、category_id、category_click_history 等组合,并删除一些不相关的组合。这样,组合的数量从 90 减少到 48 个, QPS 提高了 30% 。

      • 计算 kernel 优化:co-action 计算涉及到 Pitem 和 Puser 之间的一个耗时的大矩阵乘法,它们的形状分别为 [batch_size, K, dim_in, dim_out] 和 [batch_size, K, seq_len, dim_in]。其中 K, seq_len, dim_in, dim_out 分别指的是 co-action 特征数量、用户行为序列长度、MLP 输入维度、MLP 输出维度。

        在我们的场景中,dim_in 和 dim_out 不是常用的形状,因此这种矩阵没有被 Basic Linear Algebra Subprograms:BLAS 很好地优化。为了解决这个问题,我们重写了内部计算逻辑,带来了 60% 的 QPS 提升。

        此外,由于该矩阵乘法之后是 seq_len 维度上的sum 池化,我们进一步在矩阵乘法和sum 池化之间进行了 kernel fusion 。通过这种方式,避免了矩阵乘法输出的中间结果写入 GPU 内存,这又带来了 47% 的 QPS 提升。

      通过这一系列的优化,使得 CAN 能够在主流量main traffic 中稳定地在线 serving 。在我们的系统中,每个 GPU 可以处理将近 1K QPS。下表给出了我们的在线 A/B test 中 CAN 对 CTR 和 RPM:Revenue Per Mille 的提升。