论文:
论文题目:《Deep Time-Aware Item Evolution Network for Click-Through Rate Prediction》
论文地址:https://dl.acm.org/doi/pdf/10.1145/3340531.3411952
我们在之前介绍过阿里的DIEN模型,DIEN是对DIN的改进,因为在阿里的电商生态里,用户的兴趣是不断演化的,所以需要去捕获用户的兴趣演化。除了用户的兴趣会演化以外,item的流行度也会演化,比如在中秋节的时候月饼就会更加受人们喜爱,所以TIEN围绕着item演化的方向进行了探索,一起来看看吧。
一 、背景
item的流行度在电商领域是一个重要的特征,无论是在推荐还是在搜索中,推荐的时效性和搜索的时效性都是很重要的一个建模标准,在中国,有很多重要的节日和购物节,除了中秋给用户推荐月饼,端午给用户推荐粽子外,还有因为购物节给用户推荐的场景。在淘宝的双十一场景下,有很多爆款或者降价促销的商品,这些商品是需要被推荐给用户的。而通常情况下,用户的兴趣可能会与过去的习惯有所不同,或者促销物品之类的曝光可能会在很短的时间内爆发。传统的对用户的序列行为进行建模无法去捕获这种item的演化过程,因为在用户行为中,可能存在过时的兴趣,并且不能很好地表示item随时间的受欢迎程度。
item的短期受欢迎程度一定程度上是受近期购买过这个商品的user的行为相关的,如果用户A和用户B在最近都购买过相同的item,那么A和B就可以在某种程度上去刻画这个item的演化过程。
在介绍模型之前,我们先来理清楚几个问题。
user behaviors:用户的点击序列,论文中定义为 local interactive behavior
item behaviods:点击某个item的用户序列,论文中定义为 global interactive behavior
上面两个序列都是按照时间顺序排列的,很容易理解,user behaviods刻画的是用户的local兴趣特征,只是在某个具体用户上面的序列,而item behaviors是刻画的某个item在所有user中的信息,具有global的特点,刻画item behaiors有助于我们去刻画item的global受欢迎程度,一定程度上可以代入userCF的思想去理解,或者用user behaviods对偶的思路去理解这个global的概念。
我们在上一篇文章中介绍过了微信看一看的look-alike模型,其实刻画的也是item behaviors,具体的可以去看上一篇文章。
传统的方法去处理item behaiors序列是有一定的缺陷的,一般是等同的去处理序列中的元素,或是进行pooling操作,或是sum操作,这种方法跟在user behaviors中去处理item的方法一样,但是这样存在着一下两个缺陷:
1.忽略了交互时间这个重要的特征,因为交互时间在建模item演化是十分重要的,忽略商品行为中交互时间的方法可能会将用户过时的兴趣分散到他们当前的相似用户中。例如,几年前,一位女学生购买了一件校服,由于她的兴趣不断变化,现在可能更喜欢女士服装或都市时尚的连衣裙,因此并不给跟她现在兴趣类似的用户推荐校服。相反,应该将校服推荐给最近购买过校服的类似用户。
2.其次,商品行为中的交互时间对于用户的吸引力至关重要。即使具有相同的item behaviors,这些item也可能具有不同的流行趋势和生命周期。例如,item A和item B具有相同的交互用户,但交互时间分别是一天前和一年前。这意味着item A目前比item B更受欢迎。因此,在当前时间之前很久就点击或购买的item可能对当前推荐的影响较小。
说了那么多,其实就是说一件事,用户在很久很久以前的行为不能去影响到现在兴趣跟他相似的用户,所以需要把交互时间这个特征考虑进来。
为了解决上述的问题,论文提出了时间感知的深度物品演化网络(Deep Time-Aware Item Evolution Network,简称TIEN ),一起来看看TIEN的模型结构吧。
二、TIEN模型结构
可以看到整个模型的输入分成几个部分:
1.user behaviors,这是用户的点击序列,跟seq model中的序列一样
2.item behaiors,这是item的用户序列,用来刻画item的演化趋势
3.user的特征,一些画像信息吧,一些age,gender信息
4.候选item的特征
整个TIEN模型结构分成四个部分,我们来一一介绍。
2.1 Embedding Layer
Embedding Layer也是老调重弹了,具体的细节就不说了,就是把四个特征全部转化为embedding:
user behaviods跟item behaiors表示为:
有一个地方,我们需要解释一下,在user behaviods和item behaviors中,每一项的vec是由很多个特征组成的,比如说用户u的序列中有i,j,k那么ei这个向量是由item i的id,类别id,颜色id等属性特征经过embedding后avg出来的向量。item behaviors同理。
2.2 Time-Interval Attention Layer
从图中我们可以看到Time-Interval Attention Layer是用来建模item behaviors的,这个layer由gru构成,主要刻画item的演化趋势,是整个TIEN的重点建模对象。我们在第一章里面已经说过了,交互的时间在刻画item演化的重要性,所以在用GRU建模这个序列的时候也要加上交互时间这个特征,我们利用时间信息对每一项进行加权,离当前时间越近的项应该获得更大的关注,自然权值就越大。假设,当前的请求时间是t,物品行为序列中第k个用户与这个ittem的交互时间为,那么这一项的交互时间间隔表示为= | t - tk|,进一步,将时间间隔进行划分[0,1),[1,2),[2,4),...[,)不同分段,将转换为对应的离散特征,进一步转换为对应的embedding表示:
GRU建模整个物品序列后得到所有的H,也就是每一个时间步的输出h,但是我们需要加上时间的embedding来表示最后的item演化:
2.3 Robust Personalized Attention Layer
Time-awareness 有助于关注最近一段时间与特定项目进行交互的用户。 但是,新兴的偏好建议可能会受到嘈杂的交互作用的影响。为了实现个性化的商品动态,TIEN使用注意力机制来激活与某些目标用户有关的商品行为中最相似的用户。这里的思路跟DIN类似,但是又不一样,共同的地方在于,序列有可能是发散的,所以需要attention去纠正,去除噪声用户的影响,不同的地方在于attention的细节不一样。
首先,Attention中的Query不同,TIEN中的Q表示为:
除了用户本身的向量以外,还加上了后面的一项,这一项是物品行为序列中所有用户向量的avg-pooling。使用avg-pooling的方式得到的向量,能够表示点击过该item的所有用户的一些共性的特点,一些明显与共性特点不同的用户,在计算权重时,得到的权重会相对较小,从而一定程度上达到了消除噪声的目的,这是一种个性化与噪声消除相互权衡的做法。
Attention操作是:
其中K为:
V为:
这里,在计算attention score的时候考虑的时间的因素,但是在计算最后的结果的时候只用了原始的h。
最后用multi-head attention的方式求得最后的输出表示:
2.4 Time-Aware Evolution Layer
看TIEN的模型结构,我们发现GRU一共用了三次,一次在物品行为序列中使用,一次在用户行为序列中使用,一次在时间间隔序列中使用:
为什么要对时间这个序列单独建模呢?在许多情况下,每个商品都有不同的流行趋势和生命周期,这也是电子商务中商品的最重要特征。 但是,以前将item行为建模为序列的方法忽略了item行为的交互时间戳,这导致两个具有相同users序列的item可能具有相同的流行度,因此需要加入时间间隔这个特征。我们使用GRU逐步学习相关的时间间隔嵌入,以获取整个时间间隔序列中最具代表性的信息。
在得到htiv后我们将这个向量跟之前得到的erpi进行融合,融合的方法有很多,比如直接concat,相加,外积,以及一些更加复杂的非线性融合方式都可以,就得到了item的演化向量。
2.5 输出和损失函数
我们在2.4节中得到了item的演化向量,除了这个向量以外,还有user的本身特征,候选item的本身特征,以及通过gru建模出来的用户行为特征,直接将这四个特征concat后送入到mlp+sigmoid进行分类即可: