您现在的位置是:首页 >其他 >推荐系统综述网站首页其他
推荐系统综述
组会:这个+李沐老师的那个论文
定题:
3小时:组会 ---- 牛的文本 — 杨 — 郁垒— 案例 — 网络期末 – 杨期末 – 郁垒期末
推荐系统架构
推荐系统要处理的是“人”和“信息”的关系:这里的“信息”,在商品推荐中指的是“商品信息”,在视频推荐中指的是“视频信息”,在新闻推荐中指的是“新闻信息”,简而言之,可统称为“物品信息”
定义:对于用户U(user),在特定场景C(context)下,针对海量的“物品”信息,构建一个函数f(U,I,C),预测用户对特定候选物品 I(item)的喜好程度,再根据喜好程度对所有候选物品进行排序,生成推荐列表的问题。
训练方法:根据模型训练环境的不同,分为“离线训练”和“在线更新”两部分。
- 离线训练:可以利用全量样本和特征,使模型逼近全局最优点
- 在线更新:可以准实时地“消化”新的数据样本,更快地反映新的数据变化趋势,满足模型实时性的需求。
评估模块:离线评估,线上A/B测试
1、传统推荐方式
1.1 基于内容推荐(Content-Based recommendation,CB)
核心思想是:(根据历史预测未知)
以用户历史的选择记录或偏好记录作为参考推荐,挖掘其他未知的记录中与参考推荐关联性高的项目作为系统推荐的内容。
步骤:(历史反馈–学习交互记录为特征 – 计算相似度 – 推荐相似度高的)
通过用户的显式反馈(如评价、认可度、喜欢不喜欢)和隐式反馈(如浏览时间、点击次数、搜索次数、停留时间等)获取用户在某段时间内的交互记录,然后学习这些记录中用户的偏好并将其标记为特征;接着计算用户偏好与待测推荐对象在内容上的相似度(或匹配度);最后将待测推荐对象与用户偏好的相似度进行排序,从而为用户选择出符合其兴趣偏好的推荐对象。
常用相似度计算:向量夹角余弦
1.2 协同过滤推荐(Collaborative Filtering recommendation, CF)
核心思想是:通过分析评分矩阵(通常是用户对项目的评分)来得到用户、项目之间的依赖关系,并进一步预测新用户与项目之间的关联关系
分类:基于内存(Memory-Based)的推荐和基于模型(Model-Based)的推荐
1.2.0 UserCF举例:
- 电商网站的商品库里一共有4件商品:游戏机、某小说、某杂志和某品牌电视机。
- 用户X访问该电商网站,电商网站的推荐系统需要决定是否推荐电视机给用户X。换言之,推荐系统需要预测用户X是否喜欢该品牌的电视机。为了进行这项预测,可以利用的数据有用户X对其他商品的历史评价数据,以及其他用户对这些商品的历史评价数据。(b)中用绿色“点赞”标志表示用户对商品的好评,用红色“踩”的标志表示差评。可以看到,用户、商品和评价记录构成了带有标识的有向图。
- 为便于计算,将有向图转换成矩阵的形式(被称为“共现矩阵”),用户作为矩阵行坐标,商品作为列坐标,将“点赞”和“踩”的用户行为数据转换为矩阵中相应的元素值。这里将“点赞”的值设为1,将“踩”的值设为-1,“没有数据”置为0(如果用户对商品有具体的评分,那么共现矩阵中的元素值可以取具体的评分值,没有数据时的默认评分也可以取评分的均值)。
- 生成共现矩阵之后,推荐问题就转换成了预测矩阵中问号元素(d)中的值的问题。既然是“协同”过滤,用户理应考虑与自己兴趣相似的用户的意见。因此,预测的第一步就是找到与用户X兴趣最相似的n(Top n用户,这里的n是一个超参数)个用户,然后综合相似用户对“电视机”的评价,得出用户X对“电视机”评价的预测。
- 从共现矩阵中可知,用户 B和用户 C由于跟用户 X的行向量近似,被选为Top n(这里假设n取2)相似用户,由(e)可知,用户 B和用户C对“电视机”的评价都是负面的。
- 相似用户对“电视机”的评价是负面的,因此可预测用户X对“电视机”的评价也是负面的。在实际的推荐过程中,推荐系统不会向用户X推荐“电视机”这一物品。
关于“用户相似度计算”及“最终结果的排序”详细介绍:
1.相似度计算:
- 余弦相似度。余弦相似度(Cosine Similarity)衡量了用户向量i和用户向量j之间的向量夹角大小。显然,夹角越小,证明余弦相似度越大,两个用户越相似。
- 皮尔逊相关系数。相比余弦相似度,皮尔逊相关系数通过使用用户平均分对各独立评分进行修正,减小了用户评分偏置的影响。
其中,Ri, p代表用户i对物品p的评分。 Rjbar代表用户i对所有物品的平均评分,P代表所有物品的集合。 - 基于皮尔逊系数的思路,还可以通过引入物品平均分的方式,减少物品评分偏置对结果的影响
其中, Rpbar代表物品p得到所有评分的平均分
2.最终结果的排序:
在获得To p n相似用户之后,利用Top n用户生成最终推荐结果的过程如下.
最常用的方式是利用用户相似度和相似用户的评价的加权平均获得目标用户的评价预测:
在获得用户u对不同物品的评价预测后,最终的推荐列表根据预测得分进行排序即可得到。至此,完成协同过滤的全部推荐过程。
3.总结
UserCF缺点:
- 在互联网应用的场景下,用户数往往远大于物品数,而 UserCF 需要维护用户相似度矩阵以便快速找出Top n相似用户。导致该用户相似度矩阵的存储开销非常大
- 用户的历史数据向量往往非常稀疏,对于只有几次购买或者点击行为的用户来说,找到相似用户的准确度是非常低的
- 协同过滤仅利用用户和物品的交互信息,无法有效地引入用户年龄、性别、商品描述、商品分类、当前时间等一系列用户特征、物品特征和上下文特征,这无疑造成了有效信息的遗漏。
1. 2. 1 基于内存的推荐
基于内存的协同过滤推荐通过用户-项(User-Item)的评价矩阵寻找相似用户和相似项目之间的相似度,进而为新用户构建相似度矩阵,预测用户感兴趣的项目。通过寻找相似项目进行的推荐称为基于项目的推荐;通过寻找相似用户进行的推荐称为基于用户的推荐。
1. 2. 2 基于模型的推荐
基于模型的推荐算法是通过训练数学模型来预测用户对 未 交 互 项 目 的 评 分 情 况 ,通 常 包 括 概 率 矩 阵 分 解(Probabilistic Matrix Factorization,PMF)和 奇 异 值 分 解(Singular Value Decomposition,SVD)。PMF 和 SVD 的主要思路是先对用户与项目的历史交互数据记录建立适当的模型,然后产生符合用户需求的推荐列表,其中应用较为广泛
的是基于矩阵分解的推荐。
PMF模型
PMF 模型一般认为用户和推荐项目的交互行为仅仅由几个潜在的影响其兴趣偏好的因素决定,将高阶评分矩阵Rn × m分解为两个低维的矩阵 E、Q
R = E T Q . R = E^{T}Q,. R=ETQ.
其中:E = { e1,e2,…,en }表示低维用户特征矩阵,ei表示用户i 的 k 维特征向量;Q = { q1,q2,…,qn }代表低维的推荐项目特征矩阵。
将预测评分与实际评分之间误差的平方作为损失函数:
其中:Iij 表示一个示性函数,当 Iij = 1 时,代表用户 ui对推荐项目 Si已经评分了,否则就表示用户没有对推荐项目进行评分;γp、γq 代表着惩罚因子,是为了防止出现过拟合现象添加的正则化项,γp、γq的值决定正则化程度,其值越大表示正则化的程度越大;|E| 和|Q|代表着矩阵范数,一般利用随机梯度下降法对目标函数进行优化处理,对原高阶评分矩阵R的缺失值进行预测。
SVD模型
SVD 是将用户-项目的评分矩阵通过降维、分解、计算成 3 个低阶矩阵乘积,对这 3 个低阶矩阵进行训练最后还原回初始的矩阵
1.3 混合推荐
基于内容的推荐技术在处理规模较大的信息内容时,常常因为耗时久而造成信息时效性降低;协同过滤技术在面对新项目时容易遇到冷启动问题;而混合推荐技术是保留不同推荐技术优点而避免其缺点的一种推荐方式,将不同的算法融入到推荐系统中即混合推荐.
内容推荐 — 耗时
协同过滤 — 冷启动问题
混合推荐 – 融合
1.4 总结
传统推荐技术优缺点对比:
传统推荐算法中的 CF 是最早被提出且发展最好的推荐算法。近年来,以 CF 为主的改进算法不断涌现,如基于 PFM的协同过滤、融合时间因素的协同过滤、基于知识图谱的协同过滤、基于信任因子的协同过滤等,这些算法都取得了令人满意的推荐效果。相比 CF,CB 更多地是作为辅助算法,CB 包括特征提取和产生推荐列表两个过程,很容易造成推荐性能低的问题。混合推荐算法是各种推荐算法的组合,能够让不同的推荐算法相互弥补不足,能有效地缓解数据稀疏的问题。
2、深度学习推荐模型
深度学习技术除了能够发现用户行为记录隐藏的潜在特征表示,还能捕获用户与用户、用户与项目、项目与项目之间的非线性关系的交互特征,为系统的性能(如召回率、精度等)提高带来了更多机会。
目前,基于深度学习的推荐的核心是将不同的深度学习模型与 CF 或 CB 组合,其推荐过程可分为两步:1)让深度学习模型学习用户或项目隐含的潜在特征,并和 CF 结合构建优化函数对参数进行训练;2)从完成训练的模型中获取最终的隐向量,接着完成向用户推荐的过程。
2.0 AutoRec——单隐层神经网络推荐模型
2.0.1 AutoRec基本原理
AutoRec基本原理是利用协同过滤中的共现矩阵,完成物品向量或者用户向量的自编码。再利用自编码的结果得到用户对物品的预估评分,进而进行推荐排序。
什么是自编码器
自编码器是指能够完成数据“自编码”的模型。无论是图像、音频,还是数
据,都可以转换成向量的形式进行表达。假设其数据向量为 r,自编码器的作用是将向量r作为输入,通过自编码器后,得到的输出向量尽量接近其本身。
假设自编码器的重建函数为h(r;θ),那么自编码器的目标函数如下所示。
其中,S是所有数据向量的集合。
在完成自编码器的训练后,就相当于在重建函数h(r;θ)中存储了所有数据向量的“精华”。一般来说,重建函数的参数数量远小于输入向量的维度数量,因此自编码器相当于完成了数据压缩和降维的工作。
经过自编码器生成的输出向量,由于经过了自编码器的“泛化”过程,不会完全等同于输入向量,也因此具备了一定的缺失维度的预测能力,这也是自编码器能用于推荐系统的原因。
2.0.2 AutoRec具体实现
假设有m个用户,n个物品,用户会对n个物品中的一个或几个进行评分,未评分的物品分值可用默认值或平均分值表示,则所有m个用户对物品的评分可形成一个m×n维的评分矩阵,也就是协同过滤中的共现矩阵。
对一个物品 i 来说,所有 m 个用户对它的评分可形成一个 m 维的向量r(i)=(R1i,…,Rmi),AutoRec 要解决的问题是构建一个重建函数h(r;θ),使所有该重建函数生成的评分向量与原评分向量的平方残差和
最小。
在得到AutoRec模型的重建函数后,还要经过评分预估和排序的过程才能得到最终的推荐列表。下面介绍AutoRec模型的两个重点内容——重建函数的模型结构和利用重建函数得到最终推荐列表的过程
AutoRec模型的结构
AutoRec使用单隐层神经网络的结构来解决构建重建函数的问题。从模型的结构图中可以看出,网络的输入层是物品的评分向量 r,输出层是一个多分类层。图中蓝色的神经元代表模型的k维单隐层,其中k<<m。
图中的 V 和 W 分别代表输出层到隐层,以及隐层到输出层的参数矩阵。该模型结构代表的重建函数的具体形式如(式3-2)所示。
为防止重构函数的过拟合,在加入 L2 正则化项后,AutoRec 目标函数的具体形式如(式3-3)所示。
由于AutoRec模型是一个非常标准的三层神经网络,模型的训练利用梯度反向传播即可完成。
1、神经元?
蓝圈内的部分可以看作线性的加权求和,再加上一个常数偏置b的操作
图中的蓝圈可以看作激活函数,它的主要作用是把一个无界输入映射到一个规范的、有界的值域上。常用的激活函数除了 2.4 节介绍的 sigmoid 函数,还包括 tanh、ReLU等。单神经元由于受到简单结构的限制,拟合能力不强,因此在解决复杂问题时,经常会用多神经元组成一个网络,使之具备拟合任意复杂函数的能力,这就是我们常说的神经网络
2、神经网络?
一个由输入层、两神经元隐层和单神经元输出层组成的简单神经网络。
3、如何训练神经网络?- 前向传播
前向传播的目的是在当前网络参数的基础上得到模型对输入的预估值,也就是常说的模型推断过程。在得到预估值之后,就可以利用损失函数(Loss Function)的定义计算模型的损失。对输出层神经元来说(图中的o1),可以直接利用梯度下降法计算神经元相关权重(即图3-5中的权重 w5和 w6)的梯度,从而进行权重更新,但对隐层神经元的相关参数(比
如w1),应该如何利用输出层的损失进行梯度下降呢?
利用求导过程中的链式法则(Chain Rule),可以解决梯度反向传播的问题。如(式3-4)所示,最终的损失函数到权重 w1 的梯度是由损失函数到神经元h1输出的偏导,以及神经元 h1输出到权重 w1的偏导相乘而来的。也就是说,最终的梯度逐层传导回来,“指导”权重w1的更新。
总的来说,神经元是神经网络中的基础结构,其具体实现、数学形式和训练方式与逻辑回归模型一致。神经网络是通过将多个神经元以某种方式连接起来形成的网络,神经网络的训练方法就是基于链式法则的梯度反向传播。
基于AutoRec模型的推荐过程
基于AutoRec模型的推荐过程并不复杂。当输入物品i的评分向量为r(i)时,模型的输出向量h(r(i);θ)就是所有用户对物品 i 的评分预测。那么,其中的第 u维就是用户u对物品i的预测 ,如(式3-5)所示。
通过遍历输入物品向量就可以得到用户u对所有物品的评分预测,进而根据评分预测排序得到推荐列表。
AutoRec也分为基于物品的 AutoRec和基于用户的AutoRec。以上介绍的AutoRec输入向量是物品的评分向量,因此可称为I-AutoRec(Item based AutoRec),如果换做把用户的评分向量作为输入向量,则得到 U-AutoRec (User based AutoRec)
2.1 卷积神经网络CNN
卷积神经网络(Convolutional Neural Network,CNN)的最大特点是具有表征学习能力,是包含深度卷积计算的前馈神经网络,它的核心是隐含层和卷积层的相互连接,常见的三 种 性 能 较 好 的 CNN 模 型 有 VGGNet、GoogLeNet 和ResNet
2.2 深度神经网络DNN–Deep Crossing模型
微软于2016年提出的Deep Crossing模型是一次深度学习架构在推荐系统中的完整应用。
相比AutoRec模型过于简单的网络结构带来的一些表达能力不强的问题,Deep Crossing模型完整地解决了从特征工程、稀疏向量稠密化、多层神经网络进行优化目标拟合等一系列深度学习在推荐系统中的应用问题,为后续的研究打下了良好的基础。
2.2.1 Deep Crossing模型的应用场景
Deep Crossing模型的应用场景是微软搜索引擎Bing中的搜索广告推荐场景。用户在搜索引擎中输入搜索词之后,搜索引擎除了会返回相关结果,还会返回与搜索词相关的广告,这也是大多数搜索引擎的主要赢利模式。尽可能地增加搜索广告的点击率,准确地预测广告点击率,并以此作为广告排序的指标之一,是非常重要的工作,也是Deep Crossing模型的优化目标。
该场景下,使用的特征:
- 一类是可以被处理成one-hot或者multi-hot向量的类别型特征,包括用户搜索词(query)、广告关键词(keyword)等
- 一类是数值型特征,微软称其为计数型(counting)特征,包括点击率、预估点击率(click prediction)
- 一类是需要进一步处理的特征,包括广告计划(campaign)、曝光样例(impression)、点击样例(click)等
2.2.2 Deep Crossing模型的网络结构
端到端(end-to-end)是什么
端到端指的是输入是原始数据,输出是最后的结果,原来输入端不是直接的原始数据,而是在原始数据中提取的特征
好处:通过缩减人工预处理和后续处理,尽可能使模型从原始输入到最终输出,给模型更多可以根据数据自动调节的空间
为完成端到端的训练,Deep Crossing模型要在其内部网络中解决如下问题。
(1)离散类特征编码后过于稀疏,不利于直接输入神经网络进行训练,如何解决稀
疏特征向量稠密化的问题。
(2)如何解决特征自动交叉组合的问题。
(3)如何在输出层中达成问题设定的优化目标。
Deep Crossing模型分别设置了不同的神经网络层来解决上述问题。如图3-6所示,其网络结构主要包括4层——Embedding层、Stacking层、Multiple Residual Units层和Scoring层。接下来,从下至上依次介绍各层的功能和实现
Embedding 层:
Embedding 层的作用是将稀疏的类别型特征转换成稠密的Embedding向量。从图3-6中可以看到,每一个特征(如Feature#1,这里指的是经 one-hot 编码后的稀疏特征向量)经过 Embedding 层后,会转换成对应的Embedding向量(如Embedding#1)。
Embedding层的结构以经典的全连接层(Fully Connected Layer)结构为主,但 Embedding 技术本身作为深度学习中研究非常广泛的话题,已经衍生出了Word2vec、Graph Embedding等多种不同的Embedding方法
图3-6中的Feature#2实际上代表了数值型特征,可以看到,数值型特征不需要经过Embedding层,直接进入了Stacking层。
Stacking层
Stacking层(堆叠层)的作用比较简单,是把不同的Embedding特征和数
值型特征拼接在一起,形成新的包含全部特征的特征向量,该层通常也被称为连接(concatenate)层。
Multiple Residual Units层:
该层的主要结构是多层感知机,相比标准的以感知机为基本单元的神经网络,Deep Crossing 模型采用了多层残差网络(Multi-Layer Residual Net work)作为MLP的具体实现。最著名的残差网络是在ImageNet大赛中由微软研究员何恺明提出的152层残差网络[3]。在推荐模型中的应用,也是残差网络首次在图像识别领域之外的成功推广。
通过多层残差网络对特征向量各个维度进行充分的交叉组合,使模型能够抓取到更多的非线性特征和组合特征的信息,进而使深度学习模型在表达能力上较传统机器学习模型大为增强。
补充:什么是残差神经网络,其特点是什么
残差神经网络就是由残差单元(Residual Unit)组成的神经网络。残差单元的具体结构如图3-7所示。
与传统的感知机不同,残差单元的特点主要有两个:
(1)输入经过两层以ReLU为激活函数的全连接层后,生成输出向量。
(2)输入可以通过一个短路(shortcut)通路直接与输出向量进行元素加(element-wise plus)操作,生成最终的输出向量。
在这样的结构下,残差单元中的两层ReLU网络其实拟合的是输出和输入之间的“残差”(xo-xi),这就是残差神经网络名称的由来。
残差神经网络的诞生主要是为了解决两个问题:
(1)神经网络是不是越深越好?对于传统的基于感知机的神经网络,当网络加深之后,往往存在过拟合现象,即网络越深,在测试集上的表现越差。而在残差神经网络中,由于有输入向量短路的存在,很多时候可以越过两层ReLU网络,减少过拟合现象的发生。
(2)当神经网络足够深时,往往存在严重的梯度消失现象。梯度消失现象是指在梯度反向传播过程中,越靠近输入端,梯度的幅度越小,参数收敛的速度越慢。为了解决这个问题,残差单元使用了 ReLU 激活函数取代原来的sigmoid 激活函数。此外,输入向量短路相当于直接把梯度毫无变化地传递到下一层,这也使残差网络的收敛速度更快。
Scoring层:
Scoring层作为输出层,就是为了拟合优化目标而存在的。对于CTR 预估这类二分类问题,Scoring 层往往使用的是逻辑回归模型,而对于图像分类等多分类问题,Scoring层往往采用softmax模型。
以上是 Deep Crossing 的模型结构,在此基础上采用梯度反向传播的方法进行训练,最终得到基于Deep Crossing的CTR预估模型。
Deep Crossing模型总结
从目前的时间节点上看,Deep Crossing模型是平淡无奇的,因为它没有引入任何诸如注意力机制、序列模型等特殊的模型结构,只是采用了常规的“Embedding+多层神经网络”的经典深度学习结构。
但从历史的尺度看,Deep Crossing模型的出现是有革命意义的。Deep Crossing模型中没有任何人工特征工程的参与,原始特征经Embedding后输入神经网络层,将全部特征交叉的任务交给模型。相比之前介绍的 FM、FFM 模型只具备二阶特征交叉的能力,Deep Crossing 模型可以通过调整神经网络的深度进行特征之间的“深度交叉”,这也是Deep Crossing名称的由来
2.3 NeuralCF模型——CF与深度学习的结合
沿着矩阵分解的技术脉络,结合深度学习知识,新加坡国立大学的研究人员于2017年提出了基于深度学习的协同过滤模型NeuralCF
从深度学习的视角重新审视矩阵分解模型
2.3 循环神经网络RNN
循环神经网络(Recurrent Neural Network,RNN)包括双向循环神经网络和长短期记忆(Long Short Term Memory,LSTM)网络。
在深度神经网络中,模型训练好之后在输入层给定一个 x,在输出层就能得到特定的 y,但只适合于前后输入完全没有关系的序列。在推荐方面,通常使用 LSTM 和门控循环单元(Gated Recurrent Unit,GRU)处理推荐问题中的长序列信息。LSTM 和 GRU 属于 RNN 的改进版本,它们的关键是可以捕捉到序列比较长的 n 元信息序列,最大优势是能够为前后有关联的序列信息建模
2.1 图神经网络GNN
图神经网络(Graph Neural Network,GNN)借鉴 RNN 和CNN的思想,是一种重新定义和设计的用于处理非欧氏空间数据的深度学习算法。
非欧氏空间数据介绍
在实际的生活中,电子商务、推荐系统、动作识别等领域的数据抽象出来都是节点之间链接不固定的图谱,这些图谱不具备规则的空间结构,而 GNN 模型可以对该类数据进行高效的建模,精确地捕获到数据之间潜在的联系。
总结
深度学习模型因能与显、隐式反馈信息结合,并将多源异构数据融合到推荐系统中,从而有效缓解了传统推荐所面临的冷启动和数据稀疏
优点:
- 当遇到非结构化的数据(如图片、视频)时,数据隐含的特征信息仍然能通过深度学习其强大的表示学习能力被提取到
- 对原始数据的类型无要求,异构的数据均可以作为输入,从而进一步地获取目标用户的特征
异构数据是指具有不同结构的数据
缺点:
- 由于视频、图片均属于非结构化的数据,且大量的非结构化数据训练起来复杂度极高且耗时。因此,未来对于在视频、图片等领域的推荐模型,应尽可能设计复杂度较低高效的模型
- 融合深度学习模型的推荐算法类似于一个黑盒
3、常用数据集
公开数据集
- 电影推荐。MovieLens 数据集
- 电子商务。Epinions 数据集
- 音乐推荐。Last. fm 数据集
- 新闻推荐。MIND 数据集
- 文本推荐。Yelp 数据集