Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

读论文推荐系统之ctr预估-DIEN模型解析 #11915

Open
guevara opened this issue Dec 5, 2024 · 0 comments
Open

读论文推荐系统之ctr预估-DIEN模型解析 #11915

guevara opened this issue Dec 5, 2024 · 0 comments

Comments

@guevara
Copy link
Owner

guevara commented Dec 5, 2024

(读论文)推荐系统之ctr预估-DIEN模型解析



https://ift.tt/19Clhx3



Jesse_jia


本人才疏学浅,不足之处欢迎大家指出和交流。

今天继续更阿里系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

  1. DIEN关注电商场景中兴趣演化的过程,并提出了新的网络结构来建模兴趣进化的过程,这个模型能够更精确的表达用户兴趣,同时带来更高的CTR预估准确率

  2. 设计了兴趣抽取层,并通过计算一个辅助loss,来提升兴趣表达的准确性

  3. 设计了兴趣进化层,来更加准确的表达用户兴趣的动态变化性


2、模型



DIEN模型整体结构如下:

可以看到,新模型较之于base model和DIN,其他部分保持一致,变化只在于用户行为序列(UBS)的处理做了调整,将其组织成了序列数据的形式。这里包含了3个部分,最底层是Behavior Layer,用于将用户浏览过的商品转换成对应的embedding,并且按照浏览时间做排序,中间层是兴趣提取层Interest Extractor Layer,最上层是兴趣发展层Interest Evolving Layer,我们重点介绍上面两个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,文中介绍了三种方式:

  1. GRU with attentional input (AIGRU) 用attention直接影响这一层的输入:

  1. Attention based GRU(AGRU) 用 aₜ 代替GRU的update gate输出:

  1. 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]







via Jesse's Blog

December 5, 2024 at 07:10PM
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant