论文: 题目:《Leveraging Historical Interaction Data for Improving Conversational Recommender System 》 地址: 这是我第一次将美团发表的论文写在这上面,该论文是人大跟美团这边合作在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: