本人才疏学浅,不足之处欢迎大家指出和交流。
今天继续更阿里系CTR模型三部曲之二,一起学习吧。
今天要分享的是阿里针对电子商务领域的CTR预估的Deep Interest Evolution Network理论,针对DIN做出了相关改进。该模型要点为:主要解决DIN无法捕捉用户兴趣的动态变化性的缺点,提出了兴趣抽取层Interest Extractor Layer、兴趣进化层Interest Evolution Layer。
原文:《Deep Interest Evolution Network for Click-Through Rate Prediction》
1、背景
这里略去相关的背景介绍,有关DIN和Base Model的细节请大家参阅上一篇文章。
在前文DIN中提到的观点是:(1)在电商平台中,用户行为是兴趣的载体,且是以时间而产生的序列数据,其间存在的依赖、次序隐藏着用户喜好。(2)当前时刻的兴趣直接导致了下一行为的产生。因此设计了DIN模型将用户的历史行为来表示用户的兴趣,通过attention来捕获和目标物品相关的兴趣。
但是在电商推荐的场景下,可以观察到用户的兴趣是不断变化的。例如用户对衣服的喜好,会随季节、时尚风潮以及个人品味的变化而变化,呈现一种连续的变迁趋势。这说明用户的兴趣是不断进化的,而DIN抽取的用户兴趣之间是独立无关联的,没有捕获到兴趣的动态进化性,这是需要解决的第一个问题。
其次在淘宝平台中,用户的兴趣是丰富多样的,且每个兴趣的演变基本互不影响。此外,影响最终行为的仅仅是与目标商品相关的兴趣。所以DIEN仍然采用了attention机制,捕获与目标商品相关商品的兴趣发展路径。
总结:DIEN最大的特点是不但要找到用户的interest,还要抓住用户interest的进化过程。作者们将GRU融合到网络中,从而捕获到变化的sequence。
DIEN关注电商场景中兴趣演化的过程,并提出了新的网络结构来建模兴趣进化的过程,这个模型能够更精确的表达用户兴趣,同时带来更高的CTR预估准确率。
设计了兴趣抽取层,并通过计算一个辅助loss,来提升兴趣表达的准确性。
设计了兴趣进化层,来更加准确的表达用户兴趣的动态变化性。
2、模型
DIEN模型整体结构如下:
可以看到,新模型较之于base model和DIN,其他部分保持一致,变化只在于用户行为序列(UBS)的处理做了调整,将其组织成了序列数据的形式。这里包含了3个部分,最底层是Behavior Layer,用于将用户浏览过的商品转换成对应的embedding,并且按照浏览时间做排序,中间层是兴趣提取层Interest Extractor Layer,最上层是兴趣发展层Interest Evolving Layer,我们重点介绍上面两个Layer。
2.1、兴趣抽取层Interest Extractor Layer
如上图中黄色区域所示,兴趣抽取层Interest Extractor Layer的主要目标是从embedding数据中提取出interest。但一个用户在某一时间的interest不仅与当前的behavior有关,也与之前的behavior相关,所以作者们使用GRU单元来提取interest,GRU输出h(t)如下所示:
这里可以认为h(t)是提取出的用户的初步兴趣表示,为了更好地表达用户的兴趣,作者还为兴趣抽取层引入了一个有监督学习:输入是按照时间步排列的商品embedding向量,假设第t个时间步输入e(t),GRU输出隐单元h(t),令下一个时间步的输入向量e(t+1)作为正样本,随机采样负样本e(t+1),且e(t+1)’ != e(t),h(t)与正负样本向量分别做内积,得到预测结果,并引入一个辅助的logloss:
L_target是CTR任务的logloss函数,将CTR的loss和辅助loss相加定义为整个网络的loss进行优化。α是超参数来平衡两个loss的权重。这里辅助loss有几个好处,当GRU处理较长序列的时候有助于降低反向传播的难度,对于商品embedding的学习也有助益。
2.2、兴趣进化层Interest Evolution Layer
有了用户的兴趣表示,Evolution Layer的主要目标就是去刻画用户兴趣的演变过程(观测到兴趣随环境和认知的变化而变化)。因此作者设计了AUGRU结构,用attention机制来局部激活与目标商品相关的局部兴趣,并对存在于这些兴趣之间的依赖建模,捕捉兴趣的演变过程。
具体如模型中红色区域所示,这里使用了第2个GRU。将目标商品的embedding向量与第1个GRU的输出隐向量发生交互,生成attention score,计算公式如下所示:其中,hₜ 是隐向量,e是目标商品的嵌入向量,W是需要训练的参数矩阵。最后用softmax对attention score进行归一化。
对于如何结合attention和GRU,文中介绍了三种方式:
- GRU with attentional input (AIGRU) 用attention直接影响这一层的输入:
- Attention based GRU(AGRU) 用 aₜ 代替GRU的update gate输出:
- GRU with attentional update gate (AUGRU) 用 aₜ 影响GRU的update gate输出(保留每个维度的影响):
简单分析一下:先从AIGRU开始,从上面的公式中可以看出,AIGRU 激活局部兴趣和捕获兴趣演变的过程是相互独立的。仅仅是用attention来影响GRU的输入,且即便输入为 0(无关的兴趣)也还是会对hidden state产生影响;
AGRU用 aₜ 替代 GRU 的 update gate,直接控制 hidden state 的更新,将 attention 机制融入到了捕获兴趣演变的过程中,一定程度上弥补了 AIGRU 的不足。
但是,原先 GRU 中控制 hidden state 更新的是一个包含多个维度的向量,AGRU 用纯量替代略有不妥,因此这篇文章设计了 AUGRU,用 aₜ 影响 uₜ ,以间接作用于 hidden state的更新。
3、实验
文章在公共数据集Amazon Dataset和工业数据集上都做了实验,并选取了不同的对比模型,离线实验结果如下:
其他相关实验细节参阅原论文,接下来会更新阿里系CTR预估第三篇DSIN。
实现DIEN的一个Demo,感兴趣的童鞋可以看下我的[github]。