深度兴趣网络模型探索——DIN+DIEN+DSIN

目录

DIN

背景

din模型结构提出

自适应正则提出

相关延伸

系统概述

推荐流程介绍

特征工程

基本模型结构

DIN模型

自适应正则

DIEN

背景

DIEN模型提出

DIEN关键点

DIEN模型

兴趣提取层

兴趣演化层

DIEN模型结构

 DSIN

背景

DSIN模型提出

DSIN改进点

DSIN模型

会话划分层

会话兴趣提取层

会话兴趣交互层

会话兴趣激活层

DSIN模型结构


近两年来,阿里在电商推荐和广告ctr预估领域研究很多深度学习模型,如深度兴趣模型系列(Deep Interest NetworkDeep Interest Evolution NetworkDeep Session Interest Network)。本文重点解读下以上研究成果,探索深度兴趣网络模型系列。

DIN

研究发现在用户历史行为中有两个现象:

  • 多样性(diversity):用户在浏览淘宝时会对不同类型的商品感兴趣;
  • 局部激活(local activation):用户是否点击商品只依赖部分用户历史行为。而绝大部分ctr预估模型没有能力捕获这一特性;

这篇paper主要工作有:

  • din引入兴趣分布描述用户多样性兴趣,并设计类似注意力(attention)模型结构来激活用户局部兴趣;
  • 自适应正则解决过拟合问题;

背景

din模型结构提出

在cpc广告中,广告排序基于eCPM(ctr*fee)。准确ctr预估对提高广告收入有重要作用。
随着深度学习在图像识别和自然语言处理领域的成功应用,ctr预估也开始引入深度学习模型。
深度学习通常引入embedding将原始高维、大规模稀疏id特征映射低维、分布式特征,然后通过全连接层(多层感知器,MLPs)拟合特征与输出非线性函数。
但传统MLPs在丰富互联网规模用户行为数据无法深入挖掘和探索。
在展示广告有两个重要数据现象:

  • 多样性(diversity):用户在浏览淘宝时会对不同类型的商品感兴趣;如一位年轻妈妈可能同时对T恤、手提包、鞋子和童装感兴趣;
  • 局部激活(local activation):用户是否点击商品只依赖部分用户历史行为;如二哈迷会点击推荐的狗粮,主要是因为买了狗链,而不是他上周购物清单上的书;

这篇paper提出din, 引入兴趣分布描述用户多样性兴趣,并设计类似注意力(attention)机制来激活用户局部兴趣。

自适应正则提出

另外,在大规模稀疏数据训练工业深度模型中,过拟合问题非常容易遇到。paper也提出自适应正则技术来解决。

相关延伸

ctr预估之前一些工作进展:

  • embedding最初应用单词分布式表示,避免自然语言建模中维数灾难;
  • FM获取特征间组合关系;
  • Deep Cross, Deep & Wide使用MLPs,在很大程度上替代人工合成特征组合,大幅增强模型性能;
  • 另外在搜索框和youtube视频推荐中,特征通常是一些多维稀疏id,会在Deep & Wide ctr预估模型的embedding层后加入池化层(pooling,如sum/avg)来获取混合的embedding向量,这会引起信息损失、不能充分利用用户丰富行为数据内部结构;
  • 注意力机制(attention mechanism)起源于神经机器翻译领域,对所有注释进行加权求和,得到预期的注释,并只关注与双向RNN中生成下一个目标单词相关的信息;
  • DeepFM学习二阶交叉特征和高阶特征,AFM认为并不是所有的特征交互都具有相同的预测性,并使用注意力机制自动学习交叉特征的权重;

系统概述

推荐流程介绍

用户访问淘宝,推荐引擎为用户推荐商品列表,生成整个闭环消费链路,并记录用户反馈行为数据,整个流程可以描述如下:

其中,推荐一般由候选集生成(match)和候选集排序(rank)两部分组成。候选集生成采用了一些简单但时间有效的推荐算法,从庞大物品集提供相对较小的候选集用于排序;在候选集排序阶段,采用复杂但功能强大的模型对候选集进行排序,并最终生成top K推荐列表。

特征工程

特征主要有用户画像(user profile)、用户行为(user behavior)、广告(ad)和上下文(context)四部分组成,如下所示:

基本模型结构

大多数深度ctr模型都是基于嵌入式向量编码(embedding)和多层感知器(MLPs)构建的。模型分为两部分:

  • 将每个稀疏id特征转移到一个嵌入的向量空间中;
  • 应用MLPs拟合输出;

其基本结构如下所示:

embedding

embedding是将大规模稀疏特征转化为低维稠密没特征常用操作,在embedding中每个特征字段对应一个嵌入矩阵,嵌入矩阵访问商品可以表示为:

E_{goods}=[m_{1};m_{2};...;E_{k}] \in R^{n^{E} \times K}, m_{j} \in R^{n^{E}}

其中,n^{E}表示嵌入向量维度。

MLPs

多层感知器(Multilayer Perceptron,MLP)将一个类别的embedding向量输入池化操作,然后将来自不同类别的所有池向量连接起来。最后,将连接后的向量输入MLP进行最终预测。

Loss Function

深度ctr模型广泛应用的损失函数是负对数似然函数,如下:

L_{target}=-\frac{1}{N} \sum_{\left ( x,y \right ) \in D}^{N} (y\ log\ p(x)+(1-y)log\ (1-p(x)))

评估指标

AUC/GAUC

GAUC是每个用户在样本组子集中计算AUC的加权平均值,其中权值可以是曝光也可以是点击。公式如下所示:

GAUC=\frac{\sum_{i=1}^{n} w_{i}*AUC_{i}}{\sum_{i=1}^{n}w_{i}}=\frac{\sum_{i=1}^{n}impression_{i}*AUC_{i}}{\sum_{i=1}^{n}impression_{i}}

GAUC消除用户偏见的影响,更准确地度量模型对所有用户的性能。

激活函数

Relu

y_{i}=\left\{\begin{matrix} y_{i} & y_{i}>0\\ 0& y_{i}\leqslant 0 \end{matrix}\right.

PRelu

y_{i}=\left\{\begin{matrix} y_{i} & y_{i}>0\\ a_{i}y_{i}& y_{i}\leqslant 0 \end{matrix}\right.

即使值小于0,网络的参数也得以更新,加快了收敛速度。

Dice

y_{i}=a_{i}(1-p_{i})y_{i}+p_{i}y_{i}

p_{i}=\frac{1}{1+e^{-\frac{y_{i}-E[y_{i}]}{\sqrt{Var[y_{i}]+\varepsilon }}}}

PRelu在分割点都是0,文中提出了Dice激活函数此问题。

DIN模型

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。用户兴趣表达式如下:

V_{u}=f(V_{a})=\sum_{i=1}^{N}w_{i}*V_{i}=\sum_{i=1}^{N}g(V_{i},V_{a})*V_{i}

其中,假设用户的兴趣的Embedding是V_{u},候选广告的Embedding是V_{a},用户兴趣和候选的广告的相关性可以写作F(U,A)=V_{a}*V_{u}。如果没有Local activation机制的话,那么同一个用户对于不同的广告,V_{u}都是相同的。

din模型结构

din模型结构可以有base model改进过来如下:

自适应正则

 CTR中输入稀疏而且维度高,通常的做法是加入L1、L2、Dropout等防止过拟合。但是论文中尝试后效果都不是很好。用户数据符合长尾定律(long-tail law),也就是说很多的feature id只出现了几次,而一小部分feature id出现很多次。这在训练过程中增加了很多噪声,并且加重了过拟合。对于这个问题一个简单的处理办法就是:直接去掉出现次数比较少的feature id。但是这样就人为的丢掉了一些信息,导致模型更加容易过拟合,同时阈值的设定作为一个新的超参数,也是需要大量的实验来选择的。因此,阿里提出了自适应正则的做法,即:
1.针对feature id出现的频率,来自适应的调整他们正则化的强度;
2.对于出现频率高的,给与较小的正则化强度;
3.对于出现频率低的,给予较大的正则化强度。

定义:

I_{i}=\left\{\begin{matrix} 1 & \exists (x_{i},y_{i}) \in B, s.t.[x_{j}]_{i}\neq 0\\ 0& y_{i}\leqslant else\ wises \end{matrix}\right.

B表示大小为b的小批量样本,n_{i}是特征i频次,\lambda是正则参数。则权重更新如下:

w_{i}\leftarrow w_{i}-\eta [\frac{1}{b}\sum_{(x_{i},y_{i}) \in B} \frac{\partial L(f(x_{j}),y_{j})}{\partial x}+\lambda \frac{1}{n_{i}}w_{i}I_{i}]

DIEN

dien主要在din基础上优化兴趣演化层,在注意力机制新颖嵌入序列机制中,相对兴趣作用得到强化。

背景

DIEN模型提出

大部分深度ctr模型包(括DIN)都将行为直接视为兴趣,而隐性兴趣很难通过显性行为得到充分体现。DIN在捕获顺序行为之间的依赖关系方面很弱,以前的方法不能挖掘行为背后真正的用户兴趣。
此外,用户的兴趣是不断发展的,捕捉兴趣之间的动态关系对于兴趣的表达是非常重要的。

DIEN关键点

dien两个关键点在于:

  • 从显式用户行为中提取潜在的兴趣;
  • 对兴趣演化过程建模;

dien主要改进:

  • 设计了兴趣抽取层,并通过计算一个辅助loss,来提升兴趣表达的准确性;
  • 设计了兴趣进化层,来更加准确的表达用户兴趣的动态变化性;

合适的兴趣表示是DIEN基石。在兴趣提取层,DIEN选择GRU建立行为依赖模型。
依照兴趣直接导致连续行为原则,提出了一种利用下一行为监督当前隐状态学习的辅助损失方法。
用户兴趣多样性,导致兴趣漂移(interest drifting phenomenon):在相邻的访问中,用户的意图可能非常不同,用户当前行为可以依赖很久之前的用户行为。
同时,一个用户对不同目标项的点击行为受不同兴趣部分的影响。

因此,DIEN基于兴趣提取层获取的兴趣序列,设计了带注意力更新的GRU(AUGRU)。

使用兴趣状态和目标项计算相关性,AUGRU强化了相对兴趣对兴趣演化的影响,弱化了兴趣漂移导致的非相对兴趣效应。

DIEN模型

dien首先通过embedding层对所有类别的特征进行转换。其次,DIEN通过两个步骤来捕捉兴趣进化:兴趣提取层根据行为序列提取兴趣序列;兴趣进化层对与目标项目相关的兴趣进化过程进行建模。
然后将最终兴趣的表示和embedding向量ad、用户画像、上下文连接起来。将该向量输入MLP进行最终预测。

兴趣提取层

兴趣提取层使用GRU刻画行为序列依赖关系,并用辅助损失函数精确刻画用户兴趣。

GRU

u_{t}=\sigma (W^{u}i_{t}+U^{u}h_{t-1}+b^{u})

r_{t}=\sigma (W^{r}i_{t}+U^{r}h_{t-1}+b^{r})

\widetilde{h}_{t}=tanh (W^{h}i_{t}+r_{t}\circledcirc U^{h}h_{t-1}+b^{h})

h_{t}=(1-u_{t})\circledcirc h_{t-1}+u_{t}\circledcirc \widetilde{h}_{t}

其中,\sigma是sigmod激活函数,W^{u}W^{r}W^{h}U^{z}U^{r}U^{h}是隐含层,n_{I}是输入层大小。

辅助loss

然而,只捕捉行为间依赖的隐藏状态h_{t}不能有效地代表收益。由于目标项的点击行为是由最终收益触发的,Loss函数中使用的标签只包含最终时刻兴趣预测,而历史状态h_{t}(t < T)无法获得适当的监督。
我们都知道,每一步的兴趣状态都会直接导致行为的一致性。因此,我们提出了利用下一时刻行为监督学习兴趣状态h_{t}的辅助损失。辅助损失函数公式如下:

L_{aux}=-\frac{1}{N}\left ( \sum_{i=1}^{N}\sum_{t} log\sigma (h_{t}^{i}),e_{b}^{i}[t+1] \right )+log(1-\sigma(h_{t}^{i},\widehat{e}_{b}^{i}[t+1])) )

全局损失函数公式如下:

L=L_{target}+\alpha * L_{aux}

兴趣演化层

由于外部环境和内部认知的共同影响,不同类型的用户兴趣会随着时间的推移而发生变化。

以对衣服的兴趣为例,随着人口趋势和用户品味的变化,用户对衣服的偏好也在不断演变。用户对衣服兴趣的演变过程将直接决定候选衣服的CTR预测。

演化过程建模优点如下:

  • 兴趣演化模块可以为最终兴趣的表示提供更多相关的历史信息;
  • 根据兴趣演化趋势预测目标项目的CTR更好;

值得注意的是,兴趣在进化过程中表现出两个特征:

  • 由于兴趣的多样性,兴趣可以漂移。兴趣漂移对行为的影响是用户可能在一段时间内对各种书籍感兴趣,而在另一段时间内需要衣服;
  • 尽管兴趣可能相互影响,但每个兴趣都有自己的发展过程,例如书籍和衣服的发展过程几乎是独立的。我们只关注与目标项目相关的演化过程;

通过对兴趣演化特征的分析,将注意力机制的局部激活能力与GRU的本质学习能力相结合,建立了兴趣演化模型。GRU每一步的局部激活可以增强相对利益效应,减弱利益漂移的干扰,有利于对相对于目标项目的利益演化过程进行建模。

在兴趣演化模型,注意力函数如下:

a_{t}=\frac{exp(h_{t}We_{a})}{\sum_{j=1}^{T}exp(h_{j}We_{a})}

如何将注意力机制和GRU结合起来刻画兴趣演化?有以下几种方法:

AIGRU

i_{t}^{'}=h_{t}*t_{a}

AIGRU的效果不是很好;因为即使是零输入也会改变GRU的隐藏状态,所以相对较少的交互也会影响兴趣进化的学习。

AGRU

h_{t}^{'}=(1-t_{a})*h_{t-1}^{'}+a_{t}*\widetilde{h}_{t}^{'}

在兴趣发展的场景中,AGRU利用注意力得分直接控制隐藏状态的更新。 AGRU在兴趣变化期间削弱了相关兴趣减少的影响。 将注意力嵌入GRU可以改善注意力机制的影响,并有助于AGRU克服AIGRU的缺陷。

AUGRU

AGRU忽视不同维度重要性,AUGRU改进:

\widetilde{u}_{t}^{'}=a_{t}*u_{t}^{'}

h_{t}^{'}=(1-\widetilde{u}_{t}^{'})\circledcirc h_{t-1}^{'}+\widetilde{u}_{t}^{'}\circledcirc\widetilde{h}_{t}^{'}

在AUGRU中,保留了更新门的原始尺寸信息,这决定了每个维度的重要性。在区分信息的基础上,我们利用注意力得分t对更新门的各个维度进行了缩放,结果表明,相关兴趣越少,对隐藏状态的影响越小。AUGRU更有效地避免了利益漂移的干扰,推动了相对利益的平稳演化。

DIEN模型结构

在行为层,行为是按时间排序的。embedding层是将one-hot表示b[t] 转换为embedding向量e[t]。兴趣提取层利用辅助损失提取每个兴趣状态h[t]。在兴趣演化层,AUGRU对与目标项目相关的兴趣演化过程进行建模。最终兴趣状态h^{'}[T]与剩余特征的嵌入向量串联起来,输入MLR进行最终的CTR预测。其结构模型如下:

 DSIN

dsin指出用户同一session下浏览商品的相似性和不同session浏览商品差异性,在self-attention做local activation又加入BI-LSTM做改进。

背景

DSIN模型提出

din和dien利用用户行为序列,挖掘用户动态演化兴趣。但忽视用户行为序列是会话,一个session是在给定的时间范围内发生的交互(用户行为)的列表。paper指出用户行为在每个会话中都是高度同构的,但跨会话是异构的。

如何理解呢?以某用户行为序列为例,如下图所示。用户通常在一个会话中有一个明确的独特意图,而她的兴趣可以急剧变化当她开始一个新的会话时。不同session存在30分钟以上的时间差。这张现象是普遍存在的。基于以上观察,paper提出了深度会话网络模型(DSIN),利用用户的多个历史会话,对CTR预测任务中的用户顺序行为进行建模。

DSIN改进点

dsin主要改进点如下:

  • 将用户的连续行为自然地划分为会话,然后利用带有偏置编码的self attention网络对每个会话进行建模;
  • 应用BI-LSTM捕捉用户不同历史会话兴趣的交互和演变;
  • 设计了一个局部的活动单元,将它们与目标项聚合起来,形成行为序列的最终表示形式;

DSIN模型

DSIN在数据喂入MLPs之前,有两部工作要做:

  • 用户画像和物品集合转换为embedding向量;
  • 用户行为四层处理,如下图所示;

会话划分层

为了提取更精确的用户会话兴趣,我们将用户的行为序列S划分为会话Q,其中第k个会话Q_{k}=[b_{1};...;b_{i};...;b_{T}] \in R^{T \times d_{model}}T是在会话中保持的行为数量,b_{i}是用户在会话中的第i个行为。用户情景的分割存在于时间间隔大于30分钟的相邻行为之间。

会话兴趣提取层

同一会话中的用户行为密切相关。此外,用户在会话中的随意行为也使得原有会话展示发生偏差。捕捉同一会话中行为之间的内在关系并减少这些不相关行为的影响,paper在每个会话中都采用了多头注意机制并对自我注意机制做了一些改进。

Bias Encoding

为了利用序列的顺序关系,自注意机制对输入嵌入应用位置编码。此外,还需要捕获会话的顺序关系和存在于不同表示子空间中的偏差。paper在位置编码的基础上,提出偏差编码BE \in R^{K \times T \times d_{model}}模型,其中BE中的每个元素定义如下:

BE(k,t,c)=w_{k}^{K}+w_{t}^{T}+w_{c}^{C}

其中w^{K} \in R^{K}为会话的偏置向量,w^{T} \in R^{T}为会话中位置的偏置向量,w^{C} \in R^{d_{model}}是行为嵌入中单元位置的偏置向量。添加偏见编码后,用户的行为会话Q更新如下:

Q=Q+BE

Multi-head Self-attention

在推荐系统中,用户的点击行为受多种因素的影响,多注意力机制可以在不同的表示子空间中捕获关系。公式如下:

Q_{k}=[Q_{k1};...;Q_{kh};...;Q_{kH}],Q_{kh} \in R^{T \times d_{h}},d_{h}=\frac{1}{h}d_{model}

head_{h}=Attention(Q_{kh}W^{Q},Q_{kh}W^{K},Q_{kh}W^{V})=softmax(\frac{Q_{kh}W^{Q}W^{K^{T}}Q_{kh}^{T}}{\sqrt{d_{model}}})Q_{kh}W^{V}

W^{Q},W^{K},W_{T}是线性矩阵。不同head向量串联起来,喂入前向传播网络。如下:

I_{k}^{Q}=FFN(Concat(head1,...,head_{H})W^{O})

其中FFN(*)是前向传播网络,W^{O}是线性矩阵。还先后进行了剩余连接和层归一化。用户的第k个会话兴趣I_{k}计算如下:

I_{k}=Avg(I_{k}^{Q})

Avg(*)是平均池。注意,在不同会话的self-attention机制中,权重是共享的。

会话兴趣交互层

用户会话兴趣与上下文兴趣具有顺序关系,对动态演变进行建模可以丰富会话兴趣的表示。BI-LSTM擅长捕捉顺序重定向,并自然地应用于DSIN中会话兴趣的交互建模。LSTM的存储单元实现如下:

i_{t}=\sigma (W_{xi}I_{t}+W_{hi}h_{t-1}+W_{ci}c_{t-1}+b_{i})

i_{t}=\sigma (W_{xf}I_{t}+W_{hf}h_{t-1}+W_{cf}c_{t-1}+b_{f})

c_{t}=f_{t}c_{t-1}+i_{t}\n tanh(W_{xc}I_{t}+W_{hc}h_{t-1}+b_{c})

o_{t}=\sigma (W_{xo}I_{t}+W_{ho}h_{t-1}+W_{co}c_{t-1}+b_{o})

h_{t}=o_{t} tanh(c_{t})

其中,\sigma (*)是逻辑回归函数,i,f,o,c分别是输入门,遗忘门,输出门和单位向量。双向表示存在正向和反向RNNs,隐藏状态H计算如下:

H(t)=\overrightarrow{h_{ft}}\oplus \overleftarrow{h_{bt}}

其中,\overrightarrow{h_{ft}}为正向LSTM隐藏状态,\overleftarrow{h_{bt}}为负向LSTM隐藏状态。

会话兴趣激活层

与目标项关联更密切的用户会话兴趣对用户是否单击目标项影响更大,用户会话兴趣的权重需要重新分配到目标项。注意机制在源和目标之间进行软对齐,是一种有效的权重分配机制。会话兴趣与目标项自适应表示如下:

\alpha _{k}^{I}=\frac{exp(I_{k}W^{I}X^{I})}{ \sum_{k}^{K}exp(I_{k}W^{I}X^{I})}

U^{I}=\sum_{k}^{K}\alpha _{k}^{I}I_{k}

类似的,带有上下文信息会话兴趣与目标项自适应表示如下:

\alpha _{k}^{H}=\frac{exp(I_{k}W^{H}X^{I})}{ \sum_{k}^{K}exp(H_{k}W^{H}X^{I})}

U^{H}=\sum_{k}^{H}\alpha _{k}^{H}H_{k}

DSIN模型结构

总的来说,在MLP层之前,DSIN主要由两部分构成。一个是稀疏特性,另一个是处理用户行为序列。从下至上,将用户行为序列S划分为会话Q,再将会话Q加入偏置编码,并以self-attention的方式提取到会话兴趣I中。在Bi-LSTM中,我们将会话兴趣I和上下文信息混合为隐藏状态H。目标项激活的会话兴趣I和隐藏状态H的向量以及用户画像和物品池的嵌入向量连接起来,喂入MLPs进行最终预测。结构如下所示:

 

  • 7
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值