推荐系统论文阅读(一)-序列推荐结合长尾物品提升推荐的多样性

疫情在家阅读了大量了推荐系统论文,但是都没有好好的写过博客,基本上都是精读过后只记得论文的思想,重新阅读之前的论文还会对有些数学公式一知半解。基于这方面的考虑,还是决定在阅读论文的时候把对论文的思考和见解通过博客的形式记录下来。本人水平有限,希望大家多多指教,也欢迎批评和提出建议。

论文原文

论文链接:https://www.ijcai.org/Proceedings/2019/0380.pdf

论文题目:《Sequential and Diverse Recommendation with Long Tail》

一,背景

很多人吐槽过抖音的推荐算法,再点击一个视频之后,系统会一直给你推荐这个系列的视频,当你第二次,第三次点开这类视频后,系统又会给你推荐这类视频,这就造成了用户一直在这类视频的环绕下,没法跳脱出去。

序列推荐任务,学习顺序数据中用户行为的时间动态,并预测用户随后想要点击的项目。在推荐系统给用户做推荐的时候,系统认为用户的兴趣是单一的,只考虑了普通物品的序列建模分析,这会导致当序列推荐任务只关注一个用户兴趣点的情况,最后形成让用户不满意的推荐列表。我们知道,用户在一段很短的时间内的兴趣都是暂时的,我理解为:“一时兴起”。当然,如果推荐系统只是考虑这个“一时兴起”来给用户推荐,那么推荐的结果就会过于单一了,缺乏多样性。如果我们能把多样性这个问题考虑进去,给用户推荐更多不同类型物品的同时又把握住用户所谓的“单点兴趣”,就会让用户满意。

那么,如何来进行具有多样性优点的序列推荐呢?本来利用长尾物品来解决这个问题。长尾物品在推荐系统中往往是被移除的,这类物品被曝光的机率小,与用户交互的次数也很少,此时可能推荐模型学习不充分导致推荐系统的精度有所损失。所以,在很多任务里,为了不影响模型的精度,会选择将长尾物品剔除,牺牲了推荐的多样性,导致推荐的结果中包含很多热门的物品。多样性和准确性是矛盾的,为了提升多样性就会降低准确性,本文提出了一个方法,在保持准确性的同时提升了多样性。(小tip:协同过滤的模型会强调多样性)

二,模型与方法

2.1问题定义


符号定义

该任务就是给定用户的行为序列,学习一个模型函数f,f会把用户的行为序列进行建模计算,得到最后的ranking score向量s,并根据这个向量进行分数排序,得到top-n个物品,即:

f为模型要学习的函数

2.2 label的构建

本论文的label跟别的序列推荐的label不一样,具体后面会展开来说。

k-means聚类

这部分主要是对长尾物品进行聚类,利用长尾物品的内容向量来进行聚类,目的是为了让语义上很相近的长尾物品能更好地聚在一个类里。(这里有个疑问,物品的内容向量是怎么得出的,是物品的那些属性特征,商品类别这些向量吗)

原文的聚类描述

这样每个长尾物品都被划分到一个类里,为了方便我们后面把长尾物品替换为它所属的类。

替换过程

假设有行为序列G_{1} \rightarrow T_{2}\rightarrow G_{3}\rightarrow T_{4}\rightarrow T_{5}\rightarrow G_{6},其中T是长尾物品,G是普通物品,T_{2},T_{4},T_{5}分别属于类 \bar{T_{2}} , \bar{T_{2}} , \bar{T_{3}}  ,我们把这三个长尾物品替换为他们所属的类。

替换为所属的类

这里原文中提到用离类中心最近的那个物品来替代这个类,这里猜测这么做的理由是最中心的那个类能更好的代表整个类的,但是每次推荐的结果中只有这个item,这里原文所说的多样性应该是不同类之间的多样性,而不是每个类里面的多样性。用大白话来解释就是:推荐的时候包含一些不同类的长尾物品,只要是不同的类就行,不关心每个类里推荐的是那个物品。

Relocating


然而,我们不能直接用替换后的序列G_{1} \rightarrow  \bar{T_{2}}\rightarrow G_{3}\rightarrow  \bar{T_{2}}\rightarrow  \bar{T_{3}}\rightarrow G_{6}来进行序列推荐。传统的序列推荐是直接将长尾物品剔除,剩下的序列为:G_{1} \rightarrow G_{3}\rightarrow   G_{6},并根据这个序列进行序列推荐,预测下一个会点击的普通物品。

分析一下上面说的为什么不可以直接用替换后的序列进行推荐,原因如下:

a)用替换够的序列进行推荐会损失模型的准确率,即损失对general items预测的准确率,因为模型可能会把下一个会点击的物品预测为tail items,而传统的序列推荐是只进行general items的预测,所以传统的序列推荐的准确率是比加入长尾预测的准确率高的,而普通物品的预测是序列预测任务中最重要的部门。

b)我们的目标是不仅不损失模型的准确率,还要引入多样性,如果把直接替换后的序列用于推荐,那么预测结果只可能是普通物品或者长尾物品,两者只能得其一,不符合我们的需求。

为了解决这些问题,文中把序列进行类重定位(relocating)操作,具体的步骤如图所示,步骤如下:

1,去掉training data里面的长尾物品,训练的数据中仅含有general items

2,把label替换成不仅包含普通物品还包含长尾物品,label里面还有两种物品


训练数据只含有general items,标签里含有general 和 tail items

这里解释一下,比如用户的点击是G_{1} \rightarrow  \bar{T_{2}}\rightarrow G_{3}\rightarrow  \bar{T_{2}}\rightarrow  \bar{T_{3}}\rightarrow G_{6},当我们在预测G_{1} 后面将会点击的物品时,我们会把G_{3},\bar{T_{2}}当作label,但是G_{3}会在前面。这意味着当用户点击完G_{1} 后可能会点击G_{3},\bar{T_{2}}。在点击完G_{3}后可能会点击G_{6},\bar{T_{2}}和\bar{T_{3}}.,这样重定位后模型不仅可以预测普通物品,也能预测长尾物品类,而且普通物品的预测准确率不会损失,还保证了多样性。

2.3 利用GRU进行序列推荐


GRU模型

模型分为两部分子塔,一部分是general item的one-hot向量作为输入,然后进入到全连接层,相当于是进行embedding,然后进入gru,得到一个输出向量。另一部门也是进入一个gru网络,但是输入向量变成了物品的内容向量。最后将得到的两个向量拼接后送到全连接层,得到最后的ranking score向量,原文没有说这个向量的维度,这里猜测是物品的总数,每一个维代表一个物品的评分。

2.4 损失函数


模型的损失函数

J是序列中items的个数,损失函数很好理解,就是极大似然估计。这里来捋一下这个式子中各个符号的含义。


符号定义:

s _{\pi} : item \pi 的评分,来自于s=f(x),也就是s中的第\pi 个维度的值

\pi \pi  = < \pi _{1} ,\pi _{2},...,\pi _{n}  \in G \cup  \bar{T},即用户感兴趣的物品的集合(普通+长尾)

\pi _{j} :j时刻,用户感兴趣的物品的集合,如<G_{3},\bar{T_{2}}>

这里详细说一下这个概率为什么能进行排序作用,首先考虑一下softmax函数的特点,分子跟softmax一样,但是在分母中,跟传统softmax不一样,如果\pi 中只有一个item,那就是普通的softmax交叉熵损失函数。如果含有general 和tail物品,那么就不是简单的softmax函数了。首先当i = 1时,分母部门的求和符号会计算所有的exp指数的值+非关联物品的exp值;当i = 2时,这里用l = i剔除了普通物品的对softmax的影响,相当于时所有长尾物品自己的softmax,这里不会对普通物品的概率造成影响,只会让后续的长尾物品的概率变小,有点像第二个softmax的感觉。当然,i = 3,4,5...也一样。这个公式的效果就是让梯度更新的时候,普通物品的得分会变大,长尾物品的得分变小(但是相对于本身后面的长尾物品的得分会相对变大)。

有了这个损失函数后,我们要取得top-n个物品只需要取前n个分数较大的物品就可以了。

三,实验结果


评价标准采用MAP跟NDCG,效果还不错。

本文的介绍就到这里了,还有一些模型是怎么平衡准确率跟多样性的问题没有深入,有些细节还需要进一步讨论。

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

推荐阅读更多精彩内容