消息推荐系统的制作方法

文档序号:29710457发布日期:2022-04-16 17:11阅读:139来源:国知局
消息推荐系统的制作方法

1.所公开的主题总体涉及用于自动生成推荐的系统和方法,并且更具体而言涉及用于推荐生成的基于图的神经网络架构。


背景技术:

2.现代数据丰富的世界的特点不仅在于对数字信息源的日常依赖,而且还在于从信息取回的“拉模型”(其中,用户明确地搜索信息)到“推模型”(其中,自动向用户推荐相关信息)的范式转移。因此,不足为奇的是,诸如电子商务网站和社交网络等大型在线服务提供商倾向于将某种形式的“实体推荐”集成到其服务产品中,作为用户体验的核心部分。在大型系统内,在正确的上下文中的服务相关信息——例如,从电子商务网站上的数亿种产品中向用户推荐相关产品,或者显现用户可能希望在当前上下文中在社交媒体平台上数百万个帖子中消费的正确帖子——构成了具有挑战性的计算问题。
3.机器学习社区已经对实体推荐问题进行了大量研究,并且开发了针对其技术方案的多种方法。然而,在文献中所描述的典型公式通过仅对两个实体(诸如用户和待推荐的项目)进行建模,对整个系统采取了相当简单的观点。尽管这样的简单的抽象提供了能够使用严格算法解决的易于处理的公式,但是其忽略了系统中可用的关键信息的微妙性和复杂性。为了捕获系统中的关键信息,若干实际的推荐系统使用内容过滤方案,其中,针对(用户、项目)元组的联合特征是手动设计的,并且然后被馈送到分类器中。然而,设计特征是个难题,尤其对于具有若干个信息源的真实世界系统。因此,这样的方法常常遇到诸如例如准确度差或维护周期困难等问题。因此,需要一种自动地捕获信息的微妙性和复杂性的实体推荐方法。


技术实现要素:

4.在本文中所描述的是用于实体推荐的数据处理系统、方法和计算机程序产品(体现在机器可读介质中)的各个方面,其能够通过允许待推荐的项目和推荐的接收者(例如,用户)被建模为由一个或多个静态子实体和/或动态组件组成的“复杂实体”并且通过利用关于所述子实体之间的多个关系的信息来捕获在过分简单的两实体模型中没有考虑的微妙性和复杂性。所述推荐的接收者在下文中也被称为“第一项目”,并且待推荐的项目在下文中也被称为“第二项目”。为了提供一些非限制性示例,第一项目和第二项目分别可以是例如用户和推荐以供其消费的消息,或者研究出版物和对其他出版物的建议引用。
5.静态子实体,下文也被简称为“实体”,通常是多种实体类型的独有的固定实例。第一项目和第二项目分别是第一复杂实体类型和第二复杂实体类型的实例。根据本文,每种复杂实体类型由相关联的(子)实体类型(在多种实体类型中选择)的对应集合来定义,有时与呈现独有的每个复杂实体实例(即,每个项目)的动态组件相结合。例如,出版物项目可以由构成所述动态组件的其作者(可以在多个出版物之间共享的静态实体)、在其中发表其的期刊(可以在多个出版物之间共享的另一静态实体)、以及其文本或者其文本的独有部分
(例如,标题或摘要)来表示。作为与“退化”复杂实体类型相对应的特例,项目集合可以仅由单一类型的实体组成。例如,可以使用用户实体以便表示第一项目或第二项目。
6.实体(或者同义词“实体实例”)之间的关系能够由图来表示。根据各种实施例,任意两种实体类型的配对之间的关系被反映在二分图中。尽管讨论集中在表示两种不同类型实体的二分图上,但是所述概念能够被直接扩展到相同类型的实体之间的实体之间的图。(在二分图的框架内,这样做的一种非限制性方式是将单一实体类型的实体之间的关系表示为该单一类型实体的两个副本之间的二分图。)图(例如,二分图)在本文中被用于将对第二项目的推荐的计算通知给第一项目;在某种程度上,第一项目和第二项目“继承”了在其相关联的实体之间的关系。
7.给定第一项目和第二项目的定义以及其子实体和动态组件(如果有的话)的数学表示,并且基于表示所述子实体之间的关系的二分图,在本文中所描述的方案根据第二项目到第一项目的相关性来自动地对第一项目和第二项目的配对进行评分,使得能够基于所述评分进行推荐,而无需手动设计特征来捕获在复杂实体定义和图中所反映的丰富信息。在各种实施例中,所述评分利用多层架构。在第一层中,针对二分图的计算模型(例如,基于图的卷积神经网络(cnn))被用于计算与第一项目和第二项目相关联的实体实例的向量表示。通常,每个项目都具有多个这样的相关联的向量表示(在本文中也被称为“实体向量表示”,以将其与项目的整体表示区分开来),其可能对应于不同的子实体以及其各自相关联的二分图,或者对应于涉及相同子实体的多个不同的二分图。在一个或多个后续层中,这些多个实体向量表示以及任何动态组件被组合成项目向量表示(例如,使用神经网络来合并与相同的两种实体类型之间的不同二分图相关联的实体向量表示,和/或串联实体向量表示和动态内容表示)。针对第一项目和第二项目的配对的所得到的项目向量表示在最后一层中被馈送到分类器(例如,多层感知器(mlp))以生成相关性分数。然后,能够基于相关性分数通过过滤、排名等来生成推荐。
8.在一些实施例中,能够利用合适的学习算法端到端地训练所述多层架构,以基于经标记的训练数据来优化指定的性能度量。在本文中所描述的是度量——特别适用于不平衡数据——不仅奖励评分最高的项目中相关项目的出现,而且也惩罚评分最高的项目中不相关项目的出现。该度量能够在迭代过程中被间接地优化,所述迭代过程涉及在每次迭代中训练所述架构以优化代理度量,并且然后使用经训练的架构对所述训练数据进行评分,并且基于分数来选择所述训练数据的子集作为针对下一次迭代的训练数据集。
9.在一个方面中,在本文中所描述的推荐方案被应用于对话平台内的消息推荐,其中,消息被发布到信道并且用户可以访问与其相关联的所有信道。为了避免用户在面对大量其能够访问的消息时信息过载,自动消息推荐被用于仅向给定用户显现少量特别相关的消息。这些消息推荐可以在消息进入时实时地计算,首先基于与消息作者相关联的接收者候选名单(shortlist)剔除潜在的大量接收者,然后使用在复杂实体上操作的多层架构和上文所描述的二分图对候选名单上的用户进行评分,并且可选地使用显式用户反馈进一步细化基于所述评分识别出的用户子集。
10.前述概述介绍了本发明主题的关键概念和选定方面和特征,但是并不旨在作为在本文中寻求获得专利的主题的所有实施例的详尽说明。
附图说明
11.通过以下特别是结合附图对各种实施例的详细描述,将更容易理解前述内容。
12.图1是根据各种实施例的推荐系统的示意框图。
13.图2是概念性地图示出根据各种实施例的实体的示例性集合以及在其之间的关系的图。
14.图3是根据各种实施例的用于计算推荐的示例性神经网络架构的示意图。
15.图4是根据各种实施例的生成推荐的方法的流程图。
16.图5是根据各种实施例的神经网络训练系统的示意框图。
17.图6是根据各种实施例的训练用于计算推荐的神经网络架构的方法的流程图。
18.图7是根据各种实施例的消息推荐系统的示意框图。
19.图8是根据各种实施例的消息推荐方法的流程图。
20.图9是根据各种实施例的可以用于实现图1、图5和图7的系统的示例性计算系统的框图。
具体实施方式
21.本公开描述了一种用于适用于多种推荐问题、实体类型、以及实体之间的关系的自动推荐生成的方案。实体可以包括例如:用户(例如,作为出版物、帖子、或者其他内容的作者;消息的发送者或接收者;产品的购买者或销售者等)、文档(例如,出版物、帖子、消息、媒体内容等)、场所(例如,期刊、会议、城市、通信信道等)、联系(例如,机构、社交网络团体等)、产品/服务等等。这些实体之间的关系可以包括:例如,相同类型的实体之间的连接或相似性(例如,用户之间的社交连接、文档之间的引用、产品之间的相似性)以及不同类型的实体之间的交易或关联(例如,用户针对产品的购买交易、文档与出版场所或作者的关联、用户与机构的联系等)。推荐问题的特征能够在于推荐的接收者的性质(即,第一项目)和待推荐的项目的种类(即,第二项目),这两者在本文中均以(静态)实体和(通常但是不一定)动态组件的方式来定义。在下文中,关于附图描述了用于根据实体的数学表示和组成项目的动态组件以及实体之间的关系生成第二项目到第一项目的推荐的系统和神经网络架构。
22.图1是根据各种实施例的用于生成推荐的数据处理系统(在下文中也被称为“推荐系统”100)的示意框图。推荐系统100能够利用硬件和/或软件的适当组合来实现,并且通常包括一个或多个适当配置或编程的硬件处理器(诸如中央处理单元(cpu)、图形处理单元(gpu)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、专用集成电路(asic)等)。在各种实施例中,推荐系统100由运行软件的通用计算机(例如,如在图9中所图示的)或者经由网络相互通信的多个这样的计算机的集群来实现。简言之,计算机或集群包括一个或多个cpu和/或gpu,以及存储数据和程序代码以供cpu和/或gpu运行的(易失性和/或非易失性)计算机存储器。计算机还可以包括输入/输出设备(例如,用于用户交互的键盘/鼠标和屏幕显示器)和/或网络接口(例如,用于连接到互联网)。
23.推荐系统100在存储器中存储针对推荐接受者的项目定义102和根据实体类型和动态组件的集合的待推荐项目(即,第一项目和第二项目),以及实体104和动态组件106以及反映实体104之间的关系的图108的数学输入表示。在各种实施例中,实体104和动态组件106的所述输入表示采用向量的形式,诸如从实体的属性导出的特征向量、一位独热编码
(二进制向量反映例如数据集内的实体id的数值)、文本输入的词袋向量等;这些和其他合适的实体向量表示对于本领域普通技术人员而言是公知的。在各种实施例中,所述图表示为邻接矩阵,即,其维度对应于相应实体类型的实例的数量(图的节点)并且其单元反映一种类型的实体是否与另一种类型的实体连接以及可选地该连接的强度如何的矩阵。实体104、动态组件106和图108的数学输入表示可以直接作为输入提供给系统100,或者可以由系统100根据其他输入表示(例如,从构成动态组件的文本、独有实体名称或者以文本、图像等形式定义实体的数据集)来计算。
24.推荐系统100还包括多个功能块110、112、114、116,其实现用于处理项目定义102以及实体104、动态组件106和图108的数学输入表示以生成推荐的计算模型和算法。具体而言,根据各种图108(例如,基于图的卷积神经网络)的表示创建的基于图的计算模型110针对每个图对所述图的实体104(构成节点)的输入向量表示独立地操作,以计算相应的实体向量表示120,实体向量表示120捕获在所述图中所反映的关系。由于所述实体之间的关系不受所述项目定义的影响,实体向量表示120可以被预先计算并且在与其相关的多个推荐问题之间共享。基于针对给定推荐问题的项目定义102,合并组件112将与每个项目相关联的所有实体向量表示120连同所述项目的任何动态组件106的输入表示组合成项目向量表示122。分类器模型114然后能够对第一项目和第二项目的任何配对进行评分,将相关联的项目向量表示122作为输入。量化第二项目与第一项目的相关性的所得到的分数124可以由推荐生成器116用于生成推荐,例如,通过识别配对集合中具有高于特定阈值的相关性分数124的第一项目和第二项目的配对,或者通过基于其相关性分数124对配对进行排名并且返回指定数量的排名靠前的配对。所述推荐可以作为输出例如经由合适的用户界面提供给用户,或者提供给下游计算过程。
25.在一些实施例中,由合并组件112对项目向量表示的计算和对配对的评分由推荐生成器116触发并且被限于当时感兴趣的项目。例如,可以通过对给定用户的项目向量表示和所有潜在相关的第二项目的项目表示的配对进行评分,来为该用户(构成特定的“第一项目”)按需生成推荐。相反,在系统中接收待推荐的新项目(例如,新消息)可以触发对对应项目向量表示的计算和对项目与所有潜在推荐接收者的相关性的评分。
26.针对根据各种实施例的用于对第一项目和第二项目的配对进行评分的算法的更正式的数学描述,考虑以下问题构想:令第一项目(推荐接收者)表示为(针对“用户”,尽管第一项目也可以是文档或其他类型的项目),并且令第二项目(待推荐的项目)表示为(针对“项目”);目标是确定到的相关性的分数。一般而言,和是具有一个或多个静态子实体和(可选)动态组件的复杂实体。此外,令ε
(1)
,...,ε
(e)
为给定实体类型,并且令ε(i)(j)表示类型i的第j个实体。例如,如果ε
(1)
表示作者的集合,那么ε
(1)
(j)表示集合中的第j个作者。利用这些符号,能够被定义为:
[0027][0028]
其中,每个用户具有k1种实体类型种实体类型表示与相关联的类型的实体实例。例如,由作者a为会议c撰写的研究论文可以根据会议实体和作者实体以及动态组件来定义,其可以是例如论文摘要和标题的维词语到
向量嵌入。类似地,项目能够被定义为:
[0029][0030]
其中,每个项目具有k2种实体类型种实体类型表示与相关联的类型的实体实例,并且表示项目的维度动态组件。定义项目的实体类型可以与定义用户的那些实体类型不同或相同,这取决于问题的类型。例如,引用项目(如向其推荐的论文)可以根据作者、会议场所、以及待引用的论文的标题和摘要的词语到向量嵌入来定义。
[0031]
在静态实体之间的关系能够由二分图(通常是针对多个关系的多个图)来表示,其节点对应于实体,并且其边对应于任意两个实体之间的关系。例如,作者-会议图的边可以表示作者过去在特定会议上已经发表文章的次数。令类型ε
(a)
(其数量为|εa|)和ε
(b)
(其数量为|εb|)的实体之间的二分图表示为:
[0032]ga,b
=(v
a,b
,a
a,b
),
[0033]
其中,v
a,b
是(|εa|+|εb|)节点的集合,并且是所述图的邻接矩阵,a
a,b
的行和列分别与类型ε
(a)
和ε
(b)
的实体实例相关联。对于与类型ε
(a)
和ε
(b)
的实体实例相关联的任意两个实体类型,可能存在表示不同关系的多个图。因此,令是实体ε
(a)
与ε
(b)
之间的图集。此外,令集合{ε
(1)
,...,ε
(e)
}内的任意一对实体的所有现有图的集合表示为
[0034]
图2是概念性地图示出根据各种实施例的实体的示例性集合以及其之间的关系的图。三种类型的实体ε
(a)
、ε
(b)
和ε
(c)
分别被描绘为正方形、圆形和三角形。如所示的,实体实例的数量可能在实体类型之间不同。实体的配对之间的关系被反映在多个(在本示例中为五个)二分图200、202、204、206、208中。二分图200、202、204、206捕获两种不同类型的实体之间的关系,其中,二分图204、206对应于实体的相同配对之间的两种不同的关系。二分图208表示单一类型的实体之间的关系,这些实体被复制以将所述关系拟合到二分图的框架中。为了通过示例的方式例示说明,假设正方形、圆形和三角形分别表示研究人员ε
(a)
、研究领域ε
(b)
和科学期刊ε
(c)
。二分图200可以反映其中各种研究人员工作的研究领域,并且二分图202可以表示哪些期刊包括各个研究领域的出版物。二分图204、206可以捕获研究人员与期刊之间的两种不同的关系,诸如研究人员在哪些期刊上发表过文章,或者研究人员先前曾担任过哪些期刊的审稿人。二分图208可以表示研究人员自身之间的关系,诸如出版物的共同作者。关于三个实体之间的关系的这样的丰富信息可能是有用的,例如,用于生成在其中发表研究文章的可能的期刊的推荐,其中,文章由创作其的研究人员可选的由研究领域以及基于文本的动态组件来表示,并且其中,可能的期刊由期刊实体自身来表示。
[0035]
现在转向根据各种实施例的用于计算推荐的示例性算法,图3是图示出适用于该目的的多层神经网络架构300的示意图。在第一层302中,各种二分图304、306的计算模型110被用于计算实体向量表示308、309、310、311(对应于图1中的120),在本文中也用于构成图304、306的节点的实例的实体实例的“实体嵌入”。(术语“嵌入”在本文中被理解为与其在
神经网络的上下文中的一般用途相一致,作为离散或分类变量的学习的连续向量表示(即,连续数量的向量))。在所描绘的(非限制性)示例中,二分图304表示类型ε
(a)
与ε
(b)
的实体之间的关系,并且二分图306表示类型ε
(a)
与ε
(c)
的实体之间的关系;当然,架构300可以类似地并入另外的实体以及不同类型或相同类型的实体之间的另外的关系。
[0036]
在各种实施例中,针对所述二分图的计算模型是或者包括本领域普通技术人员已知的基于图的cnn。针对给定的图g=(v,a),利用通过傅立叶域中的来参数化的滤波器cw对图信号的卷积被定义如下:
[0037]cw
*x:=uc
wut
x,
[0038]
其中,u是图g的经归一化的拉普拉斯算子l的特征向量矩阵。为了减少计算开销(否则由于乘法复杂度而过高),滤波器cw(λ)(其是l的特征值λ的函数)可以根据chebyshev多项式进行近似:
[0039][0040]
其中,λ
max
是l的最大特征值,i
|v|
是尺寸为|v|的单位矩阵,wh是在对cnn的训练期间要学习的系数,以及th是被递归地定义为th(x)=2xt
h-1
(x)-t
h-2
(x)的h阶chebyshev多项式,其中,t1(x)=x且t0(x)=1。将该近似值应用于卷积运算,能够更简单地计算所述图信号上的卷积为:
[0041][0042]
其中,由于该近似值是h阶拉普拉斯算子的函数,因此其通过仅考虑节点的h阶邻域来执行局部操作。然后将这些本地操作应用于所述图中的所有位置。
[0043]
返回到将cnn应用于二分图g
a,b
,其表示类型ε
(a)
与ε
(b)
的实体之间的关系,为了解释的简单,令所述图表示为g={va∪vb,a},其中,va和vb分别对应于类型ε
(a)
和ε
(b)
的实体实例,并且a是节点之间的邻接矩阵,被定义为:
[0044][0045]
针对所述图的经归一化的拉普拉斯算子被定义为:
[0046]
l=i-d-1/2
ad-1/2

[0047]
其中,d是a的对角度矩阵,并且i是大小为|εa|+|εb|的单位矩阵。此外,如上定义。
[0048]
原则上,多项式近似的阶h能够通过对训练数据的交叉验证来确定,但是该过程在计算上是昂贵的。理论和经验两者都已经表明,对于较大的h值,所有实体嵌入在优化过程期间收敛到相同向量,从而恶化所述分类结果。因此,在各种实施例中,选择小的值,例如,h=2。启发式地,所述图卷积操作是一种消息传递的形式,其中,消息/特征跨图的边进行转换。对于二分图,期望为与具有类似强度(以边权重反映)的类型ε
(b)
的相同实体实例交互的类型ε
(a)
的多个实体实例获取相同的实体嵌入,并且反之亦然;这就是协同过滤的现象。选取卷积运算的2阶近似意味着消息从针对ε
(a)
的节点集合传递到针对ε
(b)
的节点集合。在h=2时,所述卷积运算简化为:
[0049][0050]
在一些实施例中,通过约束w1=w0+w2进一步减少网络中的参数数量,以避免过度拟合和数值不稳定性,导致:
[0051][0052]
给定上述卷积运算以及在两种类型的实体ε
(a)
与ε
(b)
之间的图g
a,b
以及其经归一化的拉普拉斯算子实体实例的d
cn
维嵌入能够通过将d
cn
卷积滤波器cw应用于所述图来计算。令是针对类型ε
(a)
的实体实例的输入特征矩阵(即,由该类型的所有实体实例的p维输入向量表示104组成的矩阵),并且令是类型ε
(b)
的实体实例的输入特征矩阵(由q维输入向量表示组成)。然后,使用图-卷积运算产生:
[0053][0054]
其中,relu:=max(0,a),并且和是通过应用所述卷积运算获得的特征矩阵,所述特征矩阵由分别与ε
(a)
和ε
(b)
相关联的实体的d
cn
维实体向量表示120组成。的每个列对应于g
a,b
的一个卷积滤波器。因此,在所描述的实施例中,架构300中的层302为与图g
a,b
相关联的实体实例生成图-卷积二阶多项式(“g2-p2”)嵌入(被包含在矩阵z
(a)
、z
(b)
中)。
[0055]
如上文所提到的,在实体类型ε
(a)
与ε
(b)
之间能够存在多个图。例如,由作者在会议中诸如“发表论文数量”或“被引用论文数量”的关系可以由两个不同的图来表示。在架构300的层314(在本文中也被称为“嵌入合并层”)中,跨所有那些关系(即,跨在第一实体与第二实体之间的所有图)合并从与给定第二实体类型(在特殊情况下,其可以与第一实体类型相同)的关系合并的给定第一实体类型的(g2-p2)实体嵌入。例如,参考图3,在ε
(a)
中相对于ε
(b)
的实体的所有实体嵌入308被合并到合并的实体嵌入316中;在ε
(b)
中相对于ε
(a)
的实体的所有实体嵌入309被合并到经合并的实体嵌入317中;在ε
(a)
中相对于ε
(c)
的实体的所有实体嵌入310被合并到经合并的实体嵌入318中;以及在ε
(c)
中相对于ε
(a)
的实体的所有实体嵌入311被合并到经合并的实体嵌入319中。
[0056]
能够例如通过首先将第一类型相对于第二类型的实体嵌入相连接,并且然后使用完全连接的神经网络层将其合并,来实现合并。正式地,利用表示实体类型ε
(a)
与ε
(b)
之间的图集的g
a,b
,合并关于ε
(b)
的实体实例计算出的ε
(a)
的实体实例的实体嵌入,并且对于ε
(b)
相对于ε
(a)
的那些的实体实例也如此。以特征矩阵形式联合为ε
(a)
和ε
(b)
的所有实体实例写入,所述合并能够被表达为:
[0057][0058]
其中,d
mn
是嵌入合并层314的嵌入维度,表示在ε
(a)
中相对于ε
(b)
的所有实体以及在ε
(a)
中相对于ε
(b)
的所有实体的合并嵌入的集合。以及及是嵌入合并层314的权重和偏差。注意,可以为不同的实体类型选择不同的d
mn
值。
[0059]
在跨实体类型的给定配对之间的图合并实体嵌入后,经合并的实体嵌入跨项目的子实体进行组合,并且如果适用的话,在层320(在本文中也被称为“静态-动态层”)中利用项目的动态组件106的嵌入来增强,以创建项目向量表示122。组合能够例如采用相应向量表示的串联的形式。因此,第一项目和第二项目可以被表示为:
[0060]
以及
[0061][0062]
其中,分别是来自ε(i)与ε
(j)
之间的所有图的合并嵌入或并且其中,如果项目不包括ε(i)的实例作为子实体,或者在ε(i)与ε
(j)
之间不存在关系,则对应的或取为零。例如,可能存在用户-作者图和用户-会议图,但是没有作者-会议图;在这种情况下,针对作者-会议图的合并嵌入将为零。层314、320共同实现合并组件112的实施例。
[0063]
例如串联向量形式的项目向量表示和(在本文中也是第一项目和第二项目的配对的“静态-动态内容嵌入”)作为输入提供给分类器神经网络322。分类器神经网络322可以是例如mlp,其根据下式来计算针对第一项目和第二项目的配对的相关分数:
[0064][0065]
其中,是mlp层中的网络权重,并且σ是sigmoid函数(用于二元分类问题)。
[0066]
图4以流程图的形式总结了根据各种实施例的生成推荐的方法400。方法400可以由如在图1中所示的推荐系统100来执行,其可以实现例如在图3中所示的神经网络架构300。方法400涉及接收表示在多种实体类型的实体实例之间的关系的二分图的图数据作为输入,以及将所述图和实体实例的表示存储在存储器中(动作402)。此外,方法400包括对所存储的表示进行操作,使用针对二分图的计算模型110来计算针对实体实例的实体向量表示(例如,如上文针对图g
a,b
定义的实体嵌入z
(a)
、z
(b)
)(动作404)。在各种实施例中,这些计算模型是或者包括基于图的cnn,但是也可以使用其他类型的模型,诸如例如基于图的递归神经网络(grnn)或者基于元路径的模型(例如,metapath2vec)。
[0067]
基于第一项目和第二项目(即,要接收推荐的项目和要推荐的项目)在其组成静态子实体和/或动态组件方面的定义,所述实体向量表示被跨二分图组合,并且如果适用的话,在动作406(由合并组件112来执行)中与动态组件的表示相组合,以生成针对第一项目和第二项目的项目向量表示。在一些实施例中,该动作涉及例如使用可以包括完全连接的神经网络的嵌入合并层314,跨反映实体类型的配对之间的多个相应关系的多个二分图,来合并针对给定第一实体类型的实例相对于给定第二实体类型的实例计算的实体向量表示。此外,针对除了静态子实体或实体之外还包括多个静态子实体和/或动态组件的项目,合并的实体向量表示和/或动态组件可以被串联在例如静态-动态层320中。替代地,实体向量表示可以彼此组合和/或以其他方式与动态组件相组合,例如,使用外积。然后,使用分类器模型114、322,诸如mlp、递归神经网络(rnn)或其他神经网络模型、内核支持向量机或者其他类型的分类器,基于对应的项目向量表示来计算针对第一项目和第二项目的配对的相关性
分数(动作408)。一旦已经根据第二项目与第一项目的相关性对项目的配对进行了评分,就基于相关性分数来生成推荐并且输出(动作410)到例如用户或者另一计算组件。例如,生成所述推荐可以涉及基于所述分数的排名和/或过滤。
[0068]
取决于特定应用,可以响应于一些触发事件而预先计算或计算(例如,实时地)动作404-410。例如,在一些情况下,针对所述静态实体的实体向量表示是基于二分图被预先计算的并且被存储以供以后响应于触发事件而使用,所述触发事件诸如例如是对给定第一项目(例如,特定用户)的推荐的请求或者对新的第二项目(例如,新消息)的接受。例如,响应于用户的推荐请求,针对该用户以及针对一些或所有第二项目(例如,从一些初步过滤得到的第二项目的子集)的项目向量表示可以根据相关性被成对地创建和评分。类似地,对要推荐的新项目的添加可能触发对针对该项目和第一项目的至少子集(例如,针对新消息,可能对所述消息感兴趣的用户子集)的项目向量表示的计算,并且根据第二项目与第一项目的相关性来对所述第一项目进行评分。在一些实施例中,基于二分图对实体向量表示的计算同样在触发事件时执行。例如,在新用户注册到社交网络时,与用户和/或其他实体(例如,用户创作的出版物)相关联的图可以被更新以包括新用户,并且然后实体向量表示可以根据更新后的图进行计算(或者重新计算)。
[0069]
用于根据诸如神经网络架构300生成推荐的计算模型和算法可以基于经标记的训练数据进行训练:
[0070][0071]
其中,yi是所述数据集中的第一项目和第二项目的第i配对的标签,其例如能够是针对多类别问题(许多现实世界问题能够向其转换)的1与c之间的任意整数。(替代地,为了允许在各个维度上进行比较,标签yi可以被转换为c实数的向量)。给定d、实体ε
(1)
,...ε
(e)
和图训练的目标是根据特定度量m(d)找到效果最好的评分函数以用于计算针对配对的相关性分数。例如,对于二进制或实值标签yi,目标可以是计算出的分数与训练数据相一致,使得如果yi>yj,则
[0072]
对于一些推荐问题,所描述的方法的性能能够利用常规度量来充分评估,诸如例如曲线下面积(auc)、归一化折扣累积增益(ndcg)、精确度@k、或者本领域普通技术人员已知的其他度量。然而,许多重要的推荐问题都以不平衡的数据为特征,其中,不相关项目的数量远超相关项目的数量(其中,相关性的概念可能例如考虑到在给定时间要推荐的项目数量的截止值)。例如,在消息推荐系统的上下文中,用户期望在给定时间段(例如,一天)内显现的消息数量可能仅仅是在该时间期间被提交给所述系统的新消息数量的一小部分。在这种情况和类似情况下,重要的是,k个分数最高的项目(下文被简称“前k个”项目)(其是将被推荐的项目)不仅包括高度相关的项目,而且避免不相关的项目(因为不相关的项目将不必要地占用下一最相关项目可用的空间)。auc没有捕获到该方面。
[0073]
因此,根据各种实施例,下文被称为“auc-rel@k”的新度量被用于优化和/或评估所述推荐算法的性能。为了定义该度量,考虑n个经标记的数据点的集合(x1,y1),

,(xn,yn),其中,表示第一项目和第二项目的配对并且yi∈{0,1}是二进制标签,其指示配对是相关(1)还是不相关(0)。令n
+
和n-为正标记(1)和负标记(0)数据点的数量。此外,考虑评分函数并且令γs为根据由s给出的分数对数据点进行排序的排列,并且
是由γs重排序的数据点,使得如果i≥j,则利用这些符号,定义:
[0074][0075][0076]
其中,s(s,i)表示评分高于项目i的项目j的集合,并且t
k,n
(s,i)是指示函数,当项目i位于按分数s排序的前k个项目中时该指示函数为一。此外,定义:
[0077][0078][0079]
其中,s
+
(s,i)表示评分高于正标记项目i的正标记项目j的集合,并且t
+k,n
(s,i)是指示函数,当项目i位于按分数s排序的前min(k,n
+
)(即,前k或者前n
+
个,以较小者为准)个正标记项目中时该指示函数为一。
[0080]
现在,假设前k个元素(按s排序)中的正负数分别为k
+
和k-。然后,auc-rel@k被定义为:
[0081][0082]
其中,ii是指示函数,当满足方括号中的条件时,所述指示函数为一。该度量考虑了前k个项目中的不相关项目与前min(k,n
+
)个相关项目(按分数s排序)之间的成对比较,并且计算在成对比较中相关项目比不相关项目具有更高分数的次数。因此,auc-rel@k奖励前k个项目中每个相关项目的存在,并且惩罚前k个项目中不相关项目的存在而不是前k个项目之外的相关项目。注意,auc-rel@k的上限是auc@k(亦即,仅针对前k个项目计算的auc),因为auc-rel@k比auc@k考虑更多的成对比较,亦即,前k个之外的相关项目与前k中的不相关项目的比较,这些项目在计入归一化(即,分母)时总是丢失(即,等于零)。能够表明:
[0083][0084]
针对多个第一项目能够定义微型版本(类似于常规的auc@k)如下:
[0085][0086]
其中,是针对被推荐给的项目而计算的auc-rel@k。
[0087]
类似地,宏版本能够被定义如下:
[0088][0089]
其中,符号与上文定义的含义相同,除了其现在对应于
[0090]
图5是根据各种实施例的用于训练推荐系统100(例如,神经网络架构300)(下文也被称为“训练系统”500)的神经网络组件的示例性数据处理系统的示意框图。与推荐系统100一样,训练系统500能够利用硬件和/或软件的适当组合来实现,诸如例如利用通用计算机(例如,如在图9中所图示的)或计算机集群来实现,将合适的软件存储在计算机存储器中,并且利用一个或多个cpu或gpu或者利用一个或多个专用处理器(诸如dsp、fpga或acic)
来运行所述软件。训练系统500用于通过针对可以被指定为对训练系统500的输入的给定度量506优化神经网络架构502的可调整网络参数504,来训练实现计算模型110、合并组件112和分类器模型114的神经网络架构502。针对上文关于图3所描述的神经网络架构300,例如,这些可调参数504可以包括卷积滤波器参数(其包括针对所有d
cn
滤波器的chebyshev近似的系数wh)、嵌入合并层314的权重和偏置以及执行所述分类的mlp(分类器神经网络322)的权重在一些实施例中,神经网络架构502是端到端训练的,亦即,所有网络参数504在单个过程中被联合地调整(而不是针对不同神经网络组件的单独过程)。
[0091]
对参数504的优化涉及运行学习算法508以基于作为输入被提供给训练系统500的经标记的训练数据512来迭代地优化针对性能度量506的代理度量510。学习算法508可以利用例如对机器学习领域的普通技术人员而言是公知的错误的反向传播,或者利用任何其他合适的技术。诸如auc或准确度的常规性能度量能够通过诸如例如交叉熵的标准代理度量510来直接地优化。然而,这种关系并不适用于上文定义的度量auc-rel@k,其着眼于部分数据,而不是像标准代理度量那样对数据采用整体视图。换言之,优化(例如,交叉熵)通常将不会导致最优的auc-rel@k。因此,在各种实施例中,如在图5中所图示的,添加额外的优化层:在利用训练数据512的初始集合运行学习算法508之后,使用经训练的神经网络架构502对训练数据512中的第一项目和第二项目的所有配对进行评分,并且然后所述评分被用于选择(如下详述的)训练数据的合适子集514以用于使用学习算法508的另一轮网络训练。迭代地重复该过程,例如,直到已经完成了指定数量的迭代。评估组件516然后能够使用auc-rel@k作为性能度量506来量化由此训练的神经网络架构502的性能。
[0092]
由于推荐和训练系统100、500两者都使用神经网络架构502,所以在一些实施例中,其可以与彼此集成并且共享资源。在其他实施例中,训练系统500和推荐系统100是单独并且不同的实体,例如,其中,仅有训练系统500实现学习算法508,并且仅有推荐系统100包括推荐生成器116。这两个实体都可以包括神经网络架构502的相应副本,并且针对训练系统500内的副本而确定的网络参数504一旦被优化,就可以被传送到推荐系统100以用于与其神经网络架构502的副本一起使用。替代地,训练系统500不需要包括神经网络架构502自身的副本,而是可以替代地在训练过程期间与推荐系统100交换数据以直接调整推荐系统100内的网络参数504,并且一旦参数504已经被确定,这些通信就可以停止。
[0093]
图6是更详细地图示出根据各种实施例的用于计算推荐以优化auc-rel@k的训练神经网络架构502的示例性方法600的流程图。方法600将训练数据、测试数据、以及迭代的指定次数作为输入,并且返回auc-rel@k的值作为输出。在接收到所述输入(在动作602中)并且初始化神经网络参数504、训练数据集和迭代计数器(在动作604中)之后,方法600进入迭代循环,只要迭代计数器低于迭代的指定次数(如在606处所确定的),则进行迭代循环。
[0094]
在每次迭代中,在动作608中,在当前训练数据集上训练神经网络架构502,以最小化目标函数,诸如,例如预测分数的负对数似然(对应于交叉熵)的正则化形式:
[0095][0096]
其中,是由神经网络架构502计算出的分数,yi是在训练数据中给予数
据点的表,τ是正则项,并且所述第二项目是架构502中所有权重矩阵的l2-范数之和。在一些实施例中,来自多个二分图的权重和后续嵌入是使用adam优化算法(其是d.kingma等人在2014年首次在tensorflow(适用于各种机器学习应用的数据流和可微编程的开源软件库)中在arxiv上发表的“adam:a method for stochastic optimization”介绍的随机梯度下降技术的扩展)以最小批量学习的。经训练的神经网络架构502被用于对接收到的训练数据中的所有数据点进行评分(动作610),并且基于所述分数,随后选择所接收到的训练数据的子集以用作下一迭代中的训练数据集(动作612),并且迭代计数器递增(动作614)。(在第一迭代中,其中,神经网络架构502在所接收到的训练数据的完整集合上进行训练,评分动作610可能是多余的。在随后的迭代中,其中,训练通常仅基于所接收到的训练数据的子集,将存在在前一网络训练的过程中尚未被评分的数据点)更具体而言,根据一些实施例,针对下一次迭代的所述数据集包括跨所有第一项目聚合的每个第一项目(例如,用户)的“前rel-k”个数据点,其中,“前rel-k”表示前k个评分点和在前k个评分点之外的最多k个正标记数据点的并集(总共最多2k个数据点,并且如果在前k个之外少于k个正标记点,则更少的数据点)。当迭代计数器已经达到迭代的指定次数时,训练被视为完成,并且度量auc-rel@k在测试数据上被评估并且作为输出来提供(动作616)。方法600间接地优化auc-rel@k。如本领域普通技术人员将理解的,类似惩罚前k个中的不相关项目以及奖励前k个中的相关项目的不平衡数据的类似度量也可以使用所描述的过程来优化。
[0097]
上文参考图1-6所描述的推荐方法能够被应用于许多不同的问题和实体,诸如推荐相关研究论文以用于在给定论文中潜在引用、推荐社交网络或媒体共享平台内的群组以供用户发布图像等、或者向在共享企业对话平台内的用户推荐消息,等等。
[0098]
为了提供特定示例,图7和图8图示了用于在企业对话平台(下文也被称为“消息系统”)中的消息推荐的系统和方法,诸如例如但不限于microsoft产品(microsoft corporation,redmond,wa)。在这样的消息系统中,每个用户可以是一个或多个团队的一部分,并且团队可以建立和维护在团队成员之间交换的消息的对话线程,其中,消息被发布到与团队相关联的消息信道。与仅被发送给明确列出的接收者的电子邮件通信相比,相关联团队(或者多个团队)的所有成员都可以访问信道内的消息,作为促进大型团队之间对话的手段。然而,这样的不受限制的访问能够导致给定用户能够阅读的消息数量过大,从而为用户造成严重的信息过载。如将意识到的,能够识别和显现与用户最相关的消息的准确推荐系统能够解决该问题,允许用户忽略许多(甚至绝大多数)消息,而没有丢失对其特别重要的消息的风险。同样将显而易见的是,上文所介绍的auc-rel@k度量由于其适用于不平衡数据,因此针对这样的系统提供了良好的性能测量。
[0099]
针对所描述的场景的推荐问题能够被描述为针对给定用户(第一项目)和给定消息(第二项目)的学习函数预测用户是否将对消息感兴趣。在训练数据中,针对任意配对的标签y可以是用户是否已经“参与”消息的二元指示符,其中,“参与”可以被定义为例如“喜欢”或回复消息。考虑具有三种实体类型的推荐系统:用户作者和信道(注意,用户和作者的集合通常包括相同的人(或者至少重叠),但是反映用户能够扮演的不同角色:推荐的接收者和与消息相关联的作者。)给定这些实体,用户仅由用户实体类型进行定义:并且消息项目由作者和信道实体类型以及表示消息的内容的动态
组件来定义:此外,考虑在实体的三个配对之间的一个或多个图中所反映的实体之间的关系:(1)用户-用户图,具有单向边,诸如用户之间的公共信道数量、用户之间的公共对话数量等;(2)用户-作者图,具有方向边,诸如用户喜欢作者的帖子的次数、回复作者的帖子的次数等;以及(3)用户-信道图,具有捕获交互的边,诸如用户在过去一个月访问信道的次数、用户在信道上发布的消息数量等。
[0100]
原则上,上文所描述的推荐方法(例如,如使用神经网络架构300所实现的)能够被用于针对给定传入消息对用户进行评分,以确定消息与每个用户的相关性。然而,在实践中,该应用提出了挑战。一方面,消息系统可以提供无状态的消息通知,这样,一旦有新消息进来,就决定将所述消息通知哪些用户。此外,能够访问所述信道并且因此决定是否显现所述消息的用户的数量会非常大;例如,流行的消息信道可能有成千上万的注册用户。利用可用计算资源,每个度量可能实时地调用数千次评分函数是不可行的。
[0101]
图7是根据各种实施例的用于生成消息推荐的示例性数据处理系统(下文也被称为“消息推荐系统”700)的框图。与推荐系统100一样,消息推荐系统700能够利用硬件和/或软件的适当组合来实现,诸如例如利用通用计算机(例如,如在图9中所图示的)或者计算机集群来实现,将合适的软件存储在计算机存储器中,并且利用一个或多个cpu或gpu,或者利用一个或多个专用处理器(诸如dsp、fpga或acic)运行所述软件。消息推荐系统700可以形成更大的消息系统的一部分,所述消息系统包括用于用户注册消息信道、发布和阅读消息等的用户界面,并且可以保持消息记录并且跟踪用户对消息的参与。系统700将消息702和相关联的元数据(诸如作者和消息信道)作为输入,并且识别应当向其推荐消息的用户,例如,通过在通知窗格704中对其进行显现。为了以计算上易于处理的方式使用评分函数系统700将对的计算集成到被设计用于降低计算成本的分层架构中。
[0102]
在第一层706(在本文中也被称为“过滤层”)中,基于(例如,数十个)用户的特定于作者的候选名单708来过滤具有访问给定消息被发布到的信道的最初通常大集合的用户,将管线成本降低几个数量级。针对给定作者的候选名单708列出来自该作者的消息可能与其相关的用户,如可以基于例如在用户、作者与信道之间的静态关系独立于任何消息内容而确定的。在一些实施例中,所述候选名单基于静态用户-作者特征来离线地编译,其中,学习的标准分类器在顶部操作。为了实现对过滤层706的快速操作,候选名单708可以被预先计算并且用于简单的查找。对于来自特定作者的消息,然后在第二层710(在本文中也被称为“评分层”)中仅针对候选名单708上的用户来调用所述评分函数评分层710可以实现例如神经网络架构300的组件。在各种实施例中,为了加速计算,评分层710访问针对作者、信道和用户的预先计算的实体向量表示712,并且将其与动态组件一起串联,以创建项目向量表示以作为输入被提供给分类器(对应于评分函数s)。第三可选层714(在本文中也被称为“事后比较层”)通过在创建将被通知所述消息的最终用户的集合时考虑明确的用户反馈716(例如,随着时间收集)来实现个性化传递模型,例如,通过添加回消息或者从被认为相关的消息集中移除消息。所计算出的推荐718能够被发送到通知窗格704以用于输出给相应用户。
[0103]
图8是根据各种实施例的示例性消息推荐方法800(例如,如由消息推荐系统700执行)的流程图。方法800涉及针对用户、作者和信道来存储预先计算的实体向量表示(动作802)。在接收到消息804时,识别可以访问与所述消息相关联的信道的用户(动作806),并且
然后,例如基于与所述消息的作者相关联的用户候选名单708,来过滤所识别出的用户,以创建通常包括比可以访问所述消息的用户数量少得多的用户的集合(动作808)。根据消息与所述用户中的每个用户的相关性对该较小集合内的用户进行评分(动作810)。所述评分可以涉及针对所述消息和针对所述集合内的所有用户来计算项目向量表示,并且将分类器模型应用于所述项目向量表示(例如,如在图3中所示的)。然后,基于所述评分来确定经评分的用户的通常甚至更小的子集(动作812),例如,通过仅保留评分超过特定阈值的用户。所述阈值可以是用户相关的,并且可以根据经验来设置以至少平均地实现将在通知窗格中显现给用户的期望数量的消息。事后比较逻辑单元可以被应用于用户的子集以添加和/或移除用户(动作814)。例如,如果用户期望看到来自特定作者或者来自特定信道的更少或更多的消息,则我们能够从我们的已排序消息列表中移除或添加这样的消息。本领域普通技术人员将想到用于细化所述消息推荐的合适的事后比较逻辑单元的其他示例。最后,所述消息被推荐给保留在经细化的子集中的所有用户(动作816)。
[0104]
通常,在本文中所描述的操作、算法和方法可以以软件、硬件和/或固件的任何适当组合来实现,并且所提供的功能可以被分组为多个组件、模块或机制。模块和组件能够构成软件组件(例如,被体现在非暂时性机器可读介质上的代码)或硬件实现的组件。硬件实现的组件是能够执行特定操作并且能够以特定方式配置或布置的有形单元。在示例性实施例中,一个或多个计算机系统(例如,独立的、客户端或服务器计算机系统)或者一个或多个处理器能够由软件(例如,应用或应用部分)配置为硬件实现的组件,其操作用于以执行在本文中所描述的特定操作。
[0105]
在各种实施例中,硬件实现的组件能够机械地或电子地实现。例如,硬件实现的组件能够包括被永久配置的专用电路或逻辑单元(例如,作为专用处理器,诸如现场可编程门阵列(fpga)或专用集成电路(asic))以执行特定操作。硬件实现的组件还能够包括由软件临时配置以执行特定操作的可编程逻辑单元或电路(例如,被包含在通用处理器或其他可编程处理器内)。将意识到,在专用和永久配置的电路中或者在临时配置的电路(例如,由软件配置的)中机械地实现硬件实现的组件的决定能够由成本和时间考虑来驱动。
[0106]
因此,术语“硬件实现的组件”应当被理解为涵盖有形实体,即被物理构造、永久配置(例如,硬连线)或者被临时或暂时配置(例如,编程)以特定方式操作和/或执行在本文中所描述的特定操作的实体。考虑到其中硬件实现的组件被临时配置(例如,被编程)的实施例,所述硬件实现的组件中的每个硬件实现的组件不需要在任意一个时间实例被配置或实例化。例如,在硬件实现的组件包括使用软件配置的通用处理器的情况下,通用处理器能够在不同的时间被配置为相应的不同的硬件实现的组件。软件能够相应地配置处理器,例如,以在一个时间实例处构成特定的硬件实现的组件并且在不同的时间实例构成不同的硬件实现的组件。
[0107]
硬件实现的组件能够向其他硬件实现的组件提供信息并且从其接收信息。因此,所描述的硬件实现的组件能够被认为是通信耦合的。在同时存在多个这样的硬件实现的组件的情况下,能够通过信号传输(例如,通过连接硬件实现的组件的适当电路和总线)来实现通信。在其中多个硬件实现的组件在不同时间被配置或实例化的实施例中,在这样的硬件实现的组件之间的通信能够例如通过在多个硬件实现的组件可以访问的存储器结构中存储和取回信息来实现。例如,一个硬件实现的组件能够执行操作并且将该操作的输出存
储在与其通信耦合的存储器设备中。然后,另外的硬件实现的组件能够在以后访问存储器设备以取回和处理所存储的输出。硬件实现的组件还能够发起与输入设备或输出设备的通信,并且能够对资源(例如,信息集合)进行操作。
[0108]
在本文中所描述的示例性方法的各种操作能够至少部分地由一个或多个处理器来执行,所述一个或多个处理器被临时配置(例如,通过软件)或永久配置为执行相关操作。无论是被临时配置的还是永久配置,这样的处理器都能够构成处理器实现的组件,所述组件操作用于执行一个或多个操作或功能。在一些示例性实施例中,在本文中所提及的组件能够包括处理器实现的组件。
[0109]
类似地,在本文中所描述的方法能够是至少部分地处理器实现的。例如,方法的操作中的至少一些操作能够由处理器或处理器实现的组件之一来执行。对某些操作的执行能够分布在一个或多个处理器之间,所述处理器不仅驻留在单台机器内,而且跨多台机器部署。在一些示例性实施例中,一个或多个处理器能够位于单个位置中(例如,在办公室环境或服务器场内),而在其他实施例中,所述处理器能够跨多个位置来分布。
[0110]
一个或多个处理器还能够操作用于支持在“云计算”环境中或者作为“软件即服务”(saas)的相关操作的执行。例如,所述操作中的至少一些操作能够由一组计算机(作为包括处理器的机器的示例)来执行,这些操作可以经由网络(例如,互联网)并且经由一个或多个适当的接口(例如,应用程序接口(api))来访问。
[0111]
示例性实施例能够在数字电子电路中、在计算机硬件、固件或软件中或者在其组合中实现。示例性实施例能够使用计算机程序产品来实现,例如,有形地体现在信息载体中的计算机程序,例如,在机器可读介质中用于由数据处理装置(例如,可编程处理器、计算机或多台计算机)运行或者控制数据处理装置的操作。
[0112]
计算机程序能够以任何形式的描述语言来编写,包括编译或解释语言,并且能够以任何形式来部署,包括作为独立程序或组件、子例程或者适用于计算环境的其他单元。能够部署计算机程序以在一台计算机或者在一个站点或跨多个站点分布并且由通信网络互连的多台计算机上运行。
[0113]
在示例性实施例中,操作能够由一个或多个可编程处理器来执行,所述处理器运行计算机程序以通过对输入数据进行操作并且生成输出来执行功能。方法操作也能够由专用逻辑电路来执行,并且示例性实施例的装置能够被实现为专用逻辑电路,例如,fpga或asic。
[0114]
计算系统能够包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络进行交互。客户端和服务器的关系是通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序产生的。在部署可编程计算系统的实施例中,将意识到,硬件和软件架构两者都值得考虑。具体而言,将意识到,选择是在永久配置的硬件(例如,asic)中、在临时配置的硬件(例如,软件和可编程处理器的组合)中还是在永久和临时配置的硬件的组合中实现特定功能能够是设计选择。下文陈述在各种示例性实施例中能够部署的硬件(例如,机器)和软件架构。
[0115]
图9是根据各种实施例可以被用于实现图1、图5和图7的系统的示例性计算系统的框图。在替代实施例中,所述计算系统可以是作为独立设备操作的机器,或者替代地,被连接(例如,联网)到其他机器。在联网部署中,机器能够在服务器-客户端网络环境中以服务
器或客户端机器的容量运行,或者在对等(或者分布式)网络环境中作为对等机器运行。机器能够是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、网络设备、网络路由器、交换机或桥,或者能够执行指定要由该机器采取的动作的指令(顺序的或者以其他方式)的任何机器。此外,尽管仅图示出了单个机器,但是术语“机器”也应当被理解为包括个体地或联合地运行一组(或多组)指令以执行在本文中所讨论的方法中的任意一种或多种方法的机器的任意集合。
[0116]
示例性计算机系统900包括处理器902(例如,中央处理单元(cpu)、图形处理单元(gpu)或者这两者)、主存储器904和静态存储器906,其经由总线908与彼此进行通信。计算机系统900还能够包括视频显示器910(例如,液晶显示器(lcd)或阴极射线管(crt))。计算机系统900还包括字母数字输入设备912(例如,键盘或触敏显示屏)、用户界面(ui)导航(或者光标控制)设备914(例如,鼠标)、磁盘驱动单元916、信号生成设备918(例如,扬声器)以及网络接口设备920。
[0117]
磁盘驱动单元916包括机器可读介质922,在机器可读介质922上存储有一组或多组数据结构和指令924(例如,软件),其体现在本文中所描述的方法或功能中的任意一种或多种方法或功能或者由其使用。指令924在由计算机系统900运行期间还能够完全或至少部分地驻留在主存储器904内和/或在处理器902内,其中,主存储器904和处理器902也构成机器可读介质。
[0118]
尽管机器可读介质922在示例性实施例中被示为单个介质,但是术语“机器可读介质”能够包括存储一个或多个指令924或数据结构的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。术语“机器可读介质”还应当被理解为包括任何有形介质,其能够存储、编码或携带指令924以供机器执行并使机器执行本公开的任何一种或多种方法,或者能够存储、编码或者承载由这样的指令924使用或者与其相关联的数据结构。术语“机器可读介质”因此应当被理解为包括但不限于固态存储器,以及光学和磁性介质。机器可读介质922的具体示例包括非易失性存储器,包括例如半导体存储器设备,例如,可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)和闪存设备;磁盘,诸如内部硬盘和可移动磁盘;磁光盘;以及cd-rom和dvd-rom磁盘。
[0119]
能够使用传输介质在通信网络926上发送或接收指令924。能够使用网络接口设备920和许多公知的传输协议(例如,http)中的任意一种来传输指令924。通信网络的示例包括局域网(lan)、广域网(wan)、互联网、移动电话网络、普通老式电话(pots)网络和无线数据网络(例如,wi-fi和wimax网络)。术语“传输介质”应当被理解为包括能够存储、编码或承载指令924以供机器运行的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以促进这样的软件的通信。
[0120]
以下编号的示例是说明性实施例。
[0121]
1、一种由数据处理系统执行的、用于在多个第一项目与多个第二项目之间生成推荐的方法,其中,所述第一项目至少部分地由多种实体类型的第一子集的相应实体实例来定义并且所述第二项目至少部分地由所述多种实体类型的第二子集的相应实体实例来定义。所述方法包括:在所述数据处理系统的计算机存储器中存储表示在所述多种实体类型的实体实例之间的关系的二分图的表示;由所述数据处理系统的一个或多个计算机处理器通过使用针对所述二分图的计算模型来计算所述第一子集和所述第二子集的所述实体类
型的所述实体实例的实体向量表示,根据第二项目与第一项目的相关性对所述第一项目和所述第二项目的配对进行评分,其中,所述第一项目和所述第二项目各自具有与多个相应二分图相对应的多个相关联的实体向量表示;至少部分地通过组合所述第一子集的所述相应实体实例的所述相关联的实体向量表示来生成所述第一项目的项目向量表示,并且至少部分地通过组合所述第二子集的所述相应实体实例的所述相关联的实体向量表示来生成所述第二项目的项目表示;以及使用分类器模型根据所述相应的项目向量表示来计算针对第一项目和第二项目的配对的相关性分数;以及基于所述相关性分数来输出所述第二项目到所述第一项目的推荐。
[0122]
2、根据示例1所述的方法,其中,针对所述二分图的所述计算模型包括基于图的卷积神经网络。
[0123]
3、根据示例2所述的方法,其中,所述实体向量表示是二阶多项式图卷积嵌入。
[0124]
4、根据示例1-3中的任一项所述的方法,其中,所述分类器模型包括分类器神经网络。
[0125]
5、根据示例4所述的方法,其中,所述分类器神经网络包括多层感知器。
[0126]
6、根据示例1-5中的任一项所述的方法,其中,组合所述实体向量表示包括:使用完全连接的神经网络来合并针对跨多个二分图的实体类型的配对的给定实体类型的实体实例计算出的实体向量表示,所述二分图表示在所述实体类型的该配对的所述实体实例之间的多个相应关系。
[0127]
7、根据示例1-6中的任一项所述的方法,其中,所述第一子集或所述第二子集中的至少一个包括至少两种实体类型,并且其中,组合所述实体向量表示包括串联所述至少两种实体类型的所述实体实例的所述实体向量表示。
[0128]
8、根据示例1-7中的任一项所述的方法,其中,所述第一项目或所述第二项目中的至少一个由动态组件进一步定义,并且其中,生成所述第一项目或所述第二项目中的至少一个的所述项目向量表示还包括将所述动态组件的相应实例的向量表示与相应组合实体向量表示相串联。
[0129]
9、根据示例1-9中的任一项所述的方法,其中,用于对第一项目和第二项目的所述配对进行评分的计算模型被端到端地训练,所述计算模型包括针对所述二分图的所述计算模型和所述分类器模型。
[0130]
10、一种用于在多个第一项目与多个第二项目之间生成推荐的系统,其中,所述第一项目至少部分地由多种实体类型的第一子集的相应实体实例来定义并且所述第二项目至少部分地由所述多种实体类型的第二子集的相应实体实例来定义,所述系统包括:计算机存储器,其存储表示所述多种实体类型的实体实例之间的关系的二分图的表示;以及计算机处理器,其运行被存储在所述计算机存储器中的指令,以执行根据第二项目与第一项目的相关性对所述第一项目和所述第二项目的配对进行评分的操作,所述操作包括:使用针对所述二分图的计算模型来计算所述第一子集和所述第二子集的所述实体类型的所述实体实例的实体向量表示,其中,所述第一项目和所述第二项目各自具有与多个相应二分图相对应的多个相关联的实体向量表示;至少部分地通过组合所述第一子集的所述相应实体实例的所述相关联的实体向量表示来生成所述第一项目的项目向量表示,并且至少部分地通过组合所述第二子集的所述相应实体实例的所述相关联的实体向量表示来生成所述
第二项目的项目表示;使用分类器模型根据所述相应的项目向量表示来计算针对第一项目和第二项目的配对的相关性分数;以及基于所述相关性分数来导致输出所述第二项目到所述第一项目的推荐。
[0131]
11、根据示例10所述的系统,其中,针对所述二分图的所述计算模型包括基于图的卷积神经网络。
[0132]
12、根据示例11所述的系统,其中,所述实体向量表示是二阶多项式图卷积嵌入。
[0133]
13、根据示例10-12中的任一项所述的系统,其中,所述分类器模型包括分类器神经网络。
[0134]
14、根据示例13所述的系统,其中,所述分类器神经网络包括多层感知器。
[0135]
15、根据示例10-14中的任一项所述的系统,其中,组合所述实体向量表示包括:使用完全连接的神经网络来合并针对跨多个二分图的实体类型的配对的给定实体类型的实体实例计算出的实体向量表示,所述二分图表示实体类型的该配对的所述实体实例之间的多个相应关系。
[0136]
16、根据示例10-15中的任一项所述的系统,其中,所述第一子集或所述第二子集中的至少一个包括至少两种实体类型,并且其中,组合所述实体向量表示包括串联所述至少两种实体类型的所述实体实例的所述实体向量表示。
[0137]
17、根据示例10-16中的任一项所述的系统,其中,所述第一项目或所述第二项目中的至少一个由动态组件进一步定义,并且其中,生成所述第一项目或所述第二项目中的所述至少一个的所述项目向量表示还包括将所述动态组件的相应实例的向量表示与相应组合实体向量表示相串联。
[0138]
18、根据示例10-17中的任一项所述的系统,其中,用于对第一项目和第二项目的所述配对进行评分的计算模型被端到端地训练,所述计算模型包括针对所述二分图的计算模型和分类器模型。
[0139]
19、一个或多个用于在多个第一项目与多个第二项目之间生成推荐的计算机可读介质,其中,所述第一项目至少部分地由多种实体类型的第一子集的相应实体实例来定义并且所述第二项目至少部分地由所述多种实体类型的第二子集的相应实体实例来定义,所述一个或多个计算机可读介质存储:表示所述多种实体类型的实体实例之间的关系的二分图的表示;以及处理器可执行指令,所述处理器可执行指令当由一个或多个计算机处理器运行时使得所述一个或多个计算机处理器执行根据第二项目与第一项目的相关性对所述第一项目和所述第二项目的配对进行评分的操作,所述操作包括:使用针对所述二分图的计算模型来计算所述第一子集和所述第二子集的所述实体类型的所述实体实例的实体向量表示,其中,所述第一项目和所述第二项目各自具有与多个相应二分图相对应的多个相关联的实体向量表示;至少部分地通过组合所述第一子集的所述相应实体实例的所述相关联的实体向量表示来生成所述第一项目的项目向量表示,并且至少部分地通过组合所述第二子集的所述相应实体实例的所述相关联的实体向量表示来生成所述第二项目的项目表示;使用分类器模型根据相应的项目向量表示来计算针对第一项目和第二项目的配对的相关性分数;以及基于所述相关性分数导致输出所述第二项目到所述第一项目的推荐。
[0140]
20、根据示例19所述的一个或多个计算机可读介质,其中,针对所述二分图的所述计算模型包括基于图的卷积神经网络。
[0141]
21、一种用于在多个第一项目与多个第二项目之间生成推荐的系统,其中,所述第一项目至少部分地由多种实体类型的第一子集的相应实体实例来定义并且所述第二项目至少部分地由所述多种实体类型的第二子集的相应实体实例来定义,所述系统包括:用于存储表示所述多种实体类型的实体实例之间的关系的二分图的表示的单元;用于通过使用针对所述二分图的计算模型来计算所述第一子集和所述第二子集的所述实体类型的所述实体实例的实体向量表示而根据第二项目与第一项目的相关性对所述第一项目和所述第二项目的配对进行评分的单元,其中,所述第一项目和所述第二项目各自具有与多个相应二分图相对应的多个相关联的实体向量表示;用于至少部分地通过组合所述第一子集的所述相应实体实例的所述相关联的实体向量表示来生成所述第一项目的项目向量表示并且至少部分地通过组合所述第二子集的所述相应实体实例的所述相关联的实体向量表示来生成所述第二项目的项目表示的单元;用于使用分类器模型根据所述相应的项目向量表示来计算针对第一项目和第二项目的配对的相关性分数的单元;以及用于基于所述相关性分数来输出所述第二项目到所述第一项目的推荐的单元。
[0142]
22、一种用于在消息系统内确定对用户的消息推荐的方法,在所述消息系统中,每条消息被分配给多个消息信道中的一个或多个消息信道并且多个用户中的每个用户都能够访问所述多个消息信道中的一个或多个消息信道,所述方法包括:在计算机存储器中存储所述多个用户、多个作者和所述多个消息信道的向量表示,所述向量表示是基于二分图来计算的,每个二分图表示在所述用户、作者和消息信道的组合之间的关系;以及通过以下操作使用计算机处理器来针对多条消息中的每条消息识别所述多个用户中要向其推荐所述消息的一个或多个用户:基于与所述消息的作者相关联的用户候选名单,在所述多个用户之间过滤能够访问被分配所述消息的消息信道的用户以确定用户的集合,所述用户候选名单是基于对来自所述作者的消息与所述候选名单上的用户的相关性的确定的;利用分类器模型针对所述用户的集合中的每个用户对所述消息进行评分,所述分类器模型将所述消息的内容的向量表示以及所述用户、所述消息的所述作者和与所述消息相关联的所述消息信道的所述向量表示作为输入;以及基于所述评分来将所述多个用户中要向其推荐所述消息的所述一个或多个用户确定为所述用户的集合的子集。
[0143]
23、根据示例22所述的方法,其中,识别要向其推荐所述消息的所述一个或多个用户还包括以下中的至少一项:基于接收到的针对先前消息推荐的用户反馈来将一个或多个用户添加到所述子集或者从所述子集中移除一个或多个用户。
[0144]
24、根据示例22或示例23所述的方法,其中,所述二分图包括表示用户之间的关系的一个或多个二分图、表示用户与作者之间的关系的一个或多个二分图、以及表示用户与信道之间的关系的一个或多个二分图。
[0145]
25、根据示例22-24中的任一项所述的方法,其中,所述多个用户、所述多个作者和所述多个消息信道的所述向量表示是利用针对所述二分图的基于图的卷积神经网络来计算的。
[0146]
26、根据示例22-25中的任一项所述的方法,其中,所述基于图的卷积神经网络和所述分类器模型的分类器神经网络已经基于包括用户和消息的配对的训练数据以及所述消息是否与所述用户相关的指示被端对端地训练。
[0147]
27、根据示例26所述的方法,其中,所述基于图的卷积神经网络和所述分类器神经
网络已经被训练以优化推荐-性能度量,针对每个用户,所述推荐-性能度量奖励在针对所述用户的指定数量的评分最高的消息中相关消息的出现,并且惩罚在针对所述用户的所述指定数量的评分最高的消息中不相关消息的出现。
[0148]
28、根据示例22-27中的任一项所述的方法,其中,所述分类器模型是分类器神经网络,所述分类器神经网络将所述消息的所述内容的嵌入与所述用户、所述消息的所述作者和与所述消息相关联的所述消息信道的所述向量表示的串联作为输入。
[0149]
29、根据示例22-28中的任一项所述的方法,其中,要向其推荐所述消息的所述一个或多个用户是在将所述消息发布到所述相关联的消息信道时实时地识别的。
[0150]
30、一种用于在消息系统内确定对用户的消息推荐的推荐系统,在所述消息系统中,每条消息被分配给多个消息信道中的一个或多个消息信道并且多个用户中的每个用户都能够访问所述多个消息信道中的一个或多个消息信道,所述系统包括:计算机存储器,其存储所述多个用户、多个作者和所述多个消息信道的向量表示,所述向量表示是基于二分图来计算的,每个二分图表示在所述用户、作者和消息信道的组合之间的关系;以及计算机处理器,其运行被存储在所述计算机存储器中的指令,以执行用于针对多条消息中的每条消息识别所述多个用户中要向其推荐所述消息的一个或多个用户的操作,所述操作包括:基于与所述消息的作者相关联的用户候选名单,在所述多个用户之间过滤能够访问向其分配所述消息的消息信道的用户以确定用户的集合,所述用户候选名单是基于对来自作者的消息与所述候选名单上的用户的相关性的确定的;利用分类器模型针对所述用户的集合中的每个用户对所述消息进行评分,所述分类器模型将所述消息的内容的向量表示以及所述用户、所述消息的所述作者和与所述消息相关联的所述消息信道的向量表示作为输入;以及基于所述评分来将所述多个用户中要向其推荐所述消息的所述一个或多个用户来确定为所述用户的集合的子集。
[0151]
31、根据示例30所述的推荐系统,其中,所述操作还包括以下中的至少一项:基于接收到的针对先前消息推荐的用户反馈来将一个或多个用户添加到所述子集或者从所述子集中移除一个或多个用户。
[0152]
32、根据示例30或示例31所述的推荐系统,其中,所述二分图包括表示用户之间的关系的一个或多个二分图、表示用户与作者之间的关系的一个或多个二分图、以及表示用户与信道之间的关系的一个或多个二分图。
[0153]
33、根据示例性权利要求30-32中的任一项所述的推荐系统,其中,所述多个用户、所述多个作者和所述多个消息信道的所述向量表示是利用针对所述二分图的基于图的卷积神经网络来计算的。
[0154]
34、根据示例30-33中的任一项所述的推荐系统,其中,所述基于图的卷积神经网络和所述分类器模型的分类器神经网络已经基于包括用户与消息的配对的训练数据以及所述消息是否与所述用户相关的指示被端对端地训练。
[0155]
35、根据示例34所述的推荐系统,其中,所述基于图的卷积神经网络和所述分类器神经网络已经被训练以优化推荐-性能度量,针对每个用户,所述推荐-性能度量奖励在针对所述用户的指定数量的评分最高的消息中相关消息的出现,并且惩罚在针对所述用户的所述指定数量的评分最高的消息中不相关消息的出现。
[0156]
36、根据示例30-35中的任一项所述的推荐系统,其中,所述分类器模型是分类器
神经网络,所述分类器神经网络将所述消息的所述内容的嵌入与所述用户、所述消息的所述作者和与所述消息相关联的所述消息信道的所述向量表示的串联作为输入。
[0157]
37、根据权利要求30-36中的任一项所述的推荐系统,其中,要向其推荐所述消息的所述一个或多个用户是在将所述消息发布到所述相关联的消息信道时被实时地识别地。
[0158]
38、一个或多个用于在消息系统内确定对用户的消息推荐的计算机可读介质,在所述消息系统中,每条消息被分配给多个消息信道中的一个或多个消息信道并且多个用户中的每个用户都能够访问所述多个消息信道中的一个或多个消息信道,所述一个或多个计算机可读介质存储:所述多个用户、多个作者和所述多个消息信道的向量表示,所述向量表示是基于二分图来计算的,每个二分图表示在所述用户、作者与消息信道的组合之间的关系;以及处理器可执行指令,所述处理器可执行指令当由一个或多个计算机处理器运行时使得所述一个或多个计算机处理器执行用于针对多条消息中的每条消息识别所述多个用户中要向其推荐所述消息的一个或多个用户的操作,所述操作包括:基于与所述消息的作者相关联的用户候选名单,在所述多个用户之间过滤能够访问被分配所述消息的消息信道的用户以确定用户的集合,所述用户候选名单是基于对来自所述作者的消息与所述候选名单上的用户的相关性的确定的;利用分类器模型针对所述用户的集合中的每个用户对所述消息进行评分,所述分类器模型将所述消息的内容的向量表示以及所述用户、所述消息的所述作者和与所述消息相关联的所述消息信道的向量表示作为输入;以及基于所述评分来将所述多个用户中要向其推荐所述消息的所述一个或多个用户确定为所述用户的集合的子集。
[0159]
39、根据示例38所述的一个或多个计算机可读介质,其中,所述操作还包括以下中的至少一项:基于接收到的针对先前消息推荐的用户反馈来将一个或多个用户添加到所述子集或者从所述子集中移除一个或多个用户。
[0160]
40、根据示例38或示例39所述的一个或多个计算机可读介质,其中,所述二分图包括表示用户之间的关系的一个或多个二分图、表示用户与作者之间的关系的一个或多个二分图、以及表示用户与信道之间的关系的一个或多个二分图。
[0161]
41、根据示例38-40中的任一项所述的一个或多个计算机可读介质,其中,所述多个用户、所述多个作者和所述多个消息信道的所述向量表示是利用针对所述二分图的基于图的卷积神经网络来计算的。
[0162]
42、一种用于在消息系统内确定对用户的消息推荐的推荐系统,在所述消息系统中,每条消息被分配给多个消息信道中的一个或多个消息信道并且多个用户中的每个用户都能够访问所述多个消息信道中的一个或多个消息信道,所述系统包括:用于存储所述多个用户、多个作者和所述多个消息信道的向量表示的单元,所述向量表示是基于二分图来计算的,每个二分图表示在所述用户、作者和消息信道的组合之间的关系;用于针对所述多条消息中的每条消息识别所述多个用户中要向其推荐所述消息的一个或多个用户的单元,包括:用于基于与所述消息的作者相关联的用户候选名单,在所述多个用户之间过滤能够访问被分配所述消息的消息信道的用户以确定用户的集合的单元,所述用户候选名单是基于对来自所述作者的消息与所述候选名单上的用户的相关性的确定的;用于利用分类器模型针对所述用户的集合中的每个用户对所述消息进行评分的单元,所述分类器模型将所述消息的内容的向量表示以及所述用户、所述消息的所述作者和与所述消息相关联的所述消
息信道的所述向量表示作为输入;以及用于基于所述评分将所述多个用户中要向其推荐所述消息的一个或多个用户确定为所述用户的集合的子集的单元。
[0163]
尽管已经参考特定示例性实施例描述了实施例,但是显然可以对这些实施例进行各种修改和改变而不背离本发明的更宽泛范围。因此,说明书和附图被认为是说明性的而非限制性的。形成其一部分的附图通过说明而非限制的方式示出了可以实践本主题的特定实施例。对所图示的实施例进行了足够详细的描述,以使本领域技术人员能够实践在本文中所公开的教导。可以使用其他实施例并从中派生出其他实施例,从而可以在不背离本公开的范围的情况下进行结构和逻辑替换和改变。因此,该描述不应当被理解为限制性意义,并且各种实施例的范围仅由所附的权利要求以及这些权利要求所享有的全部等效物范围来限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1