其他分享
首页 > 其他分享> > [论文阅读]阿里DIEN深度兴趣进化网络之总体解读

[论文阅读]阿里DIEN深度兴趣进化网络之总体解读

作者:互联网

[论文阅读]阿里DIEN深度兴趣进化网络之总体解读

目录

0x00 摘要

之前我们介绍了阿里的深度兴趣网络(Deep Interest Network,以下简称DIN),一年后阿里再次升级其模型到深度兴趣进化网络(Deep Interest Evolution Network,以下简称DIEN。

本系列文章通过解读DIN & DIEN论文以及源码,顺便梳理一些深度学习相关概念和TensorFlow的实现。

本文是系列第六篇 :DIEN 论文解读,参考了大量文章,衷心感谢各位兄弟的分享,具体参见文末链接。

0x01论文概要

1.1 文章信息

1.2 基本观点

1.2.1 DIN的问题

DIN忽略兴趣的变化。

1.2.2 DIEN创新

作者提出,以前的CTR预估方法都是直接将用户表现的表示向量当作兴趣,而没有通过具体的表现对隐藏的兴趣进行建模。因此提出DIEN【关键 - 兴趣直接导致了连续的行为,所以需要对用户兴趣及其演变建模,从用户历史行为中挖掘用户与目标商品相关的兴趣及演变】。

DIEN有两个关键模块:

可以这样说,在训练的每一步中,我们为 interest extractor layer 引入了辅助loss。在 interest evolving layer 中加入了attention机制

1.3 名词解释

隐式兴趣(latent interest):用户与系统交互的行为是表达兴趣的载体。

兴趣演变(Interest evolving):受外在环境与内在认知变化的影响,用户的兴趣往往会随时间不断变化。以购买衣服为例,用户对兴趣的喜好,会随季节、时尚风潮以及个人品味的变化而变化。

因此,想要做好点击率预估,必须在挖掘用户兴趣的同时,抓住用户兴趣的变化过程

0x02 总体概要

2.1 模型架构

DIN架构如下:

img

与DIN类似,模型架构同样是由 输入层 + Embedding层 + 连接层 + 多层全连接神经网络 + 输出层的整体架构;

和DIN不同的是,DIEN把 user behavior 组织成序列数据的形式,并把简单的使用外积完成的activation unit变成一个attention-based GRU网络。

深度兴趣进化网络分为几层,从下到上依次是:

再详细点说:

0x03 兴趣抽取层

3.1 之前工作

DIEN论文中提到,之前的一些算法,通过引入RNN来发掘和利用行为序列(也就是浏览过的商品序列)中的依赖关系,比直接对行为序列做pooling效果更好。但是这些算法存在的问题就是直接将RNN的隐层输出作为用户的兴趣表示。而商品embedding才是对商品的真实表达,也是对用户兴趣的直接反应,RNN的隐层输出向量未必能够真正表达用户的兴趣

因为观测到当前时刻的兴趣直接影响了下一时刻行为的发生,而GRU对兴趣表示的针对性弱。所以兴趣提取层引入了一个有监督学习,设计了auxiliary loss 损失函数,目的是用下一时刻的行为监督当前时刻兴趣的学习。这样就强行将RNN输出隐层与商品embedding发生交互,如架构图中左侧的Auxiliary Loss所示

即:

3.2 GRU

兴趣进化层的基本结构是GRU(Gated Recurrent Unit)网络,如架构中黄色区域所示,即用GRU来对用户行为之间的依赖性进行建模

电子商务系统中的用户行为丰富,即使在很短的如两周这样的时间,其历史行为序列也很长。为了在效率和性能之间进行平衡,我们采用GRU对行为进行建模。

GRU的输入是用户按时间排序的行为序列,也就是行为对应的商品(按照时间步排列的商品embedding向量)。相比传统的序列模型RNN和LSTM,GRU解决了RNN的梯度消失问题;与LSTM相比,GRU的参数更少,训练收敛速度更快。

img

参数解释如下:

3.3 辅助损失

为了使序列结构模型的隐藏状态有效地表示潜在兴趣,应该对隐藏状态进行额外的监督,例如引入排名信息。在推荐系统中,排名损失已被广泛用于排名任务。

3.3.1 辅助损失

辅助loss来源于全部的点击记录,而非针对目标广告,有利于避免梯度消失,将有点击的作为正样本,未点击的作为负样本。

DIEN定义辅助损失如下:

img

3.3.2 全局损失

DIEN使用的全局损失函数如下:

img

3.3.3 辅助损失作用

DIEN作者指出GRU只能学习行为之间的依赖,并不能很好反映用户兴趣。Label target 只包含了最终兴趣的监督信息,中间的历史状态 ht 并不能得到监督信息来指导学习。而兴趣可能会导致多个连续行为,因此模型引入Auxiliary Loss来提升兴趣表达的准确性

img

具体来讲,就是利用 t 时刻的行为 b(t+1) 作为监督去学习隐含层向量 ht ,除了利用真实的下一个行为作为正样本之外,负例的选择或是从用户未交互过的商品中随机抽取,或是从已展示给用户但用户没有点击的商品中随机抽取。正负样本分别代表了用户 点击/未点击 的第 t 个物品embedding向量。

引入Auxiliary Loss的优势有:

3.4 总结

经过GRU组成的兴趣抽取层后,用户的行为向量 b ( t ) 被进一步抽象化,形成了兴趣状态向量h ( t )。

再用一句话总结下,兴趣提取层的作用是挖掘行为序列中商品之间的联系,对用户的兴趣进行提取和表达

0x04 兴趣进化层

兴趣进化层 Interest Evolution Layer 的主要目标是刻画用户兴趣的进化过程。

用户兴趣是不断变化的:

用户这种变化会直接影响用户的点击决策。建模用户兴趣的进化过程有两方面的好处:

4.1 演化规律

随着外部环境和内部认知的变化,用户兴趣也在不断变化,因此用户的行为受不同兴趣的影响。兴趣进化层相比兴趣抽取层的最大特点在于引入Attention机制,为了更有针对性地模拟与目标广告相关的兴趣进化路径

推荐模型永远不能脱离具体业务场景,在阿里这种电商环境下,用户非常有可能同时对多品类商品感兴趣,比如在购买“机械键盘”的同时也在查看“衣服”品类下的商品。这样当目标商品是某电子产品时,“机械键盘”相关的兴趣演化路径就要比“衣服”相关的演化路径重要。

用户兴趣的演化具有如下规律:

4.2 AUGRU

基于以上规律,兴趣进化层通过 AUGRU(GRU with Attentional Update gate)来引入注意力机制,通过使用兴趣状态和 target item 计算得到相关性,AUGRU 增强相关兴趣的影响,同时减弱不相关兴趣的影响,进而去捕捉与目标商品相关的兴趣及其演变。

即通过分析兴趣演化的特征,作者结合注意力机制的局部激活能力和GRU的序列学习能力来对兴趣演化进行建模。这样,在GRU的每个步骤中,注意力机制都可以增强相对兴趣的影响,并减弱来自兴趣漂移的干扰。

有了用户的兴趣表示,兴趣发展层的作用就是捕获与candidate相关的兴趣发展模式,如架构图中红色区域所示,这里使用了第 2 个 GRU。将 candidate 的 embedding 向量与第 1 个 GRU 的输出隐向量发生交互,生成attention 分数。需要注意的是,与 DIN 不同,这里的 attention 分数采用 softmax 做了归一化。attention 分数 反应了目标物品 和当前兴趣状态 的关系,相关性越大,则分数越大

img

4.3 attention

attention计算如下:

img

如何将attention机制加到GRU中呢?文中尝试了3种方法

AUGRU是效果最好的一种。文中将attention分数与update gate相乘,替换原始的update gate,称为AUGRU,其中A指的是Attention,U指的是Update gate。

我们看一下DIEN这个结构有什么问题。GRU是串行计算结构,要按照时间步一步一步进行计算。DIEN有两个GRU,第2个GRU还要基于第1个GRU的结果来做attention,所以第2个GRU必须要等到第1个GRU全部计算完成才能开始计算,两个GRU单元无法并行计算,所以可能存在时延大的问题,序列越长,时延可能就越长。文中介绍说工业场景输入的序列长度是50,累积两个GRU的时延,相当于序列长度为100的时延。

4.4 特点

对兴趣进化建模的优点如下:

兴趣进化层结合了注意力机制中的局部激活能力和GRU的序列学习能力来实现建模兴趣演化的目标。

0x05 总结

DIEN的主要贡献如下:

下一篇将介绍模型源码整体架构,敬请期待。

0xFF 参考

https://blog.csdn.net/John159151/article/details/91377508)

【paper reading】Deep Interest Evolution Network for Click-Through Rate Prediction

也评Deep Interest Evolution Network

https://zhuanlan.zhihu.com/p/134170462)

【读书笔记】Deep Interest Evolution Network for Click-Through Rate Prediction

人人都能看懂的LSTM

从动图中理解 RNN,LSTM 和 GRU

台大李宏毅机器学习(一)——RNN&LSTM

李宏毅机器学习(2016)

推荐系统遇上深度学习(二十四)–深度兴趣进化网络DIEN原理及实战!

from google.protobuf.pyext import _message,使用tensorflow出现 ImportError: DLL load failed

DIN 深度兴趣网络介绍以及源码浅析

https://blog.csdn.net/qq_35564813/article/details/90714056)

阿里CTR预估三部曲(2):Deep Interest Evolution Network for Click-Through Rate Prediction简析

推荐系统遇上深度学习(二十四)–深度兴趣进化网络DIEN原理及实战!

【论文导读】2019阿里CTR预估模型—DIEN(深度兴趣演化网络)

标签:GRU,进化,用户,阿里,DIEN,序列,兴趣
来源: https://www.cnblogs.com/rossiXYZ/p/13796682.html