阿里SDM:用户长短期序列如何结合利用?

论文地址:https://arxiv.org/abs/1909.00385v1

前言

在大规模推荐系统中,获取用户的精准偏好是一个基本问题。本论文提出了一种基于序列的深度匹配模型(Sequential Deep Matching, SDM),通过结合长短期会话(session)和长期行为来获取用户的兴趣演变。

I. 背景介绍

工业界的大规模推荐系统既要准确地预测用户的兴趣,同时也要有足够高的性能以快速响应用户的请求。淘宝的推荐系统的架构分为匹配(matching)和排序两个阶段,在匹配阶段生成一个较大候选集的商品集,然后在排序阶段从中精选出得分最高的商品直接推荐给用户。这一过程中,匹配阶段召回的商品集是排序的基础,起到很关键的作用。现阶段,淘宝线上服务使用的召回模型主要是CF方法。CF只能对静态的user-item对进行建模,更倾向于为用户推荐相同性质的商品,无法准确地描述用户动态的兴趣变化。为了准确地理解用户的兴趣,匹配模型必须对用户序列特征进行有效的利用。

用户行为序列通常分为短期和长期序列,对这两种序列又有不同的利用方法。近年来,许多RNN模型以及attention结构被应用于短期序列的探索。对于同一个商品,用户会从品牌、颜色、风格、口碑等方面进行比较,最终做出自己的选择。在模型结构上,使用单个点乘的attention就无法表现出这一差异。因此论文中借鉴了机器翻译的经验,采用了multi-head self attention来捕捉用户的不同兴趣方向。

对于长期兴趣,一般会将其与当前的短期序列简单地组合在一起。但实际上,用户的长期序列十分丰富,会存在大量的信息冗余。例如某个用户时一位NBA球迷,在该用户浏览球鞋相关的商品时,他的长期序列信息中可能会有一些其他不相关商品的信息,这会对预测用户当前的行为造成偏差。因此简单地将长短期信息拼接,或只是用常数项的权重来结合都无法获得好的效果。我们应当动态地利用长期序列,只选取其中对当前会话有用的信息。本论文中采用了gated fusion结构来结合长短期序列,输入为用户特征以及代表用户长期和短期行为向量,并使用一个可学习的门向量(gate vector)来控制长短期序列如何结合。这样可以选取长期序列中最有效的信息,让用户对长短期兴趣的attention更加精细化。

与现有的基于序列信息的模型相比,SDM主要解决了实际场景中的两个问题:

  • 在同一会话中,可能存在多个兴趣倾向;
  • 用户的长期兴趣与当前的短期会话内容无法高效地结合。

II. 模型架构

2.1 问题描述

下面进入有(ku)趣(zao)的数学公式环节,SDM模型的整体架构如图1所示。用和分别表示用户和商品集合,模型需要解决的问题是,用户在时刻是否会与商品发生交互(点击、购买等)。对于用户,我们可以得到其历史交互过的商品集合,并根据时间远近来排序,构造会话(session)特征。这里对session的划分规则如下:

  • 后台系统记录下的属于同一session ID的商品,归到同一个session中;
  • 交互时间不超过10分钟的商品归到同一session中;
  • 一个session的最大长度为50个,超过50另起一个新的session.


    图1 基本架构

在众多session中,最近的一个session被定义为用户的短期行为,即,这里是序列的长度。用户交互过的七天以前的商品被定义为长期行为,用表示。给定和,SDM模型的任务就是给用户推荐其感兴趣的商品。

该模型取和作为输入,并将其分别编码为在时刻t的短期会话和长期行为, 这两种表示结合起来一起输入到一个gated neural network,这一网络被称为用户预测网络(user predict network),用于预测用户的行为向量. 令表示的embedding vector,其中指商品库中所有商品的数量,是embedding size. SDM的目的是在时刻t+1根据最终的分数来预测top N个商品。最终分数的计算如下:

这里的score是内积函数,是第个商品的embedding vector.

2.2 模型训练和在线服务

在离线训练过程,时刻t的正样本即为用户下一个点击的商品;负样本则是从商品集中使用log-uniform分布选取的非的其他商品。输出函数使用softmax来代表概率,这一过程又称为sampled-softmax。损失函数采用cross-entropy,用公式表示如下


这里是商品集采样后的子集,包含正负样本;是和每个的内积;是每个商品的预测分,是商品的真实概率分布。

除了离线训练之外,SDM模型还被部署到了线上推荐系统上。商品的embedding vector导入到高效率的KNN相似性搜索系统中,同时user prediction network部署到高性能的机器学习实时inference系统,与YouTube视频推荐的架构类似。当用户使用在线服务时,他们会与许多商品有交互,这些交互记录会被记录到后台系统。这些信息会经过处理然后以用户日志的形式存储到数据库中,然后其中有用的信息会被提取出来,用于构造模型的训练数据。在时刻,用户的历史行为(和)被输入到inference系统中,然后用户行为被预测出来。KNN搜索系统就从商品库中检索出与的score(见式(1))最相似的商品,从而筛选出Top N商品。

模型结构如图2所示,下面将详细介绍模型对于长短期序列的利用。


图2 模型细节
2.3 输入特征

为了准确地描述用户特征,除了user ID之外,SDM还使用了一些辅助信息来作为神经网络的输入,如categoray,brand,shop等,用表示。每个输入item ,经过embedding layer转化为dense vector来表示。

其中是第个输入特征的embedding,是embedding size. 是embedding矩阵。
类似的,用户侧信息如年龄,性别等也用这种方式输入到神经网络中

2.4 LSTM

对于用户的短期序列,论文采用了LSTM结构来获取序列信息,将用户的短期序列中的第t个item向量编码为hidden vectors ,又被称为序列偏好表示(sequential preference representation),将被输入到网络的attention层中来获得更高阶的表达。

2.5 Attention机制

在用户的浏览购物过程中,经常会出现随意的无目的的点击,即causal clicks,这会在序列中引入不相关的信息,从而影响的表达效果。SDM采用了self-attention的机制来消除casual clicks的影响。
(a) Multi-head Self-Attention
Self-attention是一种特殊的attention机制,采用序列自身作为query,key和value。对self-attention不熟悉的同学们可以我参考之前的文章:BST: Behavior Sequence Transformer中的self attention过程详解

用户的兴趣是多方面的,例如在浏览一件裙子时,用户可能会考虑到颜色,样式,品牌等等因素,因此单个attention无法完整描述用户的所有兴趣。这里采用multi-head attention机制,将用户兴趣投射到不同的空间上,表示如下:

其中是输出线性变换的权重,代表了heads的总数,.
每一个代表一个潜在的兴趣:

Attention score计算为:

最后,每个head可以写作

(b) User Attention
类似地,不同用户会对同一商品产生不同的兴趣,因此论文在self-attention之上加入了一个user attention模块来挖掘更加个性化的信息,这里用户embedding用作query vector,在t时刻的短期序列可以写作

其中

2.6 长期序列的结合

长期序列包含多个子集: (item ID), (leaf category叶子类目),(一级类目), (店铺),(品牌)等。每个子集都经过embedding编码为dense vector,并以attention pooling的方式聚合起来,用公式表示如下:

其中为的embedding向量,用户embedding向量作为query vector来计算attention score . 不同的子集concat一起后输入到DNN网络中:

这里是长期序列在神经网络中的表示。

论文使用了一个门网络来控制长短期序列的结合。如图2所示,该网络取,,和作为输入,并使用门向量来控制不同序列输入的权重:

最终输出的用户行为向量由下式计算

这里 指元素对应相乘(element-wise multiplication)。

III. 总结

本论文提出了一个将用户的长短期行为结合起来的深度召回模型。模型使用了mult-head self-attention来获取用户长短期行为中的多层次兴趣,并使用门网络的形式将长短期序列结合起来,使长期序列能够更好地发挥作用。

你可能感兴趣的:(阿里SDM:用户长短期序列如何结合利用?)