融合了LSTM和PMF的推荐算法

2020-10-10 01:00赵恢真
计算机工程与应用 2020年19期
关键词:文档矩阵算法

曾 安,赵恢真

广东工业大学 计算机学院,广州510006

1 引言

在当今互联网时代,面对海量的信息,用户经常需要消耗大量时间和精力来找出他们最需要的物品[1]。推荐系统是解决信息过载问题最重要的技术之一。推荐系统可以利用数据挖掘等技术,为用户提供个性化信息推荐[2]。目前,主流的推荐系统主要分为四类:基于内容的推荐、协同过滤推荐、基于知识的推荐和组合推荐[3]。其中,协同过滤算法无需用户或项目的属性信息,只根据相似用户或项目的评分特性即可产生推荐,并发现用户的潜在信息需求,在不同的应用中具有较强的适应性,从而得到广泛的应用。

当前,为了提高推荐准确性,有专家提出了许多新颖的协同过滤算法。这些算法不仅仅考虑用户对项目的评分信息,还考虑辅助信息,例如用户信息、社交网络关系和项目描述文件[4-6]。Blei 等人[7]提出的LDA 算法和Vincent等人[8]提出SDAE算法使用用户评论、项目概要和摘要[5-6,9]来提升算法性能。Wang 等人[10]提出的一种融合了主题模型LDA和协同过滤协算法的协同主题模型(Collaborative Topic Regression,CTR)。该模型可以一定程度上分析并利用文档信息,从而提高了推荐性能。近年来,深度学习因其具有较强的学习能力和抗干扰能力,越来越多的人将其应用到推荐系统中。Wang等人[11]提出了一种集成了堆叠降噪自动编码器SDAE和概率矩阵分解(Probabilty Matrix Factorization,PMF)的协同深度学习方法[12](Collaborative Deep Learning,CDL),从而根据评分预测产生了更准确的评估。但是,这些集成模型并不能完全捕获文档信息,因为它们使用了词袋模型[13]丢弃了单词顺序,忽略了上下文。因此,这些算法对额外信息的利用有限。

为了解决上述问题,本文提出了一种新型的推荐算法:深度协同过滤(Deep Collaborative Filtering,DCF)。DCF集成了长短期记忆网络(Long Short-Term Memory,LSTM)和概率矩阵分解(PMF)。LSTM 是最先进的机器学习方法之一,在各种领域都表现出了极高的性能,如语言识别[14]、自然语言处理[15](Natural Language Processing,NLP)非常适合用于处理与时间序列高度相关的问题。DCF算法首先利用Word-Embedding模型如Glove[16]文档进行预处理,之后利用LSTM进行训练,其结果作为PMF 的输入。PMF 作为协同过滤推荐的一个分支,能一定程度上解决稀疏性问题,近年来得到学术界的广泛研究。PMF 在处理用户评分矩阵时,将LSTM 训练结果作为额外输入,能进一步提高结果准确度。于此同时,训练过程中误差能反向传播,指导LSTM 进行更好的训练。DCF 对用户评分矩阵,项目描述文档的分析和挖掘并非孤立、静止、片面的,而是联系、发展、全面的。DCF 将LSTM 无缝集成到PMF中,两者有机结合,成为一个整体,这极大地了提升算法性能。故DCF能学习到非常精确的用户特征和项目特征,从而产生更精确的推荐结果。由于DCF 深度挖掘了辅助信息,当用户评分较为稀疏时,DCF 依然可以准确进行预测。

2 相关工作

2.1 循环神经网络(RNN)

传统的神经网络模型,一般由输入层、隐含层和输出层构成。层与层之间全连接,并且层内节点是无连接的,互相独立。所以,网络在处理每个时刻的信息时是独立的。但是,循环神经网络RNN不同,它在隐藏层中增加节点中的互连,使得隐藏层的输入即包括输入层的输出又包括上一时刻隐藏层的输出。换句话说,RNN网络模型会记忆前时刻的信息并将其应用于处理当前输出数据的计算中。RNN的模型结构如图1所示,RNN按时间顺序展开的示意图如图2所示。

图1 RNN模型

图2 RNN展开结构示意图

图2 中的每个节点代表在相应时刻RNN 网络的一层。w1是输入层到隐藏层的连接权值,w2是上一时刻隐藏层到当前时刻隐藏层的连接权值,w3是隐藏层到输出层的连接权值。RNN 中每时刻的权值是相同的,当前时刻的输出依赖于上一时刻的输出。t时刻隐藏层输出为:

其中,x(t)是t时刻的输入,h(t-1)是t-1 时刻的隐藏状态,U

是输入层到隐藏层的权值矩阵,W是隐藏层到输出层的权值矩阵,b是偏置参数。

2.2 LSTM长短期记忆网络

LSTM[17]网络的一种变体。理论上,RNN 可以处理任何长距离依赖问题,但实际上,由于梯度爆炸、消失等问题而很难实现。LSTM 网络通过引入门机制和记忆单元来解决此类问题,用LSTM 单元代替RNN 中的隐藏层。LSTM单元结构图如图3所示。

图3 LSTM模型

其中,c(t)是t时刻记忆单元的状态值,⊗表示元素间的点积,逐点相乘。记忆单元的状态值由输入门和遗忘门共同调节。

输出门的输出状态值o(t),控制记忆单元状态值的输出。

其中,h(t)是t时刻LSTM单元的输出状态值,当前时刻的隐藏状态。

LSTM 的门机制使得模型可以捕捉长距离历史信息,为了同时获取上下文信息,采用双向LSTM,因此,BLSTM中的隐藏状态h(t)可表示如下:

2.3 概率矩阵分解(PMF)

PMF 算法是现代推荐系统的基础算法之一。设有N个用户,M部电影。一个评分系统可以用N×M矩阵R来表示。R矩阵中只有部分元素是已知的(用户只给一部分项目打过分),且R往往非常稀疏,需要求出R缺失的部分。PMF 算法是一种low-dimensional factor模型。其核心思想是:用户和电影之间的关系(即用户对电影的偏好)可以由较少的几个因素的线性组合决定。用矩阵语言来描述,就是评分矩阵可以分解为两个低维矩阵的乘积R=UTV,其中D×N矩阵U描述N个用户的属性,D×M矩阵V描述M部电影的属性。PMF 算法假设用户和电影的隐式特征向量服从高斯先验分布。即:

图4 PMF概率图

3 模型构建

本文提出的深度协同过滤模型(DCF)结构图如图5所示。DCF 主要分为两部分:左边的蓝色点线框内是PMF模型;右边的红色虚线框内是LSTM模型。

图5 DCF概率图

其中,U是用户特征矩阵,V是项目特征矩阵,R是评分矩阵。、和分别为U,V,R的高斯误差。DCF 中的LSTM 部分结构共有六层:(1)输入层;(2)Embedding层;(3)LSTM层;(4)线性层;(5)Dropout层;(6)输出层。

基于词袋模型的推荐算法无法挖掘文档的深层次信息,只能对文档做出浅层的理解。词袋模型丢弃了单词顺序,忽略了上下文。例如:this is interesting 和is this interesting。基于词袋模型的方法,无法区分这两句话的不同之处。这两句话一句是肯定表达,一句是疑问表达。文档中这种微妙的差异是深入理解文档的一个重要因素。本文提出的深度协同过滤模型(DCF)集成了PMF和LSTM。DCF算法首先利用Word-Embedding模型将项目描述文档进行预处理,之后利用LSTM进行训练。DCF 的LSTM 结构具有很强的学习能力,可以:(1)学习序列顺序逻辑结构的上下文关系;(2)回避RNN在长序列上的梯度消失和梯度爆炸问题。故其可以学习到项目描述文档的信息的更精确的表示。该结果作为PMF 算法的额外输入,使得PMF 将评分矩阵分解为代表了用户和电影之间的关系(即用户对电影的偏好)两个低维矩阵时,产生更接近于实际的结果。当评分矩阵非稀疏时,用户对电影的偏好更偏向于评分矩阵产生,即对评分矩阵拥有更多的权重;当评分矩阵稀疏时,用户对电影的偏好更偏向于项目描述文档产生,即对项目描述文档拥有更多权重。这种权重的变化在DMF中基于数据集是自适应的。本文提出的DCF算法将LSTM无缝集成到PMF中,两者成为一个整体。PMF将LSTM网络的输出作为输入进行训练,训练中的误差可反向传播,指导LSTM网络进行训练。信息在LSTM网络和PMF中的双向流动使得DMF 算法具有更好的学习能力,更强的挖掘能力,表现出了更好的性能。

3.1 DCF的概率分解模型

在DCF 模型中,用户的隐式特征向量和PMF 中的一致,即公式(9)。

和PMF 不同的是,本文假设项目的隐式特征向量由三部分构成:(1)LSTM的网络权重W;(2)项目j的文档信息Xj;(3)高斯噪声ε变量。其中:

3.2 DCF的LSTM结构

DCF中的LSTM结构主要用于从项目文档中生成文档隐向量。LSTM结构共有六层:(1)输入层;(2)Embedding 层;(3)LSTM 层;(4)线性层;(5)Dropout 层;(6)输出层。DCF的结构图如图5红色虚线框所示。

输入层:输入数据是项目的描述文档。

Embedding 层:Embedding 层将项目描述文档转换为数字矩阵,将其作为下层LSTM层的输入。文档可以视为长度为L的单词序列,每一个单词可以用一个向量表示,通过连接文档中的单词向量,可以将文档表示为矩阵。这些词向量可以随机的初始化或者用词嵌入模型进行预处理。这些词向量通过优化过程进行进一步优化,如Glove[16]档矩阵R=ℝp×l可以表示为:

其中,l是文档的长度,p每一个单词向量的维度。

LSTM层:LSTM层提取上下文特征。D是一个序列,将其作为LSTM 层的输入。令i时刻的输入为wi。上下文特征的第i个分量ci由LSTM 层网络权重W,i时刻的输入wi决定:

其中,b为网络偏置,f是sigmoid、ReLU 或tanh 这样的非线性的激活函数,这里选择tanh。上下文特征向量C为:线性层:线性层具有良好的非线性映射能力,对LSTM输出的非线性特征进行加权处理,即对这些非线性特征进行组合。实质上就是在一个向量空间里学习一个(非线性)方程,以简易的权重方式学习到这些非线性的组合特征,类似于统计学中的主成分分析(PCA)与数学期望。

线性层输出为:

其中,Wl 为线性层权重,bl 为偏置。

Dropout层:随着网络层的增加,考虑到模型训练难度增加、收敛变慢、出现过拟合等问题,使用Dropout 策略来解决这些问题。Dropout 的原理,直观来说就是在训练网络的时候,以预先设置的概率停止神经单元的输出,这样部分神经单元的“罢工”,意味着每次的网络训练只有一部分数据特征在参与,从而防止网络过多地学习训练集的数据特征,达到防止过拟合的目的。

其中,p 为Dropout 率,mask 为以1-p 为概率的伯努利分布生成的二值向量。

线性层后接Dropout防止过拟合,dropout层输入为lo,输出为y。

输出层:输出层结果为项目的隐式特征向量S:

其中,Wo 为输出层权重,y 为线性层输出,bo 为输出层偏置。

最终,通过上述的处理,LSTM 结构将项目行文档作为输入,输出每一篇文档的隐向量:

其中,W 代表所有的权重,Xj是行文档的子项j ,Sj是j 的文档隐向量。

用最大化后验估计来求解用户和项目的隐式特征向量,LSTM网络的权值和偏置:

使用坐标下降,迭代的优化参数。假设W 和V(或U)为常量,等式(25)即为U(或V)二次函数。然后,U(或V)的最优解就可通过简单的优化函数Γ求解。

其中,Ii是对角矩阵,对角项为Iij,j=1,2,…,M 。 Ri是用户i 对应的向量,Ri为(Rij)Mj=1。对项目,Ij和Rj的定义和Ii,Ri定义一致,式(27)展示了LSTM网络生成的文档隐向量在生成项目隐式特征向量的作用。λv是平衡参数[6]。

然而,网络权重W 无法向U 和V 那样求解,W 和网络的结构密切相关。但是,笔者注意到Γ 可以被看做具有L2正则化的方差函数,公式如下:

用误差反向传播算法求解W 。

U 、V 、W 是交替更新的。重复优化过程直至收敛,得到最优的U 、V 、W 后,最终,可以预测用户对项目的评分为:

3.3 算法步骤

步骤1将项目文档数据按照3.2 节描述的步骤,进行预处理,得到项目的隐式特征向量S。

步骤2根据公式(26),更新用户特征向量U 。

步骤3根据公式(27),更新项目特征向量V 。

步骤4根据公式(28),用误差反向传播算法更新网络权重W 。

步骤5重复步骤2到步骤4,直到U 、V 、W 收敛。

步骤6根据公式(29),得到用户对项目的评分。

4 实验验证

4.1 数据集

为了展示DCF 模型的有效性,本文使用了来自美国明尼苏达大学(University of Minnesota Twin Cities)的Grouplens团队公开的一系列用于测试推荐算法的数据集Movielens 进行测试。Movielens 数据集由用户对项目的评分构成,评分从1到5。由于Movielens没有电影情节描述文档,从http://www.imdb.com/上获得这些信息。

和文献[6,12]类似,所有数据集中所有电影的情节描述文档做了如下的预处理:(1)设置文档的行最大长度为300;(2)移除停止词;(3)计算每一个单词的if-idf值;(4)移除文本词频高于0.5的词;(5)限制词汇表最大长度为8 000;(6)移除所有的非词汇表词汇。所以,每篇文档的平均词汇数为97.09。

实验移除了数据集中那些没有情节描述的电影。ML-100K和ML-1M数据集的各项数据统计,如表1所示。

表1 ML-100K和ML-1M数据集的各项数据统计

4.2 性能评选

为了评估算法的总体表现,随机的将每一个数据集分成三部分,分别为训练集(80%)、验证集(10%)和测试集(10%)。其中,对所有用户和项目,训练集至少包含一项,这个DCF 算法将会处理到每一个用户和项目。为了准确评估性能指标,使用根均方误差(Root Mean Squared Error,RMSE)。RMSE 可以评价数据的变化程度,RMSE 的值越小,说明预测模型描述实验数据具有更好的精确度,公式如下:

4.3 实验结果

首先,通过设置不同的隐因子个数来测试它对DCF算法的性能影响。图6和图7分别显示出了不同的隐因子个数对DCF 算法的RMSE 在ML-100K 和ML-1M 数据集上的影响。

图6 ML-100K数据集中隐因子个数对RMSE的影响

图7 ML-1M数据集中隐因子个数对RMSE的影响

从图6 中可以看出,在ML-100K 数据集上,本文提出的DCF 算法的RMSE 随着隐因子个数增大而减小,在因影子个数大于60 时,RMSE 趋于平稳,且隐因子个数越大,模型越复杂,训练效率越低。综合效率和性能的考量,在ML-100K 数据集上,将隐因子个数设为60。从图7中可以看出,在ML-1M数据集上,随隐因子个数增大,RMSE 先减小后增大,当隐因子个数为12 时,RMSE值最小,即算法性能最优。在ML-1M上,将隐因子个数设为12。

图8和图9分别给出了在ML-100K数据集和ML-1M数据集上,λU的取值对本文提出的DCF 算法在RMSE上的影响。

图8 ML-100K数据集中λU 对RMSE的影响

图9 ML-1M数据集中λU 对RMSE的影响

从图8 和图9 可以看出,随λU的增大,RMSE 呈现先减小后增大的趋势,且在λU=10的时候取得最小值,故将λU设置为10。

图10 和图11 分别给出了在ML-100K 数据集和ML-1M数据集上,λV的取值对本文提出的DCF算法在RMSE上的影响。

图10 ML-100K数据集中λV 对RMSE的影响

图11 ML-1M数据集中λV 对RMSE的影响

从图10 和图11 可以看出,随λV的增大,RMSE 呈现先减小后增大的趋势,且在λV=10 的时候取得最小值。故将λV设置为10。

为了与本文提出的方法做一个详实的对比,本文一个对比了4个模型,它们分别是:

(1)本文提出的融合了LSTM 模型的深度协同过滤算法(DCF)。先构建一个概率矩阵分解模型,来提取用户特征,然后,基于电影情节信息,采用LSTM 算法提取项目特征,将用户特征和项目特征结合,即为最终结果。

(2)Salakhutdinov和Mnih[11]提出的概率矩阵分解算法(PMF)。PMF算法是一个标准的评分预测算法,该算法仅仅使用用户评分信息用于协同过滤。

(3)Wang 等[12]提出的深度协同过滤算法CDL。CDL是一种新式的推荐系统模型,它使用SDAE分析电影情节文档来提高准确率。

(4)Wang 等[10]提出的协同主题模型算法CTR。CTR 算法是另一种新式的推荐模型,它融合了PMF 算法和主题模型(LDA),利用了用户评分信息和电影情节信息。

将U和V隐因子个数设置为60 并且将其初始化为0到1之间的随机值。表2展现了各模型表现最佳情况下λU、λV的值。PMF、CDL和CTR模型的其他参数设置参见文献[10-12]。

表2 各模型λU,λV 的值

图12、13详细展示了在ML-100K和ML-1M数据集上各个算法的RMSE指标随迭代次数变化。

图12 在ML-100K上RMSE指标随迭代次数变化

图13 在ML-1M上RMSE指标随迭代次数变化

从图12、13 中可以看出,本文提出的DCF 算法在ML-100K数据集上的RMSE相对于PMF、CTR、CDL分别提升了3.24%、3.18%、2.54%,在ML-1M 数据集上相对于PMF、CTR、CDL分别提升了4.88%、4.86%、3.96%。本文提出的DCF 算法融合了PMF 算法和LSTM 算法,不仅能够基于用户评分学习用户特征,而且能深度挖掘辅助信息,学习到更精确的物品特征,两者优势叠加,因此能够从整体上提升算法性能,从而提高推荐质量。

5 结束语

本文提出了一种融合PMF 和LSTM 的DCF 算法。在PMF 的基础上,通过LSTM网络,从项目文档中学习项目特征,将其与PMF学习的用户特征进行结合,能有效解决推荐系统中稀疏性问题和冷启动问题。在数据量和稀疏性均不同的ML-100k和ML-1M数据集上的实验结果表明,本文算法能有效的降低推荐系统的RMSE指标。该算法的不足之处在于,LSTM对序列的学习是单向的,在时间轴上表现为从左往右,而数据之间的关系可能比较复杂,单个时间轴上的信息可能并不完全。双向LSTM(Bi-directional Long Short-Term,BiLSTM),在一个序列上向前和向后分别训练两个网络,这两个网络都连接着同一个输出层。双向LSTM 能利用两个方向上的信息,似乎可以改进本文算法。因此,如何将双向LSTM 集成进DMF 算法,如何训练模型及该模型是否能产生更优的结果,是接下来研究的重点。

猜你喜欢
文档矩阵算法
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
基于MapReduce的改进Eclat算法
Travellng thg World Full—time for Rree
进位加法的两种算法
基于RI码计算的Word复制文档鉴别
初等行变换与初等列变换并用求逆矩阵
一种改进的整周模糊度去相关算法
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
矩阵