简介:文章结构: 背景介绍——效果展示——模型概览——数据准备——训练模型——应用模型——总结——参考文献 本教程源代码目录在book/recom
文章结构:
背景介绍——效果展示——模型概览——数据准备——训练模型——应用模型——总结——参考文献
本教程源代码目录在book/recommender_system,初次使用请您参考Book文档使用说明。
背景介绍
在网络技术不断发展和电子商务规模不断扩大的背景下,商品数量和种类快速增长,用户需要花费大量时间才能找到自己想买的商品,这就是信息超载问题。为了解决这个难题,个性化推荐系统(Recommender System)应运而生。
个性化推荐系统是信息过滤系统(Information Filtering System)的子集,它可以用在很多领域,如电影、音乐、电商和 Feed 流推荐等。个性化推荐系统通过分析、挖掘用户行为,发现用户的个性化需求与兴趣特点,将用户可能感兴趣的信息或商品推荐给用户。与搜索引擎不同,个性化推荐系统不需要用户准确地描述出自己的需求,而是根据用户的历史行为进行建模,主动提供满足用户兴趣和需求的信息。
1994年明尼苏达大学推出的GroupLens系统[1]一般被认为是个性化推荐系统成为一个相对独立的研究方向的标志。该系统首次提出了基于协同过滤来完成推荐任务的思想,此后,基于该模型的协同过滤推荐引领了个性化推荐系统十几年的发展方向。
传统的个性化推荐系统方法主要有:
近些年来,深度学习在很多领域都取得了巨大的成功。学术界和工业界都在尝试将深度学习应用于个性化推荐系统领域中。深度学习具有优秀的自动提取特征的能力,能够学习多层次的抽象特征表示,并对异质或跨域的内容信息进行学习,可以一定程度上处理个性化推荐系统冷启动问题[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 国际 许可协议进行许可。