终于等到推荐系统的深度学习模型,深度学习模型是近几年在学术界比较出成果的领域。
本节主要学习知识点:
embedding:
embedding和它的功能
生成embedding的几种方法
推荐系统中深度学习模型
推荐的任务:
深度学习在推荐系统的应用
CTR预测模型最近的发展
在embedding模型诞生之前,我们会使用one-hot(独热编码)来表示词或者物的信息,但是这种表示方法会导致特征维数过高,并且在不同词或者物之间使用one-hot(独热编码)不能包含之间的信息(比如说相似度等)。我们想在低维空间内让词或者物有2个特点:相似的词或者物在多维空间中也同样相似;不同的物或者词在多维空间内要保持得足够远。embedding就是满足这2个特点的技术,同时把高维系数离散空间嵌入到低维稠密连续空间。
如何得到embedding
1 给定用户物品交互矩阵,我们可以通过矩阵分解或者因式分解机得到用户embedding和物品embedding。
2 了解Word2vec的同学都应该知道,Word2vec有两部分组成,一个是CBOW模型通过上下文信息预测当前这个词;另一个是skip-gram 模型通过当前词预测上下文,从而得到词的embedding。同理,给定上万个用户的观影顺序,我们也可以通过类似手段得到电影节目的embedding形式。
3 通过属性等信息构建图,然后通过随机游走算法(node2vec),得到点的embedding。
4 使用视频的文本信息(例如标题,描述等)构建embedding。
5.使用视频声音和图像信息得到embedding。可以使用预训练图片特征提取模型进行提取,之后对特征进行加和处理。
深度推荐系统模型
Hulu推荐系统的第一步是用Retriever算法抽取相关视频(粗筛),第二步用Ranker算法(精排)根据用户的喜好。
CTR神经网络预测模型的结构有输入层,嵌入层和全连接层。我们可以把用户的年龄,性别,历史观看记录作为输入,通过嵌入层(embedding layer)编码成向量形式,然后经过组合传入全连接层,最后通过全连接层来预测点击。
深度学习模型
2016年——FFN(Factorization-suported Neural Network) 最早用在推荐系统上的深度学习模型
2016年——PNN(Product-based Neural Network)在FFN的基础上加上两两特征的相似度,之后再连接到一起输入到最后全连接层
2016年——Wide&Deep在FFN的基础上增加手选的特征
2017年——PIN(Deep Interest Network)在序列模型中加入注意力机制
Hulu出的课后题:
1.对于一系列电影,如果有一下几种类型的数据,想要为每个电影生成嵌入(Embedding)表示,你会选用何种算法/模型,为什么?
(1)每个电影的标题,描述文本,风格类型(提示L如何建模纯文本信息?)
通过电影之间的交互信息构建图,然后通过在图上游走的方法,生成Node2vec。或者通过Bert等自然语言预训练模型对文本(标题,描述文本,风格类别)进行建模,然后进行融合。
(2)电影和电影间的相关度矩阵,大小为M*M,M为电影的数目,矩阵值为-1.0到1.0间的浮点数
如果我们有电影和电影间的相关性矩阵,我们可以把相关度矩阵的横行或者竖行作为该电影的word2vec。
(3)用户一周内的观影历史,一共有N个用户,每个用户的观影历史为一长度不定的向量,向量值为0到M-1范围内的整数,表示电影ID
如果得到N个用户在一周内的观影历史,我们可以使用word2vec的方法。通过上下观影顺序信息,通过word2vec方法学习该电影本身的向量。上下文类似的电影,电影向量也同样相似。
2基于深度神经网络的排序模型相对于传统逻辑回归模型(LR)有什么优劣,试从模型准确度,推断效率和工程代价进行分析。
神经网络相比传统逻辑回归模型可能表达更复杂的关系;可能结果多种类型的输入;往往产生更精准的准确率。缺点时间和计算成本比较高,往往需要GPU进行实现;需要更复杂的结构部署线上。
3在推荐模型中,为什么有的连续的特征,如年龄,要按范围被离散化(把用户年龄分成互不交叉的几组)?这样做的好处是什么?
在推荐模型中,连续的特征被离散化是为了平滑的考虑。更关注的是一个范围而不是具体的值。