阿里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所示。用UI分别表示用户和商品集合,模型需要解决的问题是,用户u \in U在时刻t是否会与商品i \in I发生交互(点击、购买等)。对于用户u,我们可以得到其历史交互过的商品集合,并根据时间远近来排序,构造会话(session)特征。这里对session的划分规则如下:

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


    图1 基本架构

在众多session中,最近的一个session被定义为用户的短期行为,即S^u = [i_1^u, ..., i_t^u, ..., i_m^u],这里m是序列的长度。用户交互过的七天以前的商品被定义为长期行为,用L^u表示。给定S^uL^u,SDM模型的任务就是给用户推荐其感兴趣的商品。

该模型取S^uL^u作为输入,并将其分别编码为在时刻t的短期会话s^u_t和长期行为\boldsymbol {p^u}, 这两种表示结合起来一起输入到一个gated neural network,这一网络被称为用户预测网络(user predict network),用于预测用户的行为向量\boldsymbol o^u_t \in \Bbb R^{d\rm{x}1}. 令\boldsymbol V \in \Bbb R^{d\rm{x}|I|}表示I的embedding vector,其中|I|指商品库中所有商品的数量,d是embedding size. SDM的目的是在时刻t+1根据最终的分数来预测top N个商品。最终分数的计算如下:
z_i = score(\boldsymbol o^u_t, \boldsymbol {v_i}) = \boldsymbol o^{uT}_t\boldsymbol v_i\qquad(1)
这里的score是内积函数,\boldsymbol v_i \in \Bbb R^{d\rm x1}是第i个商品的embedding vector.

2.2 模型训练和在线服务

在离线训练过程,时刻t的正样本即为用户下一个点击的商品i_{t+1}^u;负样本则是从商品集I中使用log-uniform分布选取的非i_{t+1}^u的其他商品。输出函数使用softmax来代表概率,这一过程又称为sampled-softmax。损失函数采用cross-entropy,用公式表示如下
\hat{\boldsymbol {y}} = softmax(z)\qquad(2)
L(\hat{\boldsymbol {y}}) = -\sum_{i\in\boldsymbol K}y_ilog(\hat{y_i})\qquad(3)
这里\boldsymbol K是商品集I采样后的子集,包含正负样本;\boldsymbol z = [z_1, ..., z_{K}]\boldsymbol o^u_t和每个\boldsymbol{v_i}(i\in\boldsymbol K)的内积;\hat{\boldsymbol {y}}=[\hat{y_1}, ..., \hat{y_{|K|}}]是每个商品的预测分,y_i是商品i的真实概率分布。

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

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


图2 模型细节
2.3 输入特征

为了准确地描述用户特征,除了user ID之外,SDM还使用了一些辅助信息来作为神经网络的输入,如categoray,brand,shop等,用F表示。每个输入item i^u_t \in S^u,经过embedding layer转化为dense vector\boldsymbol e_{i_t^u} \in \Bbb R^{d\rm x1}来表示。
\boldsymbol e_{i_t^u} = concat(\{\boldsymbol e_i^f | f \in F\}) \qquad(4)
其中\boldsymbol e_i^f = W^fx^f_i \in \Bbb R^{d_f \rm x 1}是第i个输入特征f的embedding,d_f是embedding size. W^f是embedding矩阵。
类似的,用户侧信息如年龄,性别等也用这种方式输入到神经网络中

2.4 LSTM

对于用户的短期序列[\boldsymbol e_{i_1^u}, ..., \boldsymbol e_{i_t^u}],论文采用了LSTM结构来获取序列信息,将用户u的短期序列中的第t个item向量\boldsymbol e_{i_t^u}编码为hidden vectors \boldsymbol h^u_t = \Bbb R^{d \rm x1}\boldsymbol h^u_t又被称为序列偏好表示(sequential preference representation),将被输入到网络的attention层中来获得更高阶的表达。

2.5 Attention机制

在用户的浏览购物过程中,经常会出现随意的无目的的点击,即causal clicks,这会在序列中引入不相关的信息,从而影响\boldsymbol h^u_t的表达效果。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机制,将用户兴趣投射到不同的空间上,表示如下:
\hat {\boldsymbol x^u}=MultiHead({\boldsymbol X^u}) = \boldsymbol W^O concat(\boldsymbol {head_1^u}, ..., (\boldsymbol {head_h^u}) (5)
其中W^O \in \Bbb R^{d\rm x hd_k}是输出线性变换的权重,h代表了heads的总数,d_k=\frac{1}{g}d.
每一个\boldsymbol {head_i^u}\in \Bbb R^{d_k \rm x t}代表一个潜在的兴趣:
\boldsymbol {head_i^u} = Attention(\boldsymbol W_i^Q\boldsymbol X^u, \boldsymbol W_i^K\boldsymbol X^u, \boldsymbol W_i^V\boldsymbol X^u) = Attention(\boldsymbol Q_i^u, \boldsymbol K_i^u, \boldsymbol V_i^u)\quad(6)
Attention score计算为:
\boldsymbol A_i^u = softmax(f) = softmax(\boldsymbol Q_i^u \boldsymbol K_i^u)\qquad(7)
最后,每个head可以写作
\qquad\qquad\boldsymbol {head}_i^u = \boldsymbol V_i^uA_I^{uT} \qquad (8)
(b) User Attention
类似地,不同用户会对同一商品产生不同的兴趣,因此论文在self-attention之上加入了一个user attention模块来挖掘更加个性化的信息,这里用户embedding\boldsymbol e_u用作query vector,在t时刻的短期序列s_t^u \in \Bbb R^{d\rm x 1}可以写作
\qquad\qquad\boldsymbol s_t^u = \sum_{k=1}^{t}\alpha_k\hat{\boldsymbol h}_k^u \qquad(9)
其中\alpha_k = \frac{\rm{exp}(\hat{\boldsymbol h_k^{uT}}\boldsymbol e_u)}{\sum_{k=1}^t \rm{exp}(\hat{\boldsymbol h_k^{uT}}\boldsymbol e_u)} \qquad (10)

2.6 长期序列的结合

长期序列L^u = \{L_f^u | f \in F\}包含多个子集:L_{id}^u (item ID), L_{leaf}^u(leaf category叶子类目),L_{cate}^u(一级类目), L_{shop}^u(店铺),L_{brand}^u(品牌)等。每个子集都经过embedding编码为dense vector,并以attention pooling的方式聚合起来,用公式表示如下:
\alpha = \frac{\rm {exp}(\boldsymbol g_k^{uT}\boldsymbol e_u)} {\sum_{k=1}^{|L_f^u|}{\rm {exp}(\boldsymbol g_k^{uT}\boldsymbol e_u)}} \qquad(11)

\boldsymbol z_f^u = \sum_{k=1}^{|L_f^u|}{\alpha_k\boldsymbol g_k^u} \qquad(12)

其中\boldsymbol g_k^uf_k^u \in L_f^u的embedding向量,用户embedding向量\boldsymbol e_u作为query vector来计算attention score \alpha_k . 不同的子集concat一起后输入到DNN网络中:
\boldsymbol z^u = \rm{concat}({\boldsymbol z^u_f | f \in F}) \qquad (13)

\boldsymbol p^u = tanh(\boldsymbol W^pz^u + b) \qquad (14)

这里\boldsymbol p^u \in \Bbb R^{d \rm x 1}是长期序列在神经网络中的表示。

论文使用了一个门网络来控制长短期序列的结合。如图2所示,该网络取\boldsymbol e_u\boldsymbol s^u_t,和\boldsymbol p^u作为输入,并使用门向量\boldsymbol G^u_t \in \Bbb R^{d \rm x1}来控制不同序列输入的权重:
\boldsymbol G^u_t = \rm {sigmoid}(\boldsymbol W^1 \boldsymbol e_u + \boldsymbol W^2 \boldsymbol s_t^u + \boldsymbol W^3 \boldsymbol p^u + b) \qquad(15)
最终输出的用户行为向量\boldsymbol o^u_t \in \Bbb R^{d \rm x 1}由下式计算
\boldsymbol {o^u_t} = (\boldsymbol 1 = \boldsymbol G^u_t)\cdot \boldsymbol{p^u} + \boldsymbol {G^u_t} \cdot \boldsymbol {s^u_t} \qquad(16)
这里 \cdot 指元素对应相乘(element-wise multiplication)。

III. 总结

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352

推荐阅读更多精彩内容