KDD2019-2020论文笔记

重参数技巧 Re-parameterization Trick

重参数就是把带有随机性的𝑧变成确定性的节点,同时随机性用另一个输入节点𝜖代替。

例一:VAE

举简单的VAE(变分自编码器)的例子说明:一个连续分布(正态分布)的重参数

最原始的自编码器: 左右两边是端到端的出入输出网络,中间的绿色是提取的特征向量,这是一种直接从图片提取特征的方式。
在这里插入图片描述
VAE: 不直接用网络去提取特征向量,而是提取这张图像的分布特征,也就把绿色的特征向量替换为分布的参数向量,比如说均值和标准差。然后需要decode图像的时候,就从encode出来的分布中采样得到特征向量样本,用这个样本去重建图像。
在这里插入图片描述
这时怎么计算梯度的问题就出现了:原本,网络中参数包括前向传递和反向传递(如下图左半部分),现在我们计算出P(Z)后,依概率采样(np.random.choice),由P(Z)得到样本z没问题,但反向传递时如何找到并更新P(Z)就有问题了。
在这里插入图片描述
应用重参数技巧解决该梯度传导问题:
在这里插入图片描述
假设图中的𝑥和𝜙表示VAE中的均值和标准差向量,它们是确定性的节点。而需要输出的样本𝑧是带有随机性的节点,重参数就是把带有随机性的𝑧变成确定性的节点,同时随机性用另一个输入节点𝜖代替。例如,这里用正态分布采样,原本从均值为𝑥和标准差为𝜙的正态分布𝑁(𝑥,𝜙2)中采样得到𝑧将其转化成从标准正态分布𝑁(0,1)中采样得到𝜖,再计算得到𝑧=𝑥+𝜖⋅𝜙。这样一来,采样的过程移出了计算图,整张计算图就可以计算梯度进行更新了,而新加的𝜖的输入分支不做更新,只当成一个没有权重变化的输入。

目标采样的分布:𝑁(𝑥,𝜙2) (设采样出的样本为𝑧)
base 分布:𝑁(0,1) (设采样出的样本为𝜖)
从𝜖到𝑧的关联:𝑧=𝑥+𝜖⋅𝜙
通过将𝑧的随机性转移到𝜖上

例二:gumbel-softmax (离散分布情况)

应用场景:首先需要可以采样,使得离散的概率分布有意义而不是只取概率最大的值,其次需要可以计算梯度。

如:例如网络输出的四维向量为𝑣=[−20,10,9.6,6.2],第二个维度取到最大值10。
希望从符合𝜎(𝑣) =[0,0.591,0.396,0.013]的分布中采样,即希望采样出第二维[0,1,0,0]的类别的概率是最大的,为0.591。这和多类别的分类任务是一个道理。但是这种取法有个问题是不能计算梯度,也就不能更新网络。

在这里插入图片描述

通过控制大于0的温度参数𝜏来平滑分布。当𝜏->0时,分布趋于one-hot形式;当𝜏->+∞,分布趋于均匀分布

目标分布:𝑛维向量𝑣
base分布:−log(−log(𝜖𝑖)),𝜖𝑖为从均匀分布𝑈(0,1)中采样的独立样本
随机性被转移到𝜖𝑖上

加上gumbel噪声以后的采样效果:
在这里插入图片描述

KDD2019-2021

KDD2020 Gemini: A Novel and Universal Heterogeneous Graph Information Fusing Framework for Online Recommendations

(滴滴出行) 一个新颖的通用异构图信息融合框架

在这里插入图片描述

背景和挑战:

  1. 网络嵌入用于推荐系统的研究中,很多研究者致力于利用额外的辅助信息来提高推荐性能,但辅助信息缺乏对所有推荐场景的兼容性,同时降低模型的通用性
  2. 用户和项目之间的异构性加剧了网络信息融合的难度。(若通过将用户-项目异构网络转换为两个同构图,即用户-用户和项目-项目,然后分别融合信息。由于忽略了原始图中的相邻关系,这可能会限制学习嵌入的表示能力)
  3. 用户项目交互的稀疏性。

动机:

如何构建一个统一的推荐系统来解决所有这些场景的推荐需求是一个巨大的挑战,尤其是在面临用户-项目交互的稀疏性问题时。

方法:

我们提出了一个通用有效的框架Gemini,它只依赖于公共交互日志,避免了对辅助信息的依赖,保证了更好的通用性。同时,为了保持原有异构图上的相邻关系,Gemini 分别从用户和项目的角度将原始的用户-项目异构图转化为两个半同构图。转换后的图由两种类型的节点组成:来自同构节点的网络节点和来自异构节点的属性节点。然后,以同构方式学习节点表示,同时考虑边缘嵌入。由于转换后的图包含原始二阶邻居,因此在一定程度上解决了交互稀疏问题。

在训练过程中,我们在 Gemini-U 和 Gemini-I 之间共享用户和项目的嵌入,然后我们可以通过边缘属性 Att-U 和 Att-I 将两个网络信息融合过程非常紧密地关联起来两个好处:一是两类节点的表示不同,但仍处于相同的低维空间; 另一种是随着网络信息融合的进行,item embedding结合了其多阶邻居的信息,然后item之间的邻居关系信息可以引入到Gemini-U上的用户信息融合中
在这里插入图片描述

例如:从用户的角度来看,如果两个用户都点击了相同的一些项目,那么他们就有了一些共同的兴趣,从而在 Gemini-U 中增加了一条边。 这些相同商品是边的属性节点,为简单起见称为 Att-U。

Att-U 还可以通过两种方式来表征边的重要性:

  • 一种方式是物品的数量,物品越多,边越重要。
  • 另一种方式是单个项目的重要性,项目越重要,边缘就越重要。

问题定义:

在这里插入图片描述

模型

在这里插入图片描述

Edge Embedding
  • Sum Pooling
    在这里插入图片描述
  • TF-IDF Pooling
    为了同时考虑边上的属性的数量和质量,将sum pooling(即,数量)和TF IDF(即,质量)相结合
    在这里插入图片描述
    我们将所有节点的TF-IDF值从低到高划分为K个时隙。对于每个插槽,我们学习一个参数向量(即h𝑡𝑓 −𝑖𝑑𝑓𝑓 ) 表示其权重向量。
Information Convolution

对于中心节点,GCNs 的核心思想是迭代地使用其邻居节点的嵌入来更新自己的嵌入。 在这里,我们扩展了典型的 GCN,用于处理 Gemini-U 和 Gemini-I。 关键问题是在聚合来自邻居的信息时有效地处理边缘嵌入。

这里聚合函数是一个注意层,它结合了边缘嵌入和节点嵌入:
在这里插入图片描述
当我们计算注意权重时,我们不仅需要关于邻居节点的信息,还需要关于边缘的信息。因此边向量通过如下公式得到:
在这里插入图片描述
基于注意力机制的聚合器表示为:
在这里插入图片描述
聚合后,我们通过以下卷积函数将邻居信息传递给自节点:
在这里插入图片描述
模型训练算法
在这里插入图片描述
为例减小计算的复杂度,作者有提出了一种称为Gemini-Collaboration的迭代训练方法。
在这里插入图片描述

实验

前四个数据集是从滴滴九星的以下推荐场景中提取出来的,如图3所示:积分商城中的产品推荐(滴滴产品),滴滴九珠app中的内容推荐(滴滴内容),滴滴九星FM中的音乐推荐(滴滴音乐)和滴滴九星app中的优惠券推荐(滴滴优惠券)。滴滴产品、滴滴内容和滴滴音乐都是为数千万司机服务的推荐场景,滴滴优惠券是为数亿乘客服务的推荐场景。

我们分别提取了12天的在线日志,前11天用于训练集,第12天用于测试集。具体来说,滴滴产品数据集有8976117条交互记录,滴滴内容数据集有7934319条交互记录,滴滴音乐数据集有3321930条交互记录,滴滴优惠券数据集有826658条交互记录。最后一个数据集是一个公共数据MovieLens,它是从电影推荐场景中提取的,大约有2006859条记录。
在这里插入图片描述

线下测试:

在这里插入图片描述

算法设计的优越性

在这里插入图片描述

Gemini-Collaboration评估

图5显示Gemini-Collaboration得到了更好的表现。原因是,在使用Gemini-Collaboration训练模型时,我们训练h𝑢 先收敛后训练h𝑣 每次迭代收敛。它类似于GAN中的序列鉴别器和发生器。相反,Gemini联合训练Gemini-U和Gemini-I,这意味着网络节点的嵌入是在未训练好的属性节点嵌入的基础上更新的。此外,图5还表明Gemini-Collaboration能够大大降低实际训练过程中的时间复杂度
在这里插入图片描述

在线评测:

在这里插入图片描述

KDD2020 Controllable Multi-Interest Framework for Recommendation

Alibaba 召回场景下的多兴趣向量召回

在这里插入图片描述

背景

  • 在实践中,由于对延迟和性能的严格要求,工业推荐系统通常包括两个阶段,召回阶段和排序阶段,本文主要集中在提高召回阶段的有效性。
  • 在实践中,借助快速 K 最近邻 (KNN) 算法从大规模项目池中选择最近的项目为每个用户生成候选集,我们主要关注用户表征的计算。 换句话说,匹配阶段的决定性因素是根据用户历史行为计算的用户表征的质量。

动机

  • 统一的用户表征很难代表多种兴趣
  • 由于电子商务用户和商品的规模较大,很难使用深度模型直接给出每对用户和商品之间的点击率(CTR)预测
    在这里插入图片描述

方法 ComiRec

我们为顺序推荐提出了一种新的可控多兴趣框架,称为 ComiRec。我们的多兴趣模块从用户行为序列中捕获多个兴趣,可用于从大规模项目池中检索候选项目。然后将这些项目送入聚合模块以获得整体推荐。聚合模块利用可控因素来平衡推荐的准确性和多样性。

我们使用动态路由方法或自我注意方法的框架分别命名为 ComiRec-DR 或 ComiRec-SA。

模型

在这里插入图片描述

Dynamic Routing Method

用户序列的item embeddings可以看作是初级胶囊,多个用户兴趣可以看作兴趣胶囊。(胶囊是一组神经元,其活动向量表示特定类型实体的实例化参数。胶囊的输出向量的长度表示胶囊所代表的实体在当前输入中的概率。)

设ei为初级胶囊,则高级兴趣胶囊sj的计算方式为如下。
我们首先计算预测向量为:
在这里插入图片描述
胶囊 j 的总输入是所有预测向量的加权和:
在这里插入图片描述
其中 c i j c_{ij} cij 是由迭代动态路由过程所确定的耦合系数。 胶囊 i i i 与下一层所有胶囊之间的耦合系数之和应为 1。我们使用“routing softmax”来计算耦合系数:
在这里插入图片描述
提出了一种非线性“挤压”函数来确保短向量收缩到几乎为零的长度,将长向量收缩到略低于 1 的长度:
在这里插入图片描述
然后将用户 u 的输出兴趣胶囊形成为矩阵 Vu = [v1, …, vK ] ∈ Rd×K,用于下游任务。

算法如下:
在这里插入图片描述

Self-Attentive Method

在这里插入图片描述

模型训练

在通过多兴趣提取模块计算用户行为的兴趣嵌入后,我们使用 argmax 算子为目标商品 i 选择相应的用户嵌入向量:
在这里插入图片描述
给定一个带有用户嵌入 v u _u u 和项目嵌入 e i e_i ei 的训练样本 (u,i),我们可以计算用户 u 与项目 i 交互的可能性为:
在这里插入图片描述
目标函数:(使用采样的 softmax 技术)
在这里插入图片描述

在线服务

对于在线服务,我们使用我们的多兴趣提取模块来计算每个用户的多个兴趣。 用户的每个兴趣向量都可以通过最近的邻居库(Faiss)从大规模项目池中独立检索前 N 个项目。 由多个兴趣检索的项目被送入聚合模块以确定整体项目候选。 最后,将向用户推荐排名分数较高的项目。

Aggregation Module

作用:将这些来自不同兴趣的item聚合起来,得到整体的top-N个item。
根据项目与用户兴趣的内部生产接近度合并和过滤项目:
在这里插入图片描述
这是聚合过程最大化推荐准确度的有效方法。 然而,这并不完全是关于当前推荐系统的准确性。 人们更有可能被推荐新的或多样化的东西。我们的框架使用一个可控的程序来解决这个问题。 我们使用以下值函数 Q(u,S) 通过可控因子 λ ≥ 0 来平衡推荐的准确性和多样性:
在这里插入图片描述
对于最准确的情况,即 λ = 0,我们只使用上述简单的方法来获得整体项。 对于最多样化的情况,即 λ = ∞,可控模块为用户找到最多样化的项目。我们提出了一个贪心推理算法来近似地最大化Algorithm 2中列出的值函数Q(u,S)
在这里插入图片描述

实验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

case_study

通过我们的模型,我们从用户的点击序列生成了四个兴趣嵌入。我们发现用户的四大兴趣是糖果、礼品盒、手机壳和配件。我们按点击顺序报告与四种兴趣对应的项目。右边部分显示了通过兴趣嵌入从工业项目池中检索到的项目
在这里插入图片描述

KDD2020 Disentangled Self-Supervision in Sequential Recommenders

(Alibaba) 通过自监督的方法解开序列中的多个意图

在这里插入图片描述

背景和动机

  • 序列推荐器中,seq2items策略是短视的,通常会产生非多样化的推荐列表
  • 作者希望通过着眼于更长期的未来来研究挖掘额外信号以进行监督

挑战

  • 重建包含许多行为的未来序列比重建单个下一个行为要困难得多,这可能导致收敛困难 【 由于未来序列中可能存在冗余监督信号,例如反映相同意图的多次点击,因此将行为(例如单击项目)一一重构是低效的 】
  • 所有未来行为的序列可能涉及许多意图,而不是全部其中可以从早期行为的序列中预测

方法

提出了一种基于潜在自监督和意图解开的seq2seq训练策略。具体来说,我们在潜在空间中执行自我监督,即将未来序列的表示作为一个整体重建,而不是单独重建未来序列中的项目。我们还解开任何给定行为序列背后的意图,并仅使用涉及共享意图的子序列对构建 seq2seq 训练样本

  • 第一个核心思想是在潜在空间而不是数据空间中执行自我监督 。我们的 seq2seq 训练策略要求模型根据较早序列的表示来预测未来子序列的表示(多个表示中的每一个都表示了与不同潜在类别相关的用户意图)。这种设计避免了单独重建未来序列中的所有行为,并简化了 seq2seq 训练过程的收敛
  • 我们的第二个核心思想是设计一个序列编码器,可以推断和解开由给定行为序列反映的潜在意图。解开的编码器输出给定行为序列的多个表示,其中每个表示关注给定序列的不同子序列。

问题定义

根据x ( u ) ^{(u)} (u),从M个候选商品中预测用户下一次最可能点击的商品
在这里插入图片描述

模型

在这里插入图片描述

Disentangled Sequence Encoding

单独的 SASRec 编码器捕捉多个意图的能力是有限的,然而SASRec 的多头版本为相同的输入序列输出多个向量表示,与单头实现相比似乎没有明显的优势。 根据经验,单头 SASRec 和多头 SASRec 都倾向于推荐与输入序列中最近一次点击相同类别的项目,即使用户之前点击过其他类别的项目。因此,我们在这里提出了一个意图解开层,将其附加在单头 SASRec 编码器之后,以便重用 SASRec 的表达能力

Intention clustering.

意图解开层首先根据意图与一组意图原型的距离对意图进行聚类。
在这里插入图片描述
(这里代码中用的是余弦距离而非点击,之前的工作 [38] 发现,在模式崩溃(即模型忽略大多数原型的退化情况)方面,余弦比点积更不脆弱。)

Intention weighting.

上面描述的注意力权重 𝑝𝑘 |𝑖 衡量位置 𝑖 的主要意图与第 𝑘 潜在类别相关的可能性。 我们现在引入另一个注意力权重 𝑝𝑖 来衡量位置 𝑖 的主要意图对于预测用户未来意图的重要性的可能性:
在这里插入图片描述

Intention aggregation.

我们现在可以根据 𝑝𝑘 |𝑖 和 𝑝𝑖 汇总在所有位置收集的意图。 编码器的 𝐾 输出计算如下:
在这里插入图片描述

Sequence-to-item training

在这里插入图片描述

Sequence-to-Sequence Self-Supervision

我们的 seq2seq loss 的目的是补充而不是替代传统的 seq2item loss。 换句话说,在使用小批量梯度下降处理每个小批量 B 时,我们最小化了 seq2item 损失和 seq2seq 损失。
对于训练集中的每条样例 { ( u , t ) : 1 ⩽ u ⩽ N , 1 ⩽ t ⩽ T u − 1 } \{(u,t): 1 \leqslant u \leqslant N, 1 \leqslant t \leqslant T_u-1\} {(u,t):1uN,1tTu1},都包括来历史序列x 1 : t u ^{u}_{1:t} 1:tu和对应的未来序列x t + 1 : T u u ^{u}_{t+1:T_u} t+1:Tuu

Sequence-to-sequence (seq2seq) loss

在这里插入图片描述

Sequence-to-item (seq2item) loss.

在这里插入图片描述

loss

在这里插入图片描述

实验:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

KDD2019 Practice on Long Sequential User Behavior Modeling for Click-Through Rate Prediction

Alibaba 在线响应速度要求及存储空间限制下的长序列用户行为建模

在这里插入图片描述

背景与动机

点击率 (CTR) 预测对于推荐系统和在线广告等工业应用至关重要,将这些复杂的深度CTR模型部署到在线服务系统中进行实时推理,需要付出巨大的努力,面对海量的流量请求。当涉及到长序列用户行为数据时,事情变得更加困难,因为系统延迟和存储成本随着用户行为序列的长度近似线性增加。

RTP系统的结构如下,
左:(上一版本)用户行为特征被提取到预测服务器并在收到流量请求时参与实时推理的计算; 右:(与流量请求解耦,实时用户行为事件在 UIC 服务器中单独执行)
在这里插入图片描述
使用长序列用户行为数据服务的挑战:

  • 以线上的DEIN模型为例,当用户行为序列长度为150时,时延和吞吐量都达到了RTP系统的性能边缘,更不用说长度为1000.
  • 存储约束:系统中有超过 6 亿用户。每个用户的行为序列的最大长度为 150。它需要大约 1 TB 的存储空间。当行为序列长度达到时到 1000,将消耗 6 TB 存储,并且数量随着用户行为序列的长度线性增加。
  • 延迟约束: 长度达到 1000 时,延迟DIEN 达到 200 毫秒,线上难以支持(长度150时14毫秒)

阿里巴巴广告系统中,在线显示的用户行为序列的平均长度和相应的CTR模型性能曲线如下:
在这里插入图片描述
由上图可看出,解决长序列用户行为建模的挑战是值得的。在本文中,我们直接面对长序列用户行为建模的挑战,并介绍了我们的动手实践与机器学习算法和在线服务系统的协同设计,用于 CTR 预测任务。

现状

现有的深度CTR模型:
(1)基于池化的架构将用户的历史行为视为独立的信号,并应用 sum/max/attention 等池化操作来总结用户兴趣表示。
(2)顺序建模架构 ,它将用户行为视为顺序信号,并应用 LSTM/GRU 操作进行用户兴趣汇总。

方法

(1)从服务系统的角度来看,我们通过设计一个名为 UIC(用户兴趣中心)的单独模块,将用户兴趣建模中最消耗资源的部分与整个模型分离。 UIC 为每个用户维护最新的兴趣状态,其更新取决于实时用户行为触发事件,而不是流量请求。因此,UIC 对于实时 CTR 预测是无延迟的。
(2)从机器学习算法的角度来看,我们提出了一种名为 MIMN(多通道用户兴趣记忆网络)的新型基于内存的架构,以从长序列行为数据中捕获用户兴趣,实现优于最先进模型的性能. MIMN 是通过 UIC 模块以增量方式实现的。

创新点

这是第一个能够处理长度高达数千的长序列用户行为数据的工业解决方案之一。目前已部署在阿里巴巴的展示广告系统中。

  • 我们介绍了一种动手实践,结合学习算法和 CTR 预测任务的服务系统的协同设计。该解决方案已部署在世界领先的广告系统中,使我们能够处理长序列用户行为建模。
  • 我们设计了一个新颖的UIC 模块,它将大量用户兴趣计算与整个CTR 预测过程分离。 UIC 对流量请求没有延迟,并允许在离线模式下工作的任意复杂模型计算 w.r.t.实时推理。(UIC 的一个关键点是它的更新机制。 用户状态的更新,仅取决于实时用户行为触发事件,而不是请求。 也就是说,UIC 对于实时 CTR 预测是无延迟的。 在我们的系统中,UIC 可以将具有 1000 个用户行为长度的 DIEN 模型的延迟从 200 毫秒减少到 500 QPS 的 19 毫秒。)
  • 我们提出了一种新颖的MIMN 模型,它改进了原有的NTM 架构,具有内存利用率正则化和内存感应单元两种设计,使其更适合用户兴趣学习。 MIMN 很容易通过 UIC 服务器实现,它逐步更新用户的兴趣表示。

MIMN模型

在这里插入图片描述

标准NTM框架

用一个memery network(Mt,由m个内存槽组成)来捕捉和存储序列数据中的信息,具有内存读和内存写两个基本操作。
在这里插入图片描述

问题: memery利用率低
原因: 由于热点项目容易出现在用户行为数据序列中,并主导内存更新,使得内存使用效率低下
解决办法:

  • 传统NLP领域中LRU 策略来平衡每个内存的利用率。
    不可取:因为LRU几乎从不将信息写入相邻时间步长的同一个槽中,然而,在我们的场景中,用户可能会与多个属于相同兴趣的行为进行交互,因此应该将这些行为写入同一个槽中
  • 我们提出的内存利用率正则化。 实验证明是可取的
内存利用率正则化

规范不同内存槽间写入权重的差异,推动内存利用率不平衡。
第 t步每个内存槽的累积利用率gt:
在这里插入图片描述
re-balanced后的写权重:
在这里插入图片描述
通过正则化损失学习的参数矩阵Wg:
在这里插入图片描述
L r e g L_reg Lreg有助于减少不同内存插槽之间更新权重的差异。 所有 m 个槽的更新率趋于均匀。 这样,所有内存插槽的利用率都得到了提高,达到了平衡。 利用率正则化可以帮助记忆张量存储来自源行为数据的更多信息。

记忆感应单元

在这里插入图片描述

NTM 中的内存旨在尽可能多地存储来自源数据的原始信息。 美中不足的是,它可能会错过捕获一些高阶信息,例如每个兴趣部分的演变过程。 为了进一步增强用户兴趣提取能力,MIMN 设计了一个记忆感应单元(MIU)。
MIU还包含一个内部存储器S( internal memery),槽数为m,与NTM相同。 这里我们将每个内存槽称为用户兴趣通道。
在这里插入图片描述

step1: 根据memery read的权重向量wr(公式一得到),选择k个用户兴趣通道(topk)
step2: 结合内存槽Mt,t时刻的行为向量et,更新内部存储器的通道i.
在这里插入图片描述

MIU 从原始行为输入和 NTM 模块中记忆的信息中捕获信息。 这是一个归纳过程。 多通道内存的GRU参数共享,不增加参数量。

在线服务的实现

  • 与 DIEN和DIN应用注意力机制来获得以候选为中心的兴趣表示不同,MIMN 学习在每个用户的外部存储器中明确地捕获和存储用户的不同兴趣。 这种基于内存的架构不需要候选(例如我们系统中的目标广告)和用户行为序列之间的交互计算,并且可以增量执行,使其可扩展用于长序列用户行为建模。
  • 整个模型拆分并在两个服务器中实现:用于使用 NTM 和 MIU 进行最繁重计算的用户兴趣建模的左侧子网络在 UIC 服务器中实现,如图 5 所示, 剩下的右子网将在 RTP 服务器中实现.
  • NTM 和 MIU 模块都享有增量计算的好处。这样就不需要存储用户行为数据。 在我们的系统中,大量的长期用户行为可以从 6T 减少到 2.7T。
  • MIMN 采用改进的内存架构设计,可实现卓越的模型性能。 然而,它并不适用于所有情况。 我们建议将此解决方案应用于以下应用:(i) 丰富的用户行为数据,(ii) 实时用户行为事件的流量规模不能显着超过实时 CTR 预测请求的流量规模。

实验和结果

数据集:两个公开数据集和一个工业数据集
在这里插入图片描述
结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

KDD2020 Time-Aware User Embeddings as a Service

Yahoo 时间感知序列自动编码器,生成无缝适用于不同任务的嵌入表示

在这里插入图片描述

背景和动机

现在的应用服务依赖于需要投入大量精力的专用特征工程,通常忽略了在线用户行为的时变特性。为了减轻任务驱动的特真工程的负担,作者提出一种新的时间感知序列自动编码器,学校用户的保时向量表示旨在生成无缝适用于不同任务的嵌入表示。

方法 TASA

  • 以无监督的方式嵌入用户,
  • 考虑用户可能执行的所有活动,而不是专注于为特定任务定制的活动子集,这一事实允许学习独立于任务的表示。
    由于存在连续活动之间不规则的时间间隔,TASA学习每个活动的额外时间分数,并在最终的用户嵌入中保留这些信息。
  • 提出了一个集成TASA的管道,以允许将嵌入作为服务来使用,文中以用户嵌入为例。在一段时间内收集的用户活动从多个数据源获取并组织成序列,轨迹称为用户。然后,在构建的用户轨迹上训练TASA。训练后,TASA输出所有用户的嵌入,并将其作为M维连续向量存储在一个集中的数据库中。类似地,TASA的学习参数存储在单独的数据库中。
  • 管道式的优点:即使是对于全新的、以前未被观察到的用户,只要TASA已经从他们的轨迹中观察到了一些活动,它就能够生成嵌入
  • TASA的时间感知自动编码器设计构成了流水线的核心组件,能够自动生成适用于任何用户级任务的低维、保时用户嵌入,同时保持使用低延迟监督模型的能力

(TASA被集成到管道中,设计用于提供具有时间意识的用户嵌入服务,该服务目前作为一种内部工具部署,公司的几个团队正在利用它作为附加用户功能的来源,主要用于离线实验。)

框架

  • TASA的输入是一系列活动 { a 1 , … , a L , a L + 1 } \{a_1,…,a_L,a_{L+1}\} {a1aLaL+1},以及它们相应的时间戳 { t 1 , … , t L , t L + 1 } \{t_1,…,t_L,t_{L+1}\} {t1tLtL+1}。(实际输入序列的长度是可变的 L L L,而 a L + 1 a_{L+1} aL+1= a E O S a_{EOS} aEOS是允许处理不同长度序列的序列结束标记。 t L + 1 t_{L+1} tL+1被设置为等于最近活动aL的时间戳)
  • TASA首先将整个序列编码成一个固定长度的向量表示h,该向量表示h反映了活动之间的顺序和时间依赖性。
    从所学习的表示中解码活动序列,尽可能类似于输入序列。通过利用这一原理,TASA加强了序列表示的学习,序列表示- 优先考虑信息活动属性,同时保留活动之间的顺序和时间依赖关系。

TASA相对于其他基于自动编码器的嵌入方法的优势:
在这里插入图片描述

TASA模型

在这里插入图片描述

Activity Embedding

在这里插入图片描述
\quad \quad \quad \quad \quad \quad \quad \quad t L + 1 t_{L+1} tL+1被设置为等于最近活动 a L a_L aL的时间戳,其他的时间戳都是正常的

输入活动序列(加令牌 a E O S a_{EOS} aEOS):
在这里插入图片描述
相应的活动嵌入序列:(随即初始化)
在这里插入图片描述

Temporal Score Learning

为了捕捉连续活动之间的不规则时间间隔,为活动aj创建了一个附加特征(tj是aj的时间戳):
在这里插入图片描述
得到停止特征(随着活动时间戳的线性增加,一个活动越接近序列中的最新时间戳,其停止特征值就越接近1):
在这里插入图片描述
除此以外,每个活动aj映射到一对潜在参数θj和μj。θj用于模拟活动对序列嵌入的影响。另一方面,μj和τj模拟了活动发生次数对序列嵌入的影响。为此,将每个aj的时间分数定义为:
在这里插入图片描述
其中,θj用于测量aj的初始影响。μj作为基于aj的“最近性”的影响变化,即aj效应随时间变化的程度取决于μj的大小。
最后,使用时间分数来衡量活动嵌入:
在这里插入图片描述

Sequential Encoding

利用长-短期记忆(LSTM)网络对活动嵌入序列进行进一步编码:(其中hj最初使用正交初始化生成,而Cj初始化为均匀和正交随机值的混合。)
在这里插入图片描述

Sequence Reconstruction

给定一个有上一阶段得到的序列嵌入 h = h L + 1 h=h_{L+1} h=hL+1,TASA的译码器组件试图从 h h h重构输入序列。
首先,在原始序列的开始处追加开始标记 a s t a r t a_{start} astart:(加令牌 a s t a r t a_{start} astart
在这里插入图片描述
相应地,取 τ 0 \tau_0 τ0=0作为 a 0 a_0 a0的停止特征,得到:
在这里插入图片描述
通过一个LSTM:
在这里插入图片描述
重构问题被视为一个多类分类问题,通过将从解码器输出的hˇj传递到一个全连接层来预测 a j + 1 a_{j+1} aj+1(来自原始序列):
在这里插入图片描述
然后,来自完全连接层的输出通过softmax激活函数来计算每个活动的概率:(在资源有限或需要更有效的模型训练的情况下,我们建议通过使用候选抽样对抽样活动的子集进行计算来近似公式12)

目标函数

在这里插入图片描述

Evaluation metrics

  • ROUGE: 衡量候选人(输出)相对于一个或多个参考(输入)的质量。虽然最初是为文本摘要而提出的,但在这项工作中,ROUGE用于测量单个活动输入序列与其相应的重构(输出)序列之间的n-gram召回
  • BLEU:基于输入和输出序列之间的n-gram精度(而不是n-gram召回)来评估输入序列重构的质量
    在这里插入图片描述

结果

在这里插入图片描述
在这里插入图片描述

SERVICE PIPELINE

TASA在服务系统中使用,该系统旨在将时间感知(用户)嵌入作为服务提供。一般来说,服务将序列集合作为输入,并定期生成序列及其组成元素的时间感知嵌入。尽管该服务显然适用于任何类型的序列数据,但在本文中,它是从嵌入用户活动序列(即用户轨迹)的角度来描述的。服务系统管道的阶段描述如下:

  • 阶段1:生成序列(用户轨迹)
    从每个活动的原始描述(例如,搜索活动的精确搜索查询)中去除所有个人识别信息(PII)后,计算每个唯一活动的频率。然后为前K个最频繁的活动(我们设置K=200000)中的每个活动分配一个索引,活动描述与其索引之间的映射被组织在词汇表V中。
  • 阶段2:模特训练。
    提出的TASA模型以(1)提取的用户轨迹,(2)组成活动的时间戳和(3)活动词汇V作为输入,并按照第3节中描述的过程学习每个用户轨迹的M维保时嵌入。得到的M维(我们设置M=100)连续向量存储在一个集中的数据库中。类似地,TASA的学习参数也存储在单独的数据库中以供进一步使用。
  • 阶段3:嵌入传入活动/用户
    在模型训练中,学习到的TASA参数可以被提取并用于嵌入传入的活动或整个用户跟踪。请注意,如果一个传入活动被证明是趋势活动之一,这意味着它是由大量用户执行的,并且通过了频率阈值,那么它将被包括在V中,并被考虑用于下一个计划的模型培训。然而,传入的活动可能不存在于词汇V中。在这种情况下,新活动不会立即添加到V中,但在下次更新V时,它会包含在V中。类似地,通过首先嵌入V中存在的来自其踪迹的活动来嵌入传入用户,同时考虑当前未知的活动以包含在下一个词汇表更新周期中。因此,词汇表会定期更新(例如,一周更新一次),而轨迹通常会更频繁地更新(例如,每天更新一次)。
    在这里插入图片描述

KDD2020 Privileged Features Distillation at Taobao Recommendations

Alibaba 是阿里的一篇将“目标蒸馏-logits方法“应用到推荐系统领域的论文。

在这里插入图片描述

背景

在这里插入图片描述

工业级推荐系统通常是一个级联学习框架,以淘宝的推荐框架为例。

  • 召回阶段:主要根据用户部分特征,从上亿级别的海量的物品库里,快速找回一小部分用户潜在感兴趣的物品(十万级别)。候选生成是从多个来源混合而成的,例如协同过滤,DNN模型,等等
  • 粗排阶段:粗排一般通过少量用户属性特征(如用户id、性别、年龄等),用户行为特征如用户的历史点击/购买行为)和物品特征(如物品id、类别、品牌等),利用简单模型,来对召回的结果进行粗略的排序。过滤出上千商品送入到精排阶段。
  • 精排阶段:会用到一些复杂的交互特征,模型结构也相对复杂。目的是在系统响应速度所能承受的范围内,尽量精准地对物品进行个性化排序。

推荐中的优势特征

粗排CTR预估阶段,由于要在毫秒内给成千上万的候选物品打分,因此模型的复杂度受到了很大的限制,工业界传统的做法是使用内积模型,把用户侧和物品侧作为双塔,在请求时,把用户侧的向量和候选物品向量进行内积运算,从而对物品池做粗筛。一些交叉特征(如用户在过去2小时内在待预估商品类目下的点击次数、用户过去2小时内在待预估商品所在店铺中的点击次数等)对粗排效果有明显的提升,由于计算复杂度和线上响应速度的要求,这些交叉特征对于粗排阶段的模型来说,通常在线上无法应用,我们就称它们为粗排CTR预估中的Privileged Features。

精排阶段,我们不仅要预估CTR,还要预估CVR,即用户点击跳转到商品页后购买该商品的概率。在电商领域的推荐,主要目标是最大化GMV,即 GMV = CTR * CVR * Price 。一旦预估了所有商品的CTR和CVR,我们就可以根据预期的GMV对它们进行排名,使得GMV最大化。
估计转换率(CVR)时,即用户单击项目时购买该项目的概率,项目详细页面上的停留时间等功能是有用的。然而,CVR预测应该在点击发生之前进行在线排名。因此,我们无法在服务期间获得此类事后特征。所以对于CVR预估来说,用户在点击后进入到商品页的一些特征(比如停留时长、是否查看评论、是否与商家沟通等)同样是Privileged Features。

动机

使用这些Privileged Features,可以提升模型的预测精度。因此本论文希望借鉴模型蒸馏的思想,让粗排阶段的CTR模型或者是精排阶段的CVR模型,都能够学习到一些Privileged Features的信息。

优势特征蒸馏(PFD)

为了更优雅地利用优势特征,本论文提出优势特征蒸馏(Privileged Features Distillation,简称PFD)。在离线环境下,我们会同时训练两个模型:一个学生模型以及一个教师模型。其中学生模型和原始模型完全相同,而教师模型额外利用了优势特征, 其准确率也因此更高。 通过将教师模型蒸馏出的知识(Knowledge,论文中特指教师模型中最后一层的输出)传递给学生模型,可以辅助其训练并进一步提升准确率。在线上服务时,我们只抽取学生模型进行部署,因为输入不依赖于优势特征,离线、在线的一致性得以保证。在PFD中,所有的优势特征都被统一到教师模型作为输入,加入更多的优势特征往往能带来模型更高的准确度。

与使用多任务学习(Multi-Task Learning,简称MTL)来预测优势特征的方式相比,在MTL中预测更多的优势特征反而可能损害原始模型,而PFD只引入额外一项蒸馏误差也更容易与原始损失函数平衡。

优势特征蒸馏与模型蒸馏的差别:

模型蒸馏:教师和学生处理相同的输入。而且老师使用的模型比学生的容量更大。例如,教师可以使用更深的网络来指导较浅的学生
优势特征蒸馏:教师和学生使用相同的模型,但输入不同。

创新点

  • 阐明了淘宝中存在的特权信息,并且提出PFD统一了所有特权特征,提供了一站式解决方案
  • 与传统的LUPI不同,PFD的教师在教学中加入了规则性特征,使学生的学习效果更好。PFD是MD的补充,通过两者的结合,即PFD+MD,我们可以得到进一步的改进。
  • 通过共享公共输入组件来同步训练教师和学生。与传统的用独立的组件异步训练相比,这种训练方式可以获得更好的性能,同时大大降低了时间开销。因此,该技术可应用于在线学习
  • 我们在淘宝推荐的两个基本预测任务上进行了实验,即粗粒度排序的CTR预测和细粒度排序的CVR预测。通过提取由于粗粒度排序时CTR的效率要求而被禁止的交互特征和如上所述的CVR的事后特征,我们实现了对其强基线的显著改进。在联机A/B测试期间,CTR任务中的点击度量提高了+5.0%。在CVR任务中,转换度量提高了+2.3%。

相关工作

模型蒸馏:

在这里插入图片描述

  • 异步训练的方式
    1 使用已知的标签 y来训练教师模型
    2 然后用最小化公式1来训练学生模型
    在某些应用中,模型需要很长时间才能收敛,因此等待老师准备好再去训练学生是不切实际的
  • 同步训练方式
    除了从教师模型的最终输出中提取公式(1)外,还可以从中间层提取
LUPI:教师模型学习特权信息

在这里插入图片描述

我们的方法:

尽管信息丰富,但本文中的特权特性仅部分描述了用户的偏好。使用这些特征的性能甚至可能不如使用常规特征的性能。此外,基于特权特征的预测有时会产生误导。例如,客户通常需要更多的时间来决定昂贵的商品,而这些商品的转化率相当低。在进行CVR估计时,LUPI的教师依赖于特权特征(如驻留时间)进行预测,但不考虑常规特征(如项目价格),这可能导致对昂贵项目的假阳性预测。为了缓解这种情况,我们还向教师模型添加了常规特征
在这里插入图片描述
我们的应用程序中,单独训练教师模型需要很长时间。因此,按式异步训练方式是不现实的。我们使用同步训练的方式。
在这里插入图片描述
虽然可以节省时间,但同步训练可能不稳定。在教师培训不到位的早期阶段,蒸馏损失Ld可能会分散学生的注意力,延缓培训。在这里,我们通过采用一个热身方案来缓解它。我们在早期阶段将等式(5)的λ设置为0,然后将其固定为预定义值,交换步骤为超参数。虽然可以节省时间,但同步训练可能不稳定。在教师培训不到位的早期阶段,蒸馏损失可能会分散学生的注意力,延缓培训。在这里,我们通过采用一个热身方案来缓解它。我们在早期阶段将等式(5)的λ设置为0,然后将其固定为预定义值,swapping step k为超参数。
在这里插入图片描述
我们一起训练老师和学生。参数数量和计算量大致相同。因此,使用PFD进行培训可能比单独对学生进行培训慢得多,这在行业中是不实际的。特别是对于实时性要求很高的在线学习,采用蒸馏法会增加很多负担。在这里,我们通过在教师和学生中共享所有共同的输入组件来缓解这种情况。由于所有特性的嵌入占用了服务器3中的大部分存储空间,通信量几乎减少了一半。 除此以外,还可以通过共享处理用户点击/购买行为的组件来减少计算,这是众所周知的代价高昂的。如下面的实验所验证的,我们可以通过共享来获得甚至更好的性能。此外,与单独训练学生相比,我们只增加了一点额外的时间,这使得PFD可用于在线学习。

模型架构

PFD从特权特性中提取知识。相比之下,MD从更复杂的教师模型中提取知识。这两种蒸馏技术是互补的。一个自然的延伸就是把它们结合起来,形成一个更准确的老师来指导学生。
在这里插入图片描述
这里的教师模型与细粒度排序时用于CTR预测的模型相同。该任务中的PFD+MD可以看作是从精排中提取知识来提高粗粒度排序。

实验

  • PFD对粗粒度排序的CTR和细粒度排序的CVR任务的性能如何
  • 与单独的PFD相比,PFD与MD的结合是否可以实现更多的改进
  • PFD对式(5)中的超参数λ敏感吗?
  • 通过共享共同的输入成分对教师和学生进行同步培训的效果如何?

本工作中使用的所有输入组件的图示如下:
在这里插入图片描述

目标函数:

在这里插入图片描述

CTR所用数据集及结果:

在这里插入图片描述

CVR所用数据集及结果:

在这里插入图片描述

超参的影响:

在这里插入图片描述

不同方式训练PFD+MD对CTR第1天数据集的影响。Ind&Async表示教师和学生使用独立的输入组件进行异步训练。Share&Sync表示教师和学生使用共享的公共输入组件进行同步训练。上标∗ 表示除用户id外,所有公共输入组件都是共享的。我们还在第四列中以小时为单位记录挂钟时间:
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值