• 13020021775
  • 18810698923@163.com
  • 机器联盟 | 人工智能内容分享与共建平台

王喆《深度学习推荐系统》 第2章 前深度学习时代——推荐系统的进化之路(1)

在互联网永不停歇的增长需求的驱动下,推荐系统的发展可谓一日千里,从2010年之前千篇一律的协同过滤( Collaborative Filtering, CF )、逻辑回归( Logistic Regression, LR), 进化到因子分解机( Factorization Machine, FM)、梯度提升树( Gradient Boosting Decision Tree, GBDT),再到2015年之后深度学习推荐模型的百花齐放,各种模型架构层出不穷。推荐系统的主流模型经历了从单一模型到组合模型,从经典框架到深度学习的发展过程。

诚然,深度学习推荐模型已经成了推荐、广告、搜索领域的主流,但在学习它之前,认真地回顾前深度学习时代的推荐模型仍是非常必要的,原因如下。

(1) 即使在深度学习空前流行的今天,协同过滤、逻辑回归、因子分解机等传统推荐模型仍然凭借其可解释性强、硬件环境要求低、易于快速训练和部署等不可替代的优势,拥有大量适用的应用场景。模型的应用没有新旧、贵贱之分,熟悉每种模型的优缺点、能够灵活运用和改进不同的算法模型是优秀推荐工程师应具备的素质。

(2)传统推荐模型是深度学习推荐模型的基础。构成深度神经网络(DeepNeural Network, DNN) 的基本单元是神经元,而应用广泛的传统逻辑回归模型正是神经元的另一种表现形式;深度学习推存模型中影响力很大的基于因子分解机支持的神经网络( Factorization machine supported Neural Network, FNN)深度因子分解机( Deep Factorization Macine, DeepFM)、神经网络因子分解机( Neural Factorization Machine, NFM) 等深度学习模型更是与传统的FM模型有着千丝万缕的联系。此外,在传统推荐模型训练中被广泛采用的梯度下降等训练方式,更是沿用至深度学习时代。所以说,传统推荐模型是深度学习推荐模型的基础,也是读者学习的入口。

本章从前深度学习时代推荐模型的进化关系图开始,逐一介绍主要的传统推荐模型的原理、优缺点,以及不同模型之间的演化关系,希望能够为读者绘制一幅全面的传统推荐模型进化蓝图。

2.1 传统推荐模型的演化关系图

图2-1所示为传统推荐模型的演化关系图,我们将它作为全章的索引。已经对其中某些模型有所了解的读者可以由点及面地构建全面的模型进化关系脉络,还没有相关知识储备的读者,可以据此建立传统推荐模型的框架和大致印象。

简要地讲,传统推荐模型的发展脉络主要由以下几部分组成。

(1)协同过滤算法族(图2-1中蓝色部分)。经典的协同过滤算法曾是推荐系统的首选模型,从物品相似度和用户相似度角度出发,协同过滤出物品协同过滤(ItemCF)和用户协同过滤(UserCF)两种算法。为了使协同过滤能够更好地处理稀疏共现矩阵问题、增强模型的泛化能力,从协同过滤衍生出矩阵分解
模型(Matrix Factorization, MF)。并发展出矩阵分解的各分支模型。

(2)逻辑回归模型族。与协同过滤仅利用用户和物品之间的显式或隐式反馈信息相比,逻辑回归能够利用和融合更多用户、物品及上下文特征。从LR模型衍生出的模型同样“枝繁叶茂",包括增强了非线性能力的大规模分片线性模型(Large Scale Piece wise Liner Model, LS-PLM).由逻辑回归发展出来的FM模型,以及与多种不同模型配合使用后的组合模型,等等。

(3)因子分解机模型族。因子分解机在传统逻辑回归的基础上,加入了二阶部分,使模型具备了进行特征组合的能力。更进一步,在因子分解机基础上发展出来的域感知因子分解机( Field-aware Factorization Machine, FFM)则通过加入特征域的概念,进一步加强了因子分解机特征交叉的能力。

(4)组合模型。为了融合多个模型的优点,将不同模型组合使用是构建推荐模型常用的方法。Facebook提出的GBDT+LR[梯度提升决策树( Gradient BoostingDecision Tree)+逻辑回归]组合模型是在业界影响力较大的组合方式。此外,组合模型中体现出的特征工程模型化的思想,也成了深度学习推荐模型的引子和核心思想之一。

接下来,笔者将对进化关系图中出现的模型逐一讲解。希望读者在完成一个新模型的学习后,回到进化关系图中,找到该模型在图中的位置,将与它相关的知识嵌人整个推荐模型的知识图谱。

2.2 协同过滤经典的推荐算法

如果让推荐系统领域的从业者法出业界影响力最大、应用最广泛的模型,那人笔者认为90%的从业者会首选协同过滤。对协同过滤的研究甚至可以追溯到1992年,Xerox的研究中心开发了一种基于协同过滤的邮件筛选系统,用以过滤一些用户不感兴趣的无用邮件。但协同过滤在互联网领域大放异彩,还是源于互联网电商巨头Amazon对协同过滤的应用。

2003年,Amazon发表论文A mazon.com Recommenders ltem-to-ltem Collaborative Fitring , 这不仅让Amazon的推荐系统广为人知,更让协同过滤成为今后很长时间的研究热点和业界主流的推荐模型。时至今日,尽管对协同过滤的研究已与深度学习紧密结合,但模型的基本原理还是没有脱离经典协同过滤的思路。本节介绍什么是协同过滤,以及协同过滤的技术细节。

2.2.1什么 是协同过滤

顾名思义,“协同过滤”就是协同大家的反馈、评价和意见一起对海量的信息进行过滤,从中筛选出目标用户可能感兴趣的信息的推荐过程。这里用一个商品推荐的例子来说明协同过滤的推荐过程(如图2-2所示)。

图2-2描述了一个电商网站场景下的协同过滤推荐过程,其推荐过程按照图2-2(a)~(f)的顺序共分为6步。

(1)电商网站的商品库里一共有4件商品:游戏机、某小说、 某杂志和某品牌电视机。

(2)用户x访问该电商网站,电商网站的推荐系统需要决定是否推荐电视机给用户X。换言之,推荐系统需要预测用户x是否喜欢该品牌的电视机。为了进行这项预测,可以利用的数据有用户x对其他商品的历史评价数据,以及其他用户对这些商品的历史评价数据。图2-2(b)中用绿色“点赞”标志表示用户对商品的好评,用红色“踩”的标志表示差评。可以看到,用户、商品和评价记录构成了带有标识的有向图。

(3)为便于计算,将有向图转换成矩阵的形式(被称为“共现矩阵”).用户作为矩阵行坐标,商品作为列坐标,将“点赞”和“踩”的用户行为数据转换为矩阵中相应的元素值。这里将“点赞”的值设为1.将“踩”的值设为-1,“没有数据”置为0(如果用户对商品有具体的评分,那么共现矩阵中的元素值可以取具体的评分值,没有数据时的默认评分也可以取评分的均值)。

(4)生成共现矩阵之后,推荐问题就转换成了预测矩阵中问号元素(图2-2(d)所示)的值的问题。既然是“协同”过滤,用户理应考虑与自己兴趣相似的用户的意见。因此,预测的第一步就是找到与用户X兴趣最相似的n (Top n用户,这里的n是一个超参数)个用户。然后综合相似用户对“电视机”的评价,得出用户X对“电视机”评价的预测。

(5)从共现矩阵中可知,用户B和用户C由于跟用户x的行向量近似,被选为Top n(这里假设n取2)相似用户,由图2-2(e)可知,用户B和用户C对“电视机”的评价都是负面的。

(6)相似用户对“电视机"的评价是负面的,因此可预测用户x对“电视机”的评价也是负面的。在实际的推荐过程中,推荐系统不会向用户x推荐“电视机"这一物品。
以上描述了协同过滤的算法流程,其中关于“用户相似度计算”及“最终结果的排序”过程是不严谨的,下面重点描述这两步的形式化定义。

2.2.2 用户相似度计算

在协同过滤的过程中,用户相似度的计算是算法中最关键的一步。通过2.2.1节的介绍可知,共现矩阵中的行向量代表相应用户的用户向量。那么,计算用户i和用户j的相似度问题, 就是计算用户向量i和用户向量j之间的相似度,两个向量之间常用的相似度计算方法有如下几种。

(1)余弦相似度,如(式2.1)所示。余弦相似度(Cosine Similarity)衡量了用户向量i和用户向量j之间的向量夹角大小。显然夹角越小,证明余弦相似度越大.两个用户越相似。

(2)皮尔逊相关系数,如(式22)所示。相比余弦相似度,皮尔逊相关系数通过使用用户平均分对各独立评分进行修正,减小了用户评分偏置的影响。

其中,Rip代表用户i对物品p的评分。Riˉ\bar{R_i}代表用户i对所有物品的平 均评分,P代表所有物品的集合。

(3)基于皮尔逊系数的思路,还可以通过引入物品平均分的方式,减少物品评分偏置对结果的影响,如(式2-3)所示。

其中,Rpˉ\bar{R_p},代表物品p得到所有评分的平均分。

在相似用户的计算过程中,理论上,任何合理的“向量相似度定义方式”都可以作为相似用户计算的标准。在对传统协同过滤改进的工作中,研究人员也是通过对相似度定义的改进来解决传统的协同过滤算法存在的一些缺陷的。

2.2.3 最终结果的排序

在获得TopnTop_n相似用户之后,利用TopnTop_n用户生成最终推荐结果的过程如下。假设“目标用户与其相似用户的喜好是相似的”,可根据相似用户的已有评价对

目标用户的偏好进行预测。这里最常用的方式是利用用户相似度和相似用户的评价的加权平均获得目标用户的评价预测,如(式2-4)所示。

其中,权重Wu,sW_{u,s}是用户uu和用户ss的相似度,Rs,pR_{s,p} 是用户s对物品P的评分。

在获得用户u对不同物品的评价预测后,最终的推荐列表根据预测得分进行排序即可得到。至此,完成协同过滤的全部推荐过程。

以上介绍的协同过滤算法基于用户相似度进行推荐,因此也被称为基于用户的协同过滤(UserCF), 它符合人们直觉上的“兴趣相似的朋友喜欢的物品,我也喜欢”的思想,但从技术的角度,它也存在一些缺点, 主要包括以下两点。

(1)在互联网应用的场景下,用户数往往远大于物品数,而UserCF需要维护用户相似度矩阵以便快速找出Top n相似用户。该用户相似度矩阵的存储开销非常大,而且随着业务的发展,用户数的增长会导致用户相似度矩阵的空间复杂度以n2n^2的速度快速增长,这是在线存储系统难以承受的扩展速度。

(2)用户的历史数据向量往往非常稀疏,对于只有几次购买或者点击行为的用户来说,找到相似用户的准确度是非常低的,这导致UserCF不适用于那些正反馈获取较困难的应用场景(如酒店预定、大件商品购买等低频应用)。

2.2.4 ItemCF

由于UserCF技术上的两点缺陷,无论是Amazon,还是Netflix,都没有采用UserCF算法,而采用了ItemCF算法实现其最初的推荐系统。

具体地讲,ItemCF 是基于物品相似度进行推荐的协同过滤算法。通过计算共现矩阵中物品列向量的相似度得到物品之间的相似矩阵,再找到用户的历史正反馈物品的相似物品进行进一步排序 和推荐,ItemCF的具体步骤如下:

(1)基于历史数据,构建以用户(假设用户总数为m)为行坐标,物品(物品总数为n)为列坐标的m×nm×n维的共现矩阵。

(2)计算共现矩阵两两列向量间的相似性(相似度的计算方式与用户相似度的计算方式相同).构建n×nn×n维的物品相似度矩阵。

(3)获得用户历史行为数据中的正反馈物品列表。

(4)利用物品相似度矩阵,针对目标用户历史行为中的正反馈物品,找出相似的Topk个物品,组成相似物品集合。

(5)对相似物品集合中的物品,利用相似度分值进行排序,生成最终的推荐列表。

在第5步中,如果一个物品与多个用户行为历史中的正反馈物品相似,那么该物品最终的相似度应该是多个相似度的累加,如(式2-5) 所示。

其中,H是目标用户的正反馈物品集合,Wp,hW_{p,h}是物品P与物品h的物品相似度,Ru,hR_{u,h}是用户u对物品h的已有评分。

2.2.5 UserCF 与ItemCF的应用场景

除了技术实现上的区别,UserCF和ItemCF在具体应用场景上也有所不同。

一方面, 由于UserCF基于用户相似度进行推荐,使其具备更强的社交特性,用户能够快速得知与自己兴趣相似的人最近喜欢的是什么,即使某个兴趣点以前不在自己的兴趣范围内,也有可能通过“朋友”的动态快速更新自己的推荐列表。这样的特点使其非常适用于新闻推荐场景。因为新闻本身的兴趣点往往是分散的,相比用户对不同新闻的兴趣偏好,新闻的及时性、热点性往往是其更重要的属性,而UserCF正适用于发现热点,以及跟踪热点的趋势。

另一方面,ItemCF更适用于兴趣变化较为稳定的应用,比如在Amazon的电商场景中,用户在一个时间段内更倾向于寻找一类商品, 这时利用物品相似度为其推荐相关物品是契合用户动机的。在Netlix的视频推荐场景中,用户观看电影、电视剧的兴趣点往往比较稳定,因此利用ItemCF推荐风格、类型相似的视频是更合理的选择。

2.2.6 协同过滤的下一步发展

协同过滤是一个非常直观、可解释性很强的模型,但它并不具备较强的还化能力,换句话说,协同过滤无法将两个物品相似这一信息推广到其他物品的相似性计算上。这就导致了一个比较严重的问题一热门的物品具有很强的头部效应,容易跟大量物品产生相似性;而尾部的物品由于特征向量稀疏,很少与其他物品产生相似性,导致很少被推荐。

举例来说,从某共现矩阵中抽出A、B、C、D四个物品的向量,利用余弦相似度计算出物品相似度矩阵(如图2-3所示)。

通过物品相似度矩阵可知,A、B、C之间的相似度均为0,而与A、B、C最相似的物品均为物品D,因此在以ItemCF 为基础构建的推荐系统中,物品D将被推荐给所有对A、B、C有过正反馈的用户。

但事实上,物品D与A、B、C相似的原因仅在于物品D是一件热门商品,系统无法找出A、B、C之间相似性的主要原因是其特征向量非常稀疏,缺乏相似性计算的直接数据。这一现象揭示了协同过滤的天然缺陷一推荐结果的头部效应较明显,处理稀疏向量的能力弱。

为解决上述问题,同时增加模型的泛化能力,矩阵分解技术被提出。该方法在协同过滤共现矩阵的基础上,使用更稠密的隐向量表示用户和物品,挖掘用户和物品的隐含兴趣和隐含特征,在一定程度上弥补了协同过滤模型处理稀疏矩阵能力不足的问题。

另外,协同过速仅利用用户和物品的交互信息,无法有效地引人用户年龄,性别、商品描述、商品分类、当前时间等一系列用户特征、 物品特征和上下文特征,这无疑造成了有效信息的遗漏。为了在推荐模型中引人这些特征, 推荐系统逐渐发展到以逻辑回归模型为核心,能够综合不同类型特征的机器学习模型的道路上。

2.3 矩阵分解算法 协同过滤的进化

2.2节介绍了推荐系统领域最经典的模型之一——协同过滤,针对协同过滤算法的头部效应较明显、泛化能力较弱的问题,矩阵分解算法被提出。矩阵分解在协同过滤算法中“共现矩阵”的基础上,加入了隐向量的概念,加强了模型处理稀疏矩阵的能力,针对性地解决了协同过滤存在的主要问题。

2006年,在Netflix举办的著名推荐算法竞赛Netflix Prize Challenge中,以矩阵分解为主的推荐算法大放异彩,拉开了矩阵分解在业界流行的序幕。本节借用Netfix推荐场景的例子说明矩阵分解算法的原理。

2.3.1 矩阵分解算法的原理

Netlix是美国最大的流媒体公司,其推荐系统的主要应用场景是利用用户的行为历史,在Netlix的视频应用中为用户推荐喜欢的电影、电视剧或纪录片。图2-4用图例的方式描述了协同过滤算法和矩阵分解算法在视频推荐场景下的算法原理。

如图2-4 (a)所示,协同过滤算法找到用户可能喜欢的视频的方式很直接,即基于用户的观看历史,找到跟目标用户Joe看过同样视频的相似用户,然后找到这些相似用户喜欢看的其他视频,推荐给目标用户Joe。

矩阵分解算法则期望为每一个用户和视频生成一个隐向量,将用户和视频定位到隐向量的表示空间上(如图24(b))所示),距离相近的用户和视频表明兴趣特点接近,在推荐过程中,就应该把距离相近的视频推荐给目标用户。 例如,如果希望为图2-4(b)中的用户Dave推荐视频,可以发现离Dave的用户向量最近的两个视频向量分别是"Ocean’s 11”和The Lion King“,那么可以根据向量距离由近到远的顺序生成Dave的推荐列表。

用隐向量表达用户和物品,还要保证相似的用户及用户可能喜欢的物品距离相近——听上去是一个非常好的想法,但关键问题是如何得到这样的隐向量呢?

在“矩阵分解”的算法框架下,用户和物品的隐向量是通过分解协同过滤生成的共现矩阵得到的(如图2-5所示),这也是“矩阵分解”名字的由来。

矩阵分解算法将m×nm×n维的共现矩阵R分解为m×km×k维的用户矩库U和k×nk×n维的物品矩阵V相乘的形式。其中m是用户数量,n是物品数量,k是隐向量的维度。k的大小决定了隐向量表达能力的强弱。k的取值越小,隐向量包含的信息越少,模型的泛化程度越高;反之,k的取值越大,隐向量的表达能力越强,但泛化程度相应降低。此外,k的取值还与矩阵分解的求解复杂度直接相关,在具体应用中,k的取值要经过多次试验找到一个推荐效果和工程开销的平衡点。

基于用户矩阵U和物品矩阵V,用户u对物品i的预估评分如下。

其中pup_u是用户uu在用户矩阵UU中的对应行向量,qiq_i是物品ii在物品矩阵VV中的对应列向量。

2.3.2 矩阵分解的求解过程

对矩阵进行矩阵分解的主要方法有三种:特征值分解( Eigen Decomposition )、奇异值分解( Singular Value Decomposition, SVD) 和梯度下降( GradientDescent)。其中,特征值分解只能作用于方阵,显然不适用于分解用户物品矩阵。奇异值分解的具体描述如下:

假设矩阵M是一个m×nm×n的矩阵,则一定存在一个分解M=UVTM= U\sum V^T,其中U是m×mm×m的正交矩阵,V是n×nn×n的正交矩阵,V是m×nm×n的对角阵。

取对角阵\sum中较大的k个元素作为隐含特征,删除\sum的其他维度及U和V中对应的维度,矩阵M被分解为MUm×kk×kVk×nTM≈U_{m×k}\sum_{k×k}V_{k×n}^T,至此完成了隐向量维度为k的矩阵分解。

可以说,奇异值分解似乎完美地解决了矩阵分解的问题,但其存在两点缺陷,使其不宜作为互联网场景下矩阵分解的主要方法。

(1)奇异值分解要求原始的共现矩阵是稠密的。互联网场景下大部分用户的行为历史非常少,用户-物品的共现矩阵非常稀疏,这与奇异值分解的应用条件相悖。如果应用奇异值分解,就必须对缺失的元素值进行填充。

(2)传统奇异值分解的计算复杂度达到了0(mn2)0(mn^2)的级别,这对于商品数量动辄上百万、用户数量往往上千万的互联网场景来说几乎是不可接受的。

由于上述两个原因,传统奇异值分解也不适用于解决大规模稀疏矩阵的矩阵分解问题。因此,梯度下降法成了进行矩阵分解的主要方法,这里对其进行具体的介绍。

(式2-7) 是求解矩阵分解的目标函数,该目标函数的目的是让原始评分ruir_{ui}与用户向量和物品向量之积qiTPuq^T_iP_u的差尽量小,这样才能最大限度地保存共现矩阵的原始信息。

其中K是所有用户评分样本的集合。为了减少过报合现象,加入正则化项后的目标函数如(式2-8)所示。

`基础知识一什么是过拟合现象和正则化

正则化对应的英文是Regularization,直译过来是“规则化”,即希望让训练出的模型更“规则”、更稳定,避免预测出一些不稳定的“离奇”结果。

举例来说,图2-6中蓝色的点是样本点,红色的曲线是通过某模型学习出的拟合函数fred(x)f_{red}(x), 红色曲线虽然很好地拟合了所有样本点,但波动的幅度非常大,很难想象真实世界的数据模式是红色曲线这个样子的,这就是直观上的“过拟合现象"。

为了让模型更“稳重”。需要给模型加入一些限制,这些限制就是正则化项。在加入正则化项之后再次进行训练,拟合函数变成了绿色曲线的形式,避免受个别“噪声点”的影响,模型的预测输出更加稳定。

那么,正则化项严格的数学形式是怎样的呢?

(式2.9)是某模型的损失函数(Loss Function),其中tnt_n是训练集样本的真实输出,W是权重,ϕ\phi是基函数。如果不考虑加号后面的部分,则(式2-9)是一个标准的L2损失函数。

在加号后面的项就是正则化项,其中λ\lambda被称为正则化系数,λ\lambda越大,正则化的限制越强。剩余部分就是模型权重的q次方之和,q取1时被称为LI正则化,q取2时被称为L2正则化。

将正则化项加人损失函数来保持模型稳定的做法也可以做如下理解。对于加入了正则化项的损失函数来说,模型权重的值越大,损失函数越大。梯度下降是朝着损失(Loss)小的方向发展的,因此正则化项其实是希望在尽量不影响原模型与数据集之间损失的前提下,使模型的权重变小,权重的减小自然会让模型的输出波动更小,从而达到让模型更稳定的目的。

对(式2-8)所示的目标函数的求解可以利用非常标准的梯度下降过程完成。

(1)确定目标函数,如(式2-8)所示。

(2)对目标函数求偏导,求取梯度下降的方向和幅度。

根据(式2-8)对q.求偏导,得到的结果为

pnpn求偏导的结果为

(3)利用第2步的求导结果,沿梯度的反方向更新参数:

其中,γ\gamma为学习率。

(4)当迭代次数超过上限nn或损失低于阈值θ\theta时,结束训练,否则循环第一步。

在完成矩阵分解过程后,即可得到所有用户和物品的隐向量。在对某用户进行推荐时,可利用该用户的隐向量与所有物品的隐向量进行逐一的内积运算,得出该用户对所有物品的评分预测,再依次进行排序,得到最终的推荐列表。

在了解了矩阵分解的原理之后,就可以更清楚地解释为什么矩阵分解相较协同过滤有更强的泛化能力。在矩阵分解算法中,由于隐向量的存在,使任意的用户和物品之间都可以得到预测分值。而隐向量的生成过程其实是对共现矩阵进行全局拟合的过程,因此隐向量其实是利用全局信息生成的,有更强的泛化能力。而对协同过滤来说,如果两个用户没有相同的历史行为,两个物品没有相同的人购买,那么这两个用户和两个物品的相似度都将为0 (因为协同过滤只能利用户和物品自己的信息进行相似度计算,这就使协同过滤不具备泛化利用全局信息的能力)。

2.3.3消除用户和物晶打分的偏差

由于不同用户的打分体系不同(比如在5分为满分的情况下,有的用户认为打3分已经是很低的分数了,而有的用户认为打1分才是比较差的评价),不同物品的街量标准也有所区别(比如电子产品的平均分和日用品的平均分差异有可能比较大),为了消除用户和物品打分的偏差 (Bias),常用的做法是在矩阵分解时加入用户和物品的偏差向量,如(式2-10)所示。

rui=μ+bi+qiTpur_{ui}=\mu+b_i+q_i^Tp_u

其中μ\mu是全局偏差常数,bib_i是物品偏差系数, 可使用物品ii收到的所有评分的均值。bub_u用户偏差系数,可使用用户uu给出的所有评分的的均值。

与此同时,矩阵分解目标函数也需要在(式2-8)的基础上做相应改变,如(式2-11)所示。

同理,矩阵分解的求解过程会随着目标函数的改变而变化,主要区别在于利用新的目标函数,通过求导得出新的梯度下降公式,在此不再赘述。

加入用户和物品的打分偏差项之后,矩阵分解得到的隐向量更能反映不同用户对不同物品的“真实”态度差异,也就更容易捕捉评价数据中有价值的信息,从而避免推荐结果有偏。

2.3.4 矩阵分解的优点和局限性

相比协同过滤,矩阵分解有如下非常明显的优点

(1)泛化能力强。在一定程度上解决了数据稀疏问题。

(2)空间复杂度低。不需再存储协同过滤模型服务阶段所需的“庞大”的用户相似性或物品相似性矩阵,只需存储用户和物品隐向量。空间复杂度由级别降低到(n+m)k(n+m)k级别。

(3)更好的扩展性和灵活性。矩阵分解的最终产出是用户和物品隐向量,这
其实与深度学习中的Embedding思想不谋而合,因此矩阵分解的结果也非常便于与其他特征进行组合和拼接,并便于与深度学习网络进行无缝结合。

与此同时,也要意识到矩阵分解的局限性。与协同过滤一样,矩阵分解同样不方便加入用户、物品和上下文相关的特征,这使得矩阵分解丧失了利用很多有效信息的机会,同时在缺乏用户历史行为时,无法进行有效的推荐。为了解决这个问题,逻辑回归模型及其后续发展出的因子分解机等模型,凭借其天然的融合不同特征的能力,逐渐在推荐系统领域得到更广泛的应用

2.4 逻辑回归——融合多种特征的推荐模型

相比协同过滤模型仅利用用户与物品的相互行为信息进行推荐,逻辑回归模型能够综合利用用户、物品、上下文等多种不同的特征,生成较为“全面”的推荐结果。另外,逻辑回归的另一种表现形式“感知机”作为神经网络中最基础的单一神经元, 是深度学习的基础性结构。因此,能够进行多特征融合的逻辑回归的模型成了独立于协同过滤的推荐模型发展的另一个主要方向。

相比协同过速和矩阵分解利用用户和物品的“相似度"进行推荐,逻辑回归将推荐问题看成一个分类问题, 通过预测正样本的概率对物品进行排序。这里的正样本可以是用户“点击”了某商品,也可以是用户“观看”了某视频,均是物荐系统希望用户产生的”正反馈”行为。因此,逻辑回归模型将推荐同题转换成了一个点击率(Click Though Rate CTR)预估问题。

2.4.1 基于逻辑回归模型的推荐流程

基于逻辑回归的推荐过程如下。

(1)将用户年龄、性别、物品属性、物品措述、当前时间、当前地点等特征转换成数值型特征向量。

(2)确定逻辑同归模型的优化目标(以优化“点击率”为例),利用已有样本数据对逻辑回归模型进行训练,确定逻辑回归模型的内部参数。

(3)在模型服务阶段,将特征向量输人逻辑回归模型,经过逻辑回归模型的推断,得到用户“点击”(这里用点击作为推荐系统正反馈行为的例子)物品的概率。

(4)利用“点击”概率对所有候选物品进行排序,得到推荐列表。

基于逻辑回归的推荐过程的重点在于,利用样本的特征向量进行模型训练和在线推断。下面着重介绍逻辑回归模型的数学形式、推断过程和训练方法。

2.4.2逻辑同归模型的数学形式

如图2-7所示,逻辑回归模型的推断过程可以分为如下几步:

(1)将特征向量x=x1..,xnx= x_1..,x_n作为模型的输入。

(2)通过为各特征赋予相应的权重(w1,w2,...wn+1)(w_1,w_2,...w_{n+1})来表示各特征的重要性差异,将各特征进行加权求和,得到xTwx^Tw

(3)将xTw输人sigmoid 函数,使之映射到0~1的区间,得到最终的“点击率”。

其中,sigmoid 函数的具体形式如(式2-12)所示。

其函数曲线如图2-8所示。可以直观地看到sigmoid的值域在0-1之间,符合“点击率”的物理意义。

综上,逻辑回归模型整个推断过程的数学形式如(式2-13)所示。

对于标准的逻辑回归模型来说,要确定的参数就是特征向量相应的权重向量w,下面介绍逻辑回归模型的权重向量w的训练方法。

2.4.3 逻辑同归模型的训练方法

逻辑回归模型常用的训练方法是梯度下降法,牛顿法、拟合牛顿法等,其中梯度下降法是应用最广泛的训练方法,也是学习深度学习各种训练方法,

事实上,在介绍矩阵分解训练方法时,已经对梯度下降法的具体步骤进行了介绍。

基础知识——什么是梯度下降法

梯度下降法是一个一阶最优化算法,也称为最速下降法。应用梯度下降法的目的是找到一个函数的局部极小值。为此,必须沿函数上当前点对应梯度(或者是近似梯度)的反方向进行规定步长距离的迭代搜索。如果向梯度正方向迭代进行搜索,则会接近函数的局部极大值点,这个过程被称为梯度上升法,

如图2-9所示,梯度下降法很像寻找一个盆地最低点的过程。那么,在寻找最低点的过程中,沿哪个方向才是下降最快的方向呢?

这就利用了“梯度” 的性质:如果实值函数F(x)F(x)在点x0x_0处可微且有定义,那么函数F(x)F(x)在点x0x_0处沿着梯度相反的方向F(x)-\nabla F(x)下降最快。

因此,在优化某模型的目标函数时,只需对目标函数进行求导,得到梯度的方向,沿梯度的反方向下降,并迭代此过程直至寻找到局部最小点。

使用梯度下降法求解逻辑回归模型的第一步是确定逻辑回归的目标函数。已知逻辑回归的数学形式如(式2-13)所示,这里表示成fw(x)f_w(x)。对于一个输人样本xx,预测结果为正样本(类别1)和负样本(类别0)的概率如(式2-14)所示。


将(式2-14)综合起来,可以写成(式2-15)的形式:

由极大似然估计的原理可写出逻辑回归的目标函数,如(式2-16)所示。

由于目标函数连乘的形式不便于求导,故在(式2-15)两侧取loglog,并乘以系数(1/m)-(1/m),将求最大值的问题转换成求极小值的问题,最终的目标函数形式如(式2-17)所示。


在得到逻辑回归的目标函数后.需对每个参数求偏导,得到梯度方向,对J(w)J(w)中的参数wjw_j求偏导的结果如(式2-18)所示。

在得到梯度之后,即可得到模型参数的更新公式,如(式2-19)所示。

至此,完成了逻辑回归模型的更新推导。

可以看出,无论是矩阵分解还是逻辑回归,在用梯度下降求解时都遵循其基本步骤本步骤。问题的关键在于利用模型的数学形式找出其目标函数,并通过求导得到梯度下降的公式。 在之后的章节中,如无特殊情况,将不再一推导模型的参数更新公式。有兴趣的读者可以尝试推导或者阅读模型相关的论文。

2.4.4 逻辑回归模型的优势

在深度学习模型流行之前,逻辑回归模型曾在相当长的一段时间里是推荐系统、计算广告业界的主要选择之一。除了在形式上适于融合不同特征,形成较全面的推荐结果,其流行还有三方面的原因: 一是数学含义上的支撑:二是可能释性强;三是工程化的需要。

1.数字含义上的支撑
逻辑回归作为广义线性模型的一种,它的假设是因变量y服从伯努利分布,那么在CTR预估这个问题上,“点击”事件是否发生就是模型的因变量y,而用户是否点击广告是一个经典的掷偏心硬币问题。因此,CTR模型的因变量显然应该服从伯努利分布。所以,采用逻辑回归作为CTR模型是符合“点击”这一事件的物理意义的。

与之相比,线性回归作为广义线性模型的另一个特例, 其假设是因变量y服从高斯分布,这明显不是点击这类二分类问题的数学假设。

2.可解释性强

直观地讲,逻辑回归模型目标函数的形式是各特征的加权和,再施以sigmoid函数。在逻辑回归数学基础的支撑下,逻辑同归的简单数学形式也非常符合人类对预估过程的直觉认知。

使用各特征的加权和是为了综介不同特征对CTR的影响,而不同特征的重要程度不一样,所以为不同特征指定不同的权重,代表不同特征的重要程度。最后,通过sigmoid函数,使其值能够映射到0-1区间,正好符合CTR的物理意义。

线性回归如此符合人类的直觉认知显然有其他的好处,使模型具有极强的可解释性。算法工程师可以轻易地根据权重的不同解释哪些特征比较重要,在CTR模型的预测有偏差时定位是哪些因素影响了最后的结果。在与负责运营、产品的同事合作时,也便于给出可解释的原因,有效降低沟通成本。

3.工程化的需要

在互联网公司每天动辄TB级别的数据面前,模型的训练开销和在线推断效率显得异常重要。在GPU尚未流行的2012年之前,逻辑回归模型凭借其易于并行化、模型简单、训练开销小等特点,占据着工程领域的主流。囿于工程团队的限制,即使其他复杂模型的效果有所提升,在没有明显击败逻辑回归模型之前,公司也不会贸然加大计算资源的投入,升级推荐模型或CTR模型,这是逻辑回归持续流行的另一重要原因。

2.4.5 逻辑回归模型的局限性

逻辑回归作为一个基础模型,显然有其简单、直观、易用的特点。但其局限性也是非常明显的:表达能力不强,无法进行特征交叉、特征筛选等一系列较为“高级”的操作,因此不可避免地造成信息的损失。为解决这一问题, 推荐模型朝着复杂化的方向继续发展,衍生出因子分解机等高维的复杂模型。在进人深度学习时代之后,多层神经网络强大的表达能力可以完全替代逻辑回归模型,让它逐渐从各公司退役。各公司也将转而投人深度学习模型的应用浪潮之中。