十四、DSIN
CTR
预测任务中,一个持续研究的主题是:如何从用户行为序列中捕获用户不断变化的兴趣。大多数现有的研究都忽略了用户行为序列的内在结构:用户行为序列是由会话
session
组成的。其中会话是在给定时间内用户行为的列表。- 会话是根据时间来划分的。如:如果两次用户行为超过一定时间间隔(如 1小时),则它们分别属于两个独立的会话。
- 同一个会话中的用户行为是高度同构的,不同会话中的行为是高度异构的。
如下图所示,论文从淘宝中抽取了一名真实用户,根据其行为序列发生的时间划分为三个会话,每个会话的时间间隔超过30分钟。
- 横坐标为时间,纵坐标为会话
ID
。图片下方的数字为时间,代表了点击当前商品和点击第一个商品之间的时间间隔(单位秒)。 - 用户在
Session 1
中浏览裤子、在Session 2
中浏览戒指、在Session 3
中浏览外套。
这个现象是普遍的,它反映了一个事实:
- 用户通常在一个会话中具有明确的特定意图。
- 当用户开始新的会话时,用户兴趣可能会急剧变化(相对于旧会话的用户兴趣)。
基于此现象,论文
《Deep Session Interest Network for Click-Through Rate Prediction》
提出了模型Deep Session Interest Network:DSIN
,该模型利用用户的历史会话来建模用户行为序列。
14.1 模型
DSIN
包含三个关键部分:第一部分:将用户行为划分为会话,然后使用
bias encoding
的自注意力机制对每个会话建模。自注意力机制可以捕获会话内部的相关性,然后提取用户在每个会话的兴趣。这些不同的会话兴趣可能会彼此相关,甚至会遵循某种序列模式。
第二部分:利用双向
LSTM
来捕获用户不同的历史会话兴趣的交互和演变。第三部分:考虑到不同的会话兴趣对目标商品有不同的影响,论文设计了局部激活单元来聚合这些会话兴趣,从而生成用户行为序列的最终表达。
BaseModel
基准模型:基准模型采用Embedding &MLP
结构,其中:特征:
BaseModel
中采用三组特征,每组特征都由一些稀疏特征构成,包括:- 用户画像:包括性别、城市等。
- 商品画像:包含商品
id
、卖家id
、品牌id
等。 - 用户历史行为:包含用户最近点击商品的商品
id
。注意:商品的附带信息可以拼接起来从而表示商品。
embedding
:通常我们采用embedding
技术来将稀疏特征映射到低维的dense vector
。用户画像的
embedding
为 ,其中 表示用户画像的稀疏特征数量, 为embedding
向量维度。商品画像的
embedding
为 ,其中 表示商品画像的稀疏特征数量, 为embedding
向量维度。用户历史行为的
embedding
为:其中 为用户历史行为数量, 为第 个行为的
embedding
向量, 为embedding
向量维度。
MLP
:我们将用户画像embedding
、商品画像embedding
、用户历史行为embedding
拼接、展平然后馈入MLP
网络中。在
MLP
中,我们采用ReLU
激活函数并使用softmax
输出单元来预测用户点击商品的概率。损失函数:我们采用负的对数似然作为损失函数:
其中:
- 为训练集, 为样本数量
- 为样本经过
embedding
的特征, 标记用户是否点击, 表示网络预测用户点击的概率。
由于用户在不同的会话中表现出不同的兴趣,以及用户不同会话的兴趣之间存在关联,因此
DSIN
采用专门的组件来提取会话兴趣、捕获会话兴趣序列的关系。DSIN
的基础架构类似BaseModel
的Embedding&MLP
架构,但是DSIN
模型在Embedding
和MLP
之间还有四个layer
,从上到下依次为:- 会话划分层
session division layer
:将用户行为序列划分为不同的会话。 - 会话兴趣提取层
sessioin interest extractor layer
:抽取用户的会话兴趣。 - 会话兴趣交互层
sesion interest interaction layer
: 捕获用户的会话兴趣序列关系。 - 会话兴趣激活层
session interest activating layer
: 采用局部激活单元来建模会话兴趣对目标商品的影响。
最后会话兴趣激活层的输出和用户画像
embedding
、商品画像embedding
一起馈入MLP
来执行预测。- 会话划分层
14.1.1 会话划分层
为了更精确的抽取用户的会话兴趣,我们将用户行为序列 划分为会话序列 ,其中第 个会话为:
其中:
- 为第 个会话中的行为数量, 表示从第 到第 个会话的累积行为数量。
- 表示第 个会话中第 个用户行为
embedding
向量。
通常拆分依据是:如果两个相邻的用户行为时间间隔超过,比如说30分钟,则将它们划分到两个会话中。否则它们同属于同一个会话。
这个时间间隔根据不同的应用场景而选择不同的值。
14.1.2 会话兴趣提取层
同一会话的行为彼此密切相关,但是也有一些偶然行为与会话整体行为关系不大。
为了捕获同一会话行为之间的内在关系,并且减少无关行为的影响,论文在每个会话中采用
multi-head self-attention
机制。另外,论文还对
self-attention
机制做了一些改进,从而更好地实现会话兴趣提取这一目标。Bias Encoding
:自注意力机制将位置编码应用于input embedding
,但是在DSIN
中我们还需要捕获会话之间的位置关系和bias
,因此论文提出了bias encoding
来融合session bias
、posision bias
、unit bias
。为了讨论方便,假设所有会话的序列长度均为 、会话数量为 。则bias encoding
为:其中:
- 是会话的
bias
向量; 为第 个分量,代表第 个会话的bias
; 为会话总数。 - 为用户行为的
bias
向量; 为第 个分量,代表会话 中第 个用户行为的bias
; 为会话 中用户行为总数 。 - 为用户行为
embedding
的unit
的bias
向量; 为第 个分量,代表embedding
向量第 个unit
的bias
; 等于 。
采用
bias encoding
之后,用户的会话更新为:其中 。
- 是会话的
Multi-head self-attention
:在推荐系统中,用户点击行为会受到多种因素的影响(如颜色、款式、价格)。multi-head self-attention
可以捕获这类不同的表示子空间。假设将第 个会话沿着维度方向拆分为 个
head
:其中: 表示第 个
head
的输入; 为head
数量, ; 表示 的第 个head
。则第 个
head
的输出为:其中 为对应的映射矩阵。
拼接不同
head
的输出然后馈送到一个前馈神经网络:其中 为前馈神经网络, 为一个映射矩阵。
在前馈神经网络中,论文也采用了残差连接和
layer normalization
。对输出的一组向量进行池化操作,则得到第 各会话兴趣为:
其中 为平均池化操作。
注意:不同会话的
self-attention
机制中的权重是共享的。
14.1.3 会话兴趣交互层
针对会话兴趣的动态变化建模可以丰富会话兴趣的表示。论文通过
Bi-LSTM
对DSIN
中的会话兴趣交互进行建模:其中 为
sigmoid
函数; 为输入门、遗忘门、输出门、cell
向量,其维度和 维度相同。上述只是前向状态,考虑到前向、反向两个方向,隐向量计算为:
其中 为
Bi-LSTM
前向隐向量, 为Bi-LSTM
反向隐向量。
14.1.4 会话兴趣激活层
和目标商品相关性更强的会话兴趣对于用户的点击意愿的影响更大。因此对于每个目标商品,用户的会话兴趣需要重新分配权重。这里论文采用注意力机制分别将会话兴趣提取层、会话兴趣交互层的输出向量序列进行注意力融合:
会话兴趣提取层:
其中 为目标商品的
embedding
向量, 为对应权重, 为第 个会话的会话兴趣对目标商品的注意力得分。会话兴趣交互层:
其中 为目标商品的
embedding
向量, 为对应权重, 为第 个会话的会话交互结果对目标商品的注意力得分。
注意:这里计算注意力得分时没有进行维度缩放处理,标准的注意力得分为:
将用户画像
embedding
向量、商品画像embedding
向量、、 一起拼接作为MLP
层的输入。
14.2 实验
数据集:
Advertising Dataset
:由阿里妈妈发布的公共数据集。数据集包含连续8
天的用户曝光、点击日志,共覆盖100
万用户、80
万广告,包含2600
万条记录。数据集中记录了用户最近的200
个历史用户行为。我们采用前
7
天的数据为训练集,第八天数据为测试集。Recommender Dataset
:阿里巴巴线上推荐系统数据集。该数据集包含连续8
天的60
亿个曝光、点击日志,分别有1
亿用户和7000
万商品。数据集中也记录了用户最近的200
个历史用户行为。我们采用前
7
天的数据为训练集,第八天数据为测试集。
比较模型:
YoutubetNet、Wide&Deep、DIN、DIN-RNN、DIEN
。其中DIN-RNN
和DIN
结构相似,但是DIN-RNN
采用Bi-LSTM
对用户的历史行为进行建模。评估指标:
AUC
。模型评估结果如下表。其中:
YoutubeNet-NO-UB
表示不带用户行为信息的YoutubeNet
DSIN-PE
表示带positional encoding
的DSIN
DSIN-BE-No-SIIL
表示带bias encoding
但是没有会话兴趣交互层及对应的激活单元的DSIN
DSIN-BE
表示带bias encoding
以及其它完整结构的DSIN
结论:
由于用户行为的原因,
YoutubeNet
的表现要优于YoutubeNet-No-User-Behavior
Wide&Deep
由于结合了wide
侧的记忆功能从而获得更好的结果。由于用户行为序列的不连续性,两个数据集中的
DIN-RNN
结果都比DIN
差。DIEN
获得更好的结果,但是辅助损失和经过特殊设计的AUGRU
产生了对行为原始表达的偏离deviating
。DSIN
在两个数据集上获得最佳结果。DSIN
将用户的历史行为提取到会话兴趣层,并对会话兴趣的动态演变过程进行建模。这两者都丰富了用户的表达。另外,
DSIN
的本地激活单元有助于获得针对目标商品的用户会话兴趣的自适应表达。
如上表所示,
DIN-RNN
在DIN
基础上增加了序列建模,但是效果比DIN
差;而DSIN-BE
也在DSIN-BE-NO-SIIL
基础上增加了序列建模,但是效果比DSIN-BE-NO-SIIL
好。为什么同样增加了序列进行建模,而前者效果差后者效果好?
在
DIN-RNN
中,行为的快速跳变和突然结束导致用户的行为序列噪声大。这将导致RNN
中信息传输过程中有效信息丢失,从而进一步扰乱了用户行为序列的正确表达。在
DSIN
中,我们将用户行为序列划分为多个会话,其中:- 用户行为在每个会话中通常都是同质的
- 用户的会话兴趣遵循序列模式,因此更适合序列建模
由于这两个因素,
DSIN
提高了性能。
如上表所示,
DSIN-BE
比DSIN-BE-NO-SIIL
仅仅多了会话兴趣交互层及对应的激活单元。结果表明DSIN-BE
效果更好。通过会话兴趣交互层,用户的会话兴趣和上下文信息(历史兴趣上下文,如上一个兴趣、上上一个兴趣等等)融合在一起从而更具有表达能力,从而提高了
DSIN
的性能。如上表所示,
DSIN-BE
和DSIN-PE
相比,前者采用Bias Encoding
后者采用Position Encoding
。结果表明DSIN-BE
效果更好。与二维的位置编码不同,
Bias Encoding
除了捕获位置bias
还能够捕获会话bias
。经验上讲,
Bias Encoding
可以成功捕获会话的次序信息从而提高DSIN
性能。如下图所示,我们给出了局部激活单元和自注意力机制中的注意力权重。图的下半部分给出了自注意力机制的权重、上半部分给出了激活单元的权重,颜色越深权重越大。
注意:自注意力机制的注意力权重是每个
head
的注意力权重之和。我们以第一个会话为例:用户主要浏览与裤子有关的商品,偶尔浏览外套有关的商品。
可以看到:和裤子有关商品的权重通常都较高。经过自注意力机制之后,大部分和裤子有关的行为表达都被保留并提取到会话兴趣中。
局部激活单元的工作方式是:使得与目标商品有关的用户会话兴趣更突出。
图中的目标商品是黑色裤子,因此模型为与裤子相关的用户会话兴趣分配更大的权重,从而使得这部分会话兴趣对结果预测的影响更大。
第三个会话与外套有关,但是用户对黑色的颜色偏好也有助于对目标黑色裤子的点击率预测。