一种分布式知识图谱嵌入方法与流程

文档序号:15207909发布日期:2018-08-21 12:18阅读:2806来源:国知局

本发明涉及知识图谱应用领域的知识图谱嵌入方法,适用于对大规模知识图谱进行嵌入。



背景技术:

目前,知识图谱已经在计算机工业界很多领域得到了应用。例如google搜索引擎中,利用知识图谱中涵盖的知识,在搜索的侧边栏返回精简的结构化信息,方便用户快速完成信息获取;siri和cortana等智能助理利用知识图谱,完成用户问题的解答和用户命令的执行;互联网金融领域,通过构建人、公司、银行账户间的联系,可以自动化完成反欺诈、反套现和信用评级等需求。

当前,知识图谱嵌入方法将知识图谱中的实体、关系通过训练嵌入到一个低维向量空间中,可以避免基于逻辑的推理方法中计算开销大,空间复杂度高等问题。

随着工业界构建的知识图谱规模增大,基于单机的知识图谱嵌入方法无法有效完成大规模知识图谱上的处理和计算工作,可以考虑使用分布式机器学习方式,将大规模知识图谱嵌入问题在多机分布式平台上完成处理。使用传统的分布式参数服务器框架按照个体划分参数,在计算时会产生大量的通信开销,本发明考虑按照维度划分参数的方法,从而降低通信开销以完成计算加速。



技术实现要素:

发明目的:目前的知识图谱嵌入方法,都是基于单机完成训练的。在知识图谱数据规模较大时,单机的计算能力和内存容量有限,无法很好地完成知识图谱嵌入参数的训练。使用分布式参数服务器框架进行处理,会在计算过程中产生较大通信开销。针对上述问题,本发明提供一种分布式知识图谱嵌入方法,该方法将知识图谱嵌入模型用多机分布式的方法完成训练。训练中,多台服务器按照任务划分为worker和server两组,每组中有多台机器,彼此间通过网络通信协同完成参数即嵌入向量的训练。训练中,嵌入向量按照维度划分到各个server上,降低训练中服务器间产生的通信开销。所有计算中各维度不产生交互的模型都可以采用本发明方法完成训练,目前本发明方法可以支持2013年机器学习会议nips的论文“translatingembeddingsformodelingmulti-relationaldata”中提出的transe模型,2015年机器学习会议iclr的论文“embeddingentitiesandrelationsforlearningandinferenceinknowledgegraphs”中提出的distmult模型,及2016年机器学习会议icml的论文“complexembeddingsforsimplelinkprediction”中提出的complex模型。

技术方案:一种分布式知识图谱嵌入方法,包括worker执行的步骤和server执行的步骤。两者的步骤在方法中同时进行。

所述方法中worker执行的具体步骤为:

步骤100,初始化算法参数,包括嵌入向量的维度d,总共执行的轮数t,每轮采样的三元组数b,学习率μ,正则项参数λ,间隔γ,worker数量nw,server的数量ns等;

步骤101,读取知识图谱的统计信息,包括实体的数量ne,关系的数量nr;

步骤102,读取当前worker所负责训练的三元组数据,整个知识图谱中的三元组集合被等量划分为nw份,每个worker读取一份;

步骤103,令计数器i=0;

步骤104,从当前worker负责的三元组中采样b/nw个,作为轮训练的正例三元组集合;

步骤105,对于采样出的每一个正例三元组随机替换其头部或尾部,作为负例三元组,与原正例三元组组成一个三元组对;

步骤106,发送各个三元组对到各个server;

步骤107,从各个server处接受各个三元组对的损失;

步骤108,统计各个三元组对的总损失,对于总损失大于间隔γ的三元组对设置更新标志为1,对于总损失小于间隔γ的三元组对设置更新标志为0;

步骤109,将更新标志发送给各个server;

步骤110,令计数器i=i+1;

步骤111,判断计数器i的值是否小于执行轮数t。如果是,回到步骤104,进行新的一轮计算;如果不是,已满足停止条件,进入结束阶段;

步骤112,结束计算。

所述方法中server执行的具体步骤为:

步骤200,初始化算法参数,包括嵌入向量的维度d,总共执行的轮数t,每轮采样的三元组数b,学习率μ,正则项参数λ,间隔γ,worker数量nw,server的数量ns等;

步骤201,读取知识图谱的统计信息,包括实体的数量ne,关系的数量nr等;

步骤202,初始化嵌入向量。维度d被划分为等量的ns份,每个server负责初始化一份,即所有实体和关系对应的嵌入向量中相同的一部分维度;

步骤203,令计数器i=0;

步骤204,接收worker发来的三元组对;

步骤205,对于worker发来的三元组对,根据优化的目标方程,计算该server负责的维度上产生的损失;

步骤206,发送三元组对的损失到对应的worker上;

步骤207,接收worker发来的各三元组对的更新标志;

步骤208,对于各个三元组对,若其对应更新标志为1,对该三元组对的嵌入向量进行更新;若为0,不进行更新;

步骤209,令计数器i=i+1;;

步骤210,判断计数器i的值是否小于执行轮数t。如果是,回到步骤204,进行新的一轮计算;如果不是,已满足停止条件,进入结束阶段;

步骤211,算法结束,将得到的嵌入向量进行保存。

所述算法中,优化的目标方程为

其中,p为知识图谱中的三元组集合,其中每一个三元组由头部h,关系r,尾部t组成,表示为(h,r,t)。头部和尾部都属于实体集合e,关系属于关系集合r。n(h,r,t)为三元组(h,r,t)随机替换头部和尾部得到的负例三元组集合。θ代表所有的参数,包括每一个实体e∈e对应的嵌入向量e,和每一个关系r∈r对应的嵌入向量r,由各个嵌入向量计算l2范数平方后加和得到。s(h,r,t)为(h,r,t)三元组的得分,在transe模型中等于或||h+r-t||1;在distmult模型中等于-<h,r,t>,即三个嵌入向量内积的负数;在complex模型中每一个实体e有两个嵌入向量eu和ev,每一个关系r有两个嵌入向量ru和rv,得分等于-(<hu,ru,tu>+<hu,rv,tv>+<hv,ru,tv>-<hv,rv,tu>)。γ代表间隔,表示模型期望的正负三元组的得分差。[x]+在x>0情况下等于x,否则等于0。整个计算过程使用随机梯度下降的优化方法,每次采样一批正例三元组,抽样得到其负例三元组,计算损失后,按照梯度对其嵌入向量进行更新。

所述目标方程中,优化目标以按照维度拆分进行计算后汇总。所述算法中,所有嵌入向量按照维度进行划分,每个server保存所有向量的同一组维度。在计算三元组损失时,各server先计算该server上保存维度产生的损失,再发送给worker进行汇总。worker计算出总体损失后反馈server,server对其负责维度进行更新。所述算法可以避免需要传输整个嵌入向量和梯度向量造成的通信开销。

有益效果:本发明所阐述的参数划分思想,可以有效地减少计算中的通信开销,从而加速整个分布式知识图谱嵌入计算流程,达到减少总体计算时间的目的。

附图说明

图1为本发明实施的worker训练工作流程图;

图2为本发明实施的server训练工作流程图。

具体实施方式

下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。

分布式知识图谱嵌入方法中worker训练工作流程图如图1所示。首先,初始化算法中的参数,包括嵌入向量的维度d,总共执行的轮数t,每轮采样的三元组数b,学习率μ,正则项参数λ,间隔γ,worker数量nw,server的数量ns等(步骤100);然后,读取知识图谱数据的统计信息,如总实体数和总关系数等(步骤101),并读取该worker负责处理的三元组数据,整个知识图谱中的三元组集合被等量划分为nw份,每个worker读取一份(步骤102);将计数器置为0(步骤103),进入迭代训练循环;在循环第一步中,从读取的三元组数据中采样b/nw个正例三元组(步骤104),并对每一个正例三元组随机替换其头部或尾部为另一个实体,从而采样得到对应的负例三元组(步骤105),每个正例三元组和其对应负例三元组组成一个三元组对;将对应的三元组发送给各个server(步骤106),在各个server分别计算得到各三元组对部分维度的损失后,接收这些损失值(步骤107),并进行加和统计得到总损失,设置各三元组对的更新标志,对于总损失大于间隔γ的三元组对设置更新标志为1,对于总损失小于间隔γ的三元组对设置更新标志为0(步骤108);将设置的更新标志发送给各个server(步骤109),令其根据更新标志分别更新各个维度;令计数器加1(步骤110),并判断计数器i的值是否小于执行轮数t(步骤111),是则跳转到步骤104,否则跳转到步骤112的结束阶段;完成计算,结束运行(步骤112)。

分布式知识图谱嵌入方法中server训练工作流程图如图2所示。首先,初始化算法中的参数,包括嵌入向量的维度d,总共执行的轮数t,每轮采样的三元组数b,学习率μ,正则项参数λ,间隔γ,worker数量nw,server的数量ns等(步骤200);然后,读取知识图谱数据的统计信息,如总实体数和总关系数等(步骤201),并初始化该server负责的嵌入向量的一组维度d,维度d被划分为等量的ns份,每个server负责初始化一份,即所有实体和关系对应的嵌入向量中相同的一部分维度(步骤202);将计数器置为0(步骤203),进入迭代训练循环;在循环第一步中,接收worker发送来的三元组对(204);在自己负责的维度上计算各三元组对的损失(步骤205),并将该损失发送到对应的worker上(步骤206),供其汇总;之后,接收worker发来的更新标志(步骤207),根据该更新标志,对于需要更新的三元组对计算其对应参数的梯度并更新,对于各个三元组对,若其对应更新标志为1,对该三元组对的嵌入向量进行更新;若为0,不进行更新(步骤208);令计数器加1(步骤209),并判断计数器i的值是否小于执行轮数t(步骤210),是则跳转到步骤204,否则跳转到步骤211的结束阶段;训练结束时,把嵌入向量进行保存(步骤211)。

所述算法中,优化的目标方程为

其中,p为知识图谱中的三元组集合,其中每一个三元组由头部h,关系r,尾部t组成,表示为(h,r,t)。头部和尾部都属于实体集合e,关系属于关系集合r。n(h,r,t)为三元组(h,r,t)随机替换头部和尾部得到的负例三元组集合。θ代表所有的参数,包括每一个实体e∈e对应的嵌入向量e,和每一个关系r∈r对应的嵌入向量r。s(h,r,t)为(h,r,t)三元组的得分,在transe模型中等于或||h+r-t||1;在distmult模型中等于-<h,r,t>,即三个嵌入向量内积的负数;在complex模型中每一个实体e有两个嵌入向量eu和ev,每一个关系r有两个嵌入向量ru和rv,得分等于-(<hu,ru,tu>+<hu,rv,tv>+<hv,ru,tv>-<hv,rv,tu>)。[x]+在x>0情况下等于x,否则等于0。算法使用随机梯度下降的优化方法,每次采样一批正例三元组,抽样得到其负例三元组,计算损失后,按照梯度对其嵌入向量进行更新。

所述目标方程中,损失可以按照维度拆分进行计算后汇总。所述算法中,所有嵌入向量按照维度进行划分,每个server保存所有向量的同一组维度。在计算三元组损失时,各server先计算该server上保存维度产生的损失,再发送给worker进行汇总。worker计算出总体损失后反馈server,server对其负责维度进行更新。所述算法可以避免需要传输整个嵌入向量和梯度向量造成的通信开销。

本发明在知识图谱数据集fb15k上采用transe模型进行了实验,对比了本发明的方法和使用2014年操作系统会议osdi的论文“scalingdistributedmachinelearningwiththeparameterserver”中提出的分布式参数服务器框架实现的方法。实验对比在参数相同,达到同样的嵌入向量精度条件下,本发明方法和对比方法在时间开销和通信开销上的差距。

实验数据集fb15k中总关系数为1345,总实体数为14951,参与训练的三元组数为483142。

在worker和server数采用不同个数时,达到同样精度所用训练时间如表1所示。

表1

如表1所示,在相同条件下,对比方法所用训练时间是本发明方法的1.5倍以上,可见本发明的方法有很大提升。

在相同的实验中,两种方法所产生的一轮通信量如表2所示。通信量的单位为字节。

表2

如表2所示,在相同条件下,本方法产生的通信量远小于对比方法的通信量。可见本发明的方法有很大提升。

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