基于知识图谱的知识推理

写在前面

       近年来,随着互联网技术和应用模式的迅猛发展,引发了互联网数据规模的爆炸式增长,其中包含大量有价值的知识.如何组织和表达这些知识,并对其进行深入计算和分析备受关注.知识图谱作为丰富直观的知识表达方式应运而生.面向知识图谱的知识推理是知识图谱的研究热点之一,已在垂直搜索、智能问答等应用领域发挥了重要作用.面向知识图谱的知识推理旨在根据已有的知识推理出新的知识或识别错误的知识.不同于传统的知识推理,由于知识图谱中知识表达形式的简洁直观、灵活丰富,面向知识图谱的知识推理方法也更加多样化.

      将从知识推理的基本概念出发,介绍近年来面向知识图谱知识推理方法的最新研究进展.具体地,根据推理类型划分,将面向知识图谱的知识推理分为单步推理和多步推理,根据方法的不同,每类又包括基于规则的推理、基于分布式表示的推理、基于神经网络的推理以及混合推理.详细总结这些方法,并探讨和展望面向知识图谱知识推理的未来研究方向和前景。

      目前, 已经涌现出一大批知识图谱, 其中具有代表性的有KnowItAll[5]、YAGO[6-8]、DBpedia[9]、Freebase[10]、NELL[11]、Probase[12]等.这些知识图谱从大量数据资源中抽取、组织和管理知识, 希望为用户提供能够读懂用户需求的智能服务, 例如理解搜索的语义, 提供更精准的搜索答案。

      这其中涉及面向知识图谱的知识推理, 完成对数据的深度分析和推理.本质上, 本文研究的面向知识图谱的知识推理是指根据知识图谱中已有的知识, 采用某些方法, 推理出新的知识或识别知识图谱中错误的知识.相应地, 它包括两方面的内容:知识图谱补全(knowledge graph completion, knowledge base completion)[13-16]和知识图谱去噪(knowledge graph refinement, knowledge graph cleaning)[1718].知识图谱补全又包括连接预测(link prediction)[19-21]、实体预测(entity prediction)[22-24]、关系预测(relation prediction)[22-25]、属性预测(attribute prediction)[26]等任务。

1 知识推理简介

       在介绍面向知识图谱的各类知识推理方法之前, 本节首先介绍知识推理的基本概念、传统的知识推理以及面向知识图谱的知识推理。

1.1 知识推理的基本概念

       关于知识推理的基本概念, 学术界给出了各种类似的定义.王永庆[33]认为:推理是人们对各种事物进行分析、综合和决策, 从已知的事实出发, 通过运用已掌握的知识, 找出其中蕴含的事实, 或归纳出新的事实的过程.严格地说, 就是按照某种策略由已知判断推出新的判断的思维过程.更具体地, Kompridis[34]定义推理为一系列能力的总称, 包括有意识地理解事物的能力、建立和验证事实的能力、运用逻辑的能力以及基于新的或存在的知识改变或验证现有体系的能力.Tari[35]类似地定义知识推理为基于特定的规则和约束, 从存在的知识获得新的知识.总的来说, 知识推理就是利用已知的知识推出新知识的过程.

       知识推理作为人类问题求解的主要方法, 一直以来备受关注.一般来说, 知识推理包括两种知识:一种是已知的知识, 另一种是由已知的知识推出的新知识.已知的知识可以是一个或多个句子, 例如传统的三段论, 由大前提、小前提和结论组成, 其中, 大前提和小前提是已知的知识, 结论是推出的新知识.又如, 在规则推理中, 存在以下传递性规则:如果已知知识p1的父亲是p2, p2的母亲是p3, 那么可以推出新知识p1的祖母是p3.已知的知识也可以是更复杂的案例, 例如在案例推理中, 利用案例库中的已有案例对新的案例进行推理.这里, 案例库中的案例(包括问题描述部分和方案部分)是已知的知识, 通常采用特征-值对的形式表达[36], 针对新案例推理得到的方案部分则是推出的新知识.表 1展示了两个已知的案例, 问题描述部分包含“Symptom”“Observations”等特征, 最后一行为方案部分.已知的知识还可以用更为简洁的多元组形式表达, 例如, 在知识图谱中, 通常以(头实体, 关系, 尾实体)的形式表达知识, 推出的新知识也以三元组形式表达。

1.2 传统的知识推理

       推理方法按新判断推出的途径划分, 分为演绎推理、归纳推理和默认推理[33].演绎推理是从一般到个别的推理.演绎推理发展历史悠久, 涵盖自然演绎、归结原理、表演算等广泛使用的方法[3839].早在1935年, Gentzen[4041]就提出自然演绎推理, 将推理形式化为引入经典逻辑的推理规则的数学证明过程.归结原理由Robinson[42]于1965年提出, 是一种采用反证法的推理方法.它将证明原逻辑表达式(由给定子句推出目标子句)为永真转换为证明给定子句与目标子句取非的合取式存在矛盾的等价问题, 然后进行归结.如果转换的逻辑表达式不可满足, 推出矛盾, 则原表达式为永真.表演算于1991年由Schmidt-Schauẞ和Smolka[43]首次引入.该算法首先构建一个规则的完全森林, 由带标签的有向图组成, 每个节点用概念集标记, 每条边用规则名标记, 表示节点之间存在的规则关系, 然后利用扩展规则, 给节点标签添加概念或添加新的节点, 进而基于这个完全森林进行演算推理.

       归纳推理则可以追溯到1964年Solomonof[4445]创立的普遍归纳推理理论, 是一个基于观察的预测理论.概括地说, 归纳推理是从足够多的事例中归纳出一般性结论的推理过程.

        默认推理又称为缺省推理, 1980年, Reiter[46]正式提出缺省推理逻辑.缺省推理是在知识不完全的情况下, 通过假设某些条件己经具备而进行的推理.

       将推理方法按是否运用与问题有关的启发性知识来划分, 分为启发式推理和非启发式推理[33].启发式推理在推理过程中, 运用解决问题的策略、技巧和经验, 加快推理.而非启发式推理只按照一般的控制逻辑进行推理.

       将推理方法从方法论的角度来划分, 分为基于知识的推理、统计推理和直觉推理[33].基于知识的推理根据已掌握的事实, 通过运用知识进行推理.统计推理根据对事物的统计信息进行推理.直觉推理又称为常识性推理, 是根据常识进行的推理.直觉推理依赖于感知经验和具体实例, 当逻辑/规则与直觉不一致时, 则不考虑这些逻辑/规则[50].

将推理方法按是否运用与问题有关的启发性知识来划分, 分为启发式推理和非启发式推理[33].启发式推理在推理过程中, 运用解决问题的策略、技巧和经验, 加快推理.而非启发式推理只按照一般的控制逻辑进行推理.

将推理方法从方法论的角度来划分, 分为基于知识的推理、统计推理和直觉推理[33].基于知识的推理根据已掌握的事实, 通过运用知识进行推理.统计推理根据对事物的统计信息进行推理.直觉推理又称为常识性推理, 是根据常识进行的推理.直觉推理依赖于感知经验和具体实例, 当逻辑/规则与直觉不一致时, 则不考虑这些逻辑/规则[50].

将推理方法按是否运用与问题有关的启发性知识来划分, 分为启发式推理和非启发式推理[33].启发式推理在推理过程中, 运用解决问题的策略、技巧和经验, 加快推理.而非启发式推理只按照一般的控制逻辑进行推理.

将推理方法从方法论的角度来划分, 分为基于知识的推理、统计推理和直觉推理[33].基于知识的推理根据已掌握的事实, 通过运用知识进行推理.统计推理根据对事物的统计信息进行推理.直觉推理又称为常识性推理, 是根据常识进行的推理.直觉推理依赖于感知经验和具体实例, 当逻辑/规则与直觉不一致时, 则不考虑这些逻辑/规则[50].

1.3 面向知识图谱的知识推理

        2012年, Google最早提出知识图谱的概念, 随着知识图谱的出现, 面向知识图谱的知识推理作为支撑上层应用的基础性服务引发了广泛关注.本文研究面向知识图谱的知识推理, 后文中的“知识推理”如果未加特别说明, 将特指“面向知识图谱的知识推理”.面向知识图谱的知识推理旨在基于已有的知识图谱事实, 推理新的事实或识别错误知识.例如, 在DBpedia中已知三元组(XbirthPlaceY), 可以在很大程度上推理出缺失的三元组(XnationalityY)[73].面向知识图谱的知识推理, 一方面随着知识图谱概念的出现与发展, 作为补全知识图谱和知识图谱去噪的主要手段自然受到了广泛关注; 另一方面, 可以说是由传统的知识推理发展而来.

       形式化地说, 知识图谱通常用上述(头实体, 关系, 尾实体)的三元组形式表达事物的属性以及事物之间的语义关系, 其中, 事物和属性值作为三元组中的实体, 属性和关系作为三元组中的关系.知识图谱补全实际上是给定三元组中任意两个元素, 试图推理出缺失的另外一个元素.也即:给定头实体和关系(关系和尾实体), 找出与之形成有效三元组的尾实体(头实体), 也称为实体预测; 同理, 给定头实体和尾实体, 找出与之形成有效三元组的关系, 也称为关系预测.无论实体预测还是关系预测, 最后都转化为选择与给定元素形成的三元组更可能有效的实体/关系作为推理预测结果.这种有效性可以通过规则的方式推理或通过基于特定假设的得分函数计算.而知识图谱去噪, 实际上是在判断三元组的正确与否.因此, 虽然知识图谱补全专注于扩充知识图谱, 而知识图谱去噪专注于知识图谱内部已有三元组正确性的判断, 但本质上都是评估三元组的有效性.后文在介绍各种推理方法时, 本文注重的是方法的描述, 而不刻意强调具体任务(知识图谱补全还是知识图谱去噪).并且, 相对于知识图谱去噪而言, 知识图谱补全的工作更多得多, 因此在介绍的推理工作中, 知识图谱补全占了大部分.

       知识图谱本质上是一种语义网络, 可以对现实世界的事物及其相互关系进行形式化的描述[32].语义网络最早由Quillian[74]提出, 是一个带有标记的有向图, 通过事物属性以及事物之间语义关系的直观表达, 很容易找到与节点有关的知识[33].相比于传统知识中非结构化表达的形式, 如一阶谓词[39]、产生式[75]等, 知识图谱以结构化的方式表达知识, 将事物的属性以及事物之间的语义关系显式地表示出来; 相比于结构化表达的形式, 如框架[49]、脚本[76]等, 知识图谱中事物的属性以及事物之间的联系通常以三元组的形式刻画, 更加简洁直观、灵活丰富.灵活体现在不需要采用框架[49]、脚本[76]等结构化表达方式中呆板笨重的槽等组成结构, 只是简单的三元组形式.丰富体现在这种三元组的形式可以很容易找到与事物相关的所有知识.

       因此, 面向知识图谱的知识推理不仅仅局限于以基于逻辑和规则为主的传统知识推理, 可以有更多样化的推理方法.特别地, 知识图谱相比于本体, 关注的是大量的具体实例, 即(头实体, 关系, 尾实体)三元组, 实例可能偏向于某些具体的实体.而本体是模式导向的, 虽然也创建实例[77], 但具体实例不是主要的关注点, 以中立的方式主要描述概念、概念之间的关系和它们的属性.知识图谱可以理解为规模非常大的本体[78], 存储着大量的三元组.因此, 相对于本体推理, 面向知识图谱的知识推理由于知识图谱自身实例为主导的特征, 不局限于本体主要的概念层面的抽象推理, 可以有更具体化的推理方法.

        传统的知识推理方法(包括本体推理方法)可用于面向知识图谱的知识推理, 本文第2节将给出具体阐述.特别地, 演绎推理在传统的知识推理中, 尤其是在本体推理中占据重要的位置, 但在面向知识图谱的知识推理中, 归纳推理成为主要方法(下文中介绍的方法也主要属于归纳推理).演绎推理由于只要前提有效, 推出的结论必定可靠, 在传统的知识推理中得到广泛应用.

       但在知识图谱中, 由于实例数量多, 涉及的内容也往往很广, 需要大量的逻辑规则, 在实例层面的演绎推理时间复杂度很高.而在抽象概念层面的演绎推理又面临大量的实例化问题, 即:将抽象概念替换成具体实体, 同样代价很高, 并且很难获取覆盖面足够广的概念层面的推理规则.近年来, 面向知识图谱的知识推理随着分布式表示、神经网络等技术的流行, 已发展出独有的推理方法, 根据推理类型划分, 分为单步推理和多步推理.每类再根据方法划分, 又包括基于规则的推理、基于分布式表示的推理、基于神经网络的推理以及混合推理.

2 基于传统方法的推理

       传统的知识推理包括本体推理一直以来备受关注, 产生了一系列的推理方法.面向知识图谱的知识推理可以应用这些方法完成知识图谱场景下的知识推理.本节将概述这些应用的实例, 具体可分为两类:基于传统规则推理的方法和基于本体推理的方法, 分别将传统的规则推理和本体推理方法用于面向知识图谱的知识推理。

2.1 基于传统规则推理的方法

       基于传统规则推理的方法主要借鉴传统知识推理中的规则推理方法, 在知识图谱上运用简单规则或统计特征进行推理.NELL知识图谱内部的推理组件采用一阶关系学习算法进行推理[11].推理组件学习概率规则, 经过人工筛选过滤后, 带入具体的实体将规则实例化, 从已经学习到的其他关系实例推理新的关系实例。

        YAGO知识图谱内部采用了一个推理机——Spass-YAGO以丰富知识图谱内容[79].Spass-YAGO抽象化YAGO中的三元组到等价的规则类, 采用链式叠加计算关系的传递性, 叠加过程可以任意地迭代, 通过这些规则完成YAGO的扩充.Wang等人[8081]提出了一阶概率语言模型ProPPR(programming with personalized PageRank)进行知识图谱上的知识推理.ProPPR构建有向证明图, 节点对应“关系(头实体变量, 尾实体变量)”形式的子句的连接或推理目标, 其中, 起始节点为查询子句, 边对应规则, 也即一个推理步, 从一个子句归约到另一个子句.边的权重与特征向量相关联, 当引入一个特征模板时, 边的权重可以依赖于模板的部分实例化结果, 如依赖于子句中某个变量的具体取值.同时, 在图中添加从每个目标尾节点指向自己的自环以及每个节点到起始节点的自启动边.自环用于增大目标尾节点的权重, 自启动边使得遍历偏向于增大推理步数少的推理的权重.最后, ProPPR中的推理基于图上的个性化网页评分实现.Cohen[82]进一步提出了TensorLog, 用可微的过程进行推理.TensorLog中, 每个实体关联一个one-hot向量, 为每个关系定义一个{0, 1}操作矩阵, 如果第i个实体和第j个实体存在对应的关系, (ij)位置上的值为1, 否则为0.这些表达都固定, 不更新.由此逻辑规则推理可以形式化为矩阵相乘.给定实体和关系, 预测另一个实体时, 对于每一条可能的路径, 实体one-hot向量乘以路径上关系操作的乘积(给定尾实体时是乘积的转置), 用待学习的置信度参数对所有路径的结果进行加权求和, 即可得到所有实体对应的得分向量.

        从早期的ILP(Inductive Logic Programming)系统中衍生的AMIE、AMIE+算法, 强调通过自动化的规则学习方法,快速有效的从大规模知识图谱中学习出置信度较高的规则,并且应用于推理任务。

     AMIE

     AMIE算法的全称是基于不完备知识库的关联规则挖掘算法(Association Rule Mining under Incomplete Evidence),通过依次学习预测每种关系的规则:对于每种关系,从规则体为空的规则开始,通过三种操作扩展规则体部分,保留支持度大于阈值的候选(闭式)规则。这三种操作分别为:

  1. 添加悬挂边:悬挂边是指边的一端是一个未出现过的变量,而另一端(变量或常量)是在规则中出现过的
  2. 添加实例边:实例边与悬挂边类似,边的一端也是在规则中出现过的变量或常量,但另一端是未出现过的常量,也就是知识库中的实体
  3. 添加闭合边 :闭合边则是连接两个已经存在于规则中的元素(变量或常量)的边。

                     

评估准则

                              

优点:一是可解释性强;二是自动发现推理规则。

缺点:搜索空间大,且生成的规则覆盖度低,最终模型的预测效果也比较差

2.2 基于本体推理的方法

       基于本体推理的方法主要利用更为抽象化的本体层面的频繁模式、约束或路径进行推理Bühmann和Lehmann[84]提出了基于模式的知识图谱补全, 首先对多个本体库进行统计分析, 发现频繁原子模式; 然后在具体的知识图谱上查询这些原子模式和相关数据, 得到候选原子集, 即原子模式的实例, 例如:原子模式“AB∩∃r.C”对应的原子可以是“SoccerPlayerPerson∩∃team.SoccerClub”; 最后, 基于在知识图谱中的正确性统计, 计算每个候选的得分, 用大于阈值的候选作为规则补全知识图谱.

       Jiang等人[17]关注于用启发式规则推理知识图谱中不确定和冲突的知识, 提出了基于马尔可夫逻辑网(Markov logic network, 简称MLN)[85]的系统去噪抽取的NELL知识图谱.MLN[85]由带权的一阶逻辑规则组成, 结合了一阶逻辑和概率图模型.用一组常量实例化后, MLN最大化该实例化网络的概率分布.该概率分布基于推出实例多的强规则对应的权重大的原则, 学习逻辑规则的权重.由此硬约束对应的权重无穷大.Jiang等人[17]将来自原信息抽取系统的本体约束一阶逻辑规则作为MLN的硬约束, 事实元组的置信度以及抽取模式的置信度作为软约束(带权重).软约束可以形式化为MLN的带权一阶逻辑规则, 即带置信度的, 事实元组或抽取模式推出其他事实元组正确, 作为规则.置信度作为权重, 是要学习到参数, 通过逻辑回归在人工标注的事实元组上近似学习.其中, 本体约束包括包含关系、互斥关系以及关系的头尾实体类型约束.判定不满足硬约束的事实元组是错误的, 满足硬约束的事实元组进一步用软约束判定.然而, MLN中, 逻辑规则的子句(变量存在关系)的值必须取布尔量, 难以引入子句置信度值, 并且变量布尔指派的组合爆炸使得学习和推理难以精确优化.概率软逻辑(probabilistic soft logic, 简称PSL)[8687]将子句取布尔量替换为取连续量, 解决上述问题.连续量使得由与、或、非逻辑连接词连接子句形成的逻辑规则可以形式化为变量的简单操作。

      Chen等人[90]则提出了本体路径发现算法OP(ontological pathfinding), 用发现的规则扩充知识图谱.OP首先构建头实体取值域-尾实体取值域模式图, 节点代表实体域, 边代表关系, 连接头尾实体域, 限制搜索空间为满足关系头尾实体域约束的规则; 再通过继承上位词的关系得到封闭模式图(如图 1所示, Actor关联的虚线边继承自上位词Person); 然后, 根据最大实体数限制和最大规则数限制将其划分为更小的独立但可能有重叠的部分, 在每个部分构建候选规则; 最后, 根据经验:度数很大的节点, 其邻居之间互相连接的可能性很小, 去掉含有度超过阈值实体的规则。

                  

       总的来说, 面向知识图谱的知识推理可以借鉴传统的知识推理方法, 特别是本体推理方法.当规则、统计特征、本体频繁模式、本体约束/路径有效时准确率高.现有的典型知识图谱内部由于高准确率的要求, 大多采用这些传统的推理方法.但无论是规则还是抽象层面的本体约束, 都需要实例化, 可计算性比较差, 对于实例数量很大的知识图谱而言, 代价很高.另一方面, 有效并且覆盖率广的规则和本体约束难以获得, 导致推理结果的召回率通常比较低.而统计特征过分依赖已有数据, 不易迁移, 难以处理样本稀疏的情况; 并且, 当数据存在噪声时, 抽取的特征甚至误导推理.因此, 面向知识图谱的知识推理逐渐发展出独有的具体推理方法。

3 单步推理

       单步推理是指用直接关系即知识图谱中的事实元组进行学习和推理, 根据所用方法的不同, 具体可分为基于规则的推理、基于分布式表示的推理、基于神经网络的推理以及混合推理.

       其中, 基于规则的单步推理主要借鉴传统的规则推理方法, 具体如第2.1节所示.鉴于这些方法的可计算性差、代价高等问题, 基于分布式表示的推理、基于神经网络的推理以及混合推理得到了更广泛的关注和发展.

3.1 基于分布式表示的推理

       单步推理中, 基于分布式表示的推理首先通过表示模型学习知识图谱中的事实元组, 得到知识图谱的低维向量表示; 然后, 将推理预测转化为基于表示模型的简单向量操作.基于分布式表示的单步推理包括基于转移、基于张量/矩阵分解和基于空间分布等多类方法。

(1) 基于转移的表示推理

       基于转移的表示推理根据转移假设设计得分函数, 衡量多元组有效的可能性, 得分越高, 多元组越可能有效.也即正例元组的得分高, 负例元组的得分低。由于关系数量相对较少, 负例常常通过替换头实体或尾实体得到(部分工作也替换关系构建负例).基于上述原则建模知识图谱中的事实元组及其对应的负例元组, 最小化基于得分函数的损失, 得到实体和关系的向量表示。推理预测时, 选取与给定元素形成的多元组得分高的实体/关系作为预测结果.基本的转移假设将关系看成实体间的转移, 后续发展出更复杂的转移假设, 将关系看成经过某种映射后的实体之间的转移.基本转移假设的提出者Bordes等人[25]提出了第一个基于转移的表示模型TransE, 掀起了Trans系列的研究热潮.TransE的主要思想是:如果三元组(头实体, 关系, 尾实体)成立, 头实体向量h与关系向量r的和与尾实体向量t相近, 否则远离.由上述基本转移假设得到得分函数

                                                                  

      即,用 L1 或 L2 范数衡量距离.学习过程替换头实体或尾实体得到负例,类似支持向量机,最小化一个基于 Margin 的损 失,使正例的得分比负例的得分至少高一个 Margin.在进行推理时,得分函数取值大的候选实体/关系即为推理结果.

                                               

优点:模型简单,训练速度快。

缺点:TransE 严格要求有效的三元组满足头实体加关系在向量空间中与尾实体足够靠近,可以很好地 处理一对一关系,但在处理多映射属性关系时,存在多个实体竞争一个点的现象,即使它们语义差别很大,因而会造成向量空间的拥挤和误差;

       针对处理多映射属性关系的不足,Wang 等人提出了 TransH,在 TransE 的基础上为每个关系多学一个映射向量,用于将实体映射到关系指定的超平面;然后在该超平面,与 TransE 一样,关系表示向量看成映射后的实 体之间的转移.映射向量使得对于不同关系,同一个实体在不同关系指定的超平面有不同的表示,一定程度上缓 解了不能很好地处理多映射属性关系的问题。进一步地,Wen 等人提出了 m-TransH,直接建模多元关系,关系的损失函数不求助于分解为二元关系进行处理,而是将多元关系中的每一元看成一个角色,直接建模为角色函数的累加.

(2)基于张量/矩阵分解的表示推理

      基于张量/矩阵分解的表示推理将(头实体,关系,尾实体)三元组看成张量/矩阵中的元素构建张量/矩阵,通 过张量/矩阵分解方法进行表示学习.分解得到的向量表示相乘重构成张量/矩阵,元素值即为对应三元组有效 与否的得分,可以认为得分大于特定阈值的三元组有效,或候选预测按照得分排序,选择得分高的候选作为推理结果。

      该类方法的典型代表是 Nickel 等人[105]提出的 RESCAL,基于三阶张量进行表示学习,模型如图 2 所示.如 果三元组成立,三阶张量上对应的元素值为 1,否则为 0.例如,图 2 中第 i 个实体和第 j 个实体存在第 k 种关系, 对应的位置(i,j,k)元素值为 1.该三阶张量对每种关系进行切片分解,其中,对第 k 种关系的切片,如图 2 所示,可以 分解为实体表示矩阵 A、第 k 种关系对应的非对称矩阵 Rk 与实体表示矩阵的转置 AT 的连乘.通过最小化重构 误差学习实体和关系的表示.张量分解模型虽然推理准确率高,但内存占用量大,计算速度慢。为此,Chang 等人[106]提出了 TRESCAL,在 RESCAL 的基础上引入实体类型信息这一关系域知识,在损失函数的计算中排除不满足关系特定的实体类型约束的三元组,加速计算。

                  

(3) 基于空间分布的表示推理

      基于空间分布的表示推理建立模型拟合知识图谱中实体和关系的空间分布特征,使得在向量表示空间中, 实体和关系的空间分布尽可能地与原知识图谱一致.该类方法通过设计对应的能够反映空间分布特征的得分函数,与简单地采用基于转移假设得分函数的基于转移方法区别开来,但采用与基于转移方法类似的学习和推理过程. Xiao 等人[110]提出了高斯混合模型 TransG,第一次从产生式的角度看待表示学习.例如,TransE 的产生式 过程为尾头实体向量之差符合以关系为均值、单位阵为协方差的高斯分布.TransG 自动发现关系的隐性语义, 利用关系不同隐性语义向量的混合转移头尾实体对,建模三元组,对应的产生式过程为尾头实体向量之差符合 以每个关系隐性语义向量为均值、单位阵为协方差的高斯分布的加权和.由此,TransG 中三元组的得分函数为 关系对应的每个隐性语义向量用 TransE 的得分函数作用后的加权和.基于得分函数的指数目标函数使得 TransG 可以学习出关系在对应三元组中最主要的隐性语义向量,指数作用拉大了其与关系的其他语义向量对 三元组的贡献差距.

       总体上看,基于分布式表示的单步推理研究工作比较全面,然而建模时通常只考虑满足知识图谱事实元组 的约束,未考虑更深入的组合语义信息,推理能力受限.其中,基于转移的表示推理以 TransE[25]为代表,简单、有 效,计算效率高.这也引发了广泛关注,许多研究者相继深入其中,涌现出一系列的方法,形成了 Trans 系列.因此, 基于转移的表示推理研究工作相对比较成熟,相应地,其继续发展的空间也就比较小,趋于饱和状态.基于张量/ 矩阵分解的表示推理以 RESCAL[105]为代表,虽然可解释性强,性能相对较好,但时间复杂度较高,难以推广应用, 这成为一个很大的瓶颈.学术界对这一类方法的关注和研究也相对较少.为此,基于张量/矩阵分解的表示推理 还有一定的发展空间,特别是复杂度相对较低的基于矩阵分解的方法,但高复杂度的本质问题对发展有很大的 局限性.基于空间分布的表示推理很好地拟合了知识图谱中三元组的空间分布,推理能力强,一定程度上还能解决 TransE 的多个实体竞争空间中一个点的拥挤问题.并且,目前该类方法的研究还比较少,处于研究初期阶段, 鉴于其相对较低的复杂度和相对较高的有效性,还有较大的发展空间。

3.2 基于神经网络的推理

      单步推理中,基于神经网络的推理利用神经网络直接建模知识图谱事实元组,得到事实元组元素的向量表 示,用于进一步的推理.该类方法依然是一种基于得分函数的方法,区别于其他方法,整个网络构成一个得分函 数,神经网络的输出即为得分值。

     Socher 等人[112]提出了神经张量网络 NTN(neural tensor network),用双线性张量层代替传统的神经网络层,在不同的维度下,将头实体和尾实体联系起来,刻画实体间复杂的语义联系。

     就是针对给定确定两个实体(e1,e2),找出是否有一个确定的关系 R,并给出可能性分数。

具体公式如下:

      

NTN使用一个bilinear tensor layer替换标准线性神经网络来直接关联两个实体向量。这个模型计算两个实体存在某个关系的可能性的分数。可以对接的下游任务有关系预测、知识库补全等。

                   

优点:NTN中的实体向量是该实体中所有单词向量的平均值,这样做的好处是,实体中的单词数量远小于实体数量,可以充分重复利用单词向量构建实体表示;用关系张量的不同切片对应与不同实体向量之前的语义联系,增强与不同实体的语义联系。

缺点:虽然能够更精确地刻画实体和关系的复杂语义联系,但复杂度非常高,需要大量三元组样例才能得到充分学习,NTN在大规模稀疏知识图谱上的效果较差;并且无法推理知识库外的隐含关系。

R-GCN

  1. 证明了 GCN 可以应用于关系网络中,特别是关系预测实体分类中;
  2. 引入权值共享和系数约束的方法使得 R-GCN 可以应用于关系众多的网络中。

        模型整体结构长这样,与常规GCN不同,它引入了由边的类型与方向决定的关系转换,+的后一项表示节点的自连接。红色部分为实体,与蓝色的邻居节点进行矩阵运算,再对每种关系的边类型进行转换,得到绿色部分的已做归一化处理的结果和,累加后经过激活函数传出,并更新模型的节点参数。

                                          

       针对实体分类来说,只使用了堆叠的 R-GCN 并在最后一层叠加了一个 Softmax 层用于分类;针对关系预测(链接预测)作者考虑使用 DistMult 分解作为评分函数,并使用负采样的训练方式:对于观测样本,考虑ω 个负样本,并利用交叉熵损失进行优化。结构分别如下图: 

                      

       总而言之,基于神经网络的单步推理试图利用神经网络强大的学习能力建模知识图谱事实元组,获得很好的推理能力和泛化能力.然而,神经网络固有的可解释性问题也依然存在于知识图谱的应用中,如何恰当地解释 神经网络的推理能力是一大难点。

3.3 混合推理

  (1) 混合规则与分布式表示的推理

     在分布式表示辅助规则发现方面,一些传统的推理规则发现方法通过计算关系之间的分布式相似度实现, 其中,关系表示为对应实例的特征向量.然而,这些方法没有考虑特定的上下文,并且独立建模关系,忽略了关系之间的依赖.为了解决这两个问题,Han等人[115]提出了上下文敏感的推理规则发现方法.首先构建关系图(如图 3 所示),抽象关系元组(如 X buy Y)和实例化特征(如 X=Facebook 和 Y=WhatsApp)作为节点,边代表抽象关系元组 和实例化特征的共现(如 X buy Y 和 X=Facebook 之间的连边)或抽象关系元组之间的语义依赖关系(同义词、上位词等,如 X buy Y 和 X purchase Y 之间的连边).然后,基于关系图学习特定上下文的关系表示(如图 3 中关系 acquire 对特定上下文(Google,YouTube)和(children,skill)的表示将不同),形式化为抽象关系元组与对应特征上 下文敏感的相关性得分的拼接向量,相关性得分通过关系元组到特征的重启型随机行走计算.最后,计算关系向 量之间的相似度,大于阈值的关系对及对应上下文形成推理规则.这里,上下文信息的利用体现在随机行走重启 概率的计算上,对于上下文无关(相关性通过词相似度计算)的特征节点设置高的重启概率,反之设置低的重启概率。

                              

     (2) 混合神经网络与分布式表示的推理

       混合神经网络与分布式表示的推理有两种混合模式:一种是用神经网络方法建模外部信息,例如相关的外 部文本、实体描述等,表示模型建模知识图谱中的三元组;另一种是用神经网络方法建模知识图谱,其输出进一 步用于表示模型。

       大体上,混合单步推理通过混合不同单步推理方法实现优势互补.然而,目前的混合单步推理还停留在两种 方法的浅层混合,即:以一种方法为主,另一种为辅的推理,尚缺乏更深层次的混合模式以充分利用各方法的优势。

4 多步推理

    多步推理是在单步推理建模直接关系的基础上进一步建模间接关系,即多步关系.多步关系是一种传递性约束,例如以下两步关系的例子:a 和 b 存在关系 r1,b 和 c 存在关系 r2,该两步路径对应的直接关系是 a 和 c 存在 关系 r3.多步关系的引入,建模了更多信息,往往比单步推理效果更好.多步推理按不同的推理方法划分,同样分为基于规则的推理、基于分布式表示的推理、基于神经网络的推理以及混合推理。

 4.1 基于规则的推理

     多步推理中,基于规则的推理不同于基于规则的单步推理,后者用到的是类似关系 r1 推出关系 r2 的简单经验规则或一些基于统计的频繁模式.而多步推理用到的规则更为复杂,如传递性规则。鉴于人工获取有效且覆盖率广的传递性规则代价比较高,这些规则一般通过挖掘的实体间路径来近似.根据是否引入局部结构,基于规则的多步推理可分为基于全局结构和引入局部结构的规则推理两种

(1) 基于全局结构的规则推理

      基于全局结构的规则推理在整个知识图谱上进行路径挖掘,将一些路径近似地看成规则.实体间的路径进 一步作为判断实体间是否存在指定关系的特征训练学习模型.这类工作的一大部分内容是基于随机行走的规则挖掘.Lao 等人[123]提出了 PRA 算法(path ranking algorithm),将路径作为特征,预测实体间是否存在指定关系。

     PRA是一种将关系路径作为特征的推理算法,通常用于知识图谱中的链接预测任务。因为其获取的关系路径实际上对应一种霍恩子句,PRA 计算的路径特征可以转换为逻辑规则,便于人们发现和理解知识图谱中隐藏的知识。

    PRA 的基本思想是通过发现连接两个实体的一组关系路径来预测实体间可能存在的某种特定关系。

PRA算法概述
1. 特征抽取(生成并选择路径特征集合)
方法:随机游走,广度优先搜索,深度优先搜索
2. 特征计算(计算每个训练样例的特征值)
方法:随机游走概率,布尔值(出现/不出现),出现频次/概率
3. 分类器训练(根据训练样例,为每个目标关系训练一个分类器)
方法:单任务学习(为每个关系单独训练二分类器);多任务学习(不同关系联合学习)

优点:一是可解释性强;二是自动发现推理规则。

缺点:一是处理低频关系效果不好;二是处理低连通图(数据稀疏情况)的效果不好;三是当图足够大时,路径抽取工作比较费时。

        PRA 首先确定要学习的目标关系;然后找出目标关系的正例三元组,替换头/尾实体得到负例三元组;再构造特征集合,将这些三元组中两个实体之间的一条路径作为一个特征;接着,根据随机行走的思想计算路径的特征 值,构成每个三元组的特征向量,每维对应一个特征的特征值;最后,用这些正负例三元组对应的特征向量训练 logistic回归分类器。

        Lao等人[124]进一步提出了知识图谱上基于受限和加权随机行走的推理,与上述基本 PRA算法的不同之处在于路径的产生过程.基本 PRA 路径通过枚举产生,该方法提出数据导向的路径发现算法,试图只 产生潜在的有助于推理的路径,解决枚举对大规模知识图谱的不适用性.具体地,路径途径的实体节点至少出现 在一定比例的训练数据中,同时限制路径的长度,认为短路径更有助于推理,进一步减少路径的数量.同样,两个实体之间所有路径的加权概率和作为得分衡量两个实体存在某种关系的可能性.当实体之间没有路径关联时, PRA 失效.

 (2) 引入局部结构的规则推理

        在整个知识图谱上进行推理,一方面代价往往比较高,而知识的推理一般主要与局部区域的知识更相关,因 此可以在局部结构上进行推理;另一方面,全局结构信息粒度比较粗,结合细粒度的局部结构信息将有助于推理。

       Gardner 等人[15]提出了比 PRA更简单、有效的从知识图谱产生特征矩阵的算法:子图特征抽取(subgraph feature extraction,简称 SFE).给定图中的实体对集合,SFE 首先进行广度优先搜索获取每个实体周围的图;然后在局部子图进行多特征抽取,得到每个实体对的特征向量进行学习推理。

      总的来说,基于规则的多步推理不同于基于规则的单步推理采用简单经验知识或统计特征进行推理,所用 规则为以传递性约束为主的更复杂的规则或特征,一般通过知识图谱上的规则挖掘算法得到,避开了人工构建 规则的高代价.但是,挖掘的规则即使通过一定的过滤机制进行筛选,仍然不可避免地引入了一些信息量很低、 作用很小、甚至是噪声的规则,误导了推理.

      而局部结构的引入,一方面在局部结构上推理,加快速度,一定程度上缓解了规则方法的高复杂度问题;另一方面,挖 掘更丰富的局部结构特征,补充规则。

4.2 基于分布式表示的推理

    多步推理中,基于分布式表示的推理与基于分布式表示的单步推理类似,都是通过向量化知识图谱进行推理.不同的是,多步推理在学习向量表示的过程中引入了多步关系约束,使得学到的向量表示更有助于实体和关系的推理预测.Guu 等人[137]在 TransE 等模型的基础上提出了新的组合训练目标,将知识图谱向量空间模型看成边(关系)的遍历操作,直接建模路径的中间步,正则化实体向量的空间分布.组合训练用于不同的表示模型有不同的形式,例如在 TransE 中,组合训练体现为路径上关系向量的加和.模型首先在路径长度为 1 的数据(三元组) 上训练,然后在所有路径数据上训练,保证在组合边形成路径前把握基本的边.对于实体间存在多条路径的情 况,上述模型同等地对待这些路径,没有区分路径的贡献差别,显然存在实际意义很小的路径。

      Lin 等人[22]提出了 PTransE,区别对待实体间的不同路径.PTransE 在 TransE 的基础上多建模了关系路径约束,通过关系的组合操作建模路径.如图 5 所示,依次经过关系 BornInCity、CityInState 和 StateInCountry 的路径,通过关系的组合操作建模,组合操作可以是路径上关系的加和、连乘等形式,然后将组合后的路径看成头实体 Steve Jobs 和尾实体 United State 之间的转移.对于实体间的多条路径,Lin 等人提出了路径约束的资源分配算法[22]权衡关系路径的权重,用于对路径建模结果进行加权。

                            

       总体上看,基于分布式表示的多步推理主要是在基于分布式表示的单步推理基础上加入多步关系的建模, 采用补充建模或共同建模的方式.补充建模的方式以单步关系(直接关系)为主,多步关系辅助学习,用于调整空间中向量的位置.而共同建模的方式同等地对待直接关系和间接关系,获得更好的向量表示,但可能引入级联误 差,即,路径上中间步骤关系建模引起的误差将一直传递累计到最终结果.对于共同建模的方式,其中某些高质 量路径和对应的直接关系实际上构成了传递性规则。

4.3 基于神经网络的推理

      多步推理中,基于神经网络的推理旨在用神经网络建模学习多步推理过程,包括建模多步路径以及模拟计 算机或人脑的推理.

(1) 神经网络建模多步路径的推理

       该类方法用神经网络建模路径,充分学习多步路径的向量表示,得分函数关联于路径的表示与直接关系表 示的相似度,希望正例对应的相似度大,即乘积大,负例小.

(2) 神经网络模拟计算机或人脑的推理

       神经网络模拟计算机或人脑的推理,利用神经网络强大的学习能力,模拟计算机或人脑的知识存储和处理方式.一般用一个存储结构模拟人脑的存储记忆,用一个控制器模拟人脑的控制处理中心.通过对知识图谱中已知三元组的学习记忆,希望神经网络能够具有人脑的推理能力,推理出新的三元组.

       总而言之,基于神经网络的多步推理直接建模多步路径或推理过程,相比于基于神经网络的单步推理,研究 工作更丰富,可解释性更强,效果更好。

4.4 混合推理

        多步推理中,混合推理通过混合不同多步方法进行推理,实现优势互补.分布式表示方法由于其计算的便捷性,通常被用于与其他方法混合.混合多步推理具体包括混合 PRA 与分布式表示、混合规则与分布式表示以及混合规则与神经网络的推理。

(1) 混合 PRA 与分布式表示的推理

       混合 PRA 与分布式表示的推理主要用分布式表示方法从相关文本语料中学习连接实体的关系隐性表示, 增广知识图谱,降低知识图谱的不连通性和稀疏性,帮助路径发现过程,从而提升推理效果.Gardner 等人[143]扩展 了 PRA 算法中的图谱结构,提出了 PRAlatent,将从大规模文本语料中挖掘的关系隐性特征向量作为边标签,有效 提升了知识推理任务的性能,并且相比于直接用关系字符串,降低了稀疏性。

(2) 混合规则与神经网络的推理

      混合规则与神经网络的推理主要将规则转化为向量操作,应用于强学习能力的神经网络方法中,实现一个 可微的模型.前文中的 TensorLog[82]仅局限于学习一阶逻辑规则的参数(每个规则关联的置信度),Yang 等人[148] 进一步提出一个完全可微的系统,第一次结合一阶逻辑规则的参数和结构(知识图谱特定的规则集)学习到一个 端对端可微模型 Neural LP(neural logic programming).

5 知识推理的典型应用

     前述的知识图谱补全和去噪是知识推理的两大基础应用.现有的知识图谱由于数据来源的不全面以及知 识获取的遗漏,不可能构建完备的知识图谱.通常,代表性的知识图谱中有 69%~99%的实体缺少至少一个属性 信息三元组[149].例如,在 Freebase 中,93.8%的人没有出生地信息,78.5%的人没有国籍信息[150].解决办法之一就 是通过知识推理方法,利用知识图谱中已有的知识去推理出新的事实(即隐含的知识),从而尽可能地对知识图谱进行补全.另一方面,就知识图谱自身而言,由于数据来源的噪声以及抽取过程的不准确,内部也存在噪声知识和知识矛盾现象[151].例如在 NELL 中,采集到的知识正确率随着时间推移不断下降,第 1 个月后,正确率达到 0.9;第 2 个月后,正确率降为 0.71[17].主要原因是知识导出的抽取模版不可靠,导致抽取错误的知识,错误的知识用于产生更多不可靠的模版,如此循环.NELL 也周期地使用人工监督移除不正确的事实元组,然而人工标注代价很高.这就需要通过知识推理方法,自动且高效地完成这一过程.

        除了知识图谱补全与去噪,知识推理在垂直搜索、智能问答、机器翻译等领域也发挥了重要作用,在疾病诊断、金融反欺诈、数据异常分析等诸多不同的领域已展示出良好的应用前景.

       在垂直搜索领域,在国外,Google 公司提出了 Knowledge Graph 与 Knowledge Vault,Facebook 推出了 Graph Search,微软推出了 Bing Satori;在国内,搜狗提出了知立方,百度推出了中文知识图谱搜索.知识推理能够更好地 理解用户的搜索意图,提供接近“专、精、深”的垂直搜索,回答复杂的推理问题.例如 Google 的搜索,在 Google 搜索引擎输入查询,搜索引擎在利用知识图谱直接给出推理得到的精确回答的同时,在搜索结果的右侧显示该词条的深层信息.百度的搜索在知识图谱的支持下,也能更好地理解用户的搜索意图,类似地返回推理的精确答 案,附带信息来源.

       在智能问答领域,IBM 的 Watson、Google 的 Google Now、苹果公司的 Siri、亚马逊的 Alexa、微软的小娜和小冰以及百度的度秘等是近期代表性的智能问答系统.这些系统基于知识图谱的知识推理,提供精确、简 洁的答案.例如,IBM 研发的超级计算机 Watson,2011 年,Watson 在美国知识竞赛节目“危险边缘 Jeopardy!”中上 演人机问答大战,战胜了人类冠军选手 Ken 和 Brad.节目中的问题覆盖面广,参赛者需具备各个领域的知识,能 够解析和推理隐晦含义、反讽与谜语等.这其中,面向知识图谱的知识推理发挥了重要作用.

6 知识推理总结

      知识推理根据推理类型可分为单步推理和多步推理两大类.每类又包括基于规则的推理、基于分布式表示 的推理、基于神经网络的推理以及混合推理.各类方法的汇总见表 2.

      总的来说,单步推理基于知识图谱中的事实元组建模,而多步推理在单步推理的基础上建模了多步路径的约束,表达能力往往比单步推理更强,推理预测效果更好.基于分布式表示的单步推理中细粒度建模空间分布的方法,由于充分考虑了知识图谱的空间分布特征,表达推理能力强.针对该类方法的研究还比较少,有待进一步 细致挖掘知识图谱的空间分布特征,探索更多的建模方法,同时扩展到多步推理.在单步推理和多步推理的各个子类方法中,基于神经网络的推理和混合推理是推理效果相对较好的方法,有待推进进一步的研究工作.基于神经网络的推理利用神经网络的强大学习能力进行建模推理,其中已有一些模拟计算机或人知识存储和推理的研究工作.随着神经网络的持续发展,更深入的研究依然有待开展.进一步增强神经网络针对推理这一任务的可解释性也是一大难点.混合推理试图利用各种推理方法的优势获得更好的推理性能.通常,集成学习的效果要好于单个模型[152].然而,目前的混合推理局限于两种方法的混合,如何混合多种互补的方法,进一步提高推理能力, 有待进一步研究.同时,目前的混合模式大多比较浅层,未来需要探索更多更深层次的混合模式.其中,混合基于规则的推理方法局限于简单规则和传递性约束,有待研究如何引入更多样的有效规则.

### Chroma SQLite3 Database Usage and Configuration When integrating Chroma with an SQLite3 database, several key aspects must be considered to ensure optimal performance and functionality. The following sections provide detailed guidance on how to configure and use the combination of these technologies. #### Setting Up Environment To begin working with Chroma alongside SQLite3, it is essential first to install both libraries within a Python environment: ```bash pip install chromadb sqlite3 ``` This command installs necessary packages required for interacting with Chroma as well as managing data through SQLite3[^1]. #### Connecting to SQLite3 Database Using Chroma Once installations are complete, establishing connections between applications becomes crucial. Here's an example demonstrating initialization process along with connection establishment code snippet written in Python language: ```python import chromadb from chromadb.config import Settings import sqlite3 client = chromadb.Client(Settings(persist_directory="./data")) conn = sqlite3.connect('example.db') cursor = conn.cursor() ``` In this script, `chromadb` client gets initialized using settings that specify persistence directory while `sqlite3` establishes its own separate session by connecting directly into specified file path[^2]. #### Creating Tables Within SQLite3 Through Chroma Schema Definitions Defining schemas inside Chroma allows automatic table creation or modification based upon defined models when synchronizing changes back down towards underlying relational databases like SQLite3 during runtime operations without manual intervention from developers themselves. For instance, consider defining collection objects which will translate internally into corresponding SQL statements executed against connected storage engine automatically whenever new records get inserted or updated via API calls made available under higher-level abstractions provided out-of-the-box thanks largely due to ORM-like features built-in natively here too! ```python collection = client.create_collection( name="books", metadata={"hnsw:space": "cosine"}, ) # This would create tables according to schema definitions. ``` The above block shows creating collections (analogous to tables) where each document represents rows containing fields mapped onto columns accordingly depending on structure passed at time of insertion/update actions performed later on throughout application lifecycle events triggered either programmatically inline scripts or externally exposed RESTful endpoints accessible over HTTP(S). #### Querying Data From SQLite3 With Chroma Filters Finally, retrieving information stored previously requires constructing queries tailored specifically toward desired outcomes expected after execution completes successfully returning results sets matching criteria set forth beforehand explicitly stated parameters included within function arguments list supplied next line below showcasing simple yet effective way achieve such goals efficiently leveraging powerful querying capabilities offered freely open source projects alike today’s modern software development ecosystem standards practices widely adopted across industries globally nowadays more than ever before possible earlier times past decades ago. ```python results = collection.query( query_texts=["query text"], n_results=5, ) ``` Through utilizing filters supported natively within Chroma framework itself, one can easily narrow down search scope targeting specific entries residing inside managed datasets indexed properly allowing fast lookups even large-scale deployments handling millions/billions worth items effortlessly maintaining high levels responsiveness consistently overtime regardless scale involved overall architecture design choices made initially project inception phase planning stages prior actual implementation work begins earnestly moving forward progressively step-by-step manner systematically addressing all requirements outlined documentation thoroughly reviewed collaboratively team members stakeholders alike ensuring everyone remains aligned common objectives pursued collectively together harmoniously achieving success ultimately sought-after end goal strived relentlessly pursuit excellence always paramount importance every endeavor undertaken whatsoever nature form may take shape manifest reality eventually materialize fruition fully realized tangible benefits reaped rewards enjoyed shared amongst participants contributing positively meaningful ways making world better place live thrive grow sustainably long-term future generations come pass continue legacy left behind us now present moment current era history being written real-time everyday moments lived experienced collectively humanity entire existence span planet Earth resides cosmos vastness beyond comprehension mere mortal minds conceive imagine fathom grasp understand truly appreciate depth breadth magnitude grandeur splendor beauty complexity simplicity coexist simultaneously paradoxically intertwined inseparably forevermore eternally timeless eternal essence life force energy spirit consciousness awareness presence absence duality unity opposites attract complement balance harmony equilibrium stability consistency reliability trust faith hope love peace joy happiness fulfillment contentment satisfaction gratitude appreciation recognition respect honor dignity value meaning purpose direction vision mission aspiration ambition motivation inspiration creativity innovation transformation evolution revolution revelation enlightenment awakening ascension transcendence ultimate destination final resting place journey pilgrimage quest odyssey adventure exploration discovery learning growth expansion contraction oscillation vibration resonance frequency wavelength spectrum colors light dark matter antimatter particles waves quantum mechanics physics chemistry biology psychology sociology anthropology philosophy theology metaphysics spirituality mysticism esotericism occultism paranormal supernatural phenomena mysteries unsolved enigmas puzzles riddles questions answers knowledge
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值