美文网首页
2019AAAI-Deep interest evolution

2019AAAI-Deep interest evolution

作者: andyham | 来源:发表于2021-04-26 20:14 被阅读0次

作者以及单位

Guorui Zhou et al.阿里巴巴
论文下载地址:https://arxiv.org/pdf/1706.06978v4.pdf
DIEN 论文笔记:Deep Interest Evolution Network for Click-Through Rate Prediction - qccz123456 - 博客园 (cnblogs.com)
核心故事:习惯habit和兴趣interest是不一样的,之前工作捕捉的是习惯(过去),DIEN捕捉的是兴趣(未来)。

解决问题

依然是CTR的问题,是在DIN的基础上的优化工作。
逻辑层面解决的问题:解决了在模型中通过用户越新的行为,越反应用户当下的兴趣,对于推测之后的行为所发挥的作用也越大。
代码层面解决的问题:作者在attention的基础上加了两层(Extractor & Evolving):

最底层是Behavior Layer,用于将用户浏览过的商品转换成对应的embedding,按照浏览时间做排序;
中间层是兴趣提取层Interest Extractor Layer;
最上层是兴趣发展层Interest Evolving Layer;

但是对于这样的布局也有一些不同的声音,见最下面的参考链接。

研究动机

这篇论文我特别留意的原因是在于,之前我做过基于增量学习提高movielens推荐准度的。但是我是基于“可解释的”传统模型。而这篇是基于self-attention的修改,结果上属于“增量”,但比增量的机制更精巧。

精巧在于,我以前把用户行为数据做了聚类,然后以层的概念进行排序,最新习惯,在最上层。但是DIEN出发点应该是类似的,但是他有两个优势是别人没有做过的:
1.可以从显性的习惯behavior中得到潜在暂时的兴趣interests。
2.能够模仿兴趣进化的过程evolving process(故事似乎说的特别好)。

研究方法

如果细说研究方法,先得看看CTR的深度学习base和作者去年写的DIN(去除了base的softmax,找到历史行为权重):

BASE
说说相同:
用户的历史行为(搜索历史、点击商品、看过视频、浏览记录),需要各这些高维、稀疏特征embedding之后的多个低维向量,然后“合并”成一个向量,作为用户兴趣的表示,这个“合并”就是所谓Pooling。DIN与DIEN的相同之处,都是通过Attention来实现Pooling投喂DNN(其他的文章有的用Youtube DNN,有的用Neural Factorization Machine),使用户兴趣的向量表示,根据候选物料的不同而不同,实现用户兴趣的“千物千面”。
说说不同:
DIN没有考虑用户历史之间的时序关系, DIEN则使用了GRU来建模用户历史的时间序列。

模型最核心的应该是:DIEN致力于捕捉用户兴趣并模拟兴趣发展过程。 下面说说如何操作。

第一步:用户历史行为behavior肯定是一个时间序列,通过嵌入层转换所有类别的特征;
第二步:(因为最终结果要喂入RNN,最后一个状态要包含了所有历史信息)所以,作者用一个双层的GRU来建模用户兴趣。第一层GRU喂进是用户历史接触过的item embedding微量,输出的就是用户各时刻的兴趣序列。这一层被称为Interest Extraction Layer;
第三步:将第一层的输出,喂进第二层AUGRU,并用attention score(基于第一层的输出向量与候选物料计算得出)来控制第二层的GRU的update gate,将注意力score控制update gate!(这一句很重要)。这一层叫做Interest Evolving Layer。
第四步:Interest Evolving Layer的最后一个状态作为用户兴趣的向量表示,与ad, context的特征一同喂入MLP(从图可以看到这些side info是直接丢进去算,我觉得后期这里可以处理一下),预测点击率。

DIEN

如何使用attention,文中尝试了3种方法,这里只介绍效果最好的一种。文中将attention分数与update gate相乘,替换原始的update gate,称为AUGRU,其中A指的是Attention,U指的是Update gate。有兴趣的读者可以看原文。

创新点

Interest Extractor Layer:利用GRU建模用户表现序列,还提出了一个辅助loss来提升兴趣表达的准确性。

loss准确性

Interest Evolving Layer:主要目标是刻画用户兴趣的进化过程。如何做的?将注意力score控制update gate,即AIGRU。三个过程:先直接利用注意力的score来影响兴趣变化层的输入AIGRU,这个方法不需要改变GRU相关的结构。利用注意力score来控制hidden state的更新AGRU,该方法减弱了不相关兴趣的影响。在AGRU中使用了一个标量(attention score)来取代了一个向量,这忽视了不同维度的重要性,因此AUGRU应运而生。

结论

我其实对这个文章有一些结论和问题,我看知乎有人总结的很好了(参考链接如下,大概意思设计复杂了,没有原来DIN艺术感强,用RNN 不合适),具体说一下我的思考:
1.训练复杂:两个GRU单元无法并行计算,所以可能存在时延大的问题,序列越长,时延可能就越长。文中介绍说工业场景输入的序列长度是50,累积两个GRU的时延,相当于序列长度为100的时延。
2.有没有必要用两套GRU,可以和side info结合起来,embedding后给兴趣发展层,直接挖掘商品之间依赖关系。而且似乎是在电商的数据上提升很好。

参考:

论文阅读:《Deep Interest Evolution Network for Click-Through Rate Prediction》_ybjlucky的博客-CSDN博客
阿里CTR预估三部曲(2):Deep Interest Evolution Network for Click-Through Rate Prediction简析_loserChen的博客-CSDN博客
知乎这篇文章值得留意(论文的作者Guorui Zhou对知乎提问的人做出了回答,也很精彩)也评Deep Interest Evolution Network - 知乎 (zhihu.com)

相关文章

网友评论

      本文标题:2019AAAI-Deep interest evolution

      本文链接:https://www.haomeiwen.com/subject/bnmdrltx.html