一种基于受限玻尔兹曼机的物品相似度计算方法与流程

文档序号:15448949发布日期:2018-09-14 23:42阅读:170来源:国知局

本发明涉及的技术领域为推荐系统,具体是关于推荐算法中一种物品相似度的计算方法。



背景技术:

现实中,每个用户对于物品都有自己的审视角度或者理解的侧重点,因此就导致站在不同的角度会将不同的物品相互关联起来,换句话说,就是物品之间的相似度存在于不同的审视角度或者理解的侧重点。

举例来说,假如从性别的角度出发,电影《阿凡达》可能会和《敢死队》很相似,因为其中都具有很多打斗性的场景,因此对男性来说可能这两部电影在这个角度会更加相似一点。但是如果从整部影片的题材出发的话,电影《阿凡达》和《敢死队》就没有多大的相似性了,而《阿凡达》会和《骇客帝国》在影片的题材很相似。于是,从前面电影的例子来看,衡量物品之间的相似性可以从多个角度出发进行考虑,最后综合计算物品之间的相似度。

目前,基于物品的相似度及用户行为进行推荐的协同过滤技术被广泛使用。常用的物品相似度计算有两类情况,一类是直接通过用户物品评分矩阵计算,分别有余弦相似度(cosinesimilarity)、皮尔逊系数(pearsoncorrelation)以及被sarwar称为修正的余弦相似度(adjustcosinesimilarity)。二类是通过学习的方式来计算物品的相似度,分别有ning等人提出的slim(sparselinearmethodsfortop-nrecommendersystems)方法,以及christakopoulou等人提出的glslim(localitem-itemmodelsfortop-nrecommendation)方法。

2007年,salakhutdinov等人提出将受限玻尔兹曼机应用于协同过滤推荐,这个成果证明了受限玻尔兹曼机在协同过滤上的有用性。2012年,hinton介绍了实践中如何训练一个可用的受限玻尔兹曼机,很大程度降低了实践中训练受限玻尔兹曼机的难度。2016年christakopoulou等人提出了针对在top-n推荐中非常有效的slim算法的改进,并且实验证明了从全局用户物品评分矩阵角度出发计算物品相似度的不足,也从侧面说明了本发明的潜在优势。

针对上述两类计算物品相似度的方法,其缺点如下:

第一类计算物品相似度的方法(例如,余弦相似度、皮尔逊系数以及修正的余弦相似度)主要是依赖于用户物品-评分矩阵的重合项之间进行相似度的计算。这种计算方法有两个重要的缺点,一是对相似度的计算过于的简单,导致相似度在一定程度上不准确;二是当遇到物品的购买或评分记录比较少时,就会出现计算不正确的问题。

第二类计算物品相似度的方法(例如,slim和glslim)主要是通过学习的方式计算物品两两之间的相关性矩阵。这种计算方法的缺点是,仅从一阶的角度考虑物品之间的关系,缺乏从多个角度来对物品的相关性进行解释,并且为了计算速度的原因,这类计算相似度的方法强制物品的相似度矩阵为稀疏的,因此丢失了一部分物品之间的关系。

综合已有的背景技术,本发明提出了一种将受限玻尔兹曼机应用于物品相似度的计算方法。



技术实现要素:

针对现有的技术情况,本发明的目的是:提供一种新的计算物品相似度的方法和思路;利用受限玻尔兹曼机的学习训练,来对物品的相似度从多个角度进行计算;通过提出的这种物品相似度的计算方法,提高基于邻域的协同过滤算法的性能。

为了实现上述目的,本发明基于受限玻尔兹曼机,提出一种基于受限玻尔兹曼机(restrictedboltzmannmachine)的物品相似度计算方法,具体包括如下步骤:

s1:收集系统中用户对物品的评分记录,建立用户-物品评分矩阵;

s2:根据计算任务设置模型的超参数,所述超参数包括物品相似度计算的角度数k和相应角度所具有特征值的个数;

s3:针对每个角度构建一个受限玻尔兹曼机模型,用物品的用户评分记录向量作为模型的输入来进行受限玻尔兹曼机训练,得到各物品在各角度的特征值激活概率向量值和各角度在相似性度量中所占的权重λk;

s4:根据主体物品在各角度的特征值激活概率向量值和权重λk,计算主体物品与其他物品之间的相似度。

本发明中,通过输入计算物品相似度的角度数k和相应计算角度所具有特征值的个数建立受限玻尔兹曼机模型,训练得到每个物品在k个角度下的特征值激活概率向量值以及每个角度在相似性度量中所占的权重λk,再通过各物品的特征值激活概率向量值和权重λk计算主体物品与其他物品之间的相似度。所计算的相似度结果全面地考虑到了各物品之间相关的多个角度,不再是单纯的一阶角度计算结果,能够更准确全面地表达用户的需要。

根据本发明另一具体实施方式,该计算方法对受限玻尔兹曼机模型进行了参数融合。

根据本发明另一具体实施方式,受限玻尔兹曼机的融合有两层学习过程:k个角度所代表的受限玻尔兹曼机的并行训练学习和加权参数λk学习。

根据本发明另一具体实施方式,受限玻尔兹曼机可见层中的可见单元代表物品的用户评分向量。

根据本发明另一具体实施方式,一个受限玻尔兹曼机模型代表一个计算物品相似度的角度,其中的隐含层通过设置不同的单元数来区分不同的角度。

根据本发明另一具体实施方式,基于受限玻尔兹曼机的物品相似度计算方法,根据用户i对物品的评分记录xi∈{0,1},其中0代表未评分,1代表已经评分来建立模型。

根据本发明另一具体实施方式,受限玻尔兹曼机融合模型中,隐含层中使用sigmoid函数作为网络的激活函数,sigmoid函数的形式如下:

根据本发明另一具体实施方式,sigmoid函数为非线性函数。

根据本发明另一具体实施方式,物品i和物品j之间的相似度计算公式为:

其中,kl(fk(i)||fk(j))表示物品i物品j第k个角度上特征值激活概率分布的kl散度值。

根据本发明另一具体实施方式,基于受限玻尔兹曼机的物品相似度计算公式中的kl散度值具有不对称性,因此s(i,j)≠s(j,i)。

与现有技术相比,本发明具备如下有益效果:

1、从多个角度考虑了物品之间的相似性。本发明利用受限玻尔兹曼机的强大学习能力,通过设置不同的隐含层单元数,来学习不同角度的特征。然后根据kl计算分布的相似性,来对不同角度特征的特征值分布进行相似性计算。通过这样的方式,相比于传统的相似度计算方法,实现了多角度计算物品之间的相似度。

2、给出了物品不同层面的抽象表示。在本发明中,通过设置不同的隐含层的单元数,可以学习到物品在不同的特征类型空间的位置向量,因此也就给出了物品在不同的特征空间的投影。所以,利用这种方法,就可以将物品表示在不同维度的空间,给出物品不同层面的抽象。

3、考虑了物品之间相似度的非线性关系。利用受限玻尔兹曼机进行物品之间依赖关系的学习,相比于传统的相似度计算方法,本模型最终计算出的物品相似度是非线性的关系,此非线性关系更接近实际情况,因此计算出来的结果会更准确。

下面结合附图对本发明作进一步的详细说明。

附图说明

图1是实施例1中受限玻尔兹曼机的模型结构;

图2是实施例1中从三个角度计算物品相似度示意图;

图3是实施例1中三个角度的特征值激活概率向量图;

图4是实施例1中k个角度的特征值激活概率向量图;

图5是实施例1中基于受限玻尔兹曼机的物品相似度计算过程流程图

具体实施方式

实施例1

本实施例提供了一种基于受限玻尔兹曼机对物品进行多个角度计算的相似度计算方法。受限玻尔兹曼机是一种参数化的生成模型,其具有两层结构,如图1所示,下面的一层称为可见层,上面的一层称为隐含层,层间双向全连接,层内无连接。受限玻尔兹曼机也可以称作随机神经网络模型或无向概率图模型。

在受限玻尔兹曼机中,可见层中的每个单元代表观测的变量值,隐含层中的单元是用来对可见层中的单元之间的相互依赖关系进行建模。整个受限玻尔兹曼机代表一个可见层变量和隐含层变量的联合概率分布。

在本实施例的物品相似度计算方法中,主要通过控制隐含层单元的数量来进行不同角度相似度的计算。例如从不同角度考虑电影的相似度中,当从性别的角度考虑时,只有两个特征值,即男性和女性,对应到受限玻尔兹曼机的隐含层单元数就是两个,每个单元的值代表一个特征值激活的概率;但是当从题材角度考虑时,特征值就会非常多,比如科幻片、喜剧片、爱情片等,这时对应到受限玻尔兹曼机的隐含层单元数也就比较多,每个单元就对应了一个题材特征值激活的概率。需要说明的是,在训练受限玻尔兹曼机的过程中,我们并不知道每个单元具体对应哪一个特征值,而只能根据隐含层的单元个数来区分不同的特征类型。因此,当隐含层单元数为两个时,我们可以认为这一特征为性别,但也可以是其它的具有两个特征值的特征类型。所以,在本方法中区分不同的考虑物品相似度的角度是根据受限玻尔兹曼机隐含层的单元个数来进行区分。

在利用受限玻尔兹曼机来计算物品相似度的过程中,一个受限玻尔兹曼机模型代表一个计算物品相似度的角度,而且不同角度的相似度计算需要受限玻尔兹曼机模型隐含层的单元数不同。根据对物品的理解,我们可以选择k种角度来计算物品相似度,这就对应了有k个受限玻尔兹曼机模型,而且这k个受限玻尔兹曼机模型的隐含层又有不同数量的隐含单元数即相应角度所具有特征值的个数。

例如如图2所示,下面的一层代表可见层单元,对应系统中n个用户对该物品的评分情况,xi∈{0,1},其中0代表未评分,1代表已经评分。本实施例中,我们选择3种角度来对系统中的物品相似度进行建模,其中fi代表第i种角度,代表在第i种角度下的第j种状态的特征值激活概率,

在利用受限玻尔兹曼机来计算物品相似度的过程中,我们选择非线性函数sigmoid作为模型的激活函数。sigmoid函数的形式如下:

但是,对于模型的隐含层来说,所有的隐含层的单元的输出值并不能构成一个有效的概率分布,因此在模型训练完毕后,通过输入物品向量计算物品的特征值激活概率向量值时,需要对得到的特征向量进行归一化,使其成为一个有效的概率分布。

如上所述,针对该物品,我们的模型计算出了其在三个特征类型角度的特征值激活情况,其对应了在不同维度空间中的向量值,如图3所示。然后就可以根据每个物品的三个特征类型角度的向量值来进一步计算它们之间的相似度。

假设推荐系统中有m个用户和n个物品,且收集了系统中用户对物品的评分记录,我们用一个三元组(i,j,1)表示一条用户i对物品j的评分记录。将所有的评分记录填充矩阵形成一个用户-物品评分矩阵b,b∈{0,1}m×n,其中bij=1表示用户i对物品j进行了评分,bij=0表示用户i没有对物品j进行评分。我们用b·j表示矩阵b的第j列,表示所有用户对物品j的评分记录。

根据对系统中物品域的理解,指定k个计算物品相似度的角度,并且针对这k个角度指定相应的相似度计算角度应该具有特征值的个数。然后针对每个相似度计算的角度构建一个受限玻尔兹曼机模型,对这k个受限玻尔兹曼机进行训练,当将这k个受限玻尔兹曼机训练完成后,得到每个物品在这k个角度下特征值激活的概率向量值以及每个角度在相似性度量中所占的权重λk,那么对于系统中的每个物品,我们都可以得到如图4所示的k个角度下的特征值激活概率向量值。

图4所示的k个角度的特征值激活概率向量值代表一个物品在每一个角度下所可能特征值激活的概率分布,特征值激活概率向量右边的参数λi代表系统中指定的第i个度量相似度角度的权重大小。那么对于物品i来说,它和物品j之间的相似度为:

如果是对物品j说,那么它和物品i间的相似度就为:

其中,kl(fk(i)||fk(j))表示物品i物品j在第k个角度上特征值激活分布的kl散度值,因为kl散度具有不对称性,所以s(i,j)≠s(j,i)。这里之所以使用kl散度来计算物品之间的相似度,是因为当计算其它物品的特征分布和主体物品i的特征分布时,可以认为是在用其它物品的特征分布来近似物品i的特征分布,在这种情况下,使用kl(fk(j)||fk(i))来计算相似度,可以强调物品j对物品i的特征分布中的某一个激活概率较大的特征值的匹配,也就是考虑在所有的特征值中,两个物品在哪一个角度特征上最为匹配。

图5为用受限玻尔兹曼机计算物品相似度方法的流程图。

虽然本发明以较佳实施例揭露如上,但并非用以限定本发明实施的范围。任何本领域的普通技术人员,在不脱离本发明的发明范围内,当可作些许的改进,即凡是依照本发明所做的同等改进,应为本发明的范围所涵盖。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1