知识表示

知识应用的难点 在于 知识推理,知识推理的难点在于 知识表示,因此,知识表示是基于知识的人工智能应用中的核心部分。

知识表示 大致经历了3个阶段的发展:
1,逻辑表示;
2,图谱表示;
3,数值表示;

每一种 知识表示 方法,都对应了与其相配的 知识推理 策略,结合我自己所读内容,做一个总结:

一,逻辑表示
逻辑根据其复杂程度,可以分为:命题逻辑,一阶谓词逻辑,高阶逻辑;
命题逻辑:是最简单的逻辑,是对真值的判断,计算结果 为 True or False。相当于一道判断题;
命题逻辑 仅能用于 表达一个简单的事实,且 其计算 本身 是一种 二分法,非此即彼,不存在松弛(概率),缺乏灵活性;
此外,每一个命题逻辑 都只能 表达 一个 原子信息(无其他需要细化的信息),这意味中,对于现实世界中的每一类型事先,都需要一一列举,而无法泛化。
一阶谓词逻辑:又称一阶逻辑 ,直白的说,就相当于一个 一元函数 f(x),其中 f 即为 “谓词”,x 即为谓词的操作对象(求解对象),举例说明:假设:兄弟()为一个谓词(函数),其 表达式为 兄弟(张三,x),x即为表达式的求解对象(操作对象)。
对于一阶逻辑,f(constant, x),根据其 自定域range,可以将f()称为:谓词 or 函词。
一阶谓词,其 自定域 可以为 一系列值,如:兄弟(张三,x),x的取值可以是一个集合。
一阶函词,其 自定域 只能为一个 值,如:国籍(汤姆 科鲁兹,x),x 有且仅有一个解。
二阶谓词逻辑:又称二阶逻辑,可以理解为一个 二元函数 f(x,y),此时的 f,可以是对关系的申明,也可以是对属性的申明。
如:兄弟(张三,李四),此时,兄弟()为对关系的申明,而 “张三 and 李四" 都是 求解对象;
国籍(汤姆 科鲁兹,美国),此时,国籍()为对属性的定义,而 ”汤姆 科鲁兹 and 美国“ 都是input;

在逻辑表示中,结合数学符号 来表示 知识,它 让 知识表示 和 知识推理 分离,使得 推理方法可以完全不依赖于具体领域。运用逻辑表示,即推理,能够得到精确的 推断结果,但是 不具备容错性,且 不能表示不确定性知识(概率),此外,随着知识图谱的扩张,知识逐渐膨胀,在利用 数学逻辑推理符号 进行推理时,会由于 符号的爆炸性增长,而使得计算复杂性呈指数级增长。
除此以外,逻辑推理中,还涉及 操作符(数学符号)的优先级问题,处理起来也非常麻烦,容易出错。
因而,基于逻辑的推理,耗时长,效率低。

二,图谱表示
在这一阶段,知识 以 网络,框架 ,脚本 等形式 进行呈现。下面简要介绍下 各个知识表示 方法的 特征。
语义网络:是一个用有向图表示的知识系统,图中 节点 代表 ”实体,事件,值 等“,边 代表”两个节点之间的语义关系/属性。
在语义网中,其最小单元 为 语义基元,用三元组表示 即为:<节点1,关系,节点2> or <节点1,属性,节点2>.
无数个语义基元 相互链接,即可表示 一个完整的 知识系统。
用语义网络可以表达很多的关系类型,从宏观 到 具体,凡是 可以 用三元组 诠释的 知识,都可通过语义网络进行描述。
从粒度大小来划分,语义网络中的关系可以分为:
一元关系:即对一事物的属性描述,可以用函数P(x)来表示,如:有翅膀(鸟)。
二元关系:对一对事物关系的表述,可以用函数R(x,y)来表示,如:兄弟(张三,李四)。
多元关系:语义网络中 多元关系的 表示,可以转为对 多个 二元关系 的 组装,对应到 语义网络 中,即为一个 小型网络。

与 谓词逻辑(逻辑表示)相比,语义网络 具有同等的表达能力,但是,其 对 知识的表示方式 更加简洁,更有利于 计算机的存储和检索。虽然语义网络 在 知识表示 方面 简化了许多,但是,其 知识推理 却不及 “逻辑推理” 那样明了,在用语义网络 进行知识推理 前,首先得理清 语义网络中,各种关系的 逻辑关系,编写出 各种关系的 逻辑链条,继而才能进行 知识推理。

框架:类似于 百度百科 中 对于 item的描述方式,将item的所有属性都置于列表中,每个单元格 可以看作一个槽点,在进行知识表示 时,根据Item的属性设置,为每个属性槽点 填充 value。
相较语义网络,框架 可以表示更为复杂 的 事实,一个框架 即可完成 语义网络中需多元关系 描述的知识。
在语义网络中,每个节点 是一个 实体,在框架中,每一个节点 相当于一个框架,框架和框架之间,为一种 包含被包含,或 逻辑上的因果关系,相较语义网络 来说,其设定的关系类型 抽象性更高,而 语义网络 中 定义的关系类型,即 谓词,相当的繁琐,杂乱。

FrameNet是一个经典的基于框架表示的知识库,它常被作为 traindata 用在 NLP任务中,如:
信息抽取:extract the informations from sentences of articles,如,命名实体识别,事件识别,关系识别 等等。
文本蕴含:假设有2个文本,A and B,如果从A能推到B,则说A蕴含B。文本蕴含 可以视为一个 分类任务,f(A,B) -> ture/false。
语义解析:对句子中 主,谓,宾,… 等成分 进行标注。
角色标注:对于事件中,各种 元素进行标注。

脚本:脚本 与 框架 的 知识表示形式类似,但是,与框架相比,脚本 能够 描述 事件的时序关系,其描述的 是一个 动态的过程,而非 静态知识的 表示。
与 语义网络 相比,脚本 对于 元素基本属性的 描述能力 有限,只 适用于 一些 有 特定 schedule 的 场景任务。如:酒店预订,机票预定 等。

上述介绍的三种知识表示方式:语义网络,框架,脚本 都是一种 基于槽 的表示方法,有所区别的是,槽是否具有层次,时序,控制 关系。
语义网络 是 最简单的一种 槽结构,每个三元组 都可看成是 一个槽结构。
框架 则 更进一步,可以看 成是 层次化 的 语义网络。
而 脚本,则是按照一定的时间流程,对事件的发展和变换控制进行的建模。

语义网
与上述几种 知识表示 方法相近的 是 语义网,相较于前者,语义网 更加规范,系统,标准化,统一了 知识图谱中 很多术语的表达,从而使得 知识图谱 之间的 集成 成为 可能。
语义网知识表示体系主要包括3个层次:XML,RDF,OWL。
XML 相较 HTML 而言,其标签表达更灵活,但由于其标签的个性化,不同的开发人员之间 就同一个 知识,可能会衍生出 多个不同的表示版本,对于公司来说,这无疑增加了系统维护难度,降低了其 通用性。
相较 XML,RDF 表达上 简洁易懂,且 增加通用性的同时,同样可做到 与 领域无关。但是与XML一样,其仍然存在一个 规范化 的 问题。对于同一个领域,不同的团队 可以 做出多个版本的 RDF图谱,由于 没有统一的 术语表达,导致,知识集成 变得 非常复杂。
OWL与RDF相比,最突出的一点是,其可更为具体的表达 限制条件,如:OWL 可以定义值域值 有且仅有1个唯一值,但是RDF则无法精确 表达 值域值 的 唯一性。

总结一下,语义网 相较于 语义网络,对 节点和边的 描述 进行了标准化,利用统一的形式对知识进行描述和关联,能更更加方便的进行知识的共享和利用。

三,数值化表示
知识表示的最终目标是为了便于 进行 语义计算,从而完成 知识应用。
逻辑表示,图谱表示 两种知识表示方法,其各种概念的种类和关系,都是认为总结的结果,难免遗漏,且无法挖掘 未知知识。
而数值表示,则避免了上述两种 知识表示方法 的缺陷,它通过 数值计算 来分析 各个 item,event,…,等之间的语义关系。
知识的数值化表示 经历了 两个 发展阶段:
step1:特征工程
在这个阶段,工程人员 根据自己的以往经验 来 定义一个Item 由 哪些特征 进行描述 最为合适,其特征选取的好坏直接会影响到 机器学习的结果。此外,对于item特征的定义,往往 需要相关专业知识,从而 进一步限制了 机器学习的 广泛应用。
step2:词的向量化表示
随着深度学习的发展,人们研究出了 词的向量化表示 方法,其基本理念认为,上下文相似的 词 之间 其在 表意 上 也很 相近。根据这种思想,学者研究出了 词数值表示的 方法:选取 articles 作为 神经网络的 训练预料,其学习步骤具体如下:
首先对articles 分句,后对sentences进行分词,制作traindata(x,y),x可为 一句话 中的某一词 named as center-word,y可为这个center-word 两边的上下文词组 named as content;
构建神经网络NN,将input定义为 center-word,output定义为content的出现概率;
模型构建完成:center-word -> NN -> content;随机初始化 词的向量表示,以及 NN 中的参数, 反复迭代,直到loss function 满足条件。此时,各个 word-vector即为其最后的数值化表示结果。
通过组合words-vector,我们可以进一步得到 句子的向量化表示,文本的向量化表示…
基于词的向量化表示(词分布表示),我们可以通过词向量间的计算,来判断 一段关系是否成立 ?(x,y),或者 填充 一段关系中 缺失的槽位 R(x,?)。基于 此种理念 完成 知识推理 任务。这种推理方式 实际上 是 判断 某个词计算结果 与 候选项 间 匹配度 的过程。

除上述 通过 词义数值计算 的方式,进行 知识推理 以外,也可通过 直接对知识图谱进行数值化表示,而完成推理过程。
知识图谱数值化表示:其方法有2类:张量分解模型 , 基于能量函数的模型;
张量分解模型
利用张量分解 来 数值化 知识图谱,并不涉及 词的数值化表示,这种方法简单粗暴的 将现有知识图谱 看作是 一个 三维矩阵,矩阵中的各个点,值为0或1,代表一种关系在知识图谱中的存在与否,如果知识图谱中有某种关系,则其坐标点的value=1,否则value=0。
基于上述方法构建好 三维矩阵X后,对X进行张量分解:X=A’RA,这里的张量分解 其实质 也是 最小化 损失函数的过程,首先初始化A 和 R,然后一直迭代更新矩阵值,直到loss=X-A’RA,足够小,此时的A,R 即为 X 的分解结果。
利用计算得到的A,R,重新计算 知识图谱 的 数值表示(三维矩阵),根据各个坐标点的 概率值,判断 此种关系 是否存于 知识图谱,借此,完成知识推理。
基于能量函数的模型:
在这种模型中需要用到词的向量化表示,且 需定义一个 能量函数 f(),通过f(x,y)的计算结果 来判定 x,y是否具有关系。
在这一种 知识图谱的数值化表示 中,其求解量为f()的各个参数。
损失函数可以定义为 loss = | f(+) + r - f(-)|,其中 f(+)为 正样本的能量值,f(-)为 负样本的能量值,
正样本:知识图谱中的 关系对;
负样本:随机shuffle知识图谱中的关系对,生成的 非关系对;
训练时,随机初始化f()的各个参数,以 生成的 正样本,负样本为traindata,反复迭代,直到所求loss 满足 定义的 threshold,将此时的参数值作为f()的最终结果。
此时,知识推理过程 即转变为 对 f(x,y)的求解过程。

概括,数值化表示中 知识的推理方式 有3 中:
1,利用词向量表示,直接计算 元素间的语义关系;
2,利用张量分解,重构知识图谱三维矩阵,知识图谱的最终构建结果,即为知识推理的结果;
3,求解能量函数,利用能量函数 和 词的向量化表示,计算 元素间的语义关联;

Reference:知识图谱 赵军

[ todiveinto] 图论,概率图,图算法(随机游走,网络流,频繁子图的挖掘);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sarah ฅʕ•̫͡•ʔฅ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值