本文做者:在线实验室javascript
文章结构:html
背景介绍——效果展现——模型概览——数据准备——训练模型——应用模型——总结——参考文献java
本教程源代码目录在book/recommender_system,初次使用请您参考Book文档使用说明。git
背景介绍github
在网络技术不断发展和电子商务规模不断扩大的背景下,商品数量和种类快速增加,用户须要花费大量时间才能找到本身想买的商品,这就是信息超载问题。为了解决这个难题,个性化推荐系统(Recommender System)应运而生。web
个性化推荐系统是信息过滤系统(Information Filtering System)的子集,它能够用在不少领域,如电影、音乐、电商和 Feed 流推荐等。个性化推荐系统经过分析、挖掘用户行为,发现用户的个性化需求与兴趣特色,将用户可能感兴趣的信息或商品推荐给用户。与搜索引擎不一样,个性化推荐系统不须要用户准确地描述出本身的需求,而是根据用户的历史行为进行建模,主动提供知足用户兴趣和需求的信息。跨域
1994年明尼苏达大学推出的GroupLens系统[1]通常被认为是个性化推荐系统成为一个相对独立的研究方向的标志。该系统首次提出了基于协同过滤来完成推荐任务的思想,此后,基于该模型的协同过滤推荐引领了个性化推荐系统十几年的发展方向。网络
传统的个性化推荐系统方法主要有:ide
近些年来,深度学习在不少领域都取得了巨大的成功。学术界和工业界都在尝试将深度学习应用于个性化推荐系统领域中。深度学习具备优秀的自动提取特征的能力,可以学习多层次的抽象特征表示,并对异质或跨域的内容信息进行学习,能够必定程度上处理个性化推荐系统冷启动问题[6]。本教程主要介绍个性化推荐的深度学习模型,以及如何使用PaddlePaddle实现模型。函数
效果展现
咱们使用包含用户信息、电影信息与电影评分的数据集做为个性化推荐的应用场景。当咱们训练好模型后,只须要输入对应的用户ID和电影ID,就能够得出一个匹配的分数(范围[0,5],分数越高视为兴趣越大),而后根据全部电影的推荐得分排序,推荐给用户可能感兴趣的电影。
Input movie_id: 1962 Input user_id: 1 Prediction Score is 4.25
模型概览
本章中,咱们首先介绍YouTube的视频个性化推荐系统[7],而后介绍咱们实现的融合推荐模型。
YouTube的深度神经网络个性化推荐系统
YouTube是世界上最大的视频上传、分享和发现网站,YouTube个性化推荐系统为超过10亿用户从不断增加的视频库中推荐个性化的内容。整个系统由两个神经网络组成:候选生成网络和排序网络。候选生成网络从百万量级的视频库中生成上百个候选,排序网络对候选进行打分排序,输出排名最高的数十个结果。系统结构如图1所示:
图1. YouTube 个性化推荐系统结构
候选生成网络(Candidate Generation Network)
候选生成网络将推荐问题建模为一个类别数极大的多类分类问题:对于一个Youtube用户,使用其观看历史(视频ID)、搜索词记录(search tokens)、人口学信息(如地理位置、用户登陆设备)、二值特征(如性别,是否登陆)和连续特征(如用户年龄)等,对视频库中全部视频进行多分类,获得每一类别的分类结果(即每个视频的推荐几率),最终输出几率较高的几百个视频。
首先,将观看历史及搜索词记录这类历史信息,映射为向量后取平均值获得定长表示;同时,输入人口学特征以优化新用户的推荐效果,并将二值特征和连续特征归一化处理到[0, 1]范围。接下来,将全部特征表示拼接为一个向量,并输入给非线形多层感知器(MLP,详见识别数字教程)处理。最后,训练时将MLP的输出给softmax作分类,预测时计算用户的综合特征(MLP的输出)与全部视频的类似度,取得分最高的kk个做为候选生成网络的筛选结果。图2显示了候选生成网络结构。
图2. 候选生成网络结构
对于一个用户UU,预测此刻用户要观看的视频ωω为视频ii的几率公式为:
其中uu为用户UU的特征表示,VV为视频库集合,vivi为视频库中第ii个视频的特征表示。uu和vivi为长度相等的向量,二者点积能够经过全链接层实现。
考虑到softmax分类的类别数很是多,为了保证必定的计算效率:1)训练阶段,使用负样本类别采样将实际计算的类别数缩小至数千;2)推荐(预测)阶段,忽略softmax的归一化计算(不影响结果),将类别打分问题简化为点积(dot product)空间中的最近邻(nearest neighbor)搜索问题,取与uu最近的kk个视频做为生成的候选。
排序网络(Ranking Network)
排序网络的结构相似于候选生成网络,可是它的目标是对候选进行更细致的打分排序。和传统广告排序中的特征抽取方法相似,这里也构造了大量的用于视频排序的相关特征(如视频 ID、上次观看时间等)。这些特征的处理方式和候选生成网络相似,不一样之处是排序网络的顶部是一个加权逻辑回归(weighted logistic regression),它对全部候选视频进行打分,从高到底排序后将分数较高的一些视频返回给用户。
融合推荐模型
本节会使用卷积神经网络(Convolutional Neural Networks)来学习电影名称的表示。下面会依次介绍文本卷积神经网络以及融合推荐模型。
文本卷积神经网络(CNN)
卷积神经网络常常用来处理具备相似网格拓扑结构(grid-like topology)的数据。例如,图像能够视为二维网格的像素点,天然语言能够视为一维的词序列。卷积神经网络能够提取多种局部特征,并对其进行组合抽象获得更高级的特征表示。实验代表,卷积神经网络能高效地对图像及文本问题进行建模处理。
卷积神经网络主要由卷积(convolution)和池化(pooling)操做构成,其应用及组合方式灵活多变,种类繁多。本小结咱们以如图3所示的网络进行讲解:
图3. 卷积神经网络文本分类模型
假设待处理句子的长度为nn,其中第ii个词的词向量为xi∈ℝkxi∈Rk,kk为维度大小。
首先,进行词向量的拼接操做:将每hh个词拼接起来造成一个大小为hh的词窗口,记为xi:i+h−1xi:i+h−1,它表示词序列xi,xi+1,…,xi+h−1xi,xi+1,…,xi+h−1的拼接,其中,ii表示词窗口中第一个词在整个句子中的位置,取值范围从11到n−h+1n−h+1,xi:i+h−1∈ℝhkxi:i+h−1∈Rhk。
其次,进行卷积操做:把卷积核(kernel)w∈ℝhkw∈Rhk应用于包含hh个词的窗口xi:i+h−1xi:i+h−1,获得特征ci=f(w⋅xi:i+h−1+b)ci=f(w⋅xi:i+h−1+b),其中b∈ℝb∈R为偏置项(bias),ff为非线性激活函数,如sigmoidsigmoid。将卷积核应用于句子中全部的词窗口x1:h,x2:h+1,…,xn−h+1:nx1:h,x2:h+1,…,xn−h+1:n,产生一个特征图(feature map):
接下来,对特征图采用时间维度上的最大池化(max pooling over time)操做获得此卷积核对应的整句话的特征ĉ c^,它是特征图中全部元素的最大值:
融合推荐模型概览
在融合推荐模型的电影个性化推荐系统中:
首先,使用用户特征和电影特征做为神经网络的输入,其中:
用户特征融合了四个属性信息,分别是用户ID、性别、职业和年龄。
电影特征融合了三个属性信息,分别是电影ID、电影类型ID和电影名称。
对用户特征,将用户ID映射为维度大小为256的向量表示,输入全链接层,并对其余三个属性也作相似的处理。而后将四个属性的特征表示分别全链接并相加。
对电影特征,将电影ID以相似用户ID的方式进行处理,电影类型ID以向量的形式直接输入全链接层,电影名称用文本卷积神经网络获得其定长向量表示。而后将三个属性的特征表示分别全链接并相加。
获得用户和电影的向量表示后,计算两者的余弦类似度做为个性化推荐系统的打分。最后,用该类似度打分和用户真实打分的差别的平方做为该回归模型的损失函数。
图4. 融合推荐模型
参考文献
本教程 由 PaddlePaddle 创做,采用 知识共享 署名-相同方式共享 4.0 国际 许可协议进行许可。