pdf: https://arxiv.org/abs/1711.06632
[AAA2018]
这篇文章是阿里和北大提出的基于注意力机制的用户异构行为建模框架,主要用于推荐任务。
一个用户可以被Ta的历史行为所表示,但是由于用户行为是异构且动态的,难以建模。异构数据可以通过计算潜在空间的距离来表示,却没有一种可以将用户的异构行为进行表征的方法。
此外,用户的历史行为可以看作一种序列数据,早期对序列数据的处理是人工提取特征,提取的特征不能充分的表示数据本身,同时需要太多的工作,而且聚合的特征可能会丢失与下游应用相关的特性;现有的针对序列数据进行推荐的方法如RNN,CNN,LSTM将之前所有的序列数据保存下来进行推荐,而要推荐的物品很可能只与用户历史行为的一小部分有关,降低了关联物品的相关性,同时会引入噪声;而RNN,CNN方法的编码器,将序列数据进行固定长度的编码,无法适应长短不一的序列数据,影响推荐效果。
作者提出注意力机制来处理异构数据,创新在于同时考虑异构数据和时序两方面,并用了一种较为简单的方式来实现。
模型框架如图,包含以下几层:
Raw Feature Spaces
Behavior Embedding Spaces
Latent Semantic Spaces
Self-Attention Layer
Downstream Application Network
Definition
一个用户的行为可以用一个三元组来表示:a tuple{a,o,t} 三元组(动作类型,目标,时间)
其中:
a: 用户行为 (E.g., 点击/收藏/加购、领取/使用)
o: 用户行为目标,用它所包含的特征来表示(E.g., 商品行为,优惠券行为,关键字行为)
t: 用户发生行为的时间
一个用户可以表示为它所有的行为:
Raw Feature Spaces
原始特征层的任务是划分,根据目标类型将用户的行为划分进不同的行为组G。
用户行为组为:
其中
Behavior Embedding Spaces
行为嵌入层的任务是将用户的行为转换为嵌入向量。
嵌入向量:
将用户向量里的行为目标,行为时间,用户行为分别向量化来表示用户的嵌入向量。
其中,因为行为目标是由其属性表示的,所以是实值属性,直接进行Embedding嵌入,而时间因为是一个连续值,所以将其离散化后再进行lookup嵌入,用户行为本身是一个id属性,可以直接进行lookup嵌入,lookup做的是一个查找的工作,实际是进行one-hot编码。
此外,由于有一些属性是共有的,比如店铺id,物品类别id,所以允许参数共享,可以减少一定的稀疏性,同时降低参数总量。
在这一层,仔细观察模型框架图可以发现每一组的嵌入表示的长短不一,这是因为每一组所包含的用户行为数量不同,而且每一个用户行为所包含的信息也是不同的。
那么如何进行比较呢,下一层会将各组的长度进行统一。
一些符号:
一个用户的行为(A user behavior):
用户行为组(Behavior groups):
所有的用户行为组(All behavior groups):
Latent Semantic Spaces
潜在语义层将每一组用户行为投射到K个潜在的语义空间,仔细观察这一层的各组长度统一,主要进行了以下两个操作:
将各组的长度统一后,进行concat操作可以得到一个潜在的语义空间S,将同样的行为重复k次,可以得到k个潜在的语义空间,Sk指的是第k层的投射。
Self-Attention Layer
这一层参考的是Transformer的结构。
首先计算k层潜在语义层的注意力矩阵:
可以和Transformer的公式进行对应,Sk对应Q,S对应K:
然后得到k层潜在语义层的注意力向量:
Downstream Application Network
可以根据目标任务来选择神经网络的结构。
框架图中灰色的 bar 代表待预测的任意种类的行为,将该行为也通过 embedding、projection 等转换,然后和用户表征产出的行为向量做 vanilla attention,最后 Attention 向量和目标向量将被送入一个 Ranking Network。
Loss函数是sigmoid的二元交叉熵损失,评测指标是AUC。
数据集:
实验结果:
参考:
[1] AAAI 2018 | 阿里&北大提出基于注意力机制的用户行为建模框架:https://www.sohu.com/a/219081289_129720
[2] 推荐系统遇上深度学习(五十二)-基于注意力机制的用户行为建模框架:ATRank:https://www.jianshu.com/p/1fe9c66dac4a
[3] 使用Excel通俗易懂理解Transformer!:https://www.jianshu.com/p/2b0a5541a17c