推荐系统遇上深度学习(六十三)-[阿里]大型推荐系统中的深度序列匹配模型SDM

今天介绍的论文是:《SDM: Sequential Deep Matching Model for Online Large-scale Recommender System》
论文下载地址为:https://arxiv.org/abs/1909.00385v1

1、背景

像淘宝这样的大规模的推荐系统,需要快速和准确的响应用户当前的需求。淘宝推荐系统一般采用两阶段的方式。首先在召回阶段召回可能的候选集,然后在排序阶段进行精准排序推荐。

目前在淘宝的召回模型中,基本上采用的模型的基础是基于物品的协同过滤模型。但是协同过滤模型只能考虑用户的静态兴趣,而不能捕获用户的动态兴趣。这些兴趣主要通过用户的行为来体现。

在淘宝的场景中,用户的行为主要分为两种,第一个是当前的浏览session,用户在一个session中,需求往往是十分明确的,比如你想买球鞋,往往只会关注球鞋类的商品。另一个是之前的记录,一个用户虽然可能不是每次都来买球鞋,但是也可能提供一定的有用信息,比如用户只买阿迪的鞋子或者只买帆布鞋等等。因此分别建模这两种行为序列来刻画用户的兴趣,是十分有用的。

接下来,我们就来学习下如何分别刻画用户的两种行为序列,以及如何将二者融合,并最后进行物品召回的。

2、SDM模型

2.1 问题定义

用户集合U和物品集合I就不说啦,然后我们主要看看对用户行为序列的划分,按照session进行划分的规则如下:

1)日志中标记了同样的session ID
2)虽然session ID不相同,但是相邻的行为间隔小于10min
3)最长的session长度为50,超过50的划分到前一个session(我猜测是从后往前划分session 的吧)

基于上述规则,用户最近一个session的行为被认为是短期行为,表示如下:

m是序列的长度,而与Su相隔一周以内的行为认为是用户的长期行为Lu

根据如上定义,整个的匹配框架如下:

基于用户的短期行为,通过模型计算得到向量表示su,基于用户的长期行为,得到向量表示pu,二者在进行融合,最终得到用户的行为表示ou。通过ou和每个物品对应的向量vi计算匹配分数,并根据分数高低进行召回:

2.2 物品和用户的Embedding表示

在淘宝的推荐中,用户不仅仅关注物品本身,一些属性如品牌、店铺、价格等都是用户关注的属性。因此,我们使用不同的属性来刻画物品,如物品ID、叶子结点分类、一级分类、品牌、店铺等等,并将不同属性对应的embedding进行拼接得到物品的embedding表示:

同样的,用户也有对应的属性,如年龄区间、性别、蜂窝(学生/白领等等)。用户的embedding如下:

2.3 短期行为建模

短期行为建模的整体过程如下:

对于短期行为,即用户最近的一个session里的行为。在将物品转换为embedding后,首先通过LSTM来进行建模:

这样,每一个物品又一个对应的hidden state的输出h。接下来,是最近经常被使用的multi-head attention,主要有两点原因:

1)用户的行为中存在一些误点击行为,通过self-attention来降低这种影响;
2)用户可能对不同物品的关注点不同。

个人感觉前面的LSTM有点多余,可以在multi-head attention中加入序列信息的吧,这样性能可能好一点。而multi-head attention的过程咱们就不多说了,可以参考我之前的文章。经过multi-head attention,对应的序列输出为:

随后又是一层attention,这一次主要的关注点是用户可能对不同的物品偏好程度不同:

这样,用户的短期行为我们就通过一个向量su表示了

2.4 长期行为建模

对于长期行为,咱们不像刚才那么搞,主要是性能撑不住啊,还像短期行为那么搞的话,有点像之前介绍的DSIN模型,参数有点多。我们主要关注的点在于通过长期行为来从不同角度来刻画用户的兴趣,比如用户经常逛某种类型的店铺、经常复购同一类型的商品等等。因此把长期行为中的所有物品对应的属性集合划分为不同的set,如物品IDset、物品店铺set、物品品类set等等。下图展示了长期行为的建模过程:

对于不同的set,都经过一个attention层进行建模,如用户可能对不同的店铺偏好程度不同,对不同的品类偏好程度不同:

这样每一个set可以得到一个对应的向量,进行拼接后再经过一层全连接层得到用户的长期行为表示:

2.5 兴趣融合

接下来的过程就很巧妙了,并非将长短期兴趣向量直接拼接,而是借鉴了LSTM或GRU中的门的概念,对短期兴趣向量和长期兴趣向量进行一个加权,过程如下:

具体的计算过程如下:


这样我们就得到了用户的兴趣表示ou

2.6 训练

得到了用户的兴趣表示ou之后,根据日志我们可以得到用户下一个交互的物品,作为正例,接下来,采样K-1个负例物品。将K个物品对应的embedding,分别于用户兴趣表示计算内积,作为每个物品的得分。并最终通过softmax和交叉熵来计算损失,并进行模型训练:

2.7 整体结构

最后再来看一下整个模型的结构:

3、实验结果

本文的实验的代码和数据地址在: https://github. com/alicogintel/SDM.

数据集选择的是淘宝和京东的两个数据集。离线实验的评价指标包括HITRatio、精确率、召回率、F1值:

而线上模型的评价指标主要有三个CTR、GMV和Discovery:

离线效果如下:

除了基准的模型外,SDM模型有许多变体,这里也简单介绍一下:

在线效果对比如下,pCTR、pGMV和discovery分别提升了7.04%, 4.50% and 24.37%:

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

推荐阅读更多精彩内容