推荐系统的发展历程

1.协同过滤算法(Collaborative Filtering,CF)
对于协同过滤的研究可以追溯到1992年,Xerox的研究中心开发了一种基于协同过滤的邮件筛选系统,用以过滤一些用户不感兴趣的无用邮件。协同过滤在互联网大放异彩源于互联网电商巨头Amazon,2003年,Amazon发表论文Amazon.com Recimmenders Item-to-Item Collaborative Filtering.
简单描述,目前有一些用户对商品的评价信息,那么如何给用户推荐产品,例如用户D,是否会喜欢商品3,根据生成矩阵,用户A和用户C跟用户D的向量相似,那么系统会评估用户D也会喜欢商品3,从而推荐商品3。

商品1商品2商品3商品4
用户A不喜欢喜欢喜欢
用户B不喜欢喜欢不喜欢喜欢
用户C喜欢不喜欢喜欢喜欢
用户D不喜欢喜欢

对于用户相度的计算,一般可以采用余弦相似度,皮尔逊相关系数等
以上基于用户相似度的协同过滤一般称为(UserCF),从直觉上"兴趣相似的用户喜欢的商品,我也喜欢",但从技术的角度上看,还是存在一些缺点,主要
(1)在互联网下,用户数往往远远大于物品数,UserCF需要维护用户相似度矩阵以便快速找到topn 相似用户,则该矩阵会非常大
(2)用户的历史数据向量往往会很稀疏,对于只有几次购买或者点击行为的用户来说,找到相似的用户准确率非常低,导致不适用于正反馈或得比较苦难的应用场景,比如酒店预定,大件商品等购买低频的应用。
那么除了UserCF外,还有ItemCF,其实使用的基于物品相似度进行协同过滤算法推荐,Amazon,Netflix都采用了ItemCF这种方式作为最初的推荐系统。
UserCF常用场景
兴趣推荐,倾向于不在自己兴趣范围内,比如可以根据“朋友”,来更新推荐列表,比如新闻热点等
ItemCF常用场景
ItenCF更倾向于兴趣变化比较文档的应用,比如相关物品,用户观看电影,电视剧类型等。
总结:
CF是一个直观,可解释性强的模型,但并不具备较强的泛化能力,比如热门的物品具有很强头部效应,容易跟大量的物品产生相似性,而尾部的物品由于特征向量系数,很少与其他物品产生相似,导致很少被推荐等(后续的embedding也一定程度上解决了这个问题)

2.矩阵分解算法
CF的头部效应明显,且泛化能力较弱,矩阵分解算法被提出。
矩阵分解算法就是将每个用户和商品都生成一个隐向量,都表示在空间上,距离相近的用户和商品标明兴趣特点接近,在推荐过程中,就会把距离相近的商品推荐给目标用户。
相比CF,矩阵分解有如下优点:
1.泛化能力强
2.空间复杂度低,由原本CF n的平方变成(n*m)*k的级别
3.更好的扩展性和灵活性,用户和物品的隐向量,起始和深度学习中的embedding思想已经很相像了
但还是很有局限,不方便加入用户,物品和上下文的相关的特征,为了解决这个问题,逻辑回归LR及其后续发展出来的因子分解机等被提出,融合不同特征的能力。

3.逻辑回归(Logistic Regression,LR)
逻辑回归模型能够综合利用用户,商品,上下文等多种不同的特征,进行商品推荐,其实逻辑回归就是神经网络感知机最基础的单一神经元。逻辑回归模型将推荐问题转换成了一个点击率(Clink Through Rate,CTR)预估问题
推荐过程如下:
(1)将用户年龄,性别,商品属性 等转成向量
(2)确定优化目标,比如"点击率",进行训练
(3)在模型服务阶段,将特征向量输入模型,经过模型推断,得到用户"点击"商品的概率列表,即为候选商品,进行概率排序后进行推荐。
LR的缺点:
很明显,学习过深度学习的同学都知道感知机的缺陷,表达能力不强,无法进行特征交叉,特征筛选等。

4.域因子分解机(Field Factorization Machine FFM)
有必要先讲讲特征交叉的发展
POLY2模型
POLY2模型进行特征的“暴力”组合,对特征进行两两交叉,并对所有特征组合赋予了权重w,这种方式在一定程度上解决了特征的组合问题,但弊端也非常的明显,一般处理互联网数据时,经常采用one-hot编码,使得特征向量极度稀疏,使用POLY2下,权重参数由n直接上升到n的平方,极大增加了训练复杂度
FM模型
为了解决POLY2模型的缺陷,2010年Rendle提出了FM模型,主要区别是使用2个向量的内积取代了单一的权重,FM为每个特征学习了一个隐权重向量,在特征交叉时,使用2个特征隐向量的内积作为交叉特征的权重。
FFM模型
2015年,基于FM提出的FFM在多项CTR预估大赛中夺魁,并被Cruteo,美团等公司应用。相比FM模型,FFM模型引入了特征域感知(field-aware)这一概念使得表达能力更强,意味着一个特征对应的不是一个隐向量,而是一组隐向量(由各个域组成),这也属于二阶FM。理论上,FM模型可以引申到二阶FFM,甚至三阶,更高阶,但高阶下权重数量还是训练复杂度过高,难以在实际工程中实现,那么如何突破二阶特征交叉的限制,进一步加强模型特征组合的能力,就成了推荐模型发展的发展发现。

5.GDBT+LR(决策树+逻辑回归)
FFM模型只能做二阶的特征交叉,如果继续提高特征交叉的维度,会出现组合爆炸和计算复杂度过高的问题。2014年,facebook提出了基于GBDT+LR组合模型,利用GBDT自动进行特征筛选和组合,进而生成新的离散特征向量,再把特征向量当做LR模型输入,得出结果。举例来说,GBDT由三课子树构成,每棵子树有4个叶子节点,输入训练样本后,落入子树1的第三叶子节点,和子树2第1叶子节点,子树3第4叶子节点,将3*4拼接则最终形成的特征向量为[0,0,1,0,0,0,0,0,0,0,0,1],GBDT的深度决定了特征交叉的阶数,但DBDT容易产生过拟合,且GBDT的特征转换方式(离散型)实际上丢失了大量特征的数值信息,因此不能简单地说GBDT的特征交叉能力强,效果就比FFM好,在模型的选择和调试上,永远都是多种因素综合作用的结果

6.LS-PLM-阿里巴巴曾经的主流推荐模型(Large Scale Piece-wise Linear Model)
在2012年已经是阿里巴巴的主流推荐模型,后面2017年被公开,又被称为MLR(Mixed Logistic Regression,混合逻辑回归),它在逻辑回归基础上采用分而治之的思路,先对样本进行分片,再在样本分片中因公逻辑回归进行CTR预估,在LR的基础上加入聚类的思想,其灵感来自对广告推荐领域样本特点的观察,举例来说,如果CTR模型要预估的是女性受众点击女装广告的CTR,那么显然,我们不希望把男性用户点击数码类产品的样本数据也考虑进来,因为毫无相关,为了让CTR模型对不同用户群体,不同场景更有针对性,其采用先对全样本进行聚类,再对每个分类进行LR CTR评估。
从深度学习的角度看LS-PLM模型,可以看做是一个加入了注意力(attention)机制的三层神经网络模型,更关注某个分片的思想。

7.AutoRec
2015年澳大利亚国立大学提出的AutoRec,将自编码器AutoEncoder的思想和协同过滤结合,是一个标准的自编码器,基本原理是利用协调过滤中的共现矩阵,完成物品向量或者用户向量的自编码。例如假设有m个用户,n个物品,用户会对n个物品中的一个或几个进行评分,未评分的物品分支可用默认值或者平均值表示,这就得到了m*n的评分矩阵,和协同过滤的共现矩阵一致。那么当输入一个物品i的评分向量,就是输出所有用户对物品i的评分预测,然后根据评分预测排序,得到推荐列表。和协同过滤算法一样,AutoRec分为基于物品的I-AutoRec和基于用户U-AutoRec。但其实模型还是过于简单。

8.deep crossing模型
AutoRec是应用于推荐系统的初步尝试,那么微软于2016年提出的DeepCrossing就是一次深度学习架构在推荐系统的完整应用,搜索引擎Bing中的搜索广告推荐。模型结构为input->embedding->MRN(多层残差),参考于2015 imageNet的resNet,从目前的时间节点上看,deepcrossing平淡无奇,没有引入任何注意力机制,序列模型等特殊结构,只是embedding+多层感知机,但从历史尺度上看,还是比较有意义的,模型没有人工特征工程参与,原始特征经过embedding,将全部特征交叉的任务交给了模型,同时也解决了稀疏向量转换成稠密向量。“深度交叉“deep crossing就是由此而来。

9.NeuralCF
新加坡国立大学于2017年提出基于深度学习的协同过滤模型NeuralCF,使用多层神经网络+输出层代替了矩阵分解模型中简单的内积操作,同时和deep crossing相比引入了互操作层,“元素积”等。

10.PNN
2016年,上海交通大学提出PNN模型,于DeepCrossing相比,区别在于PNN使用乘积层代替了DeepCrossing中的stacking层,更有针对性的获取特征之间的交叉信息。

11.wide&deep|cross模型
2016年,google提出Wide&Deep模型,wide主要作用让模型具有较强的"记忆能力";Deep主要作用是让模型具有"泛化能力";一般来说,协同过滤,逻辑回归等简单的模型有较强的“记忆能力”,由于这类模型简单,所以数据往往可以直接影响结果;泛化能力来自于模型多层神经元。基于以上特征,还需要对特征进行筛选,全量特征作为deep的输入,少量特征作为wide输入。
2017年斯坦福大学和谷歌研究人员提出Deep&Cross,简称DCN,使用cross网络代替wide部分。

12.FNN
FNN由伦敦大学2016提出,类似于DeepCrossing模型,使用训练好的FM各特征隐向量参数初始化Embedding层权重,这种方式也为另一种embedding层处理的方式-embedding预训练提供了借鉴思路。

13.DeepFM
2017年由哈尔滨工业大学和华为公司联合提出的DeepFM,将FM和Wide&Deep整合,将FM替换了原来Wide的部分,加强浅层网络部分特征组合的能力,动机和Deep&Cross一致,Deep&Cross利用多层Cross进行特征组合,DeepFM利用FM进行特征组合,具体效果还是需要通过实验来比较。

14.NFM
2017年,新加坡国立大学提出了NFM模型,在Embedding层和多层神经网络之间加入了特征交叉池化层(Bi-Interaction Pooling Layer),加强了特征交叉

在FNN,DeepFM,NFM等都在经典多层神经网络上加入有针对性的特征交叉操作,沿着特征工程自动化的思路,深度学习模型从PNN,Wide&Deep…到NFM,进行了大量的,基于不同特征互操作思路的尝试,但特征工程的思路几乎已经穷尽了可能,后来越来越多的深度学习推荐模型开始探索更等“结构”上的尝试,比如注意力机制,序列模型,强化学习等。

15.AFM
2017年浙江大学提出AFM,引入了attention注意力机制

16.DIN
阿里巴巴提出DIN,使用注意力机制在推荐系统中应用,将模型的输入特征分为用户特征组和候选广告特征组,无论是用户还是广告,都含有商品的id和商铺的id,用户特征组的商品id是一个序列,代表用户曾经点击过的商品集合,而广告特征里的商品id就是广告对应的商品id,利用候选商品和历史商品之间的相关性计算出一个权重,这个权重就代表了注意力机制的强弱。

17.DIEN
阿里巴巴提出DIN之后,在2019年提出DIN的演化版本DIEN,其创新在于用序列模型模拟了用户兴趣进化的过程,例如上一周用户在挑选一双篮球鞋,上周的行为集中在篮球鞋这类商品上,但在他购买完之后,本周他的购物兴趣可能变成买一个机械键盘,在DIN模型上,增加了行为序列层,兴趣抽取层,兴趣进化层

18.强化学习
DRN在线学习,对已经训练好的网络Q,对其模型w添加一个较小的随机扰动w,得到探索网络Q1,对于当前网络Q,Q1,分别生成推荐列表L,L1,将两个推荐列表组合后推送给用户,收集用户反馈,如果探索网络Q1效果好于当前网络Q,则使用Q1代替Q,反之保留当前网络。

参考书籍《深度学习推荐系统》

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
推荐系统是一种能够根据用户历史行为、兴趣偏好等信息,向用户推荐可能感兴趣的商品、新闻、音乐等内容的系统。推荐系统发展历程可以分为以下几个阶段: 1. 基于内容的推荐系统(1990年代初期):这种系统是根据物品的属性和用户过去的行为,推荐与用户过去喜欢的内容相似的物品。这种方法的缺点是容易出现“信息过滤泡”,即用户很难发现新的、未知的信息。 2. 协同过滤推荐系统(1990年代中期):这种方法是根据用户的历史行为和兴趣,找到具有相似兴趣的其他用户,然后向当前用户推荐这些用户喜欢的物品。这种方法的缺点是对于新用户或者用户行为较少的情况下,推荐效果不佳。 3. 混合推荐系统(2000年代初期):这种方法结合了基于内容和协同过滤的方法,既考虑了物品的属性,也考虑了用户行为和兴趣,提高了推荐的准确性。 4. 基于图的推荐系统(2000年代中后期):这种方法是将用户和物品之间的关系看作一个图,然后根据图的结构和节点之间的关系,进行推荐。这种方法在社交网络等领域应用广泛。 5. 深度学习推荐系统(2010年代中期至今):这种方法使用深度学习技术,对用户行为和物品属性进行建模,提高了推荐的准确性和覆盖率。其中,基于神经网络的推荐系统,如Google的Wide & Deep模型和Facebook的DSSM模型等,应用广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值