看看阿里如何在淘宝作推荐,实现“一人千物千面”的用户多样化兴趣推荐,首先总结下DIN、DIEN、DSIN:网络
大多推荐场景下数据下都包含以下信息,用户内在属性信息、用户行为信息、商品信息、上下文信息,一个明显不一样的不一样用户的行为信息差别很大。session
深度学习在推荐系统通常作法:架构
稀疏向量 -- embedding -- fixed-length稠密向量 --- MLPide
这样作有什么问题?学习
一个明显的问题是不一样用户的行为序列长度是不一样的,fixed-length信息表达不全面优化
用户最终的行为只和历史行为中的部分有关,所以对历史序列中商品相关度应有区分编码
根据上述问题,有两个解决思路:idea
- 对不一样用户尝试不一样维度的向量,致使训练困难
- 如何在有限的维度表示用户的差别化兴趣?
DIN从第二个问题出发,引入局部激活单元,对特定的ad自适应学习用户兴趣表示向量。即同一用户在获选ad不一样时,embedding向量不一样。spa
key idea3d
使用attention机制捕获ad和用户行为序列商品之间的关系
看结果
下面是两个小tricks,对结果提高有帮助:
Mini-batch Aware Regularization
Dice Activation Function
tricks的细节能够参考原论文。
- 使用GRU建模序列信息,即用GRU最后时刻的隐状态表示序列
- 修改GRU为AUGRU
看下AUGRU部分:
\[ a_{t}=\frac{\exp \left(\mathbf{h}_{t} W \mathbf{e}_{a}\right)}{\sum_{j=1}^{T} \exp \left(\mathbf{h}_{j} W \mathbf{e}_{a}\right)} \]
\[ \begin{aligned}&\tilde{\mathbf{u}}_{t}^{\prime}=a_{t} * \mathbf{u}_{t}^{\prime}\\&\mathbf{h}_{t}^{\prime}=\left(1-\tilde{\mathbf{u}}_{t}^{\prime}\right) \circ \mathbf{h}_{t-1}^{\prime}+\tilde{\mathbf{u}}_{t}^{\prime} \circ \tilde{\mathbf{h}}_{t}^{\prime}\end{aligned} \]
根据attention score控制更新门。
看模型,直观的思考貌似很合理,可是有两个问题:
- 序列信息包含多长?即短时间兴趣仍是长期兴趣的问题
- 序列连续否?不一样时期的兴趣不同,序列间隔过大相关性可能很低
- 用户是否必定服从严格的序列?先点那个和后点那个的区别大吗
1.DIEN使用过去14天信息行为序列,从RNN角度来讲可能短时间内行为信息更重要,但长期信息是否引入了噪音?
2.过去14天内用户需求会变。好比第一天买了衣服、可能十天后买的是书
3.用户点击顺序不必定重要,本身想想好像是
关于使用RNN是否合适,RNN只关心t-1(上一步)和t(当前步),而没有涉及t-1和t之间的时间间隔。没涉及不表明不重要,反而是由于其使用前提就是假定各步骤之间是等间距的,见维基百科。
A time series is a series of data points indexed (or listed or graphed) in time order. Most commonly, a time series is a sequence taken at successive equally spaced points in time"
以上部份内容摘自[3].
DSIN进一步作出优化,在每一个会话中的行为是相近的,而在不一样会话之间差异是很大的,以下图的例子:
模型架构
1.会话分割层
将用户的点击行为按照时间排序,判断每两个行为之间的时间间隔,先后的时间间隔大于30min,就进行切分。
2.兴趣提取层
用Tansformer编码用户行为序列,简单来讲就是输入一个序列,输出一个对应的embedding序列。
引入了偏置编码(Bias encoding),实质上是对序列中位置信息的编码
原始作法:
\[ \begin{aligned}&P E_{(\text {pos}, 2 i)}=\sin \left(\text {pos} / 10000^{2 i / d_{\text {model}}}\right)\\&P E_{(p o s, 2 i+1)}=\cos \left(p o s / 10000^{2 i / d_{m o d e l}}\right)\end{aligned} \]
bias encoding:
\[ \mathbf{B E}_{(k, t, c)}=\mathbf{w}_{k}^{K}+\mathbf{w}_{t}^{T}+\mathbf{w}_{c}^{C} \]
第一项表示处于第几个session,第二项表示session的第几个行为,第三项表示总体位置的embedding。关于这三项其实不是很明确,知道的同窗麻烦帮忙解答下,贴上原图
3.兴趣交互层
捕获序列的顺序关系,文中使用Bi-LSTM
4.兴趣激活层
和DIN中同样,使用attention捕捉商品相关性
模型思想大概就这么多,细节部分能够参考原论文。
具体应用
充分了解领域数据特色,根据场景定制适合具体问题的网络结构
须要有丰富的特征
references:
[1]Deep Interest Network for Click-Through Rate Prediction,https://arxiv.org/pdf/1706.06978.pdf ,KDD2018
[2]Deep Interest Evolution Network for Click-Through Rate Prediction, https://arxiv.org/pdf/1809.03672.pdf. AAAI 2019
[3]也评Deep Interest Evolution Network . https://zhuanlan.zhihu.com/p/54838663.
[4]Deep Session Interest Network for Click-Through Rate Prediction. https://arxiv.org/pdf/1905.06482.pdf . IJCAI 2019