论文名称: ATRank: An Attention-Based User Behavior Modeling Framework for Recommendation(基于注意力机制的用户行为建模框架及其在推荐领域的应用)
Paper URL: https://arxiv.org/abs/1711.06632
团队: 云零售事业部 - 数据技术团队, 北京大学
作者: 周畅, 白金泽, 宋军帅, 刘效飞, 赵争超, 陈修司, 高军
一.摘要
本文提出一种基于注意力机制的用户异构行为序列的建模框架, 并将其应用到推荐场景中我们将不同种类的用户行为序列进行分组编码, 并映射到不同子空间中我们利用 self-attention 对行为间的互相影响进行建模最终我们得到用户的行为表征, 下游任务就可以使用基本的注意力模型进行有更具指向性的决策我们尝试用同一种模型同时预测多种类型的用户行为, 使其达到多个单独模型预测单类型行为的效果另外, 由于我们的方法中没有使用 RNN,CNN 等方法, 因此在提高效果的同时, 该方法能够有更快的训练速度
二.研究背景
一个人是由其所表现出的行为所定义而对用户精准深入的研究也往往是很多商业问题的核心从长期来看, 随着人们可被记录的行为种类越来越多, 平台方需要有能力通过融合各类不同的用户行为, 更好的去理解用户, 从而提供更好的个性化服务
对于阿里巴巴来说, 以消费者运营为核心理念的全域营销正是一个结合用户全生态行为数据来帮助品牌实现新营销的数据 & 技术驱动的解决方案因此, 对用户行为的研究就成为了一个非常核心的问题其中, 很大的挑战来自于能否对用户的异构行为数据进行更精细的处理
在这样的背景下, 本文提出一个通用的用户表征框架, 试图融合不同类型的用户行为序列, 并以此框架在推荐任务中进行了效果验证另外, 我们还通过多任务学习的方式, 期望能够利用该用户表征实现不同的下游任务
三.相关工作
异构行为建模: 通常通过手动特征工程来表示用户特征这些手工特征以聚合类特征或无时序的 id 特征集合为主
单行为序列建模: 用户序列的建模通常会用 RNN(LSTM/GRU) 或者 CNN + Pooling 的方式 RNN 难以并行, 训练和预测时间较长, 且 LSTM 中的 Internal Memory 无法记住特定的行为记录 CNN 也无法保留特定行为特征, 且需要较深的层次来建立任意行为间的影响
异构数据表征学习: 参考知识图谱和 Multi-modal 的表征研究工作, 但通常都有非常明显的映射监督而在我们的任务中, 异构的行为之间并没有像 image caption 这种任务那样明显的映射关系
本文的主要贡献如下:
尝试设计和实现了一种能够融合用户多种时序行为数据的方法, 较为创新的想法在于提出了一种同时考虑异构行为和时序的解决方案, 并给出较为简洁的实现方式
使用类似 Google 的 self-attention 机制去除 CNNLSTM 的限制, 让网络训练和预测速度变快的同时, 效果还可以略有提升
此框架便于扩展可以允许更多不同类型的行为数据接入, 同时提供多任务学习的机会, 来弥补行为稀疏性
四.ATRank 方案介绍
整个用户表征的框架包括原始特征层, 语义映射层, Self-Attention 层和目标网络语义映射层能让不同的行为可以在不同的语义空间下进行比较和相互作用 Self-Attention 层让单个的行为本身变成考虑到其他行为影响的记录目标网络则通过 Vanilla Attention 可以准确的找到相关的用户行为进行预测任务通过 Time Encoding + Self Attention 的思路, 我们的实验表明其的确可以替代 CNN/RNN 来描述序列信息, 能使模型的训练和预测速度更快
1. 行为分组
某个用户的行为序列可以用一个三元组来描述 (动作类型, 目标, 时间) 我们先将用户不同的行为按照目标实体进行分组, 如图中最下方不同颜色 group 例如商品行为, 优惠券行为, 关键字行为等等动作类型可以是点击 / 收藏 / 加购领取 / 使用等等
每个实体都有自己不同的属性, 包括实值特征和离散 id 类特征动作类型是 id 类, 我们也将时间离散化三部分相加得到下一层的向量组
即, 某行为的编码 = 自定义目标编码 + lookup(离散化时间) + lookup(动作类型)
由于实体的信息量不同, 因此每一组行为编码的向量长度不一, 其实也代表行为所含的信息量有所不同另外, 不同行为之间可能会共享一些参数, 例如店铺 id, 类目 id 这类特征的 lookup table, 这样做能减少一定的稀疏性, 同时降低参数总量
分组的主要目的除了说明起来比较方便, 还与实现有关因为变长异构的处理很难高效的在不分组的情况下实现并且在后面还可以看到我们的方法实际上并不强制依赖于行为按时间排序
2. 语义空间映射
这一层通过将异构行为线性映射到多个语义空间, 来实现异构行为之间的同语义交流例如框架图中想表达的空间是红绿蓝 (RGB) 构成的原子语义空间, 下面的复合色彩 (不同类型的用户行为) 会投影到各个原子语义空间在相同语义空间下, 这些异构行为的相同语义成分才有了可比性
类似的思路其实也在 knowledge graph representation 里也有出现而在 NLP 领域, 今年也有一些研究表明多语义空间的 attention 机制可以提升效果个人认为的一点解释是说, 如果不分多语义空间, 会发生所谓语义中和的问题简单的理解是, 两个不同种类的行为 a,b 可能只在某种领域上有相关性, 然而当 attention score 是一个全局的标量时, a,b 在不那么相关的领域上会增大互相影响, 而在高度相关的领域上这种影响则会减弱
尽管从实现的角度上来说, 这一层就是所有行为编码向一个统一的空间进行映射, 映射方法线性非线性都可以, 但实际上, 对于后面的网络层来说, 我们可以看作是将一个大的空间划分为多语义空间, 并在每个子空间里进行 self-attention 操作因此从解释上来说, 我们简单的把这个映射直接描述成对多个子语义空间进行投影
3. Self Attention 层
Self Attention 层的目的实际上是想将用户的每一个行为从一个客观的表征, 做成一个用户记忆中的表征客观的表征是指, 比如 A,B 做了同样一件事, 这个行为本身的表征可能是相同的但这个行为在 A,B 的记忆中, 可能强度清晰度是完全不一样的, 这是因为 A,B 的其他行为不同实际上, 观察 softmax 函数可知, 某种相似行为做的越多, 他们的表征就越会被平均而带来不一样体验的行为则会更容易保留自己的信息因此 self attention 实际上模拟了一个行为被其他行为影响后的表征
另外, Self Attention 可以有多层可以看到, 一层 Self-Attention 对应着一阶的行为影响多层则会考虑多阶的行为影响这个网络结构借鉴的是 google 的 self-attention 框架
具体计算方式如下:
记 S 是整个语义层拼接后的输出, Sk 是第 k 个语义空间上的投影, 则经过 self-attention 后第 k 个语义空间的表征计算公式为:
这里的 attention function 可以看做是一种 bilinear 的 attention 函数最后的输出则是这些空间向量拼接后再加入一个前馈网络
4. 目标网络
目标网络会随着下游任务的不同而定制本文所涉及的任务是用户行为预测及推荐场景的点击预测的任务, 采用的是 point-wise 的方式进行训练和预测
框架图中灰色的 bar 代表待预测的任意种类的行为我们将该行为也通过 embeddingprojection 等转换, 然后和用户表征产出的行为向量做 vanilla attention 最后 Attention 向量和目标向量将被送入一个 Ranking Network 其他场景强相关的特征可以放在这里这个网络可以是任意的, 可以是 wide & deep,deep FM,pnn 都行我们在论文的实验中就是简单的 dnn
五.离线实验
为了比较框架在单行为预测时的效果, 我们在 amazon 购买行为的公开数据集上的实验
训练收敛结果如下图:
用户平均 AUC 如下图:
实验结论: 在行为预测或推荐任务中, self-attention + time encoding 也能较好的替代 cnn+pooling 或 lstm 的编码方式训练时间上能较 cnn/lstm 快 4 倍效果上也能比其他方法略好一些
Case Study
为了深究 Self-Attention 在多空间内的意义, 我们在 amazon dataset 上做了一个简单的 case study 如下图:
从图中我们可以看到, 不同的空间所关注的重点很不一样例如空间 I, II, III, VIII 中每一行的 attention 分的趋势类似这可能是主要体现不同行为总体的影响另一些空间, 例如 VII, 高分 attention 趋向于形成稠密的正方形, 我们可以看到这其实是因为这些商品属于同样的类目
下图则是 vanilla attention 在不同语义空间下的得分情况
多任务学习
论文中, 我们离线收集了阿里电商用户对商品的购买点击收藏加购优惠券领取关键字搜索三种行为进行训练, 同样的也对这三种不同的行为同时进行预测其中, 用户商品行为记录是全网的, 但最终要预测的商品点击行为是店铺内某推荐场景的真实曝光点击记录优惠券关键字的训练和预测都是全网行为
我们分别构造了 7 种训练模式进行对比分别是单行为样本预测同类行为 (3 种), 全行为多模型预测单行为 (3 种), 全行为单模型预测全行为 (1 种) 在最后一种实验设置下, 我们将三种预测任务各自切成 mini-batch, 然后统一进行 shuffle 并训练
实验结果如下表:
all2one 是三个模型分别预测三个任务, all2all 是单模型预测三个任务, 即三个任务共享所有参数, 而没有各自独占的部分因此 all2all 与 all2one 相比稍低可以理解我们训练多任务 all2all 时, 将三种不同的预测任务各自 batch 后进行充分随机的 shuffle 文中的多任务训练方式还是有很多可以提升的地方, 前沿也出现了一些很好的可借鉴的方法, 是我们目前正在尝试的方向之一
实验表明, 我们的框架可以通过融入更多的行为数据来达到更好的推荐 / 行为预测的效果
六.总结
本文提出一个通用的用户表征框架, 来融合不同类型的用户行为序列, 并在推荐任务中得到验证
未来, 我们希望能结合更多实际的商业场景和更丰富的数据沉淀出灵活可扩展的用户表征体系, 从而更好的理解用户, 提供更优质的个性化服务, 输出更全面的数据能力
如果您也有论文被 AAAI 录用或者对论文编译整理工作感兴趣, 欢迎关注 AI 前线 (ai-front), 在后台留下联系方式, 我们将与您联系, 并进行更多交流!
评价本文
专业度风格
编辑观点主编观点
此内容所在的主题为架构 & 设计
来源: http://www.infoq.com/cn/articles/alibaba-AAAI-2018-ATRank