推荐系统论文阅读(三十六)-腾讯(FAT):利用胶囊网络和未来物
论文:
论文题目:Future-Aware Diverse Trends Framework for Recommendation
论文地址:https://arxiv.org/pdf/2011.00422.pdf
这篇论文看的很痛苦,里面各种细节都不够清晰(我甚至都怀疑这论文不是我们公司写出来的,看的太晕了),只能在感性的来介绍下它的创新点了:多样性建模
一 、背景
传统的序列推荐任务都是对用户的历史点击序列进行建模,然后来预测用户的下一次点击,但是这种传统的建模方式会有几个缺点,第一就是推荐的item会趋于单一,第二,没有考虑到用户的兴趣是随着时间变化的。
可以看到,在传统的方式中,用户的历史行为中包括美国历史、人物传记等,那么推荐的结果往往局限于这几类中,不仅多样性较差,同时没有及时发现用户兴趣可能的演进趋势。在本论文的工作中,由于考虑到了多样性和兴趣演化趋势,所以会进一步的给用户推荐一些小说以及其他tag下的item。
FAT是怎么做的呢,可以这么理解,如果说我们想表示用户的兴趣演化趋势和多样性,我们可以从相似用户的兴趣来入手。比如说有三个人都购买了红楼梦,第一个人购买的序列是活着,丰乳肥臀,三国,红楼梦,第二个人购买的序列是,平凡的世界,红楼梦,红高粱,白鹿原,第三个人后买的是斗破苍穹,赘婿,红楼梦,庆余年,间客。那么如果说我们只要序列预测的方式来预测第一个用户的下一次点击,那么就很有可能给她推荐水浒和西游记以及一些古代小说,但是如果我们利用好其他两个人的兴趣演进趋势,我们就可以大胆的猜测:用户的兴趣变化和多样性是可以由跟他相似的用户的兴趣的变化来体现的,在这个例子中,当我们利用第二个人的时候,我们看到在红楼梦后面,这个用户后买了红高粱和白鹿原,那么这个用户的兴趣从古代小说转向了近现代小说,同样的,第三个用户的兴趣从古代小说变成了现代网文小说。所以,我们只要找到跟待推荐用户相近的用户的未来兴趣变化趋势,我们就知道了这个用户未来的兴趣演化趋势。
二、模型
这篇论文的符号定义实在太多了,在前面我已经说了,看得很难受,所以就不会介绍具体的细节了。其实这论文的细节都在之前的文章中介绍过了, 比如说胶囊网络和序列建模这种经典的网络结构。
符号的定义就简单的贴一下原文的图吧:
模型主要分为这几部分:Sequence Modeling,Implicit Neighbor Behavior Extractor,Future-Aware Diverse Trends,Time-Aware Attention Layer
2.1Implicit Neighbor Behavior Extractor
这里介绍的顺序跟原论文的顺序不一样,我先介绍下怎么来选取待推荐用户的相似用户,并且如何构建未来的序列。
论文采取的皮尔逊相关性系数来选取相关性最高的N个相似用户,其中相关性计算如下:
对于每一个相似用户,我们对他们构建序列,假如候选item为红楼梦,那么所有没有购买过红楼梦的用户都会被过滤掉。
对于剩下的用户,我们取每个用户在点击红楼梦后的序列作为相似用户的序列,比如在前面举的例子中的[红高粱,白鹿原],[庆余年,间客],这个就是我们后面要输入到右侧网络的序列。
2.2 Sequence Modeling
这部分论文采用的是lstm,跟传统的序列推荐任务一样,左侧的输入是用户本身的历史点击序列,右侧的输入是我们在2.2中介绍的未来序列。
不同的是,左侧我们输出用户用户的表示向量,而在右侧,我们对每个位置的状态h,经过胶囊网络来建模表示用户的多兴趣点。
2.3 Future-Aware Diverse Trends
这部分就是胶囊网络了,胶囊网络的结构如下:
可以看到,胶囊网络和传统的神经网络较为类似。传统神经网络输入一堆标量,首先对这堆标量进行加权求和,然后通过非线性的激活函数得到一个标量输出。而对胶囊网络来说,这里输入的是一堆向量,这里的计算是一个迭代的过程,每次对输入的向量,先进行仿射变换,然后进行加权求和,最后用非线性的squash操作得到输出向量,可以看到胶囊网络的的输入跟输出还是跟传统DNN不一样的。
具体的可以去看我之前的文章:《推荐系统论文阅读(二十二)-基于多兴趣向量召回的Mind》
经过胶囊网络后,会得到K个趋势向量:
2.4 Time-Aware Attention Layer
我们得到了K个趋势向量,那么我们怎么知道这K个趋势向量到底哪个对给用户推荐有关呢,当然是使用attention了,但是论文里写的attention操作很迷幻,我自己也看得迷迷糊糊的:
其中tu是趋势向量,也就是我们在之前得到的Vu,这里不得不吐槽下,你们符号能不能统一了啊?
Ti是代表推荐目标物品i的时间,Ttr是代表与趋势相关的项目的平均交互时间。
2.5 Prediction
这里就更得吐槽下,这篇论文的严谨性了,我们在左侧跟右侧都得到了一个维度相同的向量,论文写的是按照concate的方式进行组装,但是无论是从模型结构图来看还是从维度的计算来看,都是采用的+,不然两个向量没法计算相似度了:
三、实验结果
说一下几个疑问:
1.前面说了有N个相似的用户,没有说这N个用户的序列是怎么进入胶囊网络的,是分别计算呢,还是有其他的方式,因为论文只对一个相似用户的序列进行操作
2.到底attention操作的实验该怎么处理?写的不清不楚的
再说一下创新点吧:
1.利用相似用户对未来序列的构建
2.多个趋势向量的聚合表示用户的兴趣多样性