点击率 click-through rate: CTR
预估是预测用户点击某个 item
的概率。它在在线广告系统中扮演着重要的角色。例如,广告排序策略通常取决于 CTR x bid
,其中 bid
为广告的点击出价。此外,根据常见的 cost-per-click: CPC
扣费模式,广告主仅在用户点击广告之后才扣费。因此,为了最大限度地提高收入并保持理想的用户体验,准确预估广告的 CTR
至关重要。
CTR
预估引起了学术界和工业界的广泛关注。例如:
逻辑回归 Logistic Regression: LR
模型考虑了线性的特征重要性,并将预测的 CTR
建模为: ,其中 为 sigmoid
函数, 为权重系数, 为 bias
, 为特征向量。
分解机 Factorization Machine: FM
模型进一步对 pairwise
特征交互interaction
进行建模。它将预估的 CTR
建模为:,其中 为第 个特征的潜在 embedding
向量, 为第 个特征的取值。
近年来,深度神经网络 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
关系,因为它建模了特征交互 和 CTR
的关系,但是并未建模两个特征representation
和 是否应该彼此相似。其中 是第 个特征的 latent embedding
向量, 是第 个特征的取值。
更具体而言,论文提出的 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
的实现代码。相关工作:
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
预估的性能。
在线广告中点击率预估任务是估计用户点击特定广告的概率。下表展示了一些样本实例,每一行都是 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)
所示。这使得测试阶段变得相当简单和高效。
我们将特征分为四组:用户特征(如用户 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
。
DeepMCP
的整体结构如下图所示,所有的subnet
共享相同的 embedding
矩阵。
prediction subnet
这里是一个典型的 DNN
模型,它对 feature-CTR
关系进行建模(其中显式地或隐式地对特征交互进行建模)。它旨在在目标 label
的监督下,根据所有特征预估点击率。尽管如此,DeepMCP
模型非常灵活,可以使用任何其它CTR
预估模型来代替prediction subnet
,如 Wide & Deep
、DeepFM
等。
prediction subnet
的整体结构为:
首先,单个特征 (如用户ID
)通过一个 embedding
层,然后映射到对应的embedding
向量 ,其中 为 embedding
向量维度, 为待学习的参数。
假设特征 的取值集合规模为 ,则这个特征所有 embedding
的集合构成一个 embedding
矩阵 。
注意:
bi-gram
,一个广告标题可能包含多个 bi-gram
),我们首先将每个 bi-gram
映射到一个 embedding
向量,然后再执行一个 sum pooling
从而得到广告标题的、聚合后的 embedding
向量。接着,我们将样本的所有特征的 embedding
向量拼接为一个长的向量 。然后向量 经过若干层全连接层fully connected:FC
层(带有 ReLU
非线性激活函数),从而学到高阶的非线性特征交互。
最后,最后一层 FC
层的输出 通过一个 sigmoid
函数从而得到预估的 CTR
:
其中 都是待学习的模型参数。
为缓解过拟合,我们在每个 FC
层之后都应用了 dropout
。
prediction subnet
的损失函数为训练集的交叉熵:
其中: 为训练样本的数量; 为第 个样本是否点击的真实label
; 为第 个样本预估的CTR
。
matching subnet
对 user-ad
的关系(即,广告是否匹配用户的兴趣)进行建模,并旨在学习有用的用户representation
和有用的广告 representation
。它的灵感来自于网络搜索的语义匹配模型semantic matching model
。
在推荐系统的经典矩阵分解中,rating score
近似为用户ID
潜在向量和item ID
潜在向量的内积。在我们的问题中,我们没有直接 match
用户 ID
和广告ID
,而是在更高级别上进行了 match
,并结合了关于用户的所有特征、关于广告的所有特征。
当用户点击广告时,我们假设所点击的广告至少部分和用户需求相关(考虑到用户提交的 query
,如果有的话)。因此,我们希望用户特征(和query
特征)的 representation
和广告特征的 representation
相匹配。
具体而言,matching subnet
包含两个部分:
用户部分 user part
:用户部分的输入是用户特征(如用户ID
、年龄)和 query
特征(如 query
、query category
)。
像在 prediction subnet
中一样,单个特征 首先经过 embedding
层,然后映射为对应的 embedding
向量 。然后我们将单个用户 的多种特征的 embedding
拼接为长向量 ,其中 为长向量的维度。
然后向量 经过若干层全连接层fully connected:FC
层(带有 ReLU
非线性激活函数),从而学到高阶的非线性特征交互。对于最后一个 FC
层,我们使用 tanh
非线性激活函数(而不是 ReLU
),我们后面解释这么做的原因。
用户部分的输出是一个 high-level
的用户 representation
向量 ,其中 为向量维度。
广告部分 ad part
:广告部分的输入是广告特征(如广告ID
、广告标题)。
同样,我们首先将每个广告特征映射到对应的 embedding
向量,然后将单个广告 的多种特征的 embedding
拼接为长向量 ,其中 为长向量的维度。
然后向量 经过若干层全连接层fully connected:FC
层(带有 ReLU
非线性激活函数),从而得到一个 high-level
的广告 representation
向量 。同样地,对于最后一个 FC
层,我们使用 tanh
非线性激活函数(而不是 ReLU
)。
注意:通常用户部分、广告部分的输入具有不同的特征维度,即 。因为用户特征和广告特征的类别、数量通常都不相等。但是,经过 matching subnet
之后, 和 具有相同的维度 。换句话讲,我们将两组不同的特征投影到一个公共的低维空间中。
然后我们通过下式计算 matching score
为:
我们并没有使用 ReLU
作为最后一个 FC
层的激活函数,因为 ReLU
之后的输出将包含很多零,这使得 。
注意:前面 prediction subnet
最后一个 FC
层仍然采用 ReLU
,因为其输出为 是和模型参数 进行内积。 为零的概率远小于 。
至少有两种选择来建模 matching score
:
point-wise
模型:当用户 点击广告 时,则 ;当用户 未点击广告 时,则 。pair-wise
模型:如果用户 点击了广告 但是未点击广告 ,则 ,其中 为 margin
超参数。这里我们选择 point-wise
模型,因为它可以直接将训练数据集重新用于 prediction subnet
。我们将 matching subnet
的损失函数定义为:
其中: 为样本数量;如果用户 点击广告 则 ,否则 。
matching subnet
也是采用是否点击作为label
,这和 prediction subnet
完全相同。二者不同的地方在于:
matching subnet
是 uv
粒度,而 prediction subnet
是 pv
粒度。matching subnet
通过representation
向量的内积来建模用户和广告的相关性,用户信息和广告信息只有在进行内积的时候才产生融合。而 prediction subnet
直接建模点击率,用户信息和广告信息在 embedding layer
之后就产生融合。correlation subnet
对 ad-ad
的关系(即,哪些广告位于用户点击序列的时间窗口内)进行建模,并旨在学习有用的广告 representation
。在我们的问题中,由于用户的点击广告构成了随时间推移的、具有一定相关性的序列,因此我们使用 skip-gram
模型来学习有用的广告representation
。
给定单个用户点击广告的广告序列 ,我们最大化平均对数似然:
其中: 是广告序列长度, 为上下文窗口大小。
概率 可以通过不同的方式进行定义,例如 softmax
、层次 softmax
、负采样。由于负采样的效率高,我们选择负采样技术将 定义为:
其中:
sigmoid
函数。high-level representation
,它涉及广告 的所有特征,并经过多个 FC
层。correlation subnet
的损失函数为负的对数似然:
考虑所有用户的 则得到 correlation subnet
总的损失。
离线训练过程:DeepMCP
的最终联合损失函数为:
其中 为超参数,它们平衡了不同 subnet
的重要性。
DeepMCP
通过在训练集上最小化联合损失函数来训练。由于我们的目标是最大化 CTR
预估性能,因此训练过程中我们在独立的验证集上评估模型,并记录验证 AUC
。最佳模型参数在最高的验证 AUC
处获得。
在线预测过程:DeepMCP
模型仅需要计算预估的点击率pCTR
,因此只有prediction subnet
处于活跃状态。这使得 DeepMCP
的在线预测阶段相当简单和高效。
数据集:我们使用两个大型数据集:
Avito
广告数据集:数据集包含来自俄罗斯最大的通用分类网站 avito.ru
的广告日志的随机样本。我们将 2015-04-28 ~ 2015-05-18
的广告日志用于训练、2015-05-19
的广告日志用于验证、2015-05-20
的广告日志用于测试。
在 CTR
预估中,测试通常是第二天的预测,这里测试集包含 个样本。用到的特征包括:用户特征(如用户 ID
、IP ID
、用户浏览器、用户设备)、query
特征(如query
、 query category
、query
参数)、广告特征(如广告ID
、广告标题、广告cateogry
)、其它特征(如 hour of day
、day of week
)。
Company
广告数据集:数据集包含来自阿里巴巴商业广告系统的广告曝光日志和点击日志的随机样本。我们使用 2018
年八月到九月连续30
天的日志用于训练,下一天的日志用于验证、下下一天的日志用于测试。
测试集包含 个样本。用到的特征也包括用户特征、query
特征、广告特征、其它特征。
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
。它等价于在联合损失函数中设置 。DeepMP
:DeepMCP
模型的一种变体,仅包含 matching subnet
和 prediction subnet
。它等价于在联合损失函数中设置 。实验配置:
embedding
矩阵规模太大。2
、维度分别为 512
和 256
。batch size=28
,上下文窗口大小 ,负采样广告数量为 ,dropout rate=0.5
。tensorflow
中实现,并通过 Adagrad
算法进行优化。评估指标:测试 AUC
(越大越好)、测试 logloss
(越小越好)。
实验结果如下表所示,可以看到:
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
的有效性。
超参数 的影响:下图分别给出了 超参数对于DeepMCP
测试 AUC
的影响,其中 Pred
表示 DNN
、Pred+Corr
表示DeepCP
、Pred+Match
表示 DeepMP
。可以看到:
AUC
开始提升;当 或者 继续增加时,测试 AUC
开始下降。Company
数据集上,较大的 可能导致非常差的性能,甚至比单纯的 DNN
更差。matching subnet
比 correlation subnet
带来更大的测试 AUC
提升。隐层维度的影响:下图给出了两层隐层的模型中,测试 AUC
和隐层维度的关系。为了方便阅读,我们仅展示了 DNN, Wide & Deep, DeepMCP
的结果。我们使用收缩结构,其中第二层维度为第一层维度的一半。第一层维度选择从 128
增加到 512
。
可以看到:当隐层维度增加时,测试 AUC
通常会提升;但是当维度进一步增加时,测试 AUC
可能会下降。这可能是因为训练更复杂的模型更加困难。
隐层数量的影响:我们对比了不同深度的模型的效果。为了方便阅读,我们仅展示了 DNN, Wide & Deep, DeepMCP
的结果。我们分别使用一层([256]
)、两层([512, 256]
)、三层([1024, 512, 256]
)、四层([2048, 1024, 512, 256]
)。
可以看到:
1
层增加到 2
层时,模型性能通常会提高。这是因为更多的隐层具有更好的表达能力。不断发展的互联网将我们带入具有个性化在线服务的数字世界。从在线系统收集的大量用户行为数据为我们提供了更好地了解用户偏好的绝佳机会。从技术上讲,从丰富的行为数据中捕获用户兴趣至关重要,因为它有助于典型的现实世界application
(如推荐系统、在线广告)的显著改进。这里我们限制在点击率Click-Through Rate: CTR
预估建模的任务上。CTR
预估在在线服务中起着至关重要的作用。这里讨论的解决方案也适用于许多相关任务,例如转化率 conversion rate: CVR
预估和用户偏好建模。
在深度学习的推动下,人们已经提出了体系结构精心设计的、用于建模用户兴趣的深度 CTR
模型,从而实现了 state-of-the-art
效果。这些模型大致可以分为两类:
pooling-based
的架构:它将用户的历史行为视为独立的信号,并应用sum/max/attention
等池化操作来summarize
用户的兴趣representation
。
sequential-modeling
架构:它将用户的历史行为视为序列信号,并应用 LSTM/GRU
操作来summarize
用户的兴趣representation
。但是在工业应用中,需要大量的精力将这些复杂的模型部署到在线 serving
系统中以进行实时推断,其中每天都有数以亿计的用户访问该系统。当遇到非常长的用户行为序列数据时,问题变得更加困难:因为所有上述模型都需要在 online serving
系统中存储完整的用户行为序列(也称作特征),并在极短的延迟时间内获取它们以计算兴趣representation
。这里,"长" 表示用户行为序列的长度高达1000
甚至更多。实际上,系统延迟和存储成本随着用户行为序列的长度大致成线性关系。
DIEN
做了大量的工程工作来部署序列模型,但是它也就最大能处理长度为 50
的用户行为序列。下图给出了在阿里巴巴线展示广告系统online display advertising system
中,用户行为序列的平均长度以及对应的 CTR
模型的性能。显然,解决长序列用户行为建模的挑战是值得的。
在论文 《Practice on Long Sequential User Behavior Modeling for Click-Through Rate Prediction》
中,论文共同设计co-design
了机器学习算法和在线serving
系统来用于 CTR
预估任务,并介绍了工程实践。论文将用户行为建模和完整的 CTR
预估系统解耦,并相应地设计了特定的解决方案:
serving
系统的角度:论文设计一个叫做 UIC: User Interest Center
用户兴趣中心的独立模块,将用户兴趣建模中最耗资源的部分和整个模型解耦。UIC
聚焦于在线serving
的用户行为建模问题,它维护每个用户的最新兴趣representation
。
UIC
的关键是它的更新机制。用户粒度的状态更新仅取决于实时的用户行为触发事件realtime user behavior trigger event
,而不依赖于流量请求。也就是说,UIC
对于实时 CTR
预估是无延迟的 latency free
。
机器学习算法的角度:解耦UIC
模块无法解决存储问题,因为对于数以亿计的用户、且每个用户可能长达上千的用户行为序列的存储和推断仍然很困难。这里作者借鉴了 NTM
的记忆网络 memory network
的思想,并提出了一种叫做 MIMN: (Multi-channel user Interest Memory Network
多通道用户兴趣记忆网络的新颖架构。MIMN
以增量的方式工作,可以很容易地使用 UIC
模块实现,这有助于解决存储挑战。
此外,MIMN
通过记忆利用正则化 memory utilization regularization
和记忆归纳单元 memory induction unit
这两种设计改善了传统的 NTM
,使其在有限的存储空间下更有效地建模了用户行为序列,并大大提升了模型性能。
从理论上讲,UIC
和 MIMN
的共同设计方案co-design solution
使得我们能够处理无限长度的用户行为序列数据的用户兴趣建模。实验表明:论文提出的方法在模型性能和系统效率上均具有优势。据作者所知,这是能够处理长达数千的用户行为序列数据的、最早的工业解决方案之一。目前该方案已经部署在阿里巴巴的 display advertising system
中。
本文主要贡献:
hands-on practice
:结合学习算法和 serving
系统的协同设计 co-design
来完成 CTR
预估任务。该解决方案已经部署在世界领先的广告系统中,使我们能够处理长的用户行为序列建模。 论文设计了一个新颖的 UIC
模块,它将沉重 heavy
的用户兴趣计算与整个 CTR
预估过程分离。UIC
对流量请求没有延迟,并允许任意复杂的模型计算,其中模型计算以离线模式工作。
MIMN
模型,它改进了原有的 NTM
架构,具有记忆利用正则化memory utilization regularization
和记忆归纳单元 memory induction unit
两种设计,使其更适合用于兴趣的学习。MIMN
很容易用 UIC server
实现,其中 UIC server
增量地更新用户的兴趣representation
。相关工作:
Deep CTR Model
:随着深度学习的快速发展,我们在计算机视觉、自然语言处理等诸多领域取得了进展。受这些成功的启发,人们提出了许多基于深度学习的 CTR
预估方法。与传统方法中的特征工程不同,这些方法利用神经网络来捕获特征交互。虽然这个思想看起来很简单,但是这些工作在 CTR
预估任务的发展上向前迈出了一大步。之后,工业社区更多地关注模型架构设计,而不是通过无穷无尽的特征工程来提高性能。
除了学习特征交互之外,人们还提出了越来越多的方法来从丰富的历史行为数据中获取用户的洞察 insight
。
DIN
指出用户的兴趣是多样化的,并且随着目标 item
的不同而不同。DIN
中引入了注意力机制来捕获用户的兴趣。DIEN
提出了一个辅助损失来从具体行为中捕获潜在的兴趣,并改进了 GRU
从而建模兴趣演变。Long-term User Interest
:
《Learning implicit user interest hierarchy for context in personalization》
认为长期兴趣意味着通用兴趣general interest
,这是用户大脑根深蒂固的、对个性化很重要的因素。《Framework for selecting and delivering advertisements over a network based on combined short-term and long-term user behavioral interests》
提出对用户对类目的长期兴趣建模。《Incremental update of long-term and short-term user profile scores in a behavioral targeting system》
增量地建模长期和短期用户画像 score
,从而表达用户的兴趣。所有这些方法都通过特征工程来建模长期兴趣,而不是通过自适应端到端的学习。TDSSM
提出联合建模长期用户兴趣和短期用户兴趣来提高推荐质量。不幸的是,这些基于深度学习的方法,如 TDSSM、DIN、DIEN
很难部署在面临极长用户行为序列的实时预估 server
中。存储压力、计算延迟将随着用户行为序列的长度线性增长。在工业 application
中,行为序列的长度通常很小(例如 50
),然而淘宝的活跃用户可能会在两周内留下长度超过 1000
的行为(如点击、转化等)。
Memory Network
:记忆网络已经被提出用于使用外部记忆组件external memory component
提取知识。这个思想在 NLP
中得到了广泛的应用,如问答系统question answering system
。一些工作利用记忆网络进行用户兴趣建模。然而,这些方法忽略了长期兴趣建模和实际部署问题。
在现实世界的推荐系统或者广告系统中,点击率预估模块是至关重要的组件。通常点击率预估模块接收一组候选对象(如item
或者广告),并通过执行实时的模型推断来返回相应的预估点击率。这一过程需要在严格的延迟时间内完成,实践中典型的延迟时间为 10ms
。
下图简要介绍了在线展示广告系统online display advertising system
中用于 CTR
任务的实时预估(RealTime Prediction: RTP
) 系统。为了便于读者理解,我们假设对 RTP
的请求输入仅包含用户和广告信息,忽略了上下文或其它信息。
在工业应用中,如电商行业的推荐系统,用户行为特征在特征集合中的贡献最大。例如,在我们的推荐系统中,接近 90%
的特征是用户行为特征,剩余 10%
的特征是用户人口统计特征 user demography featur
和广告特征。这些用户行为数据包含丰富的信息,对于用户兴趣建模很有用。
下图显示了我们系统中不同天数收集的用户行为序列的平均长度,以及使用不同长度的用户行为特征训练的basic model
(Embedding & MLP
)的离线性能。无需任何其它努力,当使用长度为 1000
的用户行为序列时,basic model
要比使用长度为 100
的用户行为序列,在 AUC
上提升 0.6%
。值得一提的是,仅 0.3%
的 AUC
提升对我们的业务而言就足够了。
这种AUC
的提升表明:利用较长的用户行为序列数据具有很大的价值。
然而,利用长的用户行为序列数据带来了巨大的挑战。
实际上,数以亿计用户的行为特征非常庞大。为了在推荐系统中保持低延迟和高吞吐量,通常将行为特征存储在额外的分布式内存存储系统中distributed in-memory storage system
,例如我们系统中的 TAIR
(阿里巴巴实现的一个分布式 key-value
存储系统)。这些特征将被提取到预测服务器 prediction server
,并在流量请求到来时参与实时推断的计算。
根据我们的实践经验,在我们的系统中实现 DIEN
会花费很多工程工作。为了使得延迟和吞吐量都满足 RTP
系统的性能需求,用户行为序列的长度最高为 150
,无法达到长度为 1000
的情况。
直接包含更多的用户行为数据非常困难,因为面临几个挑战。其中两个最关键的挑战包括:
存储约束:我们系统中有超过 6
亿用户,每个用户的行为序列的最大长度为 150
。这将花费大约 1TB
的存储空间,该存储空间不仅存储 product_id
,也会存储其它相关的特征id
(如shop_id
、brand_id
等)。
当用户行为序列的长度最大为 1000
时,将会消耗 6TB
的存储空间,并且该数量还会随着用户行为序列的长度而线性增加。如前所述,我们的系统中使用高性能存储来保持低延迟和高吞吐量,而维持如此大的存储太昂贵了。庞大的存储量也导致用户行为特征的相应计算和更新的成本很高。
因此,较长的用户行为序列意味着无法接受的存储消耗。
延迟约束:众所周知,使用序列的深度网络sequential deep network
进行实时推断非常困难,尤其是在我们的请求量很大的情况下。DIEN
部署了多种技术,可以将我们系统中 DIEN serving
的延迟降低到 14ms
,而每个 worker
的 Query Per Second: QPS
的容量 capacity
为 500
。
然而,当用户行为序列的长度最大为 1000
时,DIEN
的延迟在 500 QPS
时会高达 200ms
。我们的展示广告系统很难容忍 500 QPS
下的 30ms
延迟限制。因此,在当前的系统架构下,无法获得长的用户行为序列的好处。
为解决上述针对长的用户行为序列建模的挑战,我们提出了共同设计co-design
机器学习算法和在线serving
系统的解决方案。由于用户行为建模是 CTR
预估系统最具挑战性的部分,因此我们设计了一个 User Interest Center: UIC
模块来处理它。
下图的 B
部分说明了带有 UIC server
的、新设计的 RTP
系统。系统 A
和 B
之间的差异是用户兴趣 representation
的计算。在 B
中,UIC server
为每个用户维护最新的兴趣representation
。UIC
的关键是其更新机制:用户状态的更新仅取决于实时用户行为触发事件,而不是取决于请求。 也就是说,UIC
对于实时 CTR
预测是无延迟 latency free
的。在我们的系统中,UIC
可以在 500QPS
下将长度 1000
的用户行为序列的 DIEN
模型的延迟从 200ms
降低到 19ms
。
下图为CTR
任务的 RTP
系统示意图。通常 RTP
由三个关键组件构成:特征管理模块feature management module
、模型管理模块model management module
、预估服务器prediction server
。系统 A
和 B
的主要区别在于用户兴趣representation
的计算。
A
中,用户兴趣representation
针对每个请求在 prediction server
内执行。B
中,用户兴趣 representation
针对实时的用户行为事件在 UIC server
中独立执行。也就是说,用户兴趣 representation
的计算和流量请求解耦并且是 latency free
的。这里我们详细介绍用于长的用户行为序列建模的机器学习方法。
从长序列数据中学习是困难的。众所周知,简单的 RNN
(RNN,GRU,LSTM
)难以建模长的序列。
注意力机制通过将序列数据中的必要信息necessary information
压缩到固定长度的张量中来提升模型的表达能力。例如,在 DIN
中,注意力机制通过 soft-search
隐状态序列(或者 source
行为序列)中与目标 item
相关的部分来工作。
实际上,RNN
中的隐状态hidden state
并非旨在存储 source
序列历史的全部信息,而是更多地关注预测目标 predicting target
。因此,最后一个隐状态可能会遗忘长期的信息 long-term information
。此外,存储所有隐状态是多余的。
最近,人们提出了神经图灵机 Neural Turing Machine: NTM
从 source
序列中捕获信息,并将其存储在固定大小的外部记忆中external memory
。在很多使用长序列数据进行建模的任务中,NTM
相比 RNN
模型取得了显著提升。
借鉴 NTM
的想法,本文中我们提出了一个基于记忆网络memory network-based
的模型,该模型为处理长的用户行为序列建模提供了新的解决方案。我们将该模型命名为 Multi-channel User Interest Memory Network: MIMN
,如下图所示。
MIMN
由两个主要部分组成:左子网络聚焦于用户行为序列的用户兴趣建模;右子网络遵循传统的 Embedding &MLP
范式,该范式采用左子网络的输出以及其它特征作为输入。
NIMN
的贡献在于左子网络,它是由 NTM
模型驱动的,并且包含两个重要的记忆网络架构:
基本的 NTM
记忆单元,它具有标准的记忆读取 memory read
和记忆写入操作 memory write
。
GRU
的记忆归纳单元memory induction unit
,它用于基于先前学习的 NTM
记忆来捕获高阶信息。UIC
存储 MIMN
的外部记忆张量 external memory tensor
,并利用用户的每个新行为来更新该张量。这样,UIC
从用户的行为序列中逐步捕获用户的兴趣。
尽管 UIC
存储固定长度的记忆张量而不是原始行为序列,但是考虑到存储压力时,必须限制存储张量的大小。本文中,我们提出了记忆利用正则化memory utilization regularization
,以通过提高记忆利用utilization
来提升 UIC
中的记忆张量的表达能力。
另一方面,随着用户兴趣的变化以及随着时间的演变,我们提出使用记忆归纳单元 memory induction unit
来帮助捕获高阶信息。
NTM
:标准的 NTM
通过记忆网络从序列数据中捕获并存储信息。在 time step
,记忆memory
的参数记作 ,其中包含 个记忆槽 memory slot
,其中 。
NTM
的两个基本操作是记忆读取 memory read
和记忆写入memory write
,它们通过一个控制器controller
来和记忆交互。
记忆读取memory read
:给定第 个行为的 embedding
向量 作为输入,控制器会生成一个 read key
来寻址记忆 address memory
。它首先遍历所有的记忆槽,生成一个权重向量 :
其中:
然后计算加权的memory summarization
作为输出 :
memory write
:类似于memory read
操作,我们生成用于 memory write
寻址的权重向量 。控制器还生成了额外的两个key
:add vector
、erase vector
,从而控制 memory
的更新:
其中:
为 erase matrix
, 为向量的外积。
相当于每个
slot
提供一个加权的erase vector
,第 个slot
权重为 。
为 add matrix
。
相当于每个
slot
提供一个加权的add vector
,第 个slot
权重为 。
为逐元素乘积。(注:原文说的是 dot product
)。
Memory Utilization Regularization
:实际上,basic NTM
会遭受 memory
利用utilization
不平衡unbalanced
的问题,尤其是在用户兴趣建模的场景下。即,热门的 item
倾向于在用户行为序列中频繁出现,并且主导着 memory
的更新,从而使得 memory
的使用变得低效。
NLP
领域先前的一些工作已经提出使用 LRU
策略来平衡每个 memory
的利用utilization
。由于 LRU
在处理过程的每个短序列中都非常注意平衡 memory
的利用,因此 LRU
几乎从来不会在相邻的时间步对相同的slot
写入信息。
但是,在我们的场景中,用户可能会与隶属于相同兴趣的几种行为进行交互,这会写入同一个 slot
。LRU
将会使得内容寻址混乱 disorganize
,并且不适合我们的任务。
本文中,我们提出了一种称作memory
利用正则化memory utilization regularization
的新策略,该策略被证明对用户兴趣建模是有效的。
memory utilization regularization
背后的思想是:将不同 memory slot
之间的 write weight
方差进行正则化,从而使得 memory
利用达到平衡。
令 为截止到 时刻的累积的、各 slot
的更新后的权重,其中 为时刻 的、re-balanced
的 write weight
:
其中:
为原始的 write weight
,而 为新的 write weight
。
为slot
之间的权重转移矩阵,它取决于:
,它代表了截止到 步每个 memory slot
的累积利用accumulated utilization
。
参数矩阵 ,它通过正则化损失来学习:
其中: 为 slot
数量。注意:上式中没有下标 。该正则化的物理意义为:不同 slot
的累计 write weight
的方差最小化。
有助于降低不同 memory slot
上 write weight
的方差。
通过使用 来代替 ,则所有的 个槽的更新频率将趋于均匀。通过这种方式,所有 memory slot
的利用都被提升从而得到平衡。因此,utilization regularization
可以帮助 memory tensor
存储来自于 source
行为数据的更多信息。
Memory Induction Unit
:NTM
中的 memory
旨在尽可能多地存储源数据中的原始信息。美中不足的是,它可能会错过捕获某些高级信息的机会,例如各部分兴趣的动态演变过程。为了进一步提升用户兴趣抽取的能力,MIMN
设计了一个 Memory Induction Unit: MIU
。
MIU
还包含了一个内部的 memory
,它具有和 NTM
相同的槽数 。这里我们将每个 memory slot
视为一个用户兴趣通道user interest channel
。在时刻 ,MIU
:
选择 个通道,其中通道索引为:
其中 为前面提到的 NTM
的 memory read
中的权重向量。
选择
top k
是为了挑选重要的通道,从而过滤掉噪音信号。
对于第 个选中的通道,更新 :
其中 为NTM
的第 个 memory slot
, 为行为 embedding
向量。
上式表明:MIU
既从原始行为输入中捕获信息,又从 NTM
模块存储的信息中捕获信息。这是一个归纳过程 inductive process
,如下图所示。
多通道 memory
的 GRU
参数是共享的,因此不会增加参数量。
和目标广告
embedding
进行attention-pooling
从而得到固定长度的embedding
向量,并用于后续的向量拼接和MLP
。
Online Serving
:与 DIEN,DIN
应用注意力机制从而获得 candidate-centric
兴趣的 representation
不同,MIMN
学会了显式地捕获和存储用户的多样化兴趣,并将其存储在每个用户的 external memory
中。这种 memory-based
架构无需在候选对象(如,我们系统中的目标广告)和用户行为序列之间进行交互式计算,并且可以增量执行,这使得它可扩展地用于长的用户行为序列建模。
用于在线 serving
的 MIMN
的实现非常简单。我们将整个模型拆分并实现到两个 server
中:
左侧的子网是在 UIC server
中实现的,如下图所示。它使用 NTM
和 MIU
进行计算量最大的用户兴趣建模。
右侧的子网可以在 RTP server
中实现。
NTM
和 MIU
模块均享受增量计算的优势:最新的 memory state
代表用户的兴趣,并更新到 TAIR
以进行实时 CTR
预估。当收到最新的用户行为事件时,UIC
将再次计算用户兴趣 representation
,并更新到 TAIR
。这样,不需要存储用户行为数据。
在我们的系统中,长用户行为序列的存储量可以从 6T
减少到 2.7T
。
UIC server
和 MIMN
的 co-design
使得我们能够处理长的用户行为序列数据,序列长度可以扩展到数千。
UIC
用于用户兴趣representation
的更新和整个模型的计算无关,从而使它对于实时CTR
预估是无延迟latency free
的。MIMN
提出以增量的方式对用户兴趣进行建模,而无需像传统解决方案一样存储整个用户行为序列。此外,MIMN
使用改进的 memory architecture
,可以实现出色的模型性能。但是,它并不适合所有情况。我们建议将该解决方案应用于具有以下条件的应用程序:丰富的用户行为数据,以及实时用户行为事件的流量规模不能明显超过实时 CTR
预测请求的流量规模。
实验分为两个部分:
数据集:
Amazon Dataset
:由Amazon
提供的商品评论、商品元信息组成。我们使用Amazon
数据集的 Books
子集。
对于该数据集,我们将评论视为一种交互行为,并根据时间对一个用户的所有评论进行排序。假设用户 有 个行为,我们的目的是使用之前的 个行为来预测用户 是否会对第 个评论中的商品写下评论。
为了聚焦长的用户行为序列预测,我们过滤了行为序列长度小于 20
的样本,并截断了行为序列长度为 100
(即超过100
截断为 100
)。
Taobao Dataset
:收集自淘宝推荐系统的用户行为。数据集包含几种类型的用户行为,包括点击、购买等。它包含大约一百万用户的用户行为序列。我们采用每个用户的点击行为,并根据时间对其进行排序,从而尝试构建行为序列。
假设用户 有 个行为,我们使用之前的 个商品作为特征来预测用户是否会点击第 个商品。行为序列长度被截断为 200
。
Industrial Dataset
:收集自阿里巴巴在线展示广告系统。样本来自曝光日志,其中标签为这个曝光是 ”点击“ 或者”未点击“。训练集由过去49
天的样本组成,测试集由下一天的样本组成。这是工业建模的经典配置。
在这个数据集中,每天每个样本的用户行为特征包含之前60
天的历史行为序列,行为序列长度被截断为 1000
。
下表给出了这些数据集的统计信息。
实验配置:
Adam
优化器。我们采用指数衰减,学习率从 0.001
开始、衰减速率为 0.9
。FCN: fully connected network
的层数设置为:200 x 80 x 2
。embedding
维度设为 16
,和 memory slot
的维度相同。MIU
中 GRU
的隐层维度设为 32
。NTM
和 MIU
中的 memory slot
数量是一个在消融研究部分仔细检查过的参数。AUC
视为衡量模型性能的指标。baseline
方法:我们将 MIMN
和 state-of-the-art
的 CTR
预估模型进行比较。
Embedding & MLP
:是CTR
预估的 basic
深度学习模型。它需要 sum
池化操作才能整合行为 embedding
序列。
DIN
:是用户行为建模的早期工作,提出针对目标 item
条件下对用户行为进行软搜索soft-search
。
GRU4Rec
:基于 RNN
的方法,并且是使用循环单元recurrent cell
来建模用户行为序列的首次研究。
ARNN
:是 GRU4Rec
的一种变体,它使用注意力机制对所有隐状态进行加权和,从而得到更好的用户行为序列 representation
。
RUM
:使用external memory
来存储用户的额行为特征。它还利用 soft-writing
和 attention reading
机制来和memory
进行交互。我们使用 feature-level RUM
来存储序列信息。
DIEN
:将 GRU
和 candidate-centric attention
技巧融合,从而捕获用户兴趣的演变趋势,并实现了 state-of-the-art
性能。
为了进行公平地比较,我们省略了辅助损失的技巧,以便更好地在 DIEN
中进行 embedding
学习。否则应该针对上述所有模型都使用辅助损失技巧。
下表给出了所有模型的实验结果,每个实验重复 3
次并报告均值和标准差。可以看到:
所有其它模型都击败了 Embedding & MLP
,这验证了针对用户行为建模的网络体系架构设计的有效性。
MIMN
以很大的 AUC
优势击败了所有模型。我们认为,这是由于memory-based
架构的巨大容量capacity
适用于建模用户行为。
如前所述,长的用户行为序列数据背后的用户兴趣是多样的,且随着时间而动态演化。MIMN
使用多通道 memory
在两个方面学会了捕获用户兴趣:
basic NTM
中的 memory
使用平衡的利用 balanced utilization
来记忆兴趣。MIU
中的 memory
通过归纳兴趣的序列关系进一步捕获高阶信息,其中兴趣是基于 NTM
的 memory
。memory
的 slot
数量:我们在具有不同数量的memory slot
的 MIMN
上进行了实验。为简化起见,我们使用最基本的 NTM
体系结构来评估 MIMN
,省略了 memory utilization regularization
和 memory induction unit
。下表给出了结果。
可以看到,slot
数量会影响模型性能:
Amazon
数据集,最佳性能是 slot
数量为 4
时取得的。Taobao
数据集,最佳性能是 slot
数量为 8
时取得的。我们的分析结果表明,这与数据集中用户行为序列的长度有关。memory
中的每个slot
都是随机初始化的。
对于行为序列较长的数据集,例如 Taobao
数据集,memory
有更多的机会学习和达到稳定stable
的 representation
。
对于行为序列较短的数据集,例如 Amazon
数据集,具有较大memory capacity
的模型遭受学习不足的影响。尤其是当 memory
的所有 slot
的利用不平衡时,部分 memory
向量可能无法充分利用和更新,这意味着这些 memory
向量仍然保持接近于初始化状态。
这会损害模型的性能。因此我们提出了 Memory Utilization Regularization
来缓解该问题。
Memory Utilization Regularization
:由于每个用户的兴趣强度不一致,并且memory
进行了随机初始化,因此在basic NTM
模型中,存储的利用可能不平衡。这个问题将损害 memory
的学习,使其不足以利用有限的memory
存储。
我们使用 memory utilization regularization
技巧来帮助解决该问题。下图显式了memory utilization
,它验证了所提出的正则化器的有效性。
这种平衡的效果还带来了模型性能的改善,如下表所示。
Memory Induction Unit
:通过归纳从 basic NTM
的 memory
,带 memory induction unit
的 MIMN
能够捕获高阶信息并带来更多提升,如上表所示。它增强了用户兴趣抽取的能力,并有助于从长的用户行为序列数据中建模用户兴趣。
工业数据集结果:
我们进一步对阿里巴巴在线展示广告系统收集的数据集进行实验。我们将 MIMN
和 DIEN
模型进行了比较,下表给出了结果。MIMN
以 0.01
的 AUC
提升超越了 DIEN
,这对于我们的业务而言意义重大。
除了离线模型的性能,在系统方面 MIMN
和 DIEN
模型之间还存在很大差异。下图给出了当 MIMN
和 DIEN
作为 serving
模型时实际 CTR
预估系统的性能。
MIMN
和 UIC server
的 co-design
在很大程度上击败了 DIEN
,前者具有随着不同行为序列长度保持恒定的延迟和吞吐量的特性。因此,MIMN
可以在我们的系统中利用长度可达数千个的、长的用户行为序列数据,并享受模型性能的提升。相反,DIEN serving
的系统会同时遭受延迟和系统吞吐量的困扰。
由于系统的压力,作为我们最新产品模型的 DIEN
中使用的用户行为序列长度仅为 50
。这再次验证了我们提出的解决方案的优越性。
我们已经在阿里巴巴的展示广告系统中部署了提出的解决方案。我们在 2019-03-30 ~ 2019-05-10
进行了严格的在线 A/B
测试实验,从而验证提出的 MIMN
模型。
和 DIEN
(我们的最新产品模型)相比,MIMN
的 CTR
和 RPM
(Revenue Per Mille
每千次收入)均提高了 7.5%
。我们将此归因于提出的 co-design
解决方案从长的用户行为序列中挖掘的额外信息。
这里我们讨论在我们的在线系统中,部署 UIC
和 MIMN
的实践经验。
UIC Server
和 RTP Server
的同步synchronization
:如前所述,MIMN
是通过 UIC server
和 RTP server
一起来实现的。因此,UIC server
和 RTP server
之间存在不同步out-sync
的问题。
在周期性模型部署的实际系统中,两个 server
的异步参数更新可能导致不正确的模型推断,这具有很大的风险。下表给出了模拟不同步场景实验的结果。注意,在该实验中,out-sync
时间的间隔在一天之内,这是工业系统中的常见设置。实际上,在我们的真实系统中,模型部署被设计为每小时执行一次,这进一步降低了风险。
可以看到 MIMN
针对 out-sync
具有很好的鲁棒性。我们认为这是由于 MIMN
学到的用户兴趣的稳定表示stable representation
,从而使得 MIMN
具有良好的泛化性能。
超大规模big-scale
数据的影响:如今很多电商网站都采用大促来吸引用户进行在线消费,例如阿里巴巴的”双十一“活动。在这种极端情况下,样本的分布以及用户行为和日常情况大相径庭。我们比较了系统中 11.11
大促日收集的训练数据、以及不包含 11.11
大促日的训练数据,这两种情况下 MIMN
的性能。
结果如下表所示。我们发现:最好移除 big-scale
数据。
Warm Up Strategy
:尽管 UIC
旨在进行增量更新,但是从一开始就需要相当长时间才能进入稳定积累stable accumulation
。 实际上我们采用预热策略warm up strategy
来使用预先计算的用户兴趣表示来初始化 UIC
。即,我们为每个用户收集最近 120
天的历史行为(用户行为序列的平均长度为 1000
),并以离线模式使用训练好的 MIMN
来推断,然后将累积的 memory
推送到 UIC
中以便进行进一步的增量更新。
该策略可以尽快地部署MIMN
,并取得合理的模型性能。
Rollback Strategy
:如果出现意外问题,如大规模在线作弊对训练样本的污染,UIC server
的增量更新机制可能会遭受重大损失。 一个麻烦的挑战是寻找异常case
发生的时间点。
为了抵御这种风险,我们设计了一种回滚策略 rollback strategy
,该策略将每天00:00
学到的用户兴趣representation
副本存储起来,并保存最近 7
天的副本。
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
的模型有着显著提升。相关工作:
特征交互:最近,基于深度学习的 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
的相关性。
这里我们详细介绍 Deep Match to Rank:DMR
模型的设计。
CTR
模型的基本结构:特征表示feature representation
、多层感知机multiple layer perceptron: MLP
。user-to-item
相关性的、带有两个子网的 DMR
的总体结构。我们的推荐系统中包含四类特征:
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
矩阵可以表示为:,其中: 为item
集合的大小, 为 embedding
向量维度, 为第 个 item
的 embedding
向量。
无需在 one-hot
向量和 embedding
矩阵之间进行复杂的矩阵乘法,embedding layer
通过查表 look up table
就可以获取 embedding
向量。
我们将离散特征 embedding
和 normalized
的连续特征拼接起来,其中:用户画像User Profile
的拼接特征为 、用户行为User Behavior
的拼接特征为 、Target Item
的拼接特征为 、上下文Context
的拼接特征为 。
注意,用户行为序列包含很多个item
,因此用User Behavior
的特征是由这些item
的特征向量列表拼接而成 ,其中:
||
表示向量拼接。User Behavior
特征和 Target Item
特征位于相同的特征空间,并共享相同的 embedding
矩阵以降低内存需求。
注意: 是用户第 个行为的特征向量,它其实是第 个产生行为的item
的 representation
。它和 不同: 仅仅是 item ID
的 embedding
向量,而 可能包括 item ID
和 cate ID
等embedding
向量的拼接。
所有特征向量拼接起来构成样本的完整representation
之后,将representation
灌入 MLP
。MLP
隐层的激活函数为 PRelu
,最终输出层采用 sigmoid
激活函数从而用于二分类任务。
MLP
输入的长度需要固定,因此需要将User Behavior
特征向量 进行池化从而转换为固定长度的特征向量。
交叉熵损失函数通常和 sigmoid
函数一起使用,其对数函数可以抵消 sigmoid
函数中指数的副作用。给定样本 ,其中 为标签, 为样本特征,则损失函数为:
其中 为训练集, 为总的样本数量, 为 MLP
的预测输出的点击概率。
基于深度学习 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
组成。
遵循基于矩阵分解的 matching
方法中的representation
形式,User-to-Item Network
通过user representation
和 item representation
的内积来建模用户和目标 item
之间的相关性,这可以视作用户和 item
之间的一种特征交互。
为获得user representation
,我们求助于 User Behavior
特征。用户不会在推荐场景中明确展现其兴趣,而用户行为则隐式地反映了用户兴趣。
表达用户兴趣的一种朴素方法是:对用户行为特征使用均值池化。这种方法认为每种行为对于最终用户兴趣做出同等贡献。
但是,用户的兴趣可能会随着时间而变化。在这种情况下,最近的行为可能会更好地反映用户的时间 temporal
兴趣。根据发生的时刻为每个行为分配权重可以缓解该问题,但是也很难找到最佳权重。
在 User-to-Item Network
中,我们使用位置编码作为 query
的注意力机制来自适应地学习每个行为的权重,其中用户行为的位置position
是行为序列中按发生时间排序的序列编号。数学描述为:
其中:
embedding
。通过加权的 sum
池化,我们将 User Behavior
特征向量 映射到固定长度的特征向量,然后由全连接层进行转换以匹配 item representation
的维度 。
最终用户的 representation
的公式为:
其中:
这里的
attention
计算的是基于positional embedding
计算不同位置的、归一化的重要性。这里没有考虑target item
的重要性,因为计算user representation
时不会融合item representation
信息。
这里的attention
网络有三个细节,为简化起见我们忽略了它们:
representation
。attention
网络中,例如行为类型(如点击、购买、收藏)、停留时长等。在这些特征中,位置在我们的应用中影响力最大。尽管 RNN
擅长处理序列数据,尤其是在 NLP
任务中,但是它不适合建模用户行为序列。和严格遵循某些规则的文本不同,用户行为序列是不确定的 uncertain
,并且可能会受到呈现给用户的内容的影响。如果没有特殊设计的结构,那么 RNN
很难提高预测效果。
此外,串行计算的 RNN
给在线 serving
系统带来了挑战。
目标 item
的 representation
直接从 embedding
矩阵 中查找look up
。其中 是针对target item
的一个独立的 embedding
矩阵,它不是和 embedding
矩阵 共享。
为区分这两个 embedding
矩阵,我们称 为Target Item
的 input representation
、称 为Target Item
的 output representation
。尽管这种方式增加了存储空间,但是与 和 相同的方式相比,模型仅仅是将 embedding
大小增加了一倍,而模型具有更强的表达能力。我们将在实验部分验证该结论。
得到用户representation
和目标 item
的 representation
之后,我们使用向量内积来表示用户和 item
的相关性:
我们预期更大的 代表更强的相关性,从而对点击预测产生积极的影响。
但是,从反向传播的角度来看,仅通过点击标签的监督来确保这一点并不容易。此外,embedding
矩阵 中参数的学习完全依赖于相关单元 relevance unit
。有鉴于此,我们提出了一个辅助match
网络,该网络从用户行为中引入label
,从而监督 User-to-Item Network
。
辅助 match
网络的任务是基于之前的 个行为来预测第 个行为,这是一个极端extreme
的多分类任务。
遵从前文中用户 representation
的形式,我们可以从用户的前 个行为中获取用户 representation
,记作 。则用户具有前面 个行为的前提下,对 item
产生第 个行为的概率为:
其中 为第 个 item
的 output representation
。因此,针对target item
的 output representation
可以视为 softmax layer
的参数。
通过使用交叉熵损失函数,则我们得到辅助 match
网络的损失为:
其中:
match
网络的样本数量, 为总的item
数量。match
网络的样本 的target item
是否为第 个 item
。 当且仅当第 个用户的行为序列中,最后一个 item
为 item
时成立。match
网络的样本 的target item
为第 个 item
的预测概率。然而上式中的 计算代价很高,这和item
总数 成正比。为了有效训练具有百万类别的分类任务,我们采用了负采样技术。我们将带负采样的辅助match
网络损失函数定义为:
其中: 为 sigmoid
函数; 为正样本, 为负采样的负样本; 为负采样数量,它远远小于 。
最终的损失函数为:
其中 为一个超参数,用于平衡这两部分损失。
通过从User Behavior
中引入标签,辅助match
网络可以推动更大的 来表示更强的相关性,并帮助更好地训练 embedding
矩阵 和其它参数。
理解 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
。
除了直接计算 user-to-item
相关性之外,我们还提出了 Item-to-Item Network
以间接方式来表达相关性。
首先我们建模用户交互的 item
和 target item
之间的相似性similarity
,然后对这些相似性相加从而得到另一种形式的user-to-item
相关性relevance
。
为了使得相关性的 representation
更具有表达性,我们使用 attention
机制(而不是 User-to-Item Network
中的内积)来建模 item-to-item
相似性。
给定用户交互的 item
、target item
、位置编码作为输入,item-to-item
相似性的公式为:
其中:
target item
的特征向量, 为第 个位置 embedding
, 为第 个行为的特征向量。用户行为和 target item
之间的 item-to-item
相似性之和构成了另一种类型的 user-to-item
相关性:
通过加权的 sum
池化,UserBehavior
特征 被转换为固定长度的特征向量 ,从而构成了与目标相关的动态兴趣表示:
其中 为第 个行为的归一化权重。
注意:计算 的过程中并未进行归一化。因为归一化之后的注意力系数之和恒为
1.0
。
和用户representation
不同,目标相关的用户 representation
针对不同的target item
有所不同。通过注意力机制的局部激活能力,和目标 item
相关的行为的权重更高,并且主导了目标相关的用户 representation
。
两种类型的 user-to-item
相关性 、以及用户动态兴趣 将和其它输入特征向量拼接起来从而馈入 MLP
。MLP
的最终输入为: 。
注,
DMR
模型相当于对模型空间新增了约束:对于正样本,不仅点击率预估为1.0
,还需要user representation
和item representation
之间相关性很高。负样本也是类似。
数据集:
Alimama Dataset
(公共数据集):包含从Taobao
连续8
天中随机采样的曝光和点击日志。
前7
天的日志用于训练,最后1
天的日志用于测试。数据集包含 2600
万条日志,一共有 114
万用户、84
万 item
。
工业数据集:数据集包含从阿里巴巴在线推荐系统收集的曝光和点击日志。
我们将前 14
天的日志用于训练、第15
天的日志用于测试。数据集包含 11.8
亿条日志,一共有 1090
万用户、4860
万 item
。
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
的兴趣演化。
实验配置:
在公共数据集上:我们将学习率设为 0.001
,batch size = 256
,item embedding
维度为 32
,用户行为序列的最大长度为 50
,MLP
中的隐层维度分别为 512,256,128
。
此外,辅助 match
网络中的负样本数设为 2000
,辅助损失的权重 设为 0.1
。
在工业数据集上:除了将 item embedding
维度设为64
,其它超参数和公共数据集相同。
下表给出了实验结果。我们使用 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
。
下表给出了公共数据集和工业数据集上具有不同组成部分的 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
表示 和 共享 embedding
(即 ) ,且使用两倍尺寸的 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
矩阵 的有效性:User-to-Item Network
使用额外的 embedding
矩阵 ,可以将其视为辅助match
网络的 softmax layer
中的参数。
我们尝试将 item embedding
的尺寸翻倍,并且共享 embedding
从而得到 DMR-Double
,其参数数量和 原始 DMR
相同。可以看到原始 DMR
的性能优于 DMR-Double
。这证明了单独的 embedding
矩阵 的有效性。
位置编码的有效性:可以看到,在 User-to-Item Network
中没有位置编码的 DMR
要差于完整的 DMR
。
通过位置编码,DMR
会考虑用户行为序列中的顺序信息,并提取用户的动态兴趣。在工业数据集上, User-to-Item Network
没有位置编码的 DMR
甚至要比没有整个 User-to-Item Network
的 DMR
(即 DMR I2I
)表现更差,这意味着没有位置编码的 User-to-Item Network
很难拟合。
user-to-item
相关性的 representation
的有效性:我们在公共数据集和工业数据集上探索了两个 user-to-item
相关性的值,如下图所示。这些值分别在正样本和负样本中取平均。
不出所料,正样本的 user-to-item
相关性高于负样本,这意味着我们的 user-to-item
相关性模型是合理的。
辅助match
网络的有效性:下图显式了 DMR
在公共数据集和工业数据集上的学习曲线 learning curve
。可以看到目标损失 和辅助损失 同时降低,这意味着 matching
和 ranking
联合训练是有效的。其中 。
位置编码的有效性:我们探索用户行为序列中不同位置的注意力权重。下图给出了公共数据集和工业数据集上 Item-to-Item Network
中的平均权重,其中距离当前时间越近的行为具有越小的位置编号。
尽管注意力权重受到多个因素的影响,但是总体趋势是:如预期所示,最近的行为获得更高的注意力权重,尤其是在工业数据集上。
在线 A/B
测试:我们在阿里巴巴的推荐系统中进行在线 A/B
测试。和我们系统中最新版本的 CTR
模型 DIN
相比,DMR
的 CTR
提升了 5.5%
,click per user
提升了 12.8%
。由于提升如此之大,DMR
已经部署到线上从而提供推荐服务。
点击率 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
来建模的。用户画像特征 embedding
是基于跨域数据共同学习,从而实现知识迁移的。源域的短期兴趣是通过向量 来建模的,它聚合了最近点击的新闻的信息。
另外,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
预估模型的性能。论文还进行了消融研究,从而提供模型背后的进一步的洞察。
相关工作:
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
预估问题。论文对三种类型的用户兴趣进行建模,并在神经网络框架中自适应地融合它们。
在线广告中的CTR
预估任务是建立一个预估模型来预测用户点击特定广告的可能性。每个样本可以由多个field
描述,如用户信息(用户ID
、城市、年龄等)、广告信息(素材ID
、Campaign ID
、广告标题等)。每个field
的实例代表一个特征,如用户 ID
字段可能包含诸如 2135147
或 3467291
。
下表为 CTR
预估任务样本的示例,其中 Label
表示用户是否点击这个广告。
我们定义跨域CTR
预估问题为:利用一个源域(或多个源域)中的数据来提高目标域中 CTR
预估性能。
在新闻 feeds
流广告中(如下图所示的 UC
头条 ),源域就是原生natural
的新闻feeds
流、目标域是广告。这种情况下,源域和目标域共享同一组用户,但是没有重叠的 item
。
为了有效利用跨域数据,我们提出了混合兴趣网络Mixed Interest Network: MiNet
,如下图所示。该模型对三种类型的用户兴趣进行了建模:
embedding
来建模的。用户画像特征 embedding
是基于跨域数据共同学习,从而实现知识迁移的。在 MiNet
中,我们还应用了两种level
的注意力:item-level
注意力、interest-level
注意力。
item-level
注意力的目的是从最近点击的新闻/广告中提取有用的信息(和待预估CTR
的目标广告相关),并抑制噪声。interest-level
注意力的目的是自适应地调整三种类型的用户兴趣(即 )的重要性,并为目标广告提供更有信息量的信号。接下来我们详细描述各个组件。
我们首先将特征编码为 one-hot encoding
。对于某个离散型特征,假设其unique
取值数量为 。为了实现跨域的知识迁移,特征的 unique
集合选取的是在两个域中的 unique
取值集合的交集,即:该 unique
值在两个域中都出现过。
对于该特征的第 个取值,其 one-hot encoding
记作:
其中 的第 项为 1
、其它项全部为零。
然后我们将稀疏的高维 one-hot encoding
映射到适合神经网络的稠密的低维 embedding
向量。具体而言,我们定义一个 embedding
矩阵 ,其中 为 embedding
维度且满足 。注意, 是待学习的。
那么该特征的第 个取值可以投影到对应的 embedding
向量 。 实际上就是 的第 行,这通常采用查表法来进行(而不是矩阵乘法)。
对于每个广告样本,我们将其特征拆分为用户特征、广告特征。
我们获取所有广告特征,并拼接对应的 embedding
向量,从而获取目标域中的广告的 representation
向量 。
同样地,我们可以在源域中获得新闻 representation
向量 。
对于用户,我们通过相应的用户特征 embedding
向量进行拼接,从而获得长期兴趣 representation
向量 。
例如,如果用户 有特征 UID = u123, City = BJ, Gender = male, OS = ios
,则我们有:
其中 ||
表示向量拼接。
长期兴趣representation
向量 在各个域之间共享,并使用来自两个域的数据来共同学习。
这里 分别代表广告representation
向量维度、新闻representation
向量维度、用户 representation
向量维度。
给定一个用户,对于目标域中的每个目标广告,用户通常会在源域中查看新闻。尽管新闻的内容可能和目标广告的内容完全不同,但是它们之间可能存在一定的相关性。例如,用户在查看一些娱乐新闻之后很可能点击游戏广告。基于这种关系,我们可以将有用的知识从源域迁移到目标域。
令最近点击的新闻的 representation
向量的集合为 。由于点击新闻的数量可能会有所不同,因此我们需要聚合这些新闻。
具体而言,聚合的 representation
为:
其中 为分配给 的权重,从而表示它在聚合期间的重要性。
聚合的 representation
反映了源域中用户的短期兴趣。
剩下的问题是如何计算权重 。
一种简单的方法是选择 ,即每条被点击的新闻都具有相等的重要性。这显然不是明智的选择,因为某些新闻对于目标广告没有帮助。
另一种方式是基于注意力机制, 的计算为:
其中 为模型参数。
上式仅单独考虑每条被点击的新闻 ,它没有捕获新闻和目标广告之间的关系。
此外,上式也未考虑目标用户。例如,无论目标广告是关于咖啡还是衣服,无论目标用户是 还是 ,点击新闻的重要性都保持不变。
我们提出 item-level
注意力, 的计算为:
其中: 为待学习的参数; 为超参数,指定 attention
隐向量维度; 为逐元素乘积。
上式考虑了以下方面:
源域中点击的新闻 。
目标域中的目标广告 。
目标用户 。
点击新闻和目标广告之间的迁移交互 transferred interaction
。
其中 为迁移矩阵 transfer matrix
,它将源域的 迁移到目标域 使得 可以和目标广告 进行比较。
通过这种方式,计算出的 以及 不仅是需要待分配权重的点击新闻的函数,而且也是目标广告感知的aware
、以及目标用户感知的 aware
。另外,它还考虑了点击新闻和跨域目标广告之间的交互interaction
。
如果采用两层
DNN
来计算attention
,是否可以移除迁移交互项?
复杂度缩减:item-level
注意力中,迁移矩阵 的尺寸为 。当 和 较大时, 包含很多要学习的参数。
为降低计算复杂度,我们将 分解为: 。其中: , 是一个中间维度,可以设为一个较小的值。这样,总的参数数量从 降低到 。
给定用户,对于每个目标广告,该用户在目标域中也具有近期行为。用户最近点击的广告对用户不久将来点击的广告有很大的影响。
令最近点击的广告的 representation
向量集合为 ,我们计算聚合的 representation
为:
其中: 为待学习的参数; 为超参数,指定 attention
隐向量维度; 为逐元素乘积。
聚合的 representation
反映了用户在目标域中的短期兴趣。
上式考虑了以下方面:
interaction
。由于它们在相同的域中,因此不需要迁移矩阵。类似地,计算出的 和 不仅是待分配权重的点击广告的函数,而且也是目标广告感知的aware
、以及目标用户感知的 aware
。
在获得三种类型的用户兴趣 之后,我们将它们一起用于预估目标广告 的 CTR
。
尽管 都代表了用户兴趣,但是它们反映了不同的方面aspect
,并且具有不同的维度。因此,我们不能使用加权和的方式来融合它们。
一种可能的解决方案是将所有可用信息拼接起来作为一个长的输入向量:
但是,这样的解决方案找不到针对目标广告 最有用的用户兴趣信号。例如,如果短期兴趣 和目标广告 不相关,则长期兴趣 应该更有信息价值。但是现在这里 中 具有相等的重要性。
因此,我们没有使用 ,而是使用如下的 :
其中 是动态权重,它们根据不同的用户兴趣信号的取值来调整其重要性。具体而言,这些权重的计算为:
其中:
intrinsic
重要性,而不管该兴趣的实际取值。可以看到,这些权重是根据所有可用信息来计算的,以便在给定其它类型的用户兴趣的条件下考虑特定类型用户兴趣对于目标广告的贡献。
item-level attention
采用了加权sum
池化,而interest-level attention
采用了加权拼接。事实上向量拼接(相比较于池化操作)可以保留尽可能多的信息。由于历史行为序列的长度不固定,因此为了得到固定长度的向量所以选择了加权池化。
由于兴趣
embedding
数量是固定的3
个,因此可以进行向量拼接从而得到固定长度的向量。
我们使用 来计算权重,这使得 可能大于 1.0
。这是我们想要的效果,因为这些权重可以补偿维度差异问题dimension discrepancy problem
。
例如,当 的维度比 的维度大得多时(由于 具有更多特征),那么 的贡献自然会由于这种效应而削弱。
sigmoid
函数代替 exp
函数,使得分配给 的权重位于 0.0 ~ 1.0
之间,那么也无法解决这个问题。1.0
,那么可以很好地缓解这种维度差异效应。而且,这些权重是自动学习的,因此在必要时也会小于 1.0
。
这里并没有对重要性进行归一化,因此得到的是 “绝对相关性”。归一化之后代表的是“相对相关性”。另外为了使得绝对相关性非负,这里使用指数函数
exp
。具体效果可以做实验来对比。
在目标域,我们让输入向量 通过具有 ReLU
激活函数的几个全连接层FC layer
,从而利用高阶特征交互以及非线性变换。
具体而言:
其中: 表示隐层数量; 表示待学习的、第 层的参数。
最后,向量 通过一个 sigmoid
输出层得到目标广告的预估 CTR
:
其中 为输出层待学习的参数。
为了便于长期兴趣 的学习,我们还为源域创建了一个输入向量,即 。其中 为目标新闻特征的 embedding
向量的拼接。
同样地,我们让 经过几个 FC
层和一个 sigmoid
输出层(这些层都具有自己的参数)。最后,我们获得了目标新闻的预估 CTR
。
还可以包含最近点击的新闻的
representation
向量的集合 ,从而学到更好的长期兴趣 。
我们使用交叉熵作为损失函数。在目标域中,训练集上的损失函数为:
其中: 为目标广告的真实label
, 为目标广告的预估 CTR
, 为 label
集合。
类似地,我们得到源域中的损失函数 。最终我们的损失函数为:
其中 为一个超参数,用于平衡不同损失的重要性。
注意: 是跨域共享的,因此当优化联合损失 时,将根据两个域的数据共同学习 。
我们在 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
头条的主要流量。
数据集:
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
。
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
知识迁移。模型配置:
每个特征的 embedding
向量维度设置为 ,即映射到 10
维。
item-level
注意力中,迁移矩阵 分解的中间维度 。
Company
数据集:
FC
层数量设为 ,隐层维度分别为[512, 256]
。attention
隐向量维度 ,源域 batch size
为 512
,目标域 batch size
为 128
。Amazon
数据集:
FC
层数量设为 ,隐层维度分别为[256, 128]
。attention
隐向量维度 ,源域 batch size
为 64
,目标域 batch size
为 32
。所有方法都基于 Tensorflow
实现,并使用 Adagrad
算法。每个方法运行 5
次,并报告平均结果。
评估指标:AUC, RelaImpr, Logloss
。
AUC
反映了对于随机选择的正样本和负样本,模型将正样本排序rank
在负样本之上的概率。对于完全随机的模型,AUC = 0.5
。AUC
越大越好。AUC
的一个很小的改进可能会导致在线 CTR
的显著提升。
RelaImpr
衡量指定模型相对于基础模型的相对提升。由于随机模型的 AUC
为 0.5
,因此 RelaImpr
定义为:
Logloss
:测试集(目标域)的对数损失,即 ,越小越好。
实验结果如下表所示。*
表示和最佳的 baseline
相比,基于成对 t-test
检验的、 的统计显著性。
可以看到:
就 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
方法。
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)
更差。这是因为不合适的激活函数无法有效解决维度差异问题。这些结果证明了我们提出的分层注意力机制的有效性。
item-level attention
:这里我们考察 MiNet
中 item-level
注意力权重,并检查它们是否可以捕获有信息的信号。
下面给出Company
数据集中随机选择的一个活跃用户(因此具有相同的点击广告集合、点击新闻集合),对于不同目标广告的注意力权重。
由于隐私问题,我们仅按照类目粒度展示广告和新闻。由于广告位于同一个域中,因此比较容易判断点击广告和目标广告之间的相关性。而广告和新闻位于不同的域中,因此很难判断它们之间的相关性。因此我们根据用户的行为日志来计算概率 。
可以看到:
Publishing & Media:P&M
时,P&M
类目的点击广告权重最高,而娱乐 Entertainment
类目的点击新闻权重最高。Game
时,游戏类目的点击广告权重最高,而体育新闻类目的点击新闻权重最高。以上结果表明,item-level
注意力确实可以动态捕获针对不同目标广告的更重要的信息。
我们还观察到,该模型可以学到点击新闻和目标广告之间的某种相关性。具有较高 的新闻通常会获得较高的注意力权重。
理论上 以及 ,但是这里并未满足。所以这里是
top 3
重要性的历史点击广告和历史点击新闻?
interest-level attention
:这里我们研究 MiNet
中不同类型的用户兴趣建模的效果。
我们观察到两个数据集上完全不同的现象,如下图所示(Base model:DNN
)。src.
表示源域 source domain
、tar.
表示目标域 target domain
。
Company
数据集上,和建模长期兴趣相比,建模短期兴趣可以实现更高的 AUC
。这表明短期行为非常有帮助。Amazon
数据集上,建模长期兴趣会产生更高的 AUC
。这是因为 Amazon
数据集是电商数据集而不是广告,并且评分的性质和点击的性质不同。MiNet
综合考虑所有类型的用户兴趣时,获得了最高的 AUC
。这表明不同类型的用户兴趣可以相互补充,联合建模可以带来最好的效果。点击率 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
预估任务中的性能。相关工作:
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
,因此更容易实现,并且训练和在线评估都更快。这里我们首先介绍 CTR
预估问题,然后介绍 DSTN
模型的三种变体。
CTR
预估问题:在线广告中的CTR
预估任务是建立一个预估模型来估计用户点击特定广告的概率。
每个样本都可以由多个字段 field
来描述,例如用户信息(用户ID
、用户城市、用户年龄等等),以及广告信息(广告创意ID
、广告计划ID
、广告标题等等)。我们将每个样本称作 ad instance
,它不仅包含广告信息,也包括用户信息、上下文信息等。
字段的实例 instance
是一个特征。例如,用户 ID
字段可能包含诸如 2135147
或 3467291
的特征。下表给出了一些例子,其中:第一列是标签列,1
表示发生点击行为,0
表示未发生点击行为;其它各列均为一个字段。
诸如 FM, DNN, Wide & Deep
之类的经典 CTR
预估模型主要考虑目标广告(如下图所示,target ad
表示目标广告对应的样本),它们聚焦于如何表示样本特征,以及如何学习特征交互。
与这些方法不同,我们探索了辅助数据(即辅助广告)来提升 CTR
预估。我们必须解决以下问题:
在介绍模型之前,我们首先介绍所有模型中常见的 embedding
过程。embedding
过程是先将每个特征映射到一个 embedding
向量,然后将每个样本表示为相应特征 embedding
向量的拼接 concatenation
。
假设某个特征有 个 unique
值。我们创建一个 embedding
矩阵 ,其中第 行 代表对应于特征第 个取值的 embedding
向量。这个 embedding
矩阵 是在模型训练期间待学习的参数。
我们将特征分为三种类型并进行不同的处理,如下图所示。cate.
表示 categorical
,ft.
表示 feature
。ad instance
表示样本,ad embedding vector
表示样本 embedding
向量。
单值univalent
的离散特征:这类特征仅包含单个值。
例如用户 ID
就是这类特征的代表,每个用户 ID
特征只有一个用户 ID
值。如果我们使用 one-hot
特征表示,则由于 unique
用户 ID
数量可能高达 ,导致特征向量非常稀疏。因此,我们将稀疏的高维离散特征映射为稠密的低维 embedding
向量从而适用于神经网络。
和 one-hot representation
相比,这些 embedding
向量包含更丰富的信息。
多值multivalent
的离散特征:这类特征包含一组值。
例如广告标题就是这类特征的代表。假设广告标题为 ABCD
,那么它的 bi-gram
表示为:AB, BC, CD
。由于这类特征包含取值的数量不是固定的,因此我们首先将每个值映射到 embedding
向量,然后执行池化来生成固定长度的聚合向量。
数值特征:用户年龄是数值特征的典型例子。每个数值特征首先被离散化为离散的桶,然后表示为桶ID
,最后将每个桶 ID
映射到 embedding
向量。
经过 embedding
过程之后,样本的 representation
是所有 embedding
向量的拼接,每个 emebdding
向量对应于一个 field
。
在 embedding
之后:
target ad
获得了一个 embedding
向量 ,其中 为目标广告 embedding
维度。embedding
向量 ,其中 为上下文广告数量, 为上下文广告 embedding
维度。embedding
向量 ,其中 为历史点击广告数量, 为历史点击广告 embedding
维度。embedding
向量 ,其中 为历史未点击广告数量, 为历史未点击广告 embedding
维度。注意:
包含了用户 embedding
、广告 embedding
、上下文 embedding
(如 query
)。
仅包含广告 embedding
、上下文 embedding
,而不包含用户 embedding
。
因为历史点击广告、历史未点击广告和目标广告都是同一个用户,没必要提供冗余的、重复的用户信息。
仅包含广告 embedding
,而不包含用户 embedding
、广告 embedding
。
因为上下文广告和目标广告都是同一个用户、同一个上下文(如 query
)。
由于不同用户的辅助广告数量 可能千差万别,因此这为深度神经网络带来了问题。我们需要解决的第一个问题是:将每种类型的、可变长度的辅助实例auxiliary instance
处理未固定长度的向量。在 DSTN-Pooling
模型中,我们使用 sum
池化来实现该目标,模型结构如下图所示。
个上下文广告的聚合 representation
向量 、 个历史点击广告的聚合 representation
向量 、 个历史未点击广告的聚合 representation
向量 分别表示为:
如果某种类型的辅助广告完全缺失(例如,根本没有上下文广告)则我们将全零向量作为其聚合representation
向量。
现在我们有了目标广告的 representation
、不同类型辅助广告的 representation
,下一个问题是融合这些representation
中包含的信息。
具体而言,我们生成融合的 representation
为:
其中:
representation
映射到相同的语义空间。bias
向量。可以看到,我们实际上使用不同的权重来融合来自不同类型数据的输入。这是因为不同类型的辅助数据对于目标广告的影响程度可能不同,因此我们需要区分这些差异。
此外,融合的representation
具有以下特性:如果一种或者多种类型的辅助广告完全缺失,则融合的representation
不受影响。例如,如果没有上下文广告,那么 。结果导致 ,因此 不受影响。
如果我们将目标广告的 representation
、不同类型辅助广告的 representation
拼接为 ,那么我们可以将上式重写为:
其中: 表示向量拼接; 为所有权重矩阵的拼接; 为待学习的 bias
向量。这种方式大大简化了模型。
因此,DSTN-Pooling
模型最终的设计为:
首先拼接各个representation
从而获得临时 representaion
。
然后将 通过若干个带 ReLU
激活函数的全连接层FC layer
,从而利用高阶特征交互以及非线性变换。文献表明:ReLU
激活函数在收敛速度和模型效果方面比 tanh
激活函数具有明显的优势。
其中: 为全连接层的层数; 表示第 层全连接层的、待学习的参数。
全连接层输出向量 通过一个 sigmoid
函数来生成目标广告的预估 CTR
:
其中 为待学习的参数。
此外,为了避免模拟过拟合,我们在每个全连接层之后应用 dropout
。
所有的模型参数通过最小化交叉熵损失函数来学习,其中损失函数定义为:
其中: 为目标广告的真实label
; 为目标广告的预估CTR
; 为所有真实label
的集合。
可以看到:在 DSTN-Pooling
模型中,当给定用户在给定位置展示不同的目标广告时只有 发生变化,而所有的辅助representation
都保持不变。这意味着辅助 representation
仅用作静态基础信息。
而且,由于 是通过 sum
池化生成的,因此有用的信息很容易被淹没在噪声中。例如,如果目标广告是关于咖啡的,但是大多数历史点击广告是关于衣服的、少部分历史点击广告是关于咖啡的。那么,虽然关于衣服的这些历史点击广告对于目标广告的贡献很小,但是 sum
的结果显然是由这些关于衣服的历史点击广告所主导。
DSTN-Self Attention
模型:鉴于 DSTN-Pooling
的上述限制,我们考虑采用自注意力机制,即 DSTN-Self Attention
模型。
在我们的 DSTN-Self Attention
模型中,我们在每种类型的辅助数据上应用自注意力从而强调更重要的信息。以上下文辅助广告为例,其聚合representation
向量建模为:
其中 为第 个上下文广告 representation
的注意力系数,它计算为:
其中 为一个函数,它将上下文广告 representation
向量 映射为一个标量权重 。 的一个可能的实现方式是采用多层感知机 Multilayer Perceptron: MLP
。
自注意力机制的优点在于:可以根据 self-attention
来加权不同的辅助广告 ,从而可以强调有用的信息并抑制噪声。但是,它仍然具有以下局限性:
1
个上下文辅助广告、还是 100
个上下文辅助广告。DSTN-Interactive Attention
:鉴于 DSTN-Self Attention
的上述限制,我们考虑引入每种类型辅助广告和目标广告之间的显式交互,即 DSTN-Interactive Attention
模型,如下图所示。
以上下文辅助广告为例,其聚合representation
向量建模为:
其中: 为模型参数。
和 DSTN-Self Attention
相比,这里的 现在是目标广告 和上下文辅助广告 的函数。通过这种方式, 基于目标广告 来动态调整上下文辅助广告 的重要性。
此外, 现在还不依赖于其它上下文辅助广告 ,也不需要进行归一化。如果没有任何上下文辅助广告能够提供信息,则所有的 都会很小。
类似地,我们为历史点击辅助广告生成 、为历史未点击辅助广告生成 。
DSTN-Interactive Attention
模型最终得到融合的 representation
为:
和 DSTN-Pooling
相比,可以看到:
辅助representation
现在不再使用静态基础信息,而是根据目标广告来动态调整。这意味着模型会针对目标广告自适应地提取辅助数据中的更多有用信息。
例如,假设历史点击广告和咖啡、衣服、汽车相关。
此外,模型仍然保留了使用不同的权重来融合不同类型辅助数据输入的特点。
最后,模型中的权重 并没有在所有上下文辅助广告之间进行比较,这避免了归一化导致的问题。
最后我们给出 DNN, DSTN-Pooling, DSTN-Interactive Attention
等模型的结构对比,如下图所示。
我们在中国第二大搜索引擎 “神马搜索” 中部署了 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
。
在线阶段的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
个得分最高的剩余候选目标广告,并将最终广告列表发送给用户。
本质是,在线预估的时候上下文广告集合是不确定的,依赖于在线策略的选择。
这里我们对三个大型数据集进行实验,从而评估所提出的 DSTN
以及几种 state-of-the-art
的 CTR
预估方法的效果
数据集:
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
万。
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
预估的对数几率通过 给出,其中: 为模型参数, 为样本特征, 为周围广告的相似性之和 。相似性是在广告标题和广告描述文本中的字符串上人工定义的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
考虑了上下文广告、历史点击广告、历史未点击广告。
配置:
embedding
向量维度设为 10
。因为 distinct
特征数量太高,如果embedding
维度太大则参数规模异常巨大。DNN, Wide&Deep, DeepFM, GRU, DSTN
中全连接层的层数设为 2
,每层的维度分别为512,256
。dropout rate
设为 0.5
。GRU
的隐层维度设置为 128
。DSTN-S
中的 函数是具有单隐层的 MLP
,隐层维度为 128
。DSTN-I
中的 的维度也设为 128
。Tensorflow
中实现,并通过 Adagrad
算法进行优化。batch size
设为 128
。3
天的历史行为。为了降低内存需求,我们进一步限制 。也就是说,如果历史点击广告数量不超过 5
个,则我们全部使用;如果超过5
个,则我们使用最新的 5
个。评估指标:测试集上的 AUC, logloss
。
AUC
反映了对于随机选择的一个正样本和一个负样本,模型对正样本的rank
高于负样本的概率。
下表给出了实验结果。可以看到:
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
也最小,这显示了模型的有效性。
为了检查不同类型辅助数据的影响,我们在DSTN-I
模型中分别仅提供上下文广告、仅提供历史点击广告、仅提供历史未点击广告。为了衡量效果,我们定义并计算以下两个指标:
绝对 AUC
提升absolute AUC improvement: AbsImp
:
其中 ctxt
是上下文的缩写。
标准化的 AUC
提升 normalized AUC improvemen: NlzImp
:
这里我们针对平均辅助数据的规模进行归一化。
AbsImp
考虑AUC
的整体提升,而 NlzImp
将AUC
提升效果针对单个辅助广告进行标准化。通常我们关注AUC
的绝对提升而不是相对提升,因为在工业实践中 AUC
的绝对提升更具有意义和指导性。
实验结果如下图所示。
从 (a)
中可以看到:不同类型辅助数据的效果在不同数据集上有所不同。上下文广告在 Avito
数据集上的 AbsImp
最高,而历史未点击广告在Search
数据集上的 AbsImp
最高。
从(b)
中可以看到:有意思的是,一旦标准化之后,上下文广告、历史点击广告的作用就比历史未点击广告高得多。
这符合直觉,因为上下文广告可能会分散用户的注意力,而历史点击广告通常会反映出用户的兴趣。相反,历史未点击广告可能会产生很大的噪音:历史未点击可能表明用户对广告不感兴趣,或者用户根本没有查看广告。
为了检查全连接层深度的影响,我们在DSTN-I
模型中分别选择了三种不同配置的全连接层:单层 256
维、两层 512-256
维、三层 1024-512-256
维。实验结果如下图所示。
可以看到:
AUC
,但是随后添加更多层时,提升的幅度会降低。degradation
。这可能是由于更多的模型参数导致过拟合,以及更深的模型导致训练难度增加而导致的。下图分别给出了NN
和 DSTN-I
学到的 ad-embedding
的可视化(基于 t-SNE
),不同颜色代表不同的子类目。这些广告是基于 5
个主类目(电子、服装、家具、计算机、个人护理)下的 20
个子类目。我们在每个子类目中随机选择 100
个广告。
注意:这里可视化的是 target ad embedding
,而这里的的 ad embedding
只有广告信息,不包含 query
信息和用户信息。
可以看到:
embedding
均显示了清晰的簇结构,每个簇代表一组相似的广告。DNN
还是将 iPhone
和 “三星手机” 混在一起,将 “床” 和 “橱柜” 混在一起,将 “礼服” 和 “鞋子” 混在一起。相比之下,DSTN-I
学习到了更清晰的簇,并清楚地区分了不同的子类目。这些结果表明,DSTN-I
可以借助辅助广告来学习更具代表性的 embedding
。
现在我们通过对 Avito
数据集的一些案例研究来检查 DSTN-I
辅助广告的注意力权重。我们很难分别检查每种类型的辅助广告,因为很难找到包含足够数量的、所有辅助类型广告的案例。
上下文广告:下图给出了关于 YotaPhone
的目标广告。我们显示了三个上下文广告,分别是手机镜头、三星手机、HTC
手机。我们给出了上下文广告的注意力权重 。
可以看到:两个手机广告的权重相差不大(约 0.6
),但是手机镜头广告(最不相似)的权重却要高得多(约 0.8
)。
这样的观察结果符合 《Relational click prediction for sponsored search》
中的分析,作者发现:周围的广告和目标广告越相似,目标广告的点击率就越低。这是因为相似的广告可以分散用户的注意力,因为所有这些广告都提供相似的产品或服务。
相反,相异的广告可以帮助目标广告更加引人注目,因此 DSTN-I
将手机镜头广告给予较大的权重。
因此对于上下文广告,和目标广告越相似,注意力权重越低。
历史点击广告:目标广告是关于自拍杆。我们给出了历史点击广告的注意力权重 。
0.5223
。0.7057
)要比婴儿安全座椅高得多。0.8449
)。0.9776
)。这些观察结果表明:历史点击广告和目标广告越相似,注意力权重越高。这是因为:如果用户曾经点击了和目标广告类似的广告,则用户也可能会点击目标广告。
历史未点击广告:目标广告是关于 Sony
相机套装的。四个历史未点击广告分别与自行车、自拍杆、相机镜头、相机套装有关。我们给出了历史未点击广告的注意力权重 。
这些广告和目标广告的相似性依次递增,因此相应的注意力权重也在增加。
这些观察结果表明:历史未点击广告和目标广告越相似,注意力权重越高。这是因为:如果用户过去没有点击和目标广告类似的广告,那么用户很可能也不会点击目标广告。
将历史点击广告和历史未点击广告的注意力权重进行比较,我们发现一个有趣的现象:即使历史未点击广告和目标广告非常相似,历史未点击广告的平均权重也要比历史点击广告的平均权重小得多。这是因为历史点击广告会反映出可能的用户偏好,而历史未点击广告则更加模棱两可ambiguous
。
我们于 2019
年 1
月进行了为期两周的在线 A/B test
实现。基准模型是 Wide&Deep
,这是我们最新的在线 serving
模型。我们的在线评估指标是 CTR
。
在线实验结果表明:DSTN
的效果始终优于 Wide&Deep
,两周的平均 CTR
提升在 6.92%
。这证明了 DSTN
在实际点击率预估任务中的有效性。目前我们已经在神马搜索中部署了 DSTN
。
在过去的十年中,推荐系统已经成为业界最流行的应用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
阶段,每天为数亿消费者提供推荐服务。
相关工作:自从 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
预估模型与他们的架构不同。
在 rank
阶段,我们将推荐任务建模为点击率Click-Through Rate: CTR
预估问题,其定义如下:给定用户 点击item
构成的用户行为序列 ,我们需要学习一个函数 来预测 点击目标item
(即候选 item
) 的概率。
我们在 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
。
第一个组件是 embedding layer
,它将所有输入特征嵌入到一个固定大小的低维向量中。
在我们的场景中有各种特征,如用户画像特征、item
特征、上下文特征、以及不同特征的组合(即交叉特征)。由于我们的工作聚焦于使用 transformer
对用户行为序列进行建模,因此为简单起见我们将所有这些特征都表示为 Other Features
,并在下表中给出了一些示例。
我们将 Other Features
拼接起来,将它们嵌入到低维向量中。对于这些特征,我们创建一个 embedding
矩阵 。其中: 为 embedding
向量的维度, 为 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
矩阵 。其中: 为 embedding
向量的维度, 为 item
数量。我们使用 来表示给定行为序列中第 个 item
的 embedding
。
positional embedding
:在 《Attention is all you need》
中,作者提出了一种 positional embedding
来捕获句子中的顺序信息order information
。同样地,顺序order
也存在于用户行为序列中。因此,我们添加 position
作为bottom layer
每个item
的输入特征,然后将其投影为低维向量。
注意,item
的 position value
计算为:
其中:
target item
, 为用户行为序列中第 个 item
。recommending time
,而 表示用户点击 item
的时间戳。我们采用这种方法,因为在我们的场景中,它的性能优于 《Attention is all you need》
中的 sin
和 cos
函数。
这一部分,我们介绍了 Transformer layer
,它通过捕获行为序列中每个item
与其它item
的关系来学习item
的更深 deeper
的 representation
。
self-attention layer
:缩放的内积注意力 scaled dot-product attention
定义为:
其中: 代表 query
, 代表 key
, 代表 value
。
在我们的场景中,self-attention
操作将item
的 embedding
作为输入,通过线性映射将其转换为三个矩阵,并将其馈入attention layer
。
遵从 《Attention is all you need》
,我们使用 multi-head attention
:
其中:
item
的 embedding
矩阵。head
数量。Point-wise Feed-Forward Network
:遵从 《Attention is all you need》
,我们添加一个 point-wise Feed-Forward Network:FFN
来进一步提升模型的非线性,它定义为:
为避免过拟合并且学习层次的有意义的特征,我们同时在 self-attention
和 FFN
中使用 dropout
和 LeakyReLU
。然后 self-attention layer
和 FFN layer
的总输出为:
其中:
normalization layer
。Stacking the self-attention blocks
:在第一个 self-attention block
之后,它会聚合所有历史 item
的 embedding
。为了进一步建模底层 item
序列的复杂关系。我们堆叠了 self-attention building block
,其中第 个 block
定义为:
实践中我们观察到 可以获得比 更好的性能。为了提高效率,我们并未尝试更大的 ,并把这个留给以后的工作。
我们将Other Features
的 embedding
和应用于 target item
的 Transformer layer
的输出进行拼接,然后使用三个全连接层来进一步学习这些 dense features
之间的交互。这是工业推荐系统的标准做法。
为了预测用户是否点击 target item
,我们将其建模为一个二类分类问题,因此使用 sigmoid
函数作为输出单元。
为了训练模型,我们使用交叉熵损失函数:
其中:
label
。sigmoid
单元之后的输出,代表样本 被点击的概率。数据集:数据集是根据 Taobao App
的日志来构建的。我们根据用户在八天内的行为来构建离线数据集,其中前七天用于训练集、第八天用于测试集。
数据集的统计信息如下表所示,可以看到该数据集非常大并且非常稀疏。
baseline
:为了显示 BST
的有效性,我们将它和其它两个模型进行比较:WDL
和 DIN
。
此外,我们通过将序列信息合并到 WDL
(称作 WDL(+Seq)
)中来创建 baseline
方法,该方法将历史点击item
的 embedding
进行均值聚合。
我们的框架是在 WDL
的基础上通过使用 Transformer
添加序列建模而构建的,而 DIN
是通过注意力机制来捕获目标 item
和历史点击item
之间的相似性。
评估指标:
对于离线结果,我们使用 AUC
得分来评估不同模型的性能。
对于在线 A/B test
,我们使用 CTR
和平均 RT
来评估所有模型。
RT
是响应时间response time: RT
的缩写,它是给定query
(即淘宝上来自用户的一个请求)生成推荐结果的时间成本。我们使用平均 RT
来衡量在线生产环境中各种效率的指标。
配置:我们的模型是使用 Python2.7
和 Tensorflow 1.4
实现的,并且选择了 Adagrad
作为优化器。
此外,我们在下表中给出了模型参数的详细信息。
实验结果如下表所示,其中 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
的影响。可以看到 获得最佳的离线 AUC
。
这可能是由于以下事实:用户行为序列中的序列依赖性并不像机器翻译任务中的句子那样复杂。因此,较少的 block
数量就足以获得良好的性能。在《Self-attentive sequential recommendation》
中报道了类似的观察结果。因此,我们选择 在生产环境中部署 BST
,并且仅在下表中报告 的在线 CTR
增益。
点击率Click-Through Rate: CTR
预估建模在推荐系统recommender system
和在线广告online advertising
等工业应用中起着至关重要的作用。由于用户历史行为数据user historical behavior data
的快速增长,以学习用户兴趣的意图representation
为重点的用户兴趣建模user interest modeling
被广泛引入 CTR
预估模型。然而,由于真实在线系统中计算负担和存储负担的限制,大多数提出的方法只能对长度最多数百的用户行为序列数据进行建模。
事实证明,丰富的用户行为数据具有巨大的价值。例如,在全球领先的电商网站之一的淘宝网中,有 23%
的用户在过去五个月内点击了 1000
多种商品。如何设计一种可行的解决方案来对长的用户行为序列数据long sequential user behavior data
进行建模,这一直是一个开放而热门的话题,吸引了来自工业界和学术界的研究人员。
研究的一个分支借鉴了 NLP
领域的思想,提出使用 memory network
对长的用户行为序列数据进行建模,并取得了一些突破。阿里巴巴提出的 MIMN
是一项典型的工作,它是通过共同设计 co-design
学习算法和 serving system
来达到 SOTA
的。MIMN
是第一个可以对长度可达 1000
的用户行为序列进行建模的工业级解决方案。
具体而言,MIMN
将一个用户多样化diverse
的兴趣增量地incrementally
嵌入到固定大小的 memory matrix
中。该矩阵将通过每个新的行为进行更新,这样用户建模的计算就和 CTR
预估解耦。因此,对于在线 serving
而言,latency
将不再是问题。而存储代价依赖于 memory matrix
的大小,该大小远远小于原始的用户行为序列。
在长期兴趣建模long-term interest modeling
中可以找到类似的思想。然而,对于 memory network-based
方法来建模任意长的序列数据仍然是具有挑战性的。实际上我们发现:当用户行为序列的长度进一步增加,比如增加到 10000
甚至更多时,对给定一个特定的候选item
的情况下,MIMN
无法精确地捕获用户的兴趣。这是因为将用户所有的历史行为编码到固定大小的 memory matrix
会导致大量的噪声被包含在 memory unit
中。
另一方面,正如 DIN
在以前的工作中指出的,一个用户的兴趣是多样化diverse
的,并且在面对不同候选item
时会有所不同。DIN
的关键思想是:在面对不同的候选 item
时,从用户行为序列中搜索有效信息,从而建模用户的特定兴趣special interest
。通过这种方式,我们可以解决将用户所有兴趣编码为固定大小的参数parameter
的挑战。
DIN
确实为使用用户行为序列数据的 CTR
建模带来了很大的提升。但是,如前所述,面对长的用户行为序列数据,DIN
的搜索公式的计算成本和存储成本是不可行的。因此,我们能否应用类似的搜索技巧,并设计一种更有效的方法来从长的用户行为序列数据中提取知识?
在论文 《Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction》
中,作者通过设计一个新的建模范式来解决这一挑战,并将其命名为基于搜索的兴趣模型 Search-based Interest Model: SIM
。 SIM
采用了 DIN
的思想,并且仅捕获与特定候选 item
相关的用户兴趣。
在 SIM
中,用户兴趣是通过两个级联 cascaded
的搜索单元search unit
来提取的:
通用搜索单元 General Search Unit: GSU
:充当原始的、任意长的行为序列数据的通用搜索,并具有来自候选 item
的 query
信息,最终得到和候选item
相关的用户行为序列子集Sub user Behavior Sequence: SBS
。
为了满足latency
和计算资源的严格限制,在 GSU
中使用了通用、但是有效的方法。根据我们的经验,可以将 SBS
的长度缩短为数百个,并且可以过滤原始的、长的用户行为序列数据中的大部分噪声信息。
精准搜索单元Exact Search Unit: ESU
:对候选 item
和 SBS
之间的精确关系进行建模。在这里,我们可以轻松应用 DIN
或 DIEN
提出的类似方法。
论文主要贡献:
SIM
,用于长的用户行为序列数据进行建模。级联的两阶段搜索机制的设计使得 SIM
具有更好的能力,可以在可扩展性scalability
和准确性accuracy
方面为长期的life-long
用户行为序列数据建模。SIM
的实践经验。自 2019
年以来,SIM
已经部署在阿里巴巴展示广告系统display advertising system
中,带来了 7.1%
的CTR
提升和 4.4%
的 RPM
提升。现在 SIM
正在服务于主要流量。54000
,比已发布的 SOTA
行业解决方案 MIMN
大 54
倍。相关工作:
用户兴趣模型User Interest Model
:基于深度学习的方法在CTR
预估任务中取得了巨大的成功。
在早期,大多数前期作品使用深度神经网络来捕获来自不同 field
的特征之间的交互,以便工程师可以摆脱枯燥的特征工程的工作。最近,我们称之为用户兴趣模型User Interest Model
的一系列工作聚焦于从用户历史行为中学习潜在用户兴趣的 representation
,这些工作使用不同的神经网络架构(如 CNN, RNN, Transformer, Capsule
等等)。
DIN
强调用户的兴趣是多样化的,并引入了一种attention
机制来捕获用户对不同 target item
的 diverse
兴趣。DIEN
指出,用户历史行为之间的时间关系对于建模用户漂移drifting
的兴趣非常重要。在 DIEN
中设计了一个基于 GRU
的、带辅助损失的兴趣抽取层interest extraction layer
。MIND
认为,使用单个向量来表示一个用户不足以捕获用户兴趣的变化的特性varying nature
。在 MIND
中引入了胶囊网络Capsule network
和动态路由方法 dynamic routing method
,从而学习用户兴趣的、以多个向量表示的representation
。self-attention
架构在 seq-to-seq learning
任务重成功的启发, DSIN
引入了 Transformer
来对用户的 cross-session
和 in-session
中的兴趣进行建模。长期用户兴趣Long-term User Interest
:MIMN
的论文中显示了在用户兴趣模型中考虑长期历史行为序列可以显著提高 CTR
模型的性能。尽管更长的用户行为序列为用户兴趣建模带来了更多有用的信息,但是它极大地增加了在线 serving sysem
的延迟和存储负担,同时也为 point-wise
的 CTR
预估带来了大量的噪声。
一系列工作聚焦于解决长期用户兴趣建模中的挑战。长期用户兴趣建模通常基于非常长的、甚至是 life-long
的历史行为序列来学习用户兴趣 representation
。
《Lifelong Sequential Modeling with Personalized Memorization for User Response Prediction》
提出了一种 Hierarchical Periodic Memory Network
,用于对每个用户进行 life-long
序列建模,其中对序列模式进行个性化memorization
。
《Adaptive user modeling with long and short-term preferences for personalized recommendation》
选择一个attention-based
框架来结合用户的长期偏好和短期偏好。他们采用了 attentive Asymmetric-SVD
范式来对长期兴趣建模。
《Practice on Long Sequential User Behavior Modeling for Click-through Rate Prediction》
提出了一种 memory-based
的架构,称作 MIMN
。该架构将用户的长期兴趣嵌入到固定大小的memory network
中,从而解决用户兴趣数据的大容量存储问题。并且他们设计了一个 UIC
模块来增量记录新的用户行为,从而解决latency
的限制。
但是,MIMN
在 memory network
中放弃了 target item
的信息,而 target item
已经被证明对于用户兴趣建模很重要。
通过建模用户行为数据来预估 CTR
,这已经被证明是有效的。典型地,attention-based CTR
模型(如 DIN, DIEN
)设计复杂的模型结构,并且包含attention
机制,以通过从用户行为序列中搜索有效知识来捕获用户的多样化兴趣。其中搜索的 input
来自于不同的候选 item
。
但是在现实世界的系统中,这些模型只能处理长度小于 150
的短期short-term
行为序列数据。另一方面,长期long-term
用户行为数据很有价值,并且对长期兴趣进行建模可以为用户带来更多样化的推荐结果。
我们似乎陷入了一个两难的境地:在现实世界的系统中,我们无法通过有效而复杂的方法来处理有价值valuable
的 life-long
用户行为数据。为应对这一挑战,我们提出了一种新的建模范式,称之为基于搜索的兴趣模型Search-based Interest Model: SIM
。SIM
遵循两阶段搜索策略,可以有效地处理长的用户行为序列。
我们首先介绍 SIM
的总体工作流程,然后详细介绍我们提出的两种搜索单元 search unit
。
SIM
遵循一个级联的 two-stage search
策略,其中包含两个单元:通用搜索单元General Search Unit: GSU
、精确搜索单元Exact Search Unit: ESU
。SIM
的整体工作流如下图所示。
第一阶段:我们利用 GSU
从原始的长期行为序列中寻找 top-K
相关relevant
的子行为序列,其复杂度为线性时间复杂度。这里 K
通常要比原始序列的长度要短得多。
如果有时间和计算资源的限制,则可以执行一种有效的搜索方法来搜索相关relevant
的子行为序列。在后续内容中,我们提供了 GSU
的两种简单实现:软搜索soft-search
和硬搜索 hard-search
。
GSU
采取一种通用general
但有效effective
的策略来减少原始的行为序列的长度,从而满足对时间和计算资源的严格限制。同时,长期用户行为序列中可能会破坏用户兴趣建模的大量噪声可以在第一阶段通过搜索策略进行过滤。
第二阶段:ESU
将经过过滤的用户行为子序列作为输入,并进一步捕获精确precise
的用户兴趣。
由于长期用户行为序列的长度已经减少到数百,因此可以应用复杂体系结构的精巧sophisticated
的模型,如 DIN, DIEN
等等。
然后遵循传统的 Embedding&MLP
范式,将精确precise
的长期用户兴趣的输出、以及Other Feature
作为输入。
注意:尽管我们分别介绍了这两个阶段,但是实际上它们是一起训练的。
给定一个候选 item
(即将被 CTR
模型打分的target item
),只有一部分用户行为有价值。这部分用户行为与最终用户决策密切相关。挑选出这些相关relevant
的用户行为有助于用户兴趣建模。
然而,使用整个用户行为序列直接对用户兴趣进行建模将带来巨大的资源占用和响应延迟latency
,这在实际应用中通常是无法接受的。为此,我们提出了一个通用搜索单元general search unit: GSU
,从而减少用户兴趣建模中用户行为的输入数量。这里,我们介绍两种通用的搜索单元:硬搜索hard-search
和软搜索 soft-search
。
给定用户行为的列表 ,其中 为第 个用户行为(这里每个行为就是用户点击或购买的 item
), 为用户行为列表的长度。通用搜索单元计算每个行为 相对于候选 item
的相关性得分 relevant score
,然后选择得分 top-K
的相关relevant
行为作为行为子序列 sub behaviour sequence
。
硬搜索和软搜索的区别在于相关的分 的计算:
其中:
为示性函数, 表示第 个行为 的类目, 为 target item
的类目。
和 为权重参数, 为第 个行为 的embedding
向量, 为 target item
的 embedding
向量。 为 item embedding
的维度, 为映射的新空间的维度。
对于软搜索,GSU
和 ESU
共享相同的 embedding
参数。
硬搜索 hard-search
:硬搜索模型是非参数non-parametric
的。只有和候选item
相同类目category
的行为被挑选出来,然后得到一个子行为序列并发送给 ESU
。
硬搜索非常简单,稍后在实验中我们证明它非常适合在线 serving
。
软搜索soft-search
:在软搜索模型中,首先将 编码为one-hot
向量,然后嵌入到低维向量 中。
为了进一步加速成千上万个用户行为的 top-K
搜索,基于embedding
矩阵 的、亚线性时间sublinear time
的最大内积搜索 maximum inner product search
方法 ALSH
用于搜索和target item
最相关的 top-K
行为。其中 为所有distinct
行为的 embedding
向量组成。
借助训练好的 embedding
和最大内积搜索Maximum Inner Product Search: MIPS
方法,成千上万个用户行为可以减少到数百个。
需要注意的是:长期long-term
数据和短期short-term
数据的分布是不同的。因此,在软搜索模型中直接使用从短期用户兴趣建模中学到的参数可能会误导长期用户兴趣建模。所以在本文中,软搜索模型的参数是在基于长期行为数据的辅助 CTR
预估任务下训练的,如上图左侧的软搜索训练soft search training
所示。
用户整体行为序列的representation
可以通过将 和 相乘得到:
行为 representation
和 target Ad
向量 然后拼接起来,作为后续多层感知机 Multi-Layer Perception: MLP
的输入,从而建模辅助任务。
注意,如果用户行为序列增长到一定程度,则不可能将整个用户行为序列馈入辅助任务的模型。这种情况下,可以从长的用户行为序列中随机采样子序列,子序列仍然遵循原始行为序列相同的分布。
在第一个搜索阶段,我们从长期用户行为中选择和 target item
最相关的 top-K
子用户行为序列 。为了进一步从相关行为中建模用户兴趣,我们引入了精确搜索单元Exact Search Unit: ESU
。ESU
是一个以 为输入的、attention-based
的模型。
考虑到这些选出来的用户行为横跨了很长时间,因此每个用户行为的贡献是不同的,所以涉及到每个行为的时间属性temporal property
。具体而言,target item
和选出来的 K
个用户行为的时间间隔 用于提供时间距离temporal distance
信息。
和 被编码为 embedding
矩阵 和 embedding
矩阵 。 其中, 和 的拼接作为第 个行为的最终 representation
,记作 。
我们利用 multi-head attention
来捕获用户的多样化兴趣:
其中:
attention score
, 为第 个 head
的attention
。head
的权重矩阵。最终的用户长期diverse
兴趣表示为: ,其中 为 head
数量。然后 被馈入到 MLP
中用于点击率预估。
最终模型同时使用了长期用户行为和短期用户行为,其中:
ESU
来抽取长期用户兴趣representation
。DIEN
来抽取短期用户兴趣representation
。长期用户兴趣representation
、短期用户兴趣representation
、以及Other feature representation
一起拼接作为后续 MLP
的输入。
长期用户兴趣由长期用户行为来捕获,这里使用
GSU + ESU
的原因是序列太长,DIEN
无法处理。短期用户兴趣由短期用户行为来捕获,这里使用
DIEN
是因为序列较短因此可以更精细地建模。对于较短的序列,没必要使用GSU
来硬过滤。
最后,我们在交叉熵损失函数下同时训练 GSU
和 ESU
:
其中:
和 为超参数,用于控制损失之间的比例。在我们的实验中:
GSU
为软搜索模型,则 。GSU
使用硬搜索模型,那么 。 为 ESU
单元的损失,这也是SIM
模型主任务的目标损失。
为 GSU
单元的损失。
GSU
为硬搜索,则由于硬搜索没有参数,因此不考虑其损失。GSU
为软搜索,则它是 SIM
模型辅助任务的目标损失。辅助任务也是一个 CTR
预估任务,只是它采用了更简单的架构(没有 multi-head
、没有 DIEN
)、更少的特征(没有短期用户行为、没有 Other feature
)。这个辅助损失函数本质上是强制
GSU
部分学到的embedding
是任务相关的。可以理解为boosting
模型的一种:GSU
部分已经学到了CTR
相关的信息,ESU
部分继续拟合残差。
SIM
、DeepMCP
、DMR
等模型都是类似的思想,要求模型的子结构也能够捕获到CTR
相关的信息,从而使得约束了模型的解空间。
这里我们介绍在阿里巴巴的展示广告系统display advertising system
中实现 SIM
的实际经验。
life-long
用户行为数据在线serving
的挑战:工业级的推荐系统或广告系统需要在一秒钟内处理的大量的流量请求,这需要 CTR
模型实时响应。通常, serving latency
应该小于 30
毫秒。下图简要说明了我们在线展示广告系统中用于 CTR
任务的实时预测Real Time Prediction: RTP
系统。该系统由两个关键组件组成:计算节点Computation Node
、预估server
。
考虑到 lifelong
的用户行为,在实时工业系统中建立长期的用户兴趣model serving
就变得更加困难。存储和延迟的限制可能是长期用户兴趣模型的瓶颈。实时请求的数据量(数据量 = 请求条数 x 单条请求的数据量)会随着用户行为序列长度的增加而线性增加。此外,我们的系统在流量高峰时每秒可为超过 100
万用户提供服务。因此,将长期模型部署到在线系统是一个巨大的挑战。
在线 serving
系统:前面我们提出了两种类型的 GSU
:软搜索模型和硬搜索模型。
对于软搜索模型和硬搜索模型,我们对从阿里巴巴在线展示广告系统收集的工业数据进行了广泛的离线实验。我们观察到软搜索模型生成的 top-K
行为数据与硬搜索模型的结果极为相似。换句话讲,软搜索的大部分 top-K
行为通常属于 target item
相同类目category
的。这是我们场景中数据的一个特色。在电商网站中,属于同一类目的 item
在大多数情况下是相似的。考虑到这一点,尽管在离线实验中软搜索模型的性能要比硬搜索模型稍好,但是在平衡性能提升和资源消耗之后,我们选择硬搜索模型将 SIM
部署到我们的广告系统中。
对于硬搜索模型,包含所有长的用户行为序列数据的索引是关键组件。我们观察到,行为可以通过其所属类目自然访问到。为此,我们为每个用户建立一个两级的结构化索引 two-level structured index
,并将其命名为用户行为树user behavior tree: UBT
,如下图所示。
简而言之,UBT
遵循 Key-Key-Value
数据集结构:第一个 key
是 user-id
,第二个 key
是category id
,最后一个value
是属于每个类目的特定的行为item
。UBT
被实现为分布式系统,最大容量可达 22TB
,并且足够灵活以提供高吞吐量的query
。
然后,我们将 target item
的 category
作为我们的硬搜索query
。
在GSU
之后,用户行为的长度可以从一万多个减少到数百个。因此,可以缓解在线系统中 lifelong
行为的存储压力。
下图显示了 SIM
的新 CTR
预估系统。新系统加入了一个硬搜索模块,以从长的用户行为序列数据中寻找 target item
相关的有效行为effective behaviors
。
注意:GSU
的UBT
的索引可以离线构建。这样,在线系统中的 GSU
的响应时间可以非常短,与 GSU
的索引构建相比可以忽略。此外,其它用户特征可以并行计算。
这里我们详细介绍了我们的实验,包括数据集、实验配置、模型比较、以及一些相应的分析。由于 SIM
已经部署在我们的在线广告系统中,因此我们还会进行仔细的在线 A/B test
,并比较几个著名的工业级的模型。
数据集:我们在两个公共数据集、以及阿里巴巴在线展示广告系统收集的工业数据集进行了模型比较。
Amazon Dataset
:由 Amazon
的商品评论和元数据meta-data
组成。我们使用 Amazon
数据集的 Books
子集,该子集包含 75053
个用户、358367
个 item
、1583
个类目category
。
对于该数据集,我们将评论视为一种交互行为,并按时间对一个用户的评论进行排序。Amazon Books
数据集的最大行为序列长度为 100
。我们将最近的 10
个用户行为划分为短期short-term
用户序列特征,将最近的 90
个用户行为划分为长期long-term
用户序列特征。这些预处理方法已经在相关作品中广泛使用。
Taobao Dataset
:是来自淘宝推荐系统的用户行为集合。数据集包含几种类型的用户行为,包括点击、购买等。它包含大约800
万用户的用户行为序列。
我们采用每个用户的点击行为,并根据时间对其进行排序从而构建用户行为序列。Taobao Dataset
的最大行为序列长度为 500
。我们将最近的 100
个用户行为划分为短期用户序列特征,将最近的 400
个用户行为划分为长期用户序列特征。数据集将很快公开。
Industrial Dataset
:是从阿里巴巴在线展示广告系统收集的。样本是由曝光日志构建的,标签为是否点击。训练集是由过去49
天的样本组成,测试集是第50
天的样本组成,这是工业建模的经典设置。
在这个数据集中,每个样本的用户行为特征包含最近 180
天的历史行为序列作为长期行为特征,以及最近 14
天的历史行为序列作为短期行为特征。超过 30%
的样本包含长度超过 1
万的行为序列数据。此外,行为序列的最大长度达到 54000
,这比 MIMN
中的行为序列长 54
倍。
这些数据集的统计信息如下表所示。注意,对于Industrial Dataset
,item
为广告。
baseline
方法:我们将 SIM
和以下主流的 CTR
预估模型进行比较。
DIN
:是用户行为建模的早期工作,旨在针对候选item
进行用户行为的软搜索。和其它长期用户兴趣模型相比,DIN
仅将短期用户行为作为输入。Avg-Pooling Long DIN
:为了比较长期用户兴趣下的模型性能,我们对长期行为应用了均值池化操作(没有使用任何 attention
操作),并将long-term embedding
、以及其它特征 embedding
拼接起来。MIMN
:它巧妙地设计了模型体系结构从而捕获长期的用户兴趣,实现了state-of-the-art
性能。SIM(hard)
:我们提出的 SIM
模型,其中第一阶段使用硬搜索,并且在 ESU
中没有 time embedding
。SIM(soft)
:我们提出的 SIM
模型,其中第一阶段使用软搜索,并且在 ESU
中没有 time embedding
。SIM(hard/soft) with Timeinfo
:我们提出的 SIM
模型,其中第一阶段使用硬搜索/软搜索,并且在 ESU
使用 time embedding
。实验配置:我们采用与相关工作(即 MIMN
)相同的实验配置,以便可以公平地比较实验结果。
Adam
优化器。0.001
开始。FCN
的layer
设置为 200 x 80 x 2
。embedding
维数设置为 4
。AUC
作为模型性能的评估指标。下表显式了所有模型在公共数据集上的比较结果。a
表示SIM
采用软搜索且没有时间间隔的 embedding
。b
没有在 Amazon Dataset
上实验,因为该数据集没有时间戳数据。
和 DIN
相比,具有长期用户行为特征的其它模型的性能要好得多。这表明长期用户行为对CTR
预估任务很有帮助。
和 MIMN
相比,SIM
取得了显著提升,因为 MIMN
将所有未过滤的用户历史行为编码到固定长度的 memory
中,这使得难以捕获多样化的长期用户兴趣。
SIM
使用两阶段搜索策略从庞大的历史行为序列中搜索相关的行为,并针对不同target item
来建模多样化的长期用户兴趣。
实验结果表明:SIM
优于所有其它长期兴趣模型。这充分证明了我们提出的两阶段搜索策略对于长期用户兴趣建模很有用。而且,包含time embeding
可以实现进一步的提升。
消融研究--两阶段搜索的有效性:如前所述,我们的 SIM
模型使用两阶段搜索策略。
target item
相关的历史行为。attention-based
的精确exact
搜索,从而准确地accurately
捕获用户对于target item
的多样化的长期兴趣。这里我们通过对长期历史行为应用不同操作的实验来评估所提出的两阶段搜索架构的有效性。这些不同的操作如下:
Avg-Pooling without Search
仅仅简单地应用均值池化来聚合长期行为 embedding
,没有使用任何过滤。它和 Avg-Pooling Long DIN
相同。
Only First Stage(hard)
在第一阶段对长期历史行为应用硬搜索,并通过对过滤后的结果应用均值池化从而得到固定大小的、聚合的 embedding
,从而作为 MLP
的输入。即没有第二阶段搜索策略。
Only First Stage (soft)
几乎和 Only First Stage(hard)
,但是前者采用软搜索而不是硬搜索。
我们根据预训练pre-trained
的 embedding
向量,离线计算 target item
和长期用户行为之间的内积相似度得分。然后根据相似度得分选择 top 50
个相关行为来进行软搜索。
最后三个实验是我们提出的两阶段搜索架构的搜索模型。
实验结果如下表所示,可以看到:
embedding
相比,所有具有过滤策略的方法都极大地提高了模型性能。这表明在原始的长期行为序列中确实存在大量的噪声,而这些噪声可能会破坏长期用户兴趣的学习。attention-based
的搜索而取得了进一步的提升。这表明:精确地precisely
建模用户对 target item
的多样化的长期兴趣,有助于 CTR
预估任务。并且在第一阶段搜索之后,过滤后的行为序列通常比原始序列短得多,attention
操作不会给在线 RTP
系统带来太多负担。time embedding
的模型得到了进一步的提升,这表明不同时期 peroid
的用户行为的贡献是不同的。我们进一步对阿里巴巴在线展示广告系统收集的工业数据集进行实验,下表给出了实验结果。a
表示该模型目前已经部署在我们的在线serving
系统,并且服务于主要的流量。
SIM
相比 MIMN
在 AUC
上提升了 0.008
,这对于我们的业务而言意义重大。
和第一阶段使用硬搜索相比,第一阶段使用软搜索的性能更好。
在第一阶段,硬搜索和软搜索这两种搜索策略之间只有微小的差距。
online serving
中使用最近邻搜索,而硬搜索只需要从离线构建的两级索引表中检索。因此,硬搜索更加有效且系统友好。100
万个样本和 10
万个具有长期历史行为的用户进行了统计。结果表明:硬搜索策略保留的用户行为可以覆盖软搜索策略的 75%
。最后,我们在第一阶段选择更简单的硬搜索策略,这是在效率efficiency
和性能 performance
之间的 trade-off
。
在线 A/B test
:自 2019
年以来,我们已经在阿里巴巴的展示广告系统中部署了SIM
。从 2020-01-07 ~ 2020-02-07
,我们进行了严格的在线 A/B test
实验,从而验证 SIM
模型。和 MIMN
(我们的最新模型)相比,SIM
在阿里巴巴的展示广告场景中获得了巨大收益,如下表所示。现在,SIM
已经在线部署并每天为主要场景流量提供服务,这为业务收入的显著增长做出了贡献。
下表为 2020-01-07 ~ 2020-02-07
期间,SIM
相对于 MIMN
的在线效果提升,其中模型应用于淘宝 App
首页的“猜你喜欢” 栏目。
Rethinking Search Model
:我们在用户长期兴趣建模方面做出了巨大努力,所提出的 SIM
在离线和在线评估方面都取得了良好的性能。但是 ,由于进行了精确的precise
长期兴趣建模,SIM
的性能会更好吗?SIM
是否会倾向于推荐和人们长期兴趣相关的 item
?
为回答这两个问题,我们制定了另一个指标,即点击样本的 Days till Last Same Category Behavior
。 定义为:在点击事件发生之前,用户在相同类目cateogry
的item
上的最近行为距离当前点击事件的时间间隔。
例如,用户 点击了类目为 的 item
,并且用户 五天前点击了相同类目 的 item
(并且在这五天之内没有点击相同类目的其它item
)。如果将点击事件记作 ,那么样本 的Days till Last Same Category Behavior
为 5
,即 。此外,如果用户 历史上从未在类目 上有任何行为,我们设置 。
对于给定的模型,可以使用 来评估模型在长期兴趣long-term interest
或短期兴趣short-term interest
上的选择偏好selection preference
。
经过在线 A/B test
之后,我们根据提出的 指标分析了 SIM
和 DIEN
(这是短期的CTR
预估模型的最新版本)的点击样本。点击样本越多则说明模型效果越好(模型找的越准)。
根据 我们将点击样本(这里指的是模型预估参与竞价的结果)拆分为两个部分:长期的(>14
天)、短期的(<14
天)。方框显示了不同 的 SIM
模型点击样本的提升比例(相对于 DIEN
模型)。曲线表示不同 下不同模型找到的点击样本数量。
可以看到:在短期部分( )上的两个模型之间几乎没有差异,因为 SIM
和 DIEN
在过去14
天中都具有短期的用户行为特征。在长期部分,SIM
提升比例更大。
此外在工业数据集上,我们统计了 的均值、以及用户拥有和 target item
相同类目的历史行为的概率。结果如下表所示(在不同模型找到的点击样本上统计到的)。
结果表明:SIM
的提升确实是更好的长期兴趣建模的结果。并且和 DIEN
相比,SIM
倾向于推荐与人们长期行为有关的item
。
读者注:这里假设
A/B test
时流量相等,因此点击量的差异等价于CTR
的差异。
部署的实践经验:这里我们介绍了在线 serving
系统中实现 SIM
的实践经验。
阿里巴巴的高流量是众所周知的,它在流量高峰时每秒为超过100
万用户提供服务。此外,对于每个用户,RTP
系统需要计算数百个候选item
的预估CTR
。我们对整个离线用户行为数据建立一个两阶段索引,该索引每天都会更新:第一阶段是user id
;在第二阶段,一个用户的 life-long
行为数据由该用户所交互的类目来索引。
虽然候选item
的数量为数百,但是这些item
的类目数量通常少于 20
。同时,来自 GSU
的每个类目的子行为序列的长度被截断为不超过 200
(原始的行为序列长度通常小于 150
)。这样,来自用户的每个请求的流量是有限的并且可以接受的。
此外,我们通过 deep kernel fusion
优化了 ESU
中 multi-head attention
的计算。
下图显示了我们的实时 CTR
预估系统相对于 DIEN,MIMN,SIM
流量的效率。值得注意的是:
MIMN
可以处理的最大用户行为长度是 1000
,而这里显示的性能是基于截断的行为数据( MIMN
和 DIEN
中,用户行为的长度被截断为 1000
)。SIM
中的用户行为的长度不会被截断,并且可以扩展到 54000
,使得最大长度可以扩展到 54
倍。针对一万个行为的 SIM serving
,相比于截断用户行为的 MIMN serving
,latency
仅增加了 5ms
。DIEN
的最大流量为 200
,因此图中只有一个点。从互联网上大量可用的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
方法获得了更好的性能。我们还将其部署在我们的在线推荐系统中,并取得了显著的提升,证明了其在工业应用中的价值。
相关工作:我们提出的方法通过在整个空间上采用多任务学习框架来专门解决 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
问题。
在实践中,一个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
。
这里我们根据上图 (c)
中定义的有向图来介绍 CVR
的条件概率分解 conditional probability decomposition
,以及相关的辅助任务auxiliary tasks
。
定义 item
的 post view ctr
为:用户浏览到 item
的情况下点击它的条件概率。这由有向图中的路径 “曝光 --> 点击” 来描述。从数学上讲,这可以写成:
其中:
item
是否被点击。item
是否浏览。定义 item
的click-through DAction CVR
为:用户浏览到 item
的情况下执行 DAction
动作的条件概率。这由有向图中的路径 “曝光 --> 点击 --> DAction
” 来描述。从数学上讲,这可以写成:
其中:
表示 item
是否被执行 DAction
动作。
这里假设:如果用户未点击item
,则不会发生下一步的 DAction
动作。即:
表示路径 “点击 --> DAction
” 。
考虑到点击()一定意味着浏览(),因此 简化为:
定义 item
的CVR
为:在用户已点击item
的条件下购买item
的条件概率。这由有向图中的路径 “点击 --> D(O)Action
--> 购买” 来描述。从数学上讲,这可以写成:
其中:
item
是否被购买。DAction
-> 购买” 。这里我们假设DAction
()一定意味着点击()。OAction
-> 购买” 。这里我们假设OAction
()一定意味着点击()。定义 item
的 click-through CVR
为 为:用户浏览到 item
的情况下购买它的概率。这由有向图中的路径 “曝光 --> 点击 --> D(O)Action
--> 购买” 来描述。从数学上讲,这可以写成:
考虑到如果没有点击就没有任何购买,即:
则上式简化为:
因此,上式可以通过将有向图 “曝光 --> 点击 --> D(O)Action
--> 购买” 分解为 “曝光 --> 点击”、以及 “点击 --> D(O)Action
--> 购买”,并根据链式法则 chain rule
整合之前所有的公式(即 )从而得出。
从前面推导可以看到: 可以从四个隐概率变量hidden probability variable
中推导而来。每个隐概率变量代表有向图中某个子路径sub-path
上的条件概率,其中:
DAction
“ 的条件概率。DAction
-> 购买” 的条件概率。OAction
-> 购买” 的条件概率。此外,这四个子目标 sub-target
在整个空间中定义,并且可以使用所有曝光样本进行预测。以 为例,仅使用点击样本直接训练 会遇到 SSB
问题。 实际上根据前面的推导, 是从 和 派生的中间变量intermediate variable
。由于 和 都是使用所有曝光样本在整个空间上建模的,因此派生的 也适用于整个空间,因此在我们的模型中没有 SSB
。
另一方面, 给定用户的日志, 的 ground truth label
是可用的,这些 label
可用于监督这些子目标。
因此,一种直观的方法是通过多任务学习框架同时对它们进行建模。为此,我们提出了一种新颖的深度神经推荐模型neural recommendation model
,称作Elaborated Entire Space Supervised Multi-task Mode: ESM2
,用于CVR
预估。ESM2
之所以取这个名字是因为:
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
)。
整体模型如下图所示。
共享的 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
向量。令第 个样本第 个特征为 ,进行 one-hot
之后为 。第 个样本的 one-hot
特征为:
其中 为特征数量。
由于 one-hot
编码的稀疏性,我们使用线性的全连接层将它们嵌入到 dense representation
中。令第 个特征的 embedding
矩阵为 ,则第 个样本第 个特征的 embedding
为:
第 个样本的 embedding
特征为:
分解预估模块 :然后一旦获得了所有的特征 embedding
,就将这些 embedding
拼接到一起,馈入几个分解的预估模块,并由每个模型共享。DPM
中的每个预估网络分别在 “曝光 --> 点击”、“点击 --> DAction
”、“DAction
--> 购买”、“OAction
--> 购买” 等路径上预估分解的 target
的概率。
在本文中,我们采用多层感知机Multi-Layer Perception: MLP
作为预估网络。除了输出层之外,所有非线性激活函数均为ReLU
。对于输出层,我们使用 Sigmoid
函数将输出映射为 0.0 ~ 1.0
之间的概率值。从数学上讲,这可以写成:
其中:
sigmoid
函数。MLP
学到的映射函数, 为网络参数。例如,上图中的第一个 MLP
输出了估计的概率estimated probability
,这实际上是post-view CTR
。
顺序合成模块:最后我们设计了一个顺序合成模块,根据前面描述的公式合成上述预估概率,从而计算转化率 和一些辅助的目标auxiliary target
(包括post-view CTR
、click-through DAction CVR
、click-through CVR
等等)。
如上图的顶部所示,顺序合成模块是一个无参的前馈神经网络,它表示购买决策有向图purchasing decision digraph
所定义的条件概率。
注意:
embedding
,使这些任务使用所有曝光样本进行训练。即在整个空间上对这些任务进行建模,从而在推断阶段不会出现 SSB
问题。embedding
模块严格正则化,其中共享的 embedding
模块包含了大部分的训练参数。embedding
模块可以并行运行,因此在在线部署时可以有较低的 latency
。训练目标:令 表示训练集, 表示第 个曝光样本 的 ground truth label
(是否点击、是否发生deterministic action
、是否发生购买行为)。然后我们定义所有训练样本的联合 post-view pCTR
为:
其中 表示点击 label
空间 中的正样本和负样本。
使用负的对数函数进行变换之后,我们得到 的logloss
:
类似地,我们得到 和 的损失函数为:
其中: 表示 DAction label
空间 中的正样本和负样本; 表示购买label
空间 中的正样本和负样本。
最终的训练目标函数为:
其中:
ESM2
模型中的所有参数。1.0
。需要强调的是:
intermediate loss
来监督分解后的子任务,可以有效地利用后点击行为中丰富的标记数据,从而缓解模型受到 DS
的影响。SSB
的问题。为了评估 ESM2
模型的有效性,我们针对从现实世界电商场景中收集的离线数据集和在线部署进行了广泛的实验。我们将 ESM2
和一些代表性的 state-of-the-art
方法进行比较,包括 GBDT
、DNN
、使用过采样over-sampling
思想的 DNN
、ESMM
等。
首先我们介绍评估设置setting
,包括数据集准备、评估指标、对比的 SOTA
方法的简要说明、以及模型实现细节。然后我们给出比较结果并进行分析。接着我们介绍消融研究。最后我们对不同的后点击行为进行效果分析。
数据集:我们通过从我们的在线电商平台(世界上最大的第三方零售平台之一)收集用户的行为序列和反馈日志来制作离线数据集。
我们得到超过3
亿个样本,其中包含用户特征、item
特征、user-item
交叉特征以及序列的反馈标签sequential feedback label
(如,是否点击、是否DAction
、是否购买)。下表给出了离线数据集的统计信息。
我们将离线数据集进一步划分为不相交的训练集、验证集、测试集。
评估指标:为了全面评估ESM2
模型的有效性,并将其和 SOTA
方法进行比较,我们使用三种广泛采纳的指标:AUC
、GAUC
、F1 score
。
AUC
刻画了模型的排序能力ranking ability
:
其中:
GAUC
首先根据每个用户ID
从而将数据划分为不同的组,然后在每个组中计算 AUC
,最后对每个组的 AUC
加权平均。即:
其中:
1
。AUC
。F1 score
定义为:
其中 为 precision
、 为 recall
。
baseline
方法:
GBDT
:梯度提升决策树gradient boosting decision tree: GBDT
。它遵循gradient boosting machine: GBM
的思想,能够为回归任务和分类任务提供有竞争力的、高度健壮robust
的、可解释性的方法。本文中,我们将其作为 non-deep learning-based
方法的典型代表。DNN
:我们还实现了一个深度神经网络baseline
模型,该模型具有和 ESM2
中单个分支相同的结构和超参数。和 ESM2
不同,它是用 “点击 --> 购买” 或者 “曝光 --> 点击” 路径上的样本进行训练,从而分别预估转化率 或点击率 。DNN-OS
:由于 “曝光 --> 购买” 和 “点击 --> 购买” 路径上的数据稀疏性,很难训练具有良好泛化能力的深度神经网络。为了解决该问题,我们训练一个叫做 DNN-OS
的深度模型,它在训练期间利用了过采样 over-sampling
策略来增加正样本。它具有与上述 DNN
模型相同的结构和超参数。ESMM
:为了公平地进行比较,我们为 ESMM
使用与上述深度模型相同的主干结构backbone structure
。ESMM
直接在用户序列路径 “曝光 --> 点击 --> 购买” 上对转化率进行建模,而没有考虑和购买相关的后点击行为post-click behavior
。简而言之:
ESMM
和我们的 ESM2
,则是通过在整个空间上直接建模预估 和 。实验配置:
对于 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
。这些配置(基于深度神经网络的模型)如下表所示。
离线数据集的评估结果如下表所示。可以看到:
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
方法在不同的配置下也达到了最佳性能。
在线性能:在我们的推荐系统中部署深度网络模型并不是一件容易的事情,因为推荐系统每天服务于数亿用户。例如,在流量高峰时每秒超过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
问题,并获得最佳性能。消融研究:这里我们介绍详细的消融研究,包括深度神经网络的超参数设置、嵌入稠密数值特征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
激活函数来嵌入它们,即:
其中: 和 为第 个数值特征的均值和标准差。使用 函数是为了将特征调整到 (-1,+1)
之间。
然后我们将归一化的数值特征和嵌入的 ID
特征拼接在一起,作为 ESM2
模型的输入。
和基于离散化的方案相比,归一化的方案获得了 0.004
的 AUC
增益。因此,如果没有特别指出,那么实验中我们默认对稠密的数值特征使用基于归一化的方案。
分解的后点击行为的有效性:当分解后点击行为时,我们可以将不同的行为聚合到 DAction
节点中。例如only SCart
、only Wish
、SCart and Wish
。这里我们评估不同选择的有效性,结果如下表所示。
可以看到:SCart and Wish
的组合达到了最佳的 AUC
。这是合理的,因为和其它两种情况相比,SCart and Wish
有更多的购买相关的标记数据来解决 DS
问题。
用户行为的性能分析:为了了解 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
样本?或者把购买次数作为特征从而让模型知道这个信息?
推荐系统和内容个性化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
和 共享相同的主题topic
,并且用户喜欢新闻 ,则系统可以向用户推荐新闻 。类似地,如果两个用户 和 共享某些相似性similarity
(如地理位置location
相似、年龄相似、性别相同),则系统可以向用户 推荐用户 之前喜欢的 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
方法有着显著的优势。相关工作:已有大量文献对推荐系统进行广泛的研究。这里我们旨在回顾一组与论文提出的方法最相关的代表性方法。通常推荐系统可以分为协同推荐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
在协同过滤中对矩阵分解进行正则化。这里首先介绍数据集。我们描述了每个数据集的数据收集过程和特征表示feature representation
,以及数据集的一些基本统计信息。这里使用的四个数据集是从微软的几款产品的用户日志中收集的,包括:Bing Web vertical
的搜索引擎日志、Bing News vertical
的新闻浏览历史记录、Windows AppStore
的 App
下载日志、Xbox
的 Movie/TV
观看日志。所有日志都是在 2013-12 ~ 2014-06
期间收集的,并且重点关注美国、加拿大、英国等英语市场English-speaking markets
。
用户特征:我们从 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
向量。新闻特征:我们从 Bing News vertical
收集了点击的新闻 News
。每个新闻 item
由三部分的特征来表示:
letter tri-gram representation
编码的标题特征。top-level
类目category
(如娱乐Entertainment
) 编码的二元特征。NLP parser
抽取的命名实体Named Entities
,这些命名实体也是通过 letter tri-gram representation
来编码。这三部分得到的新闻特征向量为 10
万维。
App
特征:我们从 Windows AppStore
日志中收集用户历史下载的 App
。每个App item
由两部分的特征来表示:
letter tri-gram representation
编码的App
标题特征。App
的类目category
(如游戏 Game
) 编码的二元特征。考虑到 App
描述信息 descriptions
不断的变化,我们决定不将它纳入特征空间中。最终得到的 App
特征向量为 5
万维。
Movie/TV
特征:我们从 XBox
日志中收集了每个 XBox
用户观看的历史 Movie/TV
。每个 item
由两部分的特征来表示:
item
标题和描述信息description
合并为文本特征 text features
,然后使用 letter tri-gram
来编码。item
的流派 genre
编码的二元特征。最终得到的 Movie/TV
特征向量为 5
万维。
在我们的神经网络框架中,用户特征被映射到用户视图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
?因为搜索数据的规模最大、用户行为最丰富、暴露用户的主动意图,从而能够更好地刻画用户兴趣。
在论文 《Learning deep structured semantic models for web search using click-through data》
中引入了深度结构化语义模型 deep structured semantic model: DSSM
,从而增强 web
搜索上下文中的query document
匹配。考虑到 DSSM
和我们提出的 MV-DNN
模型密切相关,因此这里我们简要回顾一下 DSSM
。
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
。正式而言,对于DSSM
中的单个神经网络,如果我们将 表示为输入的 term vector
,将 表示为输出向量,将 表示为中间的隐向量 hidden vector
。令 为第 层的权重矩阵, 为第 层的偏置向量,那么有:
其中 为非线性激活函数,这里我们使用 tanh
函数:
然后,query
和 document
之间的语义相关性得分 semantic relevance score
为:
其中 和 分别为 query
语义向量和 document
语义向量。
在 web
搜索中,给定 query
条件下,document
按照它和 query
之间的语义相关性得分semantic relevance score
进行排序。
传统上,每个单词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
的权重矩阵 表示从 term-vector
映射到 letter tri-gram count vector
的 letter tri-gram
映射矩阵,这不需要学习。
尽管英语单词的总量可能非常庞大,但是英语(或者其它类似语言)中不同的 letter tri-grams
总量通常是有限的。因此,这种做法可以泛化到没有在训练集中出现的新单词。
在训练中,假设 query
和针对该query
点击的 document
相关,我们利用这一信号来训练 DSSM
的参数,即权重矩阵 、偏置向量 。
首先,给定query
的条件下,一个 document
被点击的概率是通过 softmax
函数从它们之间的语义相关性得分来估计:
其中:
为softmax
函数中的平滑因子 smoothing factor
,并且通常是根据实验中的验证集来设定的。
为待排序的候选document
的集合。理想情况下 应该包含所有可能的 document
。
实际上对于每个 (query, clicked-document)
的 pair
对,记作 其中 为 query
、 为点击的 document
,我们使用 和 个随机选择的未点击 document
来近似 。即:
然后,我们通过最大化在整个训练集上的、给定query
条件下点击document
的 likelihood
来估计模型参数:
其中 为模型的参数集合。
注意,虽然目标函数 中没有负样本的损失函数,但是 中有负样本参与计算。而且 ,因此 尽可能大意味着 尽可能小。
DSSM
可以视作一个多学习框架 multi-learning framework
,它将数据的两个不同的视图映射到一个共享视图 shared view
。从这个意义上讲,可以从更一般地角度来学习两个不同视图之间的共享映射 shared mapping
。
在这项工作中我们提出了 DSSM
的扩展,其中包含有两个以上的数据视图,我们称之为多视图 DNN
模型 Multi-view DNN: MV-DNN
。在这种配置 setting
下我们有 个视图,其中一个中心视图pivot view
称作 ,其它 个辅助视图 auxiliary views
记作 。
domain input
,其中 为第 个视图的样本数、 为第 个视图的输入维度。shared semantic space
。MV-DNN
的体系架构如下图所示。在我们的推荐系统设置setup
中,我们将中心视图 设为用户特征,并为我们要推荐的每种不同类型的 item
创建辅助视图。
下图中,MV-DNN
将高维稀疏特征(如用户、新闻、App
中的原始特征)映射为联合语义空间joint semantic space
中的低维稠密特征。 DNN
第一个隐层(具有 5
万个单元)完成单词哈希word hashing
。然后将 word-hashed
特征通过多个非线性层来投影,其中最后一层的激活值构成了语义空间中的特征。
注意:该图中的输入的特征维度(5M
和 3M
)是假设的,因为实际上每个视图可以具有任意数量的特征。
给定训练的一组 user-item view pair
,假设第 个样本具有中心视图特征 、以及某个活跃的辅助视图特征 ,其中 。所有其它辅助视图的输入 都设为零向量。
MV-DNN
的目标函数是为每个视图找到一个非线性映射,使得在语义空间中,中心视图的映射 和其它所有视图的映射 之间的相似度之和最大化。数学上表述为:
其中: 为辅助视图的总数, 为第 个辅助视图的样本数, 为第 个辅助视图的 item
数量, 为第 个辅助视图的平滑因子。
该目标函数就是将各辅助视图的目标函数相加。
具有该目标函数的直觉是:试图为用户特征找到单个映射 single mapping
,该映射可以将用户特征转换到一个匹配不同视图/领域中用户喜欢的所有 item
的空间中。
这种共享参数的方式允许没有足够信息的领域通过具有更多数据的其它领域来学习良好的映射。例如,如果我们假设具有相似新闻News
偏好的用户在其他领域中也具有相似的偏好,那么这意味着其它领域也可以从新闻领域学到的用户映射中受益,那么这种方式应该会很好地工作。
如果该假设成立,那么来自任何领域的样本都将有助于所有领域中更准确accurately
地对相似用户进行分组。实验结果表明,该假设在我们实验的领域是合理的,我们将在实验部分进一步阐述。
DSSM
和MV-DNN
的目标函数评估的是:最大化正样本和负样本之间的相对序关系。这和CTR
预估任务中的logloss
目标函数不同,后者的目标是准确预估样本的点击率。因此DSSM
和MV-DNN
无法直接应用与CTR
预估任务,而只能用于推荐任务。
MV-DNN
训练:可以使用随机梯度下降 Stochastic Gradient Decent: SGD
来训练 MV-DNN
。
实际上每个训练样本都包含一对a pair
输入,一个用于用户视图user view
、一个用于数据视图data view
。因此,尽管在我们的模型中仅有一个用户视图,但是使用 个用户特征文件 user feature files
会更方便,每个文件对应于一个 item
特征文件 item feature file
。
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
。
在实践中,MV-DNN
通常需要在高维特征空间中为用户视图处理大量的训练样本。为了系统的可扩展性,我们提出了几种降维技术来减少用户视图中的特征数量。
然后,我们提出了一种压缩compact
和摘要summarize
用户训练样本的思想,从而将训练数据的数量缩减 reduce
到用户数量的线性关系。
用户特征降维技术(仅用于用户视图):
top
特征:一种简单的用户特征降维方法是选择 top-K
的最高频 most frequent
特征。
我们选择特征出现频率 >= 0.001
的用户特征。 主要的基本假设是:可以使用一组相对较小的、解释用户常见在线行为 common online behavior
的常用特征 frequent feature
来很好地描述用户。
注意,用户的原始特征使用 TF-IDF
得分进行预处理,以便我们选择的 top
特征不再包含搜索query
中的常见停用词。最终用户特征的维度为 8.3
万。
K-means
:K-means
是一种众所周知的聚类技术,旨在创建多个聚类使得每个点与其最近的聚类之间的距离之和最小化。
这里的基本思想是:将相似的特征分组到同一个簇中。
给定输入 ,我们根据列来拆分得到 个样本点point
。
然后对这 个点聚类为 个簇, 。
然后我们统计这些簇中分别有多少个点。假设簇 中有 个点,则我们得到簇向量 。其中 。
这相当于将 个特征降维到 个特征。这是基于特征的聚类,而不是基于样本的聚类。
然后我们归一化 ,得到 。
实际上可以不用归一化。可以通过实验对比归一化和未归一化的效果。
对于用户特征向量 ,我们假设它在的非零特征为 ,这些特征对应的簇为 。则用户特征向量降维为:
为了能够使用 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
需要一个变换矩阵 ,其中 为原始空间中的特征数量, 为随机投影的数量。这意味着 包含 个不同的投影,我们记作 。每个投影 将原始输入向量 映射到一个哈希值 。LSH
的输出向量 可以通过拼接所有不同的哈希值 来得到。
具体而言,为了计算每个 ,我们使用以下方程:
两个输入向量 的余弦相似度可以近似为 ,其中 为LSH
输出向量 和 的汉明距离。为了以更高的准确率accuracy
保持余弦相似度,我们需要提高投影数量 。我们使用 ,这和 k-Means
聚类的簇数量相同。
LSH
可以独立地应用于每个特征向量,并且可以独立地计算所有投影,因此使得该算法在 Map-Reduce
框架内高度可分布distributable
。但是,LSH
算法需要生成变换矩阵 ,在我们的case
中该矩阵包含从标准正态分布 中随机生成的 个元素,这大概需要 300GB
的存储空间。此外,在计算 LSH
向量的时候,必须将 存储在每个计算节点上。这些问题使得 LSH
在 Map-Reduce
框架中代价太大。
人们已经提出了很多方案来解决这个问题,其中大多数方案都是基于生成稀疏矩阵 。这里我们使用《Online generation of locality sensitive hash signatures》
中介绍的池化技巧pooling trick
。 基本思想是:保留一个由 生成的、size
为 的随机数池子 ,其中 通常要远远小于 的 size
。为了获得元素 ,只需要应用 的一致哈希函数consistent hash function
来获得 中的索引并查找对应的值。在我们的实验中,我们设置 ,这样一来内存需求减少了 10000
倍,并且可以在 Map-Reduce
期间仅使用 10M
的存储空间轻松地存储在每个节点上。
减少训练样本的数量:每个视图的训练数据包含 pair
对 的集合,其中 偏好 。实践中,用户可能会喜欢很多item
,这可能使得训练数据非常大。例如,在我们的新闻News
推荐数据集中,pair
对的数量远远超过 10
亿。即使使用优化的 GPU
实现optimized GPU implementation
,训练也会非常慢。
为了缓解这个问题,我们压缩了训练数据,使得每个视图中每个用户都包含一个训练样本。具体而言,压缩的训练样本使用了用户在该视图中喜欢的所有 item
的特征的均值(即对 item
特征进行均值池化)。这样可以将每个视图的训练样本数量降低为用户数量,从而大大减少了训练数据的大小。
注意,这种技术的一个问题是:目标函数现在变成了最大化用户特征和用户喜欢的item
的平均特征之间的相似性。在评估的时候有细微的差异,因为在测试期间每个用户只能提供一个 item
。但是,这种逼近approximation
是必要的,使得系统有很好的可扩展性。此外,实验结果表明:这种逼近在实践中仍然会产生非常有前景的结果。
这里我们将解释我们的实验研究过程,并简要回顾了我们作为 baseline
的几种推荐算法。
数据集:对于每个数据集,我们旨在评估已经在该领域中具有历史交互的用户(老用户)、以及在该领域中没有任何历史交互但是在用户视图中具有历史搜索和浏览行为的用户(新用户)。为了进行评估,我们根据以下标准将数据集划分为训练集和测试集:
首先,以 0.9 : 0.1
的比例为每个用户随机分配一个 train
或者 test
的标记。
然后,对于每个带 test
标记的用户,我们以 0.8 : 0.2
的比例将其进一步随机分配一个 old
或者 new
标记。
接着,对于每个带 old
标记的用户,他们的 50%
的 item
用于训练、剩余的用于测试。
于每个带 new
标记的用户,他们的所有 item
都用于测试,从而确保这批用户的 user-item
的 pair
永远不会出现在训练过程中。通过这种方式,这批用户都成为系统的全新用户。
数据集的详细划分信息在下表所示。
性能评估:对于训练数据集中的每个 的 pair
对,我们随机选择其它的 9
个 item
,其中 都是随机的索引,然后创建 9
个测试的 pair
对 并添加到测试数据集。
评估指标是:衡量系统对用户 是否将正确的 pair
对 排序在随机的 pair
对 之上。因此,我们采用了两个指标:
Mean Reciprocal Rank: MRR
:计算所有 item
中正确 item
的排名的倒数,然后对整个测试数据集的得分进行平均。Precision@1: P@1
:计算系统将正确item
排名为 top 1 item
的次数占比。注意:这种随机抽取
item
为负样本的方式有可能导致负样本太简单。可以考虑同类目或者同主题下抽取负样本,从而得到hard
负样本来评估。
baseline
方法:
标准的 SVD
矩阵分解:在这个 baseline
中,我们构建 user-item
矩阵,并使用 SVD
执行矩阵分解。这是协同过滤技术的标准 baseline
。
实际上,该 baseline
仅在相对较小的数据集(在我们的 case
中为 Apps
数据)上在计算上是可行的。此外,该方法不能为新用户提供推荐,因为他们没有出现在 user-item
矩阵中。
最热门item
:由于 SVD
无法处理新用户的推荐,因此我们使用最热门item
作为新用户的简单 baseline
。
它的工作原理是首先计算训练集中每个 item
的频次frequency
,然后针对每个测试样本 及其随机pair
对 ,该方法根据训练集中 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
进行建模。对于我们场景中的新用户推荐,我们将协同矩阵 的转置作为输入,并提供用户特征而不是 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
数据。我们评估了 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
数据集的结果:
为了探索从系统中学到的模型的有效性,我们执行以下实验来测试单特征输入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
对于目标任务而言是未知的。
公共数据集:为进一步展示我们的方法在跨域用户建模方面的优势,我们对公共数据集进行了一系列实验。
数据集包含来自五个领域(数据挖掘、理论等等)的 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
次迭代。
可扩展性:这里我们根据训练时间来比较各种算法的性能。我们的方法使用 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
的过程以及不同视图的收敛速度不同,因此使用早停以进一步提高模型的可扩展性成为未来的关键工作。
随着机器学习模型,尤其是推荐系统模型的日益复杂,如何有效地处理丰富的输入特征成为一个关键问题。对于工业环境中的在线推荐器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
的难度。假设存在一个最优函数 来建模特征 和 之间的 co-action
,通过在输入阶段显式提供 可以大大减轻学习难度。
为了验证论文的假设,即当前的方法无法完全捕获feature co-action
,论文回顾了 state-of-the-art
的方法和设计实验,从而表明探索feature co-action
潜力的简单方法可以提高性能。例如,如果选择了特征 和 ,那么 的共现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
。这种参数化将追加参数的规模从 降低到 而且实现更好的性能,其中 为特征数量、 为特征维度、 为 embedding
维度, 。
具体而言,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
,因此受到研究人员和业界从业者的关注。相关工作::一些研究工作致力于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
问题并降低模型容量。
假设有三个特征:性别、地点、星期。某个样本的特征为:“男性”、“上海”、“周日”。因此有:
因此有梯度:
假设性别和星期是独立的,那么理想情况下 应该和 是正交的。但是上述梯度会沿着 的方向更新 。这就是梯度耦合问题,这是由于在不同类型的 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
的能力。
feature co-action
回顾:这里我们首先简要介绍一下 CTR
预估中的feature co-action
,然后我们回顾建模feature co-action
的 state-of-the-art
方法。
在广告系统中,用户 点击广告 的预估点击率 是通过以下方式计算:
其中:
embedding
函数,它将稀疏的 ID
特征映射到可学习的、稠密的 embedding
向量。其中 为 embedding
维度。除了这些一元特征,一些工作将特征交互建模为 DNN
的附加输入:
其中 表示用户特征 和广告特征 之间的特征交互。
特征交互的融合改善了预测结果,这表明来自不同 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
。然而,这也存在一些严重的缺陷:
第一个问题是参数爆炸问题。例如,取值空间大小为 和 的两个特征做笛卡尔积,那么参数空间从 扩展到 ,这会给在线系统带来很大的负担。
此外,包含相同特征的两个组合之间没有信息共享,这也限制了笛卡尔积的表达能力。
另外,笛卡尔积的方式也无法泛化到训练期间
unseen
的特征组合。
一些工作尝试使用特殊的网络结构来建模 feature co-action
。然而,大多数这种相互交互的结构,与特征组 feature groups
的 representation
之间没有任何区别。
为了不受笛卡尔积和其它先前工作缺陷的情况下利用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
的独立性。
CAN
的整体架构如下图所示。用户特征和 target item
特征以两种方式输入到 CAN
中。
在第一种方式中,所有的用户特征 和target item
特征 都使用 embedding layer
编码为稠密向量,然后分别拼接为 和 。
在第二种方式中,来自 和 的部分特征被选择并映射到co-action unit
的 和 从而进行 co-action modeling
。co-action unit
的算子operator
定义为:
它扮演 MLP
的角色,它的参数来自于 、输入来自于 。co-action unit
的细节后面详述。
CAN
的最终架构形式化为:
其中: 为预估的点击率, 为co-action unit
的 lookup table
的参数, 为 DNN
的参数。
ground truth
记作 。我们最终最小化 和 之间的交叉熵损失函数:
其中 为feature embedding
的参数(用于计算 )。
co-action unit
: co-action unit
的详细结构如上图左侧部分所示。每个 item
特征通过 MLP table lookup
从而对应一个多层感知机 ,而用户特征被视为这些 MLP
的输入。 输出的feature co-action
和 common feature embeddings
一起用于最终的 CTR
预估。
注意:上图中
Parameter lookup
独立于Embedding Layer
,这使得representation learning
和co-action modeling
是独立的。
作为 中每一层的 weight
和 bias
, 作为 的输入从而得到 co-action
输出 ,其中 为 unique ID
数量, 和 为向量维度, 。
item
是所有 item
中的一小部分,因此其数量小于用户点击历史中的 item
数量。因此,我们选择 作为 的参数。reshape
为 层MLP
的权重矩阵和 bias
向量。给定某个 item ID
特征的参数 、给定某个 user ID
特征的参数 。我们首先将一维向量 reshape
为 中所有层的权重矩阵和 bias
向量,即:
其中 和 为 第 层的权重和偏置,一共有 层。
然后 feature co-action
计算为:
其中: 为激活函数, 为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
需要学习相当大规模的参数。例如,考虑两个具有 个 ID
数量的特征。如果我们通过学习笛卡尔积的 embedding
来学习 co-action representation
,则参数的规模应该是 ,其中 为 embedding
维度。但是,通过使用co-action unit
,这个规模可以降低到 ,其中 为co-action unit
的维度。更少的参数不仅有利于学习,还可以有效减轻在线系统的负担。co-action unit
对新的特征组合具有更好的泛化能力。给定一个新的特征组合,只要之前训练过两侧的 embedding
,co-action unit
仍然可以工作。读者注:为简化讨论,假设 co-action unit
没有非线性激活函数、也没有 bias
。用户侧的 embedding
,item
侧有一组 个 embedding
,因此特征组合得到新的交叉特征为 。
如果 co-action unit
为 层,则 item
侧的 embedding
为:
得到的交叉特征为:
因此 item
侧的 embedding
可以视为高阶的( 阶)、multi-head
(第 阶的 head
数量为 )的 embedding
。如果muti-head
退化为 single-head
、并且不同阶次的 item embedding
共享,则 co-action unit
退化回 Deep Cross Network
。
co-action unit
类似于 DIN
,它们都是仅考虑和 target item
的交互。但是它们交互的方式(即交互函数)不同。co-action unit
类似于 xDeepFM
,它们都是显式建模特征交互,但是 xDeepFM
考虑了更 field
的特征交互。因此这篇论文创新点存疑,并且 co-action unit
是否能够捕获feature co-action
也是存疑的。
多阶加强Multi-order Enhancement
:前面提到的feature co-action
基本上是基于一阶特征形成的,也可以在高阶上估计特征交互。虽然co-action unit
可以利用深层 MLP
隐式地学习高阶特征交互,但是学习过程被认为很漫长。为此,我们在co-action unit
中显式引入多阶信息从而获得多项式输入。这是通过将 应用于 的不同阶次来实现的:
其中 为阶次。
这里的近似是假设不同阶次之间的权重是共享的。
注意:当 时,使用 SeLU
作为激活函数;当 时我们使用 tanh
激活函数,从而避免由于高阶项引起的数值问题。
多阶增强multi-order enhancement
有效地提升了模型对 co-action modeling
的非线性拟合能力,而不会带来额外的计算和存储成本。
多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
组合,反之亦然,因此我们的方法以指数方式扩大了它们的维度。假设有 个权重侧 embedding
和 个输入侧 embedding
,那么我们将权重侧 embedding
的维度扩大 倍、将输入侧 embedding
的维度扩大 倍:
其中 为 的输入维度, 为参数维度。
在前向传播中,这些 embedding
被分为几个部分来完成 MLP
操作。
level 3
:阶次独立性,这是可选的。为了进一步提高多阶输入中co-action modeling
的灵活性,我们的方法对不同的阶次使用了不同的权重侧 embedding
。权重侧 embedding
的维度也相应增加了 orders
倍。
注意,此时由于 在不同阶次中不共享参数,因此以下的近似不可行:
协作独立性co-action independence
有助于co-action modeling
,但是同时也带来了额外的内存访问和计算成本。在独立性level
和部署成本之间存在 tradeoff
。从经验上来讲,模型使用的独立性level
越高,模型需要的训练数据就越多。在我们的广告系统中,我们使用了 三个 level
的独立性。但是由于缺乏训练样本,我们在公共数据集中仅使用了 embedding
独立性。
数据集:我们使用三个公开可访问的数据集进行 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
天被视为验证集。
数据集的统计信息如下表所示。
baseline
方法:在本文中,我们使用 DIEN
作为 CAN
的base model
。请注意,由于co-action unit
是可插拔模块,因此允许使用其它任何模型。
为了验证我们方法的有效性,我们将 CAN
和当前聚焦于特征交互的方法进行了比较。为了公平比较,DIEN
被用作这些方法的 basis
。
DIEN
:它设计了一个兴趣抽取层来从用户行为序列中捕获用户兴趣。兴趣演化层进一步用于对兴趣演化过程进行建模。Cartesian Product
:它是将两个集合相乘从而形成所有有序pair
对的集合。有序pair
对的第一个元素属于第一组集合、第二个元素属于第二组集合。PNN
:它使用 product layer
和全连接层来探索高阶特征交互。NCF
:它提出了一种神经网络架构来学习user
和 item
的潜在特征,这些特征用于使用神经网络对协同过滤进行建模。DeepFM
:它是一种新的神经网络架构,它结合了FM
和深度学习的能力。实现:我们使用 Tensorflow
实现了 CAN
。
MLP
,权重维度为 4 x 4
,这导致 的维度为 (4 x 4 + 4) x 8 = 160
(包括 bias
)。2
。0
、标准差为 0.01
)。优化器为 Adam
,batch size = 128
,学习率为 0.001
。MLP
来预测最终的 CTR
,隐层维度为 200 x 100 x 2
。模型的评估指标为 AUC
。
下表给出了 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
。
消融研究:为了研究每个组件的影响,我们进行了几项消融研究,如下表所示。
多阶multi order
:首先我们评估多阶的影响。在 一阶项的基础上,我们逐渐增加了二阶项、三阶项、四节项。可以看到:
AUC
提升了很多。多阶对于性能增益的影响很小,因此在实践中我们使用 2
阶或者 3
阶是合适的。
MLP
深度:其次,我们展示了 架构对于 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
的作用,从而避免高阶次的数值稳定性问题。模型通用性 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
显示出对新特征组合的出色泛化能力。在真实的工业环境中,特征组合非常稀疏,只要 和 训练好,使用 CAN
处理新的特征组合就容易的多。
工业数据集上的结果:
在线 Serving
和挑战:一开始我们在我们的系统上部署了笛卡尔积模型,这造成了很多麻烦。
ID
低频过滤,模型大小也以极大的速度扩大。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
计算涉及到 和 之间的一个耗时的大矩阵乘法,它们的形状分别为 [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
的提升。