论文原文:
论文题目:《Deep Interest Evolution Network for Click-Through Rate Prediction》
地址:https://arxiv.org/abs/1809.03672
一 、背景
在第二篇文章我们提到了阿里巴巴的《Deep Interest Network for Click-Through Rate Prediction》先从论文的题目来看这两篇论文有什么区别,DIEN多了个关键词evolution,这个词是进化,演变,发展的意思,从字面意思来理解,就是用户的兴趣是时时都在变化的,可能用户在上一周喜欢穿裙子,在这周就变成了喜欢穿牛仔裤了,用户的兴趣是不断进化的,如果不对这种兴趣的变化性及时进行建模和特征提取,那么就很难捕获到用户的主要兴趣。
对于CTR预测模型,有必要捕获用户行为数据背后的潜在用户兴趣。此外,考虑到外部环境和内部认知的变化,用户的兴趣会随着时间动态变化。有多种用于兴趣建模的CTR预测方法,而大多数方法都将行为的表示直接视为兴趣,并且缺乏针对具体行为背后的潜在兴趣的专门建模。而且,很少有工作考虑兴趣的变化趋势。
深度兴趣网络(DIN)强调用户兴趣是多种多样的,它使用基于注意力的模型来捕获目标商品的相对兴趣,并获得自适应兴趣表示。 但是,包括DIN在内的大多数兴趣模型都直接将行为视为兴趣,而潜在的兴趣很难通过显式行为充分反映出来。 先前的方法忽略了在行为背后挖掘用户的真正兴趣。 此外,用户兴趣不断发展,获取兴趣的动态对于兴趣表示很重要。
鉴于DIN的上述不足,阿里提出了DIEN,主要的工作如下:
(1)DIEN关注电子商务系统中的利益演化现象,并提出了一种新的网络结构来对利益演化过程进行建模。 兴趣演化模型可产生更具表现力的兴趣表示和更精确的点击率预测。
(2)与直接将行为视为兴趣不同,DIEN专门设计了兴趣提取器层。 针对GRU的隐藏状态对于兴趣表示的针对性较小的问题,我们提出了一种辅助损失。 这使得隐藏状态的表达能力足以代表潜在的兴趣。
(3)设计了兴趣演化层,其中带有注意更新门(AUGRU)的GPU增强了从相关兴趣到目标项目的效果,来更加准确的表达用户兴趣的动态变化性。
二 、模型结构
先看一下DIN的网络结构:
再看一下DIEN的模型结构:
从模型的输入来看,DIEN跟DIN的输入是一样的,user behavior sequence, Target Ad, Context Feature,UserProfile Feature。
除了用户的行为序列部分不一样,其他的结构跟DIN的处理输入是一样的,DIEN对用户的行为序列用GRU进行建模,在后面会详细解释。
2.1 兴趣抽取层Interest Extractor Layer
兴趣抽取层Interest Extractor Layer的主要目标是从embedding数据中提取出interest。但一个用户在某一时间的interest不仅与当前的behavior有关,也与之前的behavior相关,所以作者们使用GRU单元来提取interest。GRU单元的表达式如下:
前面提到了DIEN里面用到了一个辅助loss,我们看一下辅助loss的结构:
这个辅助loss的计算如下:
是当前GRU的状态,这里用这个loss校验这个的准确性,e(t+1)作为正例,负采样得到的行为作为负例e(t+1)',e(t+1)是下一个item的embedding,从模型结构的箭头就可以看出来,e(t+1)'是t时刻除了当前item以外的样本的负采样。
2.2 兴趣进化层Interest Evolution Layer
由于受到外部环境和内部认知的共同影响,随着时间的推移,各种用户兴趣也在不断发展。 以对衣服的兴趣为例,随着人口趋势和用户品味的变化,用户对衣服的偏好也随之变化。 用户对衣服的兴趣的演变过程将直接决定候选衣服的点击率预测。 对兴趣演化过程进行建模的优势如下:
1,兴趣演化可以为最终的兴趣表示提供更多的相对历史信息;
2,最好根据兴趣的变化趋势来预测目标项目的点击率。
用户的兴趣在进化的过程中,有以下两个特点:
1,随着兴趣的多样性,兴趣会漂移。 兴趣漂移对行为的影响是,用户可能会在一段时间内对各种书籍产生兴趣,而在另一时间需要衣服。
2,尽管兴趣可能会相互影响,但每种兴趣都有自己的演变过程,例如书和衣服的发展过程几乎是独立的。 我们只关注与目标项目有关的不断发展的过程。
从模型的结构来看,兴趣进化层用了attention机制来克服兴趣飘逸这种现象,这个跟DIN模型是一样的,不同的是DIN中对user behavior sequence建模后是进行sum pooling
在DIEN中用Target Ad来作为attention的信号,对GRU的状态进行加权:
Attention和GRU结合起来的机制有很多,文中介绍了一下三种:
GRU with attentional input (AIGRU)
这种方式将attention直接作用于输入,无需修改GRU的结构:
Attention based GRU(AGRU)
这种方式需要修改GRU的结构,此时hidden state的输出变为:
GRU with attentional update gate (AUGRU)
这种方式需要修改GRU的结构,此时hidden state的输出变为:
2.3 输出层
Loss:
x = [],分别代表User Profile, User Behavior, Ad and Context form,从模型的结构来看,跟DIN的输出层是一样的,把所有抽出的特征concat后送到MLP后得到一个预测分数,这里就是传统的DNN模型来。
三、实验
主要看DIEN跟DIN的对比,在DIN原文说了为什么不用RNN对用户的历史行为数据建模,与NLP任务中受语法约束的文本不同,用户历史行为的序列可能包含多个并发兴趣。 这些兴趣的快速跳跃和突然结束导致用户行为的顺序数据似乎很嘈杂。但是在DIEN中还是用了GRU对这个历史行为数据进行建模,似乎有点前后矛盾,但是实验结果表明了,其实效果是比DIN效果好的,不过本人并不知道是辅助loss起的关键作用还是单纯的GRU起的作用。
DIEN使用了辅助loss和AUGRU结构,而BaseModel + GRU + AUGRU与DIEN的不同之处就是没有增加辅助loss。可以看到,DIEN的实验效果远好于其他模型。