目录
DIN
背景
din模型结构提出
自适应正则提出
相关延伸
系统概述
推荐流程介绍
特征工程
基本模型结构
DIN模型
自适应正则
DIEN
背景
DIEN模型提出
DIEN关键点
DIEN模型
兴趣提取层
兴趣演化层
DIEN模型结构
DSIN
背景
DSIN模型提出
DSIN改进点
DSIN模型
会话划分层
会话兴趣提取层
会话兴趣交互层
会话兴趣激活层
DSIN模型结构
近两年来,阿里在电商推荐和广告ctr预估领域研究很多深度学习模型,如深度兴趣模型系列(Deep Interest Network、Deep Interest Evolution Network和Deep Session Interest Network)。本文重点解读下以上研究成果,探索深度兴趣网络模型系列。
研究发现在用户历史行为中有两个现象:
这篇paper主要工作有:
在cpc广告中,广告排序基于eCPM(ctr*fee)。准确ctr预估对提高广告收入有重要作用。
随着深度学习在图像识别和自然语言处理领域的成功应用,ctr预估也开始引入深度学习模型。
深度学习通常引入embedding将原始高维、大规模稀疏id特征映射低维、分布式特征,然后通过全连接层(多层感知器,MLPs)拟合特征与输出非线性函数。
但传统MLPs在丰富互联网规模用户行为数据无法深入挖掘和探索。
在展示广告有两个重要数据现象:
这篇paper提出din, 引入兴趣分布描述用户多样性兴趣,并设计类似注意力(attention)机制来激活用户局部兴趣。
另外,在大规模稀疏数据训练工业深度模型中,过拟合问题非常容易遇到。paper也提出自适应正则技术来解决。
ctr预估之前一些工作进展:
用户访问淘宝,推荐引擎为用户推荐商品列表,生成整个闭环消费链路,并记录用户反馈行为数据,整个流程可以描述如下:
其中,推荐一般由候选集生成(match)和候选集排序(rank)两部分组成。候选集生成采用了一些简单但时间有效的推荐算法,从庞大物品集提供相对较小的候选集用于排序;在候选集排序阶段,采用复杂但功能强大的模型对候选集进行排序,并最终生成top K推荐列表。
特征主要有用户画像(user profile)、用户行为(user behavior)、广告(ad)和上下文(context)四部分组成,如下所示:
大多数深度ctr模型都是基于嵌入式向量编码(embedding)和多层感知器(MLPs)构建的。模型分为两部分:
其基本结构如下所示:
embedding
embedding是将大规模稀疏特征转化为低维稠密没特征常用操作,在embedding中每个特征字段对应一个嵌入矩阵,嵌入矩阵访问商品可以表示为:
其中,表示嵌入向量维度。
MLPs
多层感知器(Multilayer Perceptron,MLP)将一个类别的embedding向量输入池化操作,然后将来自不同类别的所有池向量连接起来。最后,将连接后的向量输入MLP进行最终预测。
Loss Function
深度ctr模型广泛应用的损失函数是负对数似然函数,如下:
评估指标
AUC/GAUC
GAUC是每个用户在样本组子集中计算AUC的加权平均值,其中权值可以是曝光也可以是点击。公式如下所示:
GAUC消除用户偏见的影响,更准确地度量模型对所有用户的性能。
激活函数
Relu
PRelu
即使值小于0,网络的参数也得以更新,加快了收敛速度。
Dice
PRelu在分割点都是0,文中提出了Dice激活函数此问题。
attention机制理解
需要注意:输入包含用户行为序列id,其长度是不同的。需要增加一个pooling层来概括序列得到混合向量。但pooling层对用户的历史行为是同等对待的,没有做任何处理,这显然是不合理的。
注意力网络(attention network),可以看作是一个专门设计的pooling层)学习给句子中的每个单词分配注意分数,即遵循数据的多样性结构。
attention机制可以理解为:
针对不同的广告,用户历史行为与该广告的权重是不同的。假设用户有ABC三个历史行为,对于广告D,那么ABC的权重可能是0.8、0.1、0.1;对于广告E,那么ABC的权重可能是0.3、0.6、0.1。用户兴趣表达式如下:
其中,假设用户的兴趣的Embedding是,候选广告的Embedding是,用户兴趣和候选的广告的相关性可以写作。如果没有Local activation机制的话,那么同一个用户对于不同的广告,都是相同的。
din模型结构
din模型结构可以有base model改进过来如下:
CTR中输入稀疏而且维度高,通常的做法是加入L1、L2、Dropout等防止过拟合。但是论文中尝试后效果都不是很好。用户数据符合长尾定律(long-tail law),也就是说很多的feature id只出现了几次,而一小部分feature id出现很多次。这在训练过程中增加了很多噪声,并且加重了过拟合。对于这个问题一个简单的处理办法就是:直接去掉出现次数比较少的feature id。但是这样就人为的丢掉了一些信息,导致模型更加容易过拟合,同时阈值的设定作为一个新的超参数,也是需要大量的实验来选择的。因此,阿里提出了自适应正则的做法,即:
1.针对feature id出现的频率,来自适应的调整他们正则化的强度;
2.对于出现频率高的,给与较小的正则化强度;
3.对于出现频率低的,给予较大的正则化强度。
定义:
B表示大小为b的小批量样本,是特征频次,是正则参数。则权重更新如下:
dien主要在din基础上优化兴趣演化层,在注意力机制新颖嵌入序列机制中,相对兴趣作用得到强化。
大部分深度ctr模型包(括DIN)都将行为直接视为兴趣,而隐性兴趣很难通过显性行为得到充分体现。DIN在捕获顺序行为之间的依赖关系方面很弱,以前的方法不能挖掘行为背后真正的用户兴趣。
此外,用户的兴趣是不断发展的,捕捉兴趣之间的动态关系对于兴趣的表达是非常重要的。
dien两个关键点在于:
dien主要改进:
合适的兴趣表示是DIEN基石。在兴趣提取层,DIEN选择GRU建立行为依赖模型。
依照兴趣直接导致连续行为原则,提出了一种利用下一行为监督当前隐状态学习的辅助损失方法。
用户兴趣多样性,导致兴趣漂移(interest drifting phenomenon):在相邻的访问中,用户的意图可能非常不同,用户当前行为可以依赖很久之前的用户行为。
同时,一个用户对不同目标项的点击行为受不同兴趣部分的影响。
因此,DIEN基于兴趣提取层获取的兴趣序列,设计了带注意力更新的GRU(AUGRU)。
使用兴趣状态和目标项计算相关性,AUGRU强化了相对兴趣对兴趣演化的影响,弱化了兴趣漂移导致的非相对兴趣效应。
dien首先通过embedding层对所有类别的特征进行转换。其次,DIEN通过两个步骤来捕捉兴趣进化:兴趣提取层根据行为序列提取兴趣序列;兴趣进化层对与目标项目相关的兴趣进化过程进行建模。
然后将最终兴趣的表示和embedding向量ad、用户画像、上下文连接起来。将该向量输入MLP进行最终预测。
兴趣提取层使用GRU刻画行为序列依赖关系,并用辅助损失函数精确刻画用户兴趣。
GRU
其中,是sigmod激活函数,,,,,,是隐含层,是输入层大小。
辅助loss
然而,只捕捉行为间依赖的隐藏状态不能有效地代表收益。由于目标项的点击行为是由最终收益触发的,Loss函数中使用的标签只包含最终时刻兴趣预测,而历史状态(t < T)无法获得适当的监督。
我们都知道,每一步的兴趣状态都会直接导致行为的一致性。因此,我们提出了利用下一时刻行为监督学习兴趣状态的辅助损失。辅助损失函数公式如下:
全局损失函数公式如下:
由于外部环境和内部认知的共同影响,不同类型的用户兴趣会随着时间的推移而发生变化。
以对衣服的兴趣为例,随着人口趋势和用户品味的变化,用户对衣服的偏好也在不断演变。用户对衣服兴趣的演变过程将直接决定候选衣服的CTR预测。
演化过程建模优点如下:
值得注意的是,兴趣在进化过程中表现出两个特征:
通过对兴趣演化特征的分析,将注意力机制的局部激活能力与GRU的本质学习能力相结合,建立了兴趣演化模型。GRU每一步的局部激活可以增强相对利益效应,减弱利益漂移的干扰,有利于对相对于目标项目的利益演化过程进行建模。
在兴趣演化模型,注意力函数如下:
如何将注意力机制和GRU结合起来刻画兴趣演化?有以下几种方法:
AIGRU
AIGRU的效果不是很好;因为即使是零输入也会改变GRU的隐藏状态,所以相对较少的交互也会影响兴趣进化的学习。
AGRU
在兴趣发展的场景中,AGRU利用注意力得分直接控制隐藏状态的更新。 AGRU在兴趣变化期间削弱了相关兴趣减少的影响。 将注意力嵌入GRU可以改善注意力机制的影响,并有助于AGRU克服AIGRU的缺陷。
AUGRU
AGRU忽视不同维度重要性,AUGRU改进:
在AUGRU中,保留了更新门的原始尺寸信息,这决定了每个维度的重要性。在区分信息的基础上,我们利用注意力得分t对更新门的各个维度进行了缩放,结果表明,相关兴趣越少,对隐藏状态的影响越小。AUGRU更有效地避免了利益漂移的干扰,推动了相对利益的平稳演化。
在行为层,行为是按时间排序的。embedding层是将one-hot表示 转换为embedding向量。兴趣提取层利用辅助损失提取每个兴趣状态。在兴趣演化层,AUGRU对与目标项目相关的兴趣演化过程进行建模。最终兴趣状态与剩余特征的嵌入向量串联起来,输入MLR进行最终的CTR预测。其结构模型如下:
dsin指出用户同一session下浏览商品的相似性和不同session浏览商品差异性,在self-attention做local activation又加入BI-LSTM做改进。
din和dien利用用户行为序列,挖掘用户动态演化兴趣。但忽视用户行为序列是会话,一个session是在给定的时间范围内发生的交互(用户行为)的列表。paper指出用户行为在每个会话中都是高度同构的,但跨会话是异构的。
如何理解呢?以某用户行为序列为例,如下图所示。用户通常在一个会话中有一个明确的独特意图,而她的兴趣可以急剧变化当她开始一个新的会话时。不同session存在30分钟以上的时间差。这张现象是普遍存在的。基于以上观察,paper提出了深度会话网络模型(DSIN),利用用户的多个历史会话,对CTR预测任务中的用户顺序行为进行建模。
dsin主要改进点如下:
DSIN在数据喂入MLPs之前,有两部工作要做:
为了提取更精确的用户会话兴趣,我们将用户的行为序列划分为会话,其中第个会话,是在会话中保持的行为数量,是用户在会话中的第个行为。用户情景的分割存在于时间间隔大于30分钟的相邻行为之间。
同一会话中的用户行为密切相关。此外,用户在会话中的随意行为也使得原有会话展示发生偏差。捕捉同一会话中行为之间的内在关系并减少这些不相关行为的影响,paper在每个会话中都采用了多头注意机制并对自我注意机制做了一些改进。
Bias Encoding
为了利用序列的顺序关系,自注意机制对输入嵌入应用位置编码。此外,还需要捕获会话的顺序关系和存在于不同表示子空间中的偏差。paper在位置编码的基础上,提出偏差编码模型,其中BE中的每个元素定义如下:
其中为会话的偏置向量,为会话中位置的偏置向量,是行为嵌入中单元位置的偏置向量。添加偏见编码后,用户的行为会话更新如下:
Multi-head Self-attention
在推荐系统中,用户的点击行为受多种因素的影响,多注意力机制可以在不同的表示子空间中捕获关系。公式如下:
是线性矩阵。不同head向量串联起来,喂入前向传播网络。如下:
其中是前向传播网络,是线性矩阵。还先后进行了剩余连接和层归一化。用户的第个会话兴趣计算如下:
是平均池。注意,在不同会话的self-attention机制中,权重是共享的。
用户会话兴趣与上下文兴趣具有顺序关系,对动态演变进行建模可以丰富会话兴趣的表示。BI-LSTM擅长捕捉顺序重定向,并自然地应用于DSIN中会话兴趣的交互建模。LSTM的存储单元实现如下:
其中,是逻辑回归函数,分别是输入门,遗忘门,输出门和单位向量。双向表示存在正向和反向RNNs,隐藏状态H计算如下:
其中,为正向LSTM隐藏状态,为负向LSTM隐藏状态。
与目标项关联更密切的用户会话兴趣对用户是否单击目标项影响更大,用户会话兴趣的权重需要重新分配到目标项。注意机制在源和目标之间进行软对齐,是一种有效的权重分配机制。会话兴趣与目标项自适应表示如下:
类似的,带有上下文信息会话兴趣与目标项自适应表示如下:
总的来说,在MLP层之前,DSIN主要由两部分构成。一个是稀疏特性,另一个是处理用户行为序列。从下至上,将用户行为序列S划分为会话Q,再将会话Q加入偏置编码,并以self-attention的方式提取到会话兴趣I中。在Bi-LSTM中,我们将会话兴趣I和上下文信息混合为隐藏状态H。目标项激活的会话兴趣I和隐藏状态H的向量以及用户画像和物品池的嵌入向量连接起来,喂入MLPs进行最终预测。结构如下所示: