推荐系统论文阅读(二十九)-美团:利用历史交互数据改进对话推荐系统
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐系统论文阅读(二十九)-美团:利用历史交互数据改进对话推荐系统相关的知识,希望对你有一定的参考价值。
参考技术A 论文:题目:《Leveraging Historical Interaction Data for Improving Conversational Recommender System 》
地址: https://dl.acm.org/doi/pdf/10.1145/3340531.3412098
这是我第一次将美团发表的论文写在这上面,该论文是人大跟美团这边合作在CIKM上面的一篇短论文,研究的是如何利用历史交互的数据来进行对话式的推荐。
最近,对话推荐系统(CRS)已成为一个新兴且实用的研究主题。 现有的大多数CRS方法都专注于仅从对话数据中为用户学习有效的偏好表示。 然而,本论文从新的视角来利用历史交互数据来改善CRS。 为此,这篇论文提出了一种新颖的预训练方法,以通过预训练方法集成基于物品的偏好序列(来自历史交互数据)和基于属性的偏好序列(来自对话数据)。
随着电子商务平台中智能代理的快速发展,对话推荐系统(CRS)已成为寻求通过对话向用户提供高质量推荐的新兴研究主题。 通常,CRS由对话模块和推荐模块组成。 对话模块侧重于通过多回合互动获取用户的偏好,推荐模块侧重于如何利用推断出的偏好信息为用户推荐合适的商品。
现有的大多数CRS都以“系统要求用户响应”模式设计的。在每轮对话中,CRS都会发出有关用户偏爱的问题,并且用户会使用个性化反馈对系统进行回复。通常,系统会根据商品的某些属性(例如,你最喜欢的电影类型是什么)来生成系统查询,并且用户反馈会反映用户对该属性的特定偏爱(例如,我喜欢动作电影)。主流方法是构造一种跟踪模块,该模块可以从这种多轮对话中推断出用户的基于属性的偏好。以此方式,可以将所推断的偏好呈现为所推断属性的序列(例如,电影CRS中的“流派=动作→导演=詹姆斯·卡梅隆”。有了这个序列后,我们就可以用一些方法来进行推荐来,比如可以采用知识图谱来进行推荐。
但是,这些现有的CRS研究存在两个主要问题。首先,对话本身的信息非常有限。许多CRS得到了进一步优化,以减少系统与用户交互的回合数。因此,在基于属性的推断偏好中,可能会丢失一些有用的属性。其次,仅利用基于属性的偏好来进行推荐可能还不够。例如,即使在过滤了几个属性之后,候选项目集仍可能很大。
现在要解决以上提到的两个问题,我们就需要把基于item的方式和基于属性的方式进行结合。其中,基于历史交互item的方式反映的是用户的长期兴趣,基于会话属性的方式反映的是用户当前的兴趣,也就是短期兴趣,这是一个典型的长短期兴趣结合的任务。
A:之前说了,在CRS系统中,一个用户进行多轮对话后,会有一个item属性的集合,A就是这个集合
= ,其中 属于A,是item的属性,n是属性序列的长度
,其中 是用户在对话前第k步与之交互的item
:我们进一步假设每个项目ik也与一组属性值相关联,用Aik表示,它是整个属性集A的子集。
任务的定义:根据CRS模块,首先收集到基于属性的序列 ,然后利用点击序列 进行推荐。关于这个任务的定义,深入理解应该是这样:我们是先有属性序列,然后主要根据点击序列进行推荐,属性序列的建模是子模块任务,序列推荐是主任务,序列推荐任务在属性序列更新后可以反复利用这个信息,只要属性序列更新。
论文的base model是用Transformer做的,输入部分是embedding层,这部分除了有item id的embedding矩阵,还有属性的embedding矩阵,输入还有个P,这个就不说了,位置向量。
中间的运算就是Transformer的过程了,self-attention 跟ffn,这里不懂transformer结构的可以看一下论文。
输出部分是预测候选item i的概率:
其中ei是i的原始embedding向量,W是映射矩阵,两个s是item和属性经过transformer结构出来的最后一个向量。
熟悉bert的都知道mask language model,把item序列中的item 用mask替代,然后预测这些被mask掉的item。
其中fik是item transformer结构出来的位置k出来的向量,SA是熟悉结构出来的Aik的位置出来的向量,W是映射矩阵,eik是原始的item embedding。
为了更好的让item based的信息跟attribute based的信息进行融合,论文也采取了一种另类的mask方法,用随机负采样的属性来替代Aik,
其中fik是被替换的那个item经过trm出来的向量,W是映射矩阵,faj是属性trm出来的向量,预测的概率是aj是否是被替换过。
在LTR里面,如果采用的是pairwise的优化方式,那么负采样的技术就至为关键了,而且优化了正样本的概率大于负样本的能力,所以需要选取一种负采样的方法来给我们整个模型的优化带来提升。
MIP里面负采样的方式用的是 IR-GAN 和 ELECT这两篇论文所采用的方式。
改论文选择了SASRec作为第一个阶段的pairwise ranking的模型,这个模型也是论文中用来sample 负样本的模型。负采样是这么做的:我们先用pairwise ranking的方式训练一个模型作为生成器,得到了候选item的概率分布,有了这个概率分布我们就可以拿来负采样了,因为排序高的items跟真实的很接近。至于为什么选择这个模型,论文里面说是因为这个论文在序列推荐任务中的表示特别好,也就是它作为ranking的模型效果还不错。请注意,尽管可以像标准GAN中那样更新生成器,但是我们只训练它的参数一次。 根据经验,我们发现迭代更新带来的改进是有限的。
整个训练分成两个阶段,第一个是预训练阶段,就是训练两个表示学习模型,第二个是微调阶段,学习的是rank loss:
推荐系统论文阅读(二十)-阿里妈妈基于用户长序列历史行为的推荐SIM
参考技术A 论文:论文题目:《Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction》
地址: https://arxiv.org/pdf/2006.05639.pdf
这是阿里妈妈发表在2020SIGIR上面的又一篇佳作,让我们来阅读一下这篇论文吧。
在CTR/CVR预估领域中,用户历史行为对CTR/CVR预估的建模是很有指导意义的,用户的历史行为序列中潜藏着用户丰富的”兴趣点“,用户的每一次行为都是某个方面兴趣的一种反应。比如我喜欢各种口红产品、喜欢洗面奶、但是又对某个牌子不是特别感兴趣,基于这些兴趣的驱动,我可能浏览、点击过很多相关领域的内容或商品,那这些历史行为是否对我未来行为的预测有帮助呢,答案是肯定的。正是基于上述这种主观的行为模式,我们才需要对用户的历史行为进行建模,用户行为队列越长,包含的用户兴趣也就越丰富,但是同样也会带来更大的挑战,其实用户的兴趣是发散的多元的,如何从发散多元的用户兴趣中找到真正对当前任务有帮助的兴趣是十分重要的。
在介绍这篇论文之前建议先去看一下阿里的另一篇论文MIMN,也是基于用户长序列进行CTR预估的论文,但是MIMN存在着几个问题,一个是因为,当用户行为序列的长度进一步增加(例如,增加10倍或比十倍更多)时,MIMN无法精确捕获给定特定候选项的用户兴趣。另一个是因为,MIMN不能很好的解决延时和存储这两个瓶颈上的棘手问题,也就是说部署到线上到时候如何才能做到延时跟其他轻量模型相近。
在淘宝中,用户的浏览序列长度可能达到上千甚至上万个,怎么高效且有效的利用这种长序列信息呢?阿里妈妈提出了SIM模型来进一步从用户丰富的长期历史行为队列中挖掘用户有价值的兴趣点,并且提供一种长行为序列线上服务化的可行性方案,接下来就来看看这篇论文吧。
模型总览:
SIM分为两个阶段,这两个阶段都有自己的核心部分,文章中将长序列用户行为特征的建模分为了两个模块,即Genral Search Unit(GSU)和Exact Search Unit(ESU),这两部分就是两个阶段的核心模块了。先简单的介绍下这两个模块的作用吧。GSU如图所示,简单理解就是从几百上千的用户长序列中挑选出TopK个跟候选Item最相似的K个Item,类比与推荐系统中的召回模块,先降低长序列物品的长度,在进行后续任务。另一个是ESU,这个模块的作用是对刚刚GSU抽取出来对K个物品进行序列建模,得到一个能代表用户长序列兴趣对向量,并利用这个向量进行后面对排序。
GSU的主要任务是从长度为T的序列中抽取出K个跟候选item相似的item,GSU有两种方式来选取TopK个物品,分别是hard-search 和soft-search。前面也提到了GSU类比于推荐系统中的召回阶段,而在多路召回中,一般也有基于Embedding的召回和基于策略规则的召回,其中hard-search就是基于规则的召回,soft-search就是基于Embedding的召回,下面来详细讲一下这两种方法。
这种方法比较直观而且实施起来比较简单,就是我们从候选行为序列中按照给定规则筛选出与当前目标任务相关的候选集,举个例子,我在淘宝上历史浏览过很不同种类的商品(比如电子产品、口红、男鞋等等),当候选广告是iphone12时,hard-search方法会从我历史行为队列中筛选出电子产品相关的行为进行建模,用于PCTR预估,而口红、男鞋大概率就不会对这次预估产生影响,通过上面这个例子大家应该能明白这种基于规则和策略的思路。论文中指出hard-search方法使用的是商品类别作为筛选的标准。
这种方法是基于Embedding的抽取方式,从上面的模型图的左侧可以看到整个soft-search的结构。这个部分也是一个子模型,模型的输入是候选Item和长序列,目标是CTR预估,用这种方式来学习候选Item和长序列Item的embedding信息。有了Embedding后,就可以将候选广告embedding和历史行为中的embedding算一个内积相似度,利用近似最近邻检索方法(论文中用的是ALSH)来得到topK相关的候选行为序列。
在这个子model中,DNN的输入是候选item 和Ur的concat,其中Ur:
注意,如果用户行为增长到一定程度,则不可能将整个用户行为直接输入模型。 在这种情况下,可以从长序列用户行为中随机采样子序列集,这些行为仍需遵循原始序列的相同分布。
这种方法的缺点就是计算开销比较大,不如基于规则的hard-search方便,优点就是效果应该会更好一些。但是论文中也提到了两种方法在效果上的差异不是特别的大,所以最后基于性能和效果的折中,采用了hard-search这种比较简单的方式。
从模型整体上来看,这部分主要是利用从GSU抽取出来的K个Item得到一个能代表用户长期兴趣的向量,并配合其他特征送的DNN里面做整体的CTR预估任务。
论文中对这K个来自GSU对item是用self-attention进行序列建模的:
其中 为:
concat中第一个是原始的embedding,第二个是关于时间的embedding。
根据self-attention的方式,我们又得到了一个向量h(K)。
这里,第二个子model也进行了ctr预估,特征是模型图上面画出来 input,还有个dien,dien前面的文章以及介绍过了,就不再赘述。
最后的loss是:
其中α和β是控制损耗权重的超参数。 在我们的实验中,如果GSU使用软搜索模型,则将α和β都设置为1。具有硬搜索模型的GSU是非参数的,并且α设置为0。
广告推荐系统对线上的计算耗时要求还是比较严格的,因为要保证用户最基本的用户体验。随着用户行为序列的进一步增长,采用传统的方式直接对长序列用户行为进行计算耗时和内存占用会增长的特别快,所以需要有针对性的对线上系统进行一定的升级和改造。文章提到在hard-search和soft-search的选择中,是基于大量的离线实验结果最终决定采用hard-search这种方便快捷有效的方式,同时信息损失也在可以接受的范围内。
一般的线上部署的系统架构图是这样:
为了让SIM能更好的给用户带来低延时的体验,阿里构建了SIM的Online Seving结构:
可以看到对于用户的行为序列,论文采用的是对每个用户采用的是两层索引的结构:key-key-value,第一个key是user_id,第二个key是category ids,value是用户行为序列中属于对应类别的item。用这种方式可以很快的通过这个索引树找到属于统一category的物品。
线上A/B Test实验效果:
用户的历史行为对于整个CTR/CVR预估任务越来越重要了,如果不考虑时间和存储,那么把所有的序列输入到模型中作为长期兴趣关键点是可以精确的定位出用户的长期兴趣的,但是由于性能的原因就不得不考虑用特殊的方法对这个长序列进行一次筛选,筛选的K个物品都是跟候选Item相似的物品,能做到裁剪的效果还不会带来CTR预估的损失。在进行筛选过程中还分为了两种方法,但是为了部署到线上,就要考虑性能最好的hard-search方式进行TopK筛选任务,这种方式跟Embedding筛选的效果是差不多的,但是速度比Embedding快,所以采用这种方式。
未来应该还会有更多针对序列推荐的论文,单纯的对长序列阶段还带来一定的兴趣偏差,所以如何有效挖掘用户更丰富行为特征背后的商业价值是需要好好思考的。
以上是关于推荐系统论文阅读(二十九)-美团:利用历史交互数据改进对话推荐系统的主要内容,如果未能解决你的问题,请参考以下文章
深度学习核心技术精讲100篇(二十九)-基于内容和上下文的音乐推荐
2021年大数据Hadoop(二十九):关于YARN常用参数设置
对话推荐系统综述论文,35页pdf,A Survey on Conversational Recommender Systems