前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >推荐系统中的常用算法——序列深度匹配SDM

推荐系统中的常用算法——序列深度匹配SDM

作者头像
felixzhao
发布于 2022-03-04 10:09:06
发布于 2022-03-04 10:09:06
2.2K0
举报
文章被收录于专栏:null的专栏null的专栏

1. 概述

推荐系统中的算法通过用户的历史行为数据挖掘用户的偏好,实现对用户偏好的建模,从而达到为用户推荐用户感兴趣的item。用户的兴趣偏好通常是多变的,而且是多样的。然而传统的基于item的协同过滤模型只能考虑用户的静态兴趣,而不能捕获用户的兴趣偏好的动态变化。

序列深度匹配(Sequential Deep Match,SDM)模型是在特定场景下提出的用于对用户动态兴趣偏好建模的算法。SDM模型应用于淘宝的场景中,在淘宝的场景中,用户的行为主要分为两种,第一个是当前的浏览Session,用户在一个Session中,需求往往是十分明确的。另一个是之前的历史行为,一个用户虽然可能不是每次都来买球鞋,但是也可能提供一定的有用信息。因此需要分别对这两种行为序列建模,从而刻画用户的兴趣。

综上,序列深度匹配SDM通过组合用户短期Session和长期行为捕获用户的动态兴趣偏好,实现对用户兴趣的建模。

2. 算法原理

序列深度匹配SDM的模型结构如下图所示:

其中,对于用户u ,通过对长期行为L^u ,得到向量\boldsymbol{p^u} ,对短期行为S^u 建模得到向量\boldsymbol{s_t^u} ,并通过fusion gate策略将两部分组合在一起,从而得到向量\boldsymbol{o_t^u}\in \mathbb{R}^{d\times 1} ,该向量便是用户的兴趣向量。

假设\boldsymbol{V}\in \mathbb{R}^{d\times \left | I \right |} 为item的embedding向量,其中\left | I \right | 为item的总数,d 为embedding的维数。目标是在t+1 时刻预测top N的候选集,候选集是基于\boldsymbol{o_t^u} 和每个物品对应的向量\boldsymbol{v}_i 计算匹配分数,并根据分数高低进行召回,分数的计算方法为:

z_i=score\left ( \boldsymbol{o_t^u},\boldsymbol{v}_i\right )={\boldsymbol{o}_t^u}^T\boldsymbol{v}_i

2.1. 长短期Session的划分

对于用户行为序列的划分,文章中给出了按照session的划分规则:

  • 具有同样的Session ID的记录为同一个Session;
  • Session ID不同,但是相邻的行为间隔小于10min,算同一个Session;
  • Session的最大长度为50,超过50的划分到新的Session。

基于上述的Session划分规则,用户u 最近一个Session的行为被认为是短期行为,表示为:

S^u=\left [ i_1^u,\cdots ,i_t^u,\cdots ,i_m^u \right ]

其中,m 为序列的长度,而用户的长期行为序列为S^u 之前的7天的行为,记为L^u

2.2. item和user的Embedding表示

在构建item的embedding时,不仅考虑到ID特征,同时还包括了leaf category,first level category,brand和shop等side information,最终item的向量表示为

\boldsymbol{e}_{i_t^u}=concat\left ( \left \{ \boldsymbol{e}_i^f\mid f\in \mathcal{F} \right \} \right )

同样的,用户也有对应的属性,如age,gender,life stage。最终user的向量表示为

\boldsymbol{e}_u=concat\left ( \left \{ \boldsymbol{e}_u^p\mid p\in \mathcal{P} \right \} \right )

2.3. 短期行为建模

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

短期行为是用户在最近的一个Session里的行为。短期行为建模分为三个部分,分别为LSTM建模,Multi-head Self-Attention建模和User Attention。

2.3.1. LSTM

在将物品转换为Embedding向量后,首先通过LSTM来进行建模,LSTM的建模过程如下图所示:

对于给定的的用户短期行为序列\left [ \boldsymbol{e}_{i_1^u},\cdots , \boldsymbol{e}_{i_t^u} \right ] ,通过LSTM建模的结果为:

其中,\boldsymbol{in}_t^u\boldsymbol{f}_t^u\boldsymbol{o}_t^u 分别表示输入门,遗忘门和输出门。\boldsymbol{h}_t^u\in \mathbb{R}^{d\times 1} 表示的是LSTM在t 时刻隐藏层的输出。

2.3.2. Multi-head Self-Attention

在经过LSTM对短期行为序列建模后,得到所有隐含层的输出

\boldsymbol{X}^u=\left [ \boldsymbol{h}_1^u,\cdots ,\boldsymbol{h}_t^u \right ]

。接下来,使用Multi-head Self-Attention对此行为序列建模,目的是能够捕获到用户多种类型的兴趣。Multi-head Self-Attention的建模过程如下所示:

假设Multi-head Self-Attention建模后的结果为\boldsymbol{\hat{X}}^u=\left [ \boldsymbol{\hat{h}}_1^u,\cdots ,\boldsymbol{\hat{h}}_t^u \right ] ,则\boldsymbol{\hat{X}}^u 可以表示为:\boldsymbol{\hat{X}}^u=MultiHead(\boldsymbol{X}^u)=\boldsymbol{W}^Oconcat\left ( \boldsymbol{head}_1^u,\cdots ,\boldsymbol{head}_h^u \right ) 其中,\boldsymbol{W}^O\in \mathbb{R}^{d\times hd_k}h 表示head的个数,d_k=\frac{1}{h}d 。对于每一个\boldsymbol{head_i^u}\in \mathbb{R}^{d_k\times t} 表示 每一个兴趣,其计算方法为:\boldsymbol{head_i^u}=Attention\left ( \boldsymbol{W}_i^Q\boldsymbol{X}^u,\boldsymbol{W}_i^K\boldsymbol{X}^u,\boldsymbol{W}_i^V\boldsymbol{X}^u \right ) 其中,\boldsymbol{W}_i^Q\boldsymbol{X}^u\boldsymbol{W}_i^K\boldsymbol{X}^u\boldsymbol{W}_i^V\boldsymbol{X}^u 分别表示上图中的Q,K,V。令\boldsymbol{Q}_i^u=\boldsymbol{W}_i^Q\boldsymbol{X}^u\boldsymbol{K}_i^u=\boldsymbol{W}_i^K\boldsymbol{X}^u\boldsymbol{V}_i^u=\boldsymbol{W}_i^V\boldsymbol{X}^u ,则\boldsymbol{head_i^u} 为:\boldsymbol{head_i^u}=\boldsymbol{V_i^u}{\boldsymbol{A}_i^u}^T 其中,\boldsymbol{A_i^u}=softmax\left ( {\boldsymbol{Q}_i^u}^T\boldsymbol{K}_i^u \right )

2.3.3. User Attention

对于不同的用户,即使短期的行为序列是一样的,也可能会存在不同的兴趣偏好,为了能够更精准的挖掘用户偏好,使用Attention机制计算不同用户兴趣的偏好,Attention机制如下图所示:

对于用户的多种兴趣\boldsymbol{\hat{X}}^u=\left [ \boldsymbol{\hat{h}}_1^u,\cdots ,\boldsymbol{\hat{h}}_t^u \right ] ,通过与用户向量\boldsymbol{e}_u 计算t 时刻的兴趣偏好向量

\boldsymbol{s_t^u}
\boldsymbol{s_t^u}=\sum_{k=1}^{t}\alpha _k\boldsymbol{\hat{h}}_k^u

其中

\alpha _k=\frac{exp\left ( {\boldsymbol{\hat{h}}_k^u}^T\boldsymbol{e}_u \right )}{\sum_{k=1}^{t}exp\left ( {\boldsymbol{\hat{h}}_k^u}^T\boldsymbol{e}_u \right )}

2.4. 长期行为建模

对于长期行为序列,文章中提出从不同角度来刻画用户的兴趣,比如品牌,类别等。因此把长期行为中的所有物品对应的属性集合\mathcal{L}^u=\left \{ \mathcal{L}^u_f\mid f\in \mathcal{F} \right \} 划分为不同的子集合,如ID子集合\mathcal{L}^u_{id} 、leaf category子集合\mathcal{L}^u_{leaf}

,first level category子集合\mathcal{L}^u_{cate} ,shop子集合\mathcal{L}^u_{shop} 、brand子集合\mathcal{L}^u_{brand} 。下图展示了长期行为的建模过程:

通过AttnNet计算在每个子集合上的向量

z_f^u
z_f^u=\sum^{\left | \mathcal{L}^u_f \right |}_{k=1}\alpha _k\boldsymbol{g_k^u}

其中,\boldsymbol{g_k^u}=W^ff_k^u\in \mathbb{R}^{d\times 1}

\alpha _k=\frac{exp\left ( {\boldsymbol{g_k^u}}^T\boldsymbol{e}_u \right )}{\sum_{k=1}^{\left | \mathcal{L}^u_f \right |}exp\left ( {\boldsymbol{g_k^u}}^T\boldsymbol{e}_u \right )}

最终,将z_f^u concat在一起输入到全连接网络中,得到长期兴趣\boldsymbol{p^u}=tanh\left ( \boldsymbol{W}^pz^u+b \right ) ,其中z^u=concat\left ( \left \{ z_f^u\mid f\in \mathcal{F} \right \} \right )

2.5. 兴趣融合

为了将长短期兴趣向量组合在一起,文中借鉴了LSTM中的门的概念,对短期兴趣向量和长期兴趣向量进行一个加权,过程如下:

\boldsymbol{G}_t^u=sigmoid\left ( \boldsymbol{W}^1\boldsymbol{e}_u+\boldsymbol{W}^2\boldsymbol{s}_t^u+\boldsymbol{W}^3\boldsymbol{p}^u+b \right )
\boldsymbol{o}_t^u=\left ( 1-\boldsymbol{G}_t^u \right )\odot \boldsymbol{p}^u + \boldsymbol{G}_t^u\odot \boldsymbol{s}_t^u

2.6. 总结

序列深度匹配SDM通过组合用户短期Session和长期行为捕获用户的动态兴趣偏好,实现对用户兴趣的建模,完整的模型结构如下图所示:

在短期兴趣建模过程中,使用LSTM,Multi-head Self-attention和User Attention建模,在长期兴趣建模过程中,使用User Attention对子集合建模,最终通过gate函数融合长短期兴趣。

3. 疑问

在本文中短期兴趣建模的过程中,作者先用LSTM建模,作者给出的理由是在之前的基于Session的推荐中,效果较好;后面使用Multi-head Self-attention建模,是为了构建用户的多个兴趣维度。这里Multi-head Self-attention也可以直接对序列建模,不知道为什么需要在这里同时使用LSTM+Multi-head Self-attention。这一点在文中并没有给出具体解释。

参考文献

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
推荐系统中的常用算法——行为序列Transformer(BST)
Behavior Sequence Transformer(BST)算法是由阿里在2019年提出的算法,应用于淘宝推荐中的ranking阶段。在目前的推荐系统中,主流的深度学习方案,如WDL,并没有充分利用用户的行为序列(User’s Behavior Sequence),在BST算法中,利用Transformer充分挖掘用户的行为序列,实现对用户行为序列的建模。
felixzhao
2022/03/04
5.6K0
推荐系统中的常用算法——行为序列Transformer(BST)
精排模型-从MLP到行为序列:DIN、DIEN、MIMN、SIM、DSIN
如下图 [1][2],阿里妈妈的精排模型,经历了从传统 LR、MLR 到深度模型 GwEN,再到用户兴趣建模的过程。
张小磊
2022/10/31
2.8K0
从顶会论文看2022年推荐系统序列建模的趋势
最近看了 22 年几篇顶会的序列建模的文章,模型无不复杂高深,但细细看后,发现这些文章本质上均是输入的变化,模型只为了配合输入。看看最近的顶会是怎么玩的吧。
NewBeeNLP
2022/11/11
1.1K0
从顶会论文看2022年推荐系统序列建模的趋势
推荐系统遇上深度学习(九十八)-[微信]推荐系统中更好地学习用户-标签偏好
本文介绍CIKM20上微信发表的一篇文章《Learning to Build User-tag Profile in Recommendation System》,主要介绍了微信看一看("Top Stories")中,如何进行用户对标签的兴趣建模,进而提升召回和推荐的效果。
石晓文
2020/11/06
1.8K0
WWW'22「快手」序列推荐:解耦长短期兴趣
4. 最后由于长期和短期兴趣的重要性是动态变化的,通过基于注意力的网络自适应地聚合它们进行预测。
秋枫学习笔记
2022/09/19
8970
Transformer的基本原理
Seq2Seq[1]框架最初是在神经机器翻译(Neural Machine Translation,NMT)领域中提出,用于将一种语言(sequence)翻译成另一种语言(sequence)。其结构如下图所示:
felixzhao
2022/09/26
1.2K0
深入理解推荐系统:十大序列化推荐算法梳理
作为【推荐系统】系列文章的第九篇,将以“序列化推荐算法”作为今天的主角,主要介绍相关的模型原理和发展方向。
Coggle数据科学
2021/03/02
2.6K0
深入理解推荐系统:十大序列化推荐算法梳理
推荐系统(二十一)DIN系列——DIN、DIEN、DSIN深度兴趣网络总结
本文为阿里DIN系列方法的简单总结,这里将会总结DIN系列文章的创新之处,以及相应的方法。DIN提出的原因我们在base model里面介绍。
秋枫学习笔记
2022/09/19
3.1K0
【CTR】DSIN:阿里深度会话兴趣网络
在 CTR 预估中,从用户的行为序列中捕捉用户动态变化的兴趣一直是一个热门课题。然而现在大部分研究都集中在 Sequence 中 而不是 Session。阿里的同学观察到,每个 Session 中的用户行为都是高度同构的,而 Session 之间都是异构的。
阿泽 Crz
2020/07/21
8060
【CTR】DSIN:阿里深度会话兴趣网络
深入理解推荐系统:超长用户行为序列建模
作为【推荐系统】系列文章的第七篇,将以CIKM2020中的一篇论文“Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction”作为今天的主角,主要介绍针对Lifelong用户行为序列建模的方案,用户行为长度可以达到上万,而且可以像DIN那样,对于不同的候选商品从用户行为里查找有效的信息建模用户的特殊兴趣。
Coggle数据科学
2020/12/16
5.9K0
深入理解推荐系统:超长用户行为序列建模
突破瓶颈,打造更强大的Transformer
自《Attention is All You Need》一文发布后,基于Multi-Head Attention的Transformer模型开始流行起来,而BERT模型更是将Transformer模型的热度推上了又一个高峰。当然,技术的探索是无止境的,改进的工作也相继涌现:有改进预训练任务的,如XLNET的PLM、ALBERT的SOP等;有改进归一化的,如Post-Norm向Pre-Norm的改变,以及T5中去掉了Layer Norm里边的beta参数等;也有改进模型结构的,如Transformer-XL等;有改进训练方式的,如ALBERT的参数共享等;...
mathor
2021/05/20
7620
CIKM'21「eBay」推荐系统--利用超图对商品的多模态信息建模
Click-Through Rate Prediction with Multi-Modal Hypergraphs https://dl.acm.org/doi/pdf/10.1145/3459637.3482327 CIKM 2021
秋枫学习笔记
2022/09/19
7010
淘宝搜索的向量召回算法MGDSPR
前面已经介绍了多个搜索召回中的向量召回算法,如Facebook的EBR,Que2Search,京东的DPSR。对于搜索系统来说,召回通常是由倒排召回构成,倒排召回的简单原理如下图所示:
felixzhao
2023/04/02
9730
淘宝搜索的向量召回算法MGDSPR
召回和排序模型中的用户行为序列的建模
用户在使用一个APP或者浏览网页的过程中,都是由一些行为构成的,以资讯类为例,通常对一个帖子感兴趣,对于感兴趣的帖子,通常会点击进入查看,或者点击收藏或者对其进行评论,这一系列行为的背后都体现了用户的兴趣,而对用户行为过的帖子的序列的挖掘,能够对用户兴趣的表征。
felixzhao
2022/12/28
1.5K0
一文梳理序列化推荐算法模型进展
| 作者:朱勇椿 | 单位:中国科学院大学 | 研究方向:跨域推荐、多任务学习
张小磊
2021/08/06
7750
20篇最值得一读的深度推荐系统与CTR预估论文
微博上近日流传一个段子,“2020年曾是各大科幻片中遥远的未来,但是现在离这个遥远的未来也只有6个月时间了”。只是借此感慨一下2019年转瞬之间半年的时间已经过去了,目前深度学习火热朝天,深度学习在推荐系统和CTR预估工业界的论文也是一篇接着一篇良莠不齐。
AI科技大本营
2019/07/11
3.3K0
20篇最值得一读的深度推荐系统与CTR预估论文
多分辨率分析对曝光序列去噪
多分辨率分析https://blog.csdn.net/baidu_27643275/article/details/84826773
秋枫学习笔记
2022/09/19
5050
推荐系统遇上深度学习(三十一)--使用自注意力机制进行物品推荐
论文名称:《Next Item Recommendation with Self-Attention》 论文地址:https://arxiv.org/abs/1808.06414?context=cs
石晓文
2019/05/05
1.9K0
推荐系统遇上深度学习(三十一)--使用自注意力机制进行物品推荐
CIKM'21「华为」推荐系统:用于协同过滤的余弦对比损失
协同过滤(CF)一般包含三个部分:交互编码器、负采样和损失函数。现有的大部分工作集中在设计更强模型上,对负采样和损失函数的改进的相关工作比较少。相较于交互信息的编码而言,另外两者也同样重要,本文作者提出了一个新的损失函数 cosine contrastive loss (CCL) ,将其合并到统一的CF框架中,命名为simpleX 。
秋枫学习笔记
2022/09/19
9320
我还不知道Attention有哪些-公式代码都带你搞定
attention由来已久,让它名声大噪的还是BERT,可以说NLP中,BERT之后,再无RNN和CNN。那么attention到底有哪些呢?hard attention、soft attention、global attention、local attention、self-attention, 啊,这些都是啥?相似度计算的dot、general、concat都是怎么计算的?
百川AI
2021/12/31
1.5K1
我还不知道Attention有哪些-公式代码都带你搞定
推荐阅读
相关推荐
推荐系统中的常用算法——行为序列Transformer(BST)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档