作者以及单位
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,找到历史行为权重):
说说相同:
用户的历史行为(搜索历史、点击商品、看过视频、浏览记录),需要各这些高维、稀疏特征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是直接丢进去算,我觉得后期这里可以处理一下),预测点击率。
如何使用attention,文中尝试了3种方法,这里只介绍效果最好的一种。文中将attention分数与update gate相乘,替换原始的update gate,称为AUGRU,其中A指的是Attention,U指的是Update gate。有兴趣的读者可以看原文。
创新点
loss准确性Interest Extractor Layer:利用GRU建模用户表现序列,还提出了一个辅助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)
网友评论