今天介绍的论文是阿里在CIKM20上发表的一篇文章,标题为《Deep Time-Aware Item Evolution Network for Click-Through Rate Prediction》,之前介绍的阿里的论文大都是从用户行为序列出发,来建模用户的兴趣表示,而缺少对候选物品的更为丰富的建模,而本文则是从物品的角度出发,将物品行为引入到网络中,一起来看一下。
1、背景
之前介绍的阿里的论文大都是从用户行为序列出发,来建模用户的兴趣表示。但是,用户的偏好会发生变化或者产生新的偏好,例如热点新闻、推特或者照片,会吸引用户的注意力,使其产生新的兴趣。而在电商领域,如双十一,用户可能会有不同于平常购物的新的兴趣出现,一些促销力度较大的商品,可能在短期内成为热销商品。在上述的场景下,使用用户行为序列通常无法预测用户新产生的兴趣,不仅因为用户行为中有过时的兴趣,同时预测用户新的兴趣严重依赖于物品的演化过程。
为了解决上述的问题,论文提出了时间感知的深度物品演化网络(Deep Time-Aware Item Evolution Network,简称TIEN ),我们在下一节中进行介绍。
2、TIEN介绍
TIEN的整体结构如下图所示:
可以看到,主要包括Embedding Layer、Time-Interval Attention Layer、Robust Personalized Attention Layer和Time-Aware Evolution Layer。接下来分别进行介绍。
2.1 模型输入
模型输入主要包含四部分,用户u,候选物品i,用户行为序列Iu和物品行为序列Ui。用户行为序列即用户交互过的物品(物品特征)按照时间先后的排序结果,物品行为序列则是与该物品有过交互的用户(用户特征)按照时间先后的排序结果。
用户和物品特征主要包括多个离散特征,对用户特征来说,包括用户ID、性别、年龄段等等,对物品特征来说,主要包括物品ID、店铺ID和品类ID等等。用户行为序列中每一个物品会转换为对应的特征表示,而物品行为序列中每一个用户也会转换为对应的特征表示。
2.2 Embedding Layer
在Embedding层,用户和物品特征会转换为对应的embedding,分别用eu和ei表示。
同样,用户行为序列中的每一个物品特征也会转换为对应的embedding表示,用Su表示,物品行为序列中每一个用户特征也会转换为对应的embedding表示,用Si表示:
2.3 Time-Interval Attention Layer
物品行为序列是一系列用户的集合,在Time-Interval Attention Layer,我们使用GRU单元来建模物品的演化过程,同时将时间因素考虑进来,利用时间信息对每一个行为进行加权,如更近期交互的用户应该具有更高的权重。假设当前请求的时间为t,物品行为序列中第k个用户与其交互的时间为tk,则其时间间隔为tivk=|t-tk|。进一步,将时间间隔进行划分[0,1),[1,2),[2,4),...[2j,2j 1)不同分段,将tivk转换为对应的离散特征xtiv,进一步转换为对应的embedding表示:
同时,利用GRU单元建模物品行为的演化过程,第k步的hidden state为huk。同时,显式将时间间隔embedding考虑进来,作为权重,计算得到hutk(二者进行element-wise的相加):
2.4 Robust Personalized Attention Layer
在Robust Personalized Attention Layer,主要解决两方面的问题,首先是如何过滤物品交互序列中的噪声。其次是如何从物品行为序列的用户中,找到与当前用户(target-user)更为相似的用户。
第二个问题主要是用注意力机制解决,注意力机制计算如下:
其中K使用hutk,V使用huk。即在计算与当前用户的相关性权重时,我们将时间因素考虑进来,而在计算最后的加权向量表示时,则将时间因素进行剔除。
接下来的问题是Q是什么,Q可以是当前用户的向量表示eu。但为了过滤噪声,论文中使用的Q计算如下:
上式中第二项是物品行为序列中所有用户向量的avg-pooling,使用avg-pooling的方式得到的向量,能够表示所有用户的一些共性的特点,一些明显与共性特点不同的用户,在计算权重时,得到的权重会相对较小,从而一定程度上达到了消除噪声的目的,当然这是一种个性化与噪声消除相互权衡的做法。实际中也不一定能够取得更好的效果。
Q、K、V确定后,使用Multi-head attention得到这一层的输出,计作erpi。计算如下:
2.5 Time-Aware Evolution Layer
在Time-Aware Evolution Layer,主要建模物品的潮流趋势或者说生命周期。如一些商品可能仅在双十一的时候卖的比较火爆,而在平时则很少有人去购买。
这里的做法主要是通过一个GRU单元,将之前得到的时间向量作为输入,得到最终的隐层输出:
通过Robust Personalized Attention Layer,得到了erpi,在Time-Aware Evolution Layer,得到了h'tiv,二者经过一定的融合函数,得到最终的物品行为序列的向量表示,融合方式可以是element-wise相加,相乘或更为复杂的非线性方式等等。
2.6 全连接层&损失计算
上述主要介绍的是对物品行为序列的处理过程,对于用户行为序列,使用GRU和Attention层进行建模,可以参考TIEN的整体结构图,本文不做详细介绍。
在最后的全连接层,将当前用户的向量表示,候选物品的向量表示,用户行为序列的向量表示,物品行为序列的向量表示,拼接后输入到全连接层中,得到最终的预测结果(当然下游任务不一定是CTR,CVR/GMV/Price预估等都可以)。如果下游任务是CTR,则使用logloss来计算损失:
3、实验结果
首先,来看下TIEN与baseline模型的效果对比,其在不同数据集上的效果均好于base模型:
其次,看一下不同的Layer是否都对最终的结果有提升作用:
最后,看下物品行为序列的长度对于AUC的影响:
好了,本文就介绍到这里,感兴趣的同学可以阅读原文哟~