人工智能导论-第2章 知识表示

发布于 2024-12-19  50 次阅读


第2章 知识表示

  • 知识 是人工智能最重要的部分,而知识则是由 概念 组成。 概念是人类知识世界的基本单元
• 如果没有对应的概念,那么我们很难甚至不可能将自己的想法表达出来。
• 因此,要想表达知识,能够准确表达概念

  ‍

经典概念理论

  • 所谓概念的精确定义,就是可以 给出一个命题 ,亦称为概念的经典定义方法:在这样的概念定义中,对象属于或者不属于这个概念,是一个 二值问题

  是/否

  • 一个经典概念由三部分组成: 概念名、概念的内涵表示、概念的外延表示。

  ◼ 概念名
• 用一个词语来表示,属于符号世界或者认知世界。

  ◼ 概念的内涵表示
• 用命题(非真即假的陈述句)表示;
• 反映和揭示概念的本质属性;
• 是人类主观世界对概念的认知,可存在于人的心智之中,属于心智世界。

  ◼ 概念的外延表示
• 由概念相对应的具体实例组成的集合。

  经典概念大多隶属于科学概念

  • 如果我们限定概念都是经典概念,则既可以使用其内涵表示进行计算(即所谓的数理逻辑),也可以使用其外延表示进行计算(对应着集合论

  ‍

  命题是一个非真即假的陈述句,其真假判断结果称为命题的真值(True 或 False,数理逻辑中用“1”表示真,“0”表示假)

  简单命题: 不能再分解 的命题;命 题逻辑中的 基本单位。

  复合命题:通过逻辑 联结词(否定联结词、 合取联结词、析取联 结词、蕴含联结词、 等价联结词等)联结 而成的命题。

  ‍

数理逻辑之命题逻辑

  否定联结词 ﹁

  等价联结词 $\Leftrightarrow$

  合取联结词 ∧

  析取联结词 ∨

  蕴含联结词 →

  只有当 p 为真且 q 为假的时候,p→q 才会为假。

  ‍

谓词逻辑

  用谓词逻辑即可表示事物的状态、属性和概念等事实性的知识,也可 表示事物间具有因果关系的规则性知识

  ➢ 用大写英文字母 F,G 等(也可以是多个字母),后跟括号

  与变元来表示

  F(x):x 是人。 G(x,y):x 和 y 是兄弟。

  ➢ N 元谓词:含有 N 个变元。例如:

  F(x)是一个一元谓词,G(x,y)是二元谓词。

  ‍

  量词(quantifier)

  ‍

  全称量词(universal quantifier)( $\forall$ x):“对个体域中的所 有(或任一个)个体 x ”。“所有的”,“全部的” 存在量词(existential quantifier)( $\exists$ x):“在个体域中存在 个体 x ”。 “有一些”,“某些的”

  ‍

  例题 1

  将下列命题在谓词逻辑中用零元谓词符号化,并讨论其真值。

  (a)8 是质数;

  (b)如果 3 大于 4,则 2 大于 6。

  解:

  (a)设一元谓词 P(x)为“x 是质数”,则“8 是质数”可符号化为零元 谓词 P(8),真值为假。

  (b)设二元谓词 G(x, y)为“x 大于 y”,则“如果 3 大于 4,则 2 大于 6”符号 化为零元谓词 G(3, 4) ⇒ G(2, 6),由于 G(3, 4)为假,所以该命题为真。

  有时将 P(8)、G(3, 4)这样不包含个体变项的谓 词称做零元谓词,当赋予谓词确定含义时零元
谓词为命题。因而可将命题看成是特殊的谓词。

  将一个用自然语言描述的 命题表示成谓词公式的形式,称为谓词逻辑中的自然语言形式化。 基本方法如下:

  • (1)首先要将问题分解成一些原子命题和逻辑联结符;
  • (2)之后分解出各个原子命题的个体词、谓词和量词;
  • (3)按照合式公式的表示规则翻译出自然语句。

  ‍

第一步:分解成原子命题和逻辑联结符

自然语言句子通常包含多个简单的陈述,这些简单的陈述就是原子命题。 逻辑联结符(例如:与、或、非、蕴含、等价)连接这些原子命题,形成复杂的句子结构。 第一步的关键是找出这些原子命题和它们之间的关系。

例子:

“如果今天下雨,而且我带了伞,那么我就不会淋湿。”

我们可以分解成以下原子命题:

  • P: 今天下雨
  • Q: 我带了伞
  • R: 我不会淋湿

句子中的逻辑关系是:如果 P 且 Q,则 R。 这可以用逻辑联结符表示为:(P ∧ Q) → R

第二步:分解出各个原子命题的个体词、谓词和量词

这一步需要更深入地分析每个原子命题的内部结构。

  • 个体词 (Individual Constant/Variable): 代表句子中谈论的对象。 例如,"我","今天","这把伞" 等。 有时候,个体词可以隐含在句子中,需要我们根据语境补充。
  • 谓词 (Predicate): 描述个体词的性质或个体词之间的关系。 谓词通常是一个动词或形容词,后面跟着括号,括号里是谓词所作用的个体词。
  • 量词 (Quantifier): 表示数量,例如 "所有" (∀),"存在" (∃)。 量词通常修饰谓词,表示谓词作用于多少个个体。

让我们回到之前的例子,并进一步分解:

  • P: 今天下雨 —— 可以表示为 Rain(today)​,其中 Rain​ 是谓词,today​ 是个体词。
  • Q: 我带了伞 —— 可以表示为 HaveUmbrella(me)​,其中 HaveUmbrella​ 是谓词,me​ 是个体词。
  • R: 我不会淋湿 —— 可以表示为 NotWet(me)​,其中 NotWet​ 是谓词,me​ 是个体词。

第三步:按照合式公式的表示规则翻译出自然语句

将第一步和第二步的结果结合起来,使用谓词逻辑的符号表示整个句子。 这需要遵循谓词逻辑的语法规则,确保公式是合式的。

结合之前的例子,最终的谓词逻辑公式为:

(Rain(today) ∧ HaveUmbrella(me)) → NotWet(me)

另一个例子:

“所有的人都喜欢音乐。”

  • 原子命题: 所有的人都喜欢音乐 (这是一个整体,无法再细分)
  • 个体词: 人 (我们可以用变量 x 代表)
  • 谓词: 喜欢音乐 (我们可以用 LikesMusic(x)​ 表示)
  • 量词: 所有 (∀)

因此,这个句子的谓词逻辑表示为:

∀x (Person(x) → LikesMusic(x))​ (这里我们假设 Person(x)​ 表示 x 是人)

总结:

将自然语言形式化成谓词逻辑公式是一个需要仔细分析和理解的过程。 关键在于:

  1. 识别原子命题和逻辑联结符: 将复杂的句子分解成简单的陈述及其逻辑关系。
  2. 识别个体词、谓词和量词: 找出句子中描述的对象、性质/关系和数量。
  3. 构建合式公式: 使用谓词逻辑的符号和规则,将所有成分组合成一个合法的公式。

  ‍

  集合:具有某种特定属性的对象的整体。这些对象称为元素或成员。 ➢ 通常用大写字母表示集合,用小写字母表示元素。 集合的表示方法: ➢ 列举法

  • 列出集合中的所有元素,花括号中的元素不规定顺序并用逗号隔开。 例如:A={a,b,c} ➢ 描述法

  • 用谓词 P(x)表示 x 具有性质 P,用{x|P(x)}表示具有性质 P 的集合。 例如:P(x):x 是小写字母 A= {x|P(x)} ={a,b,c,d,e,f,g,h,…,x,y,z}

  ‍

  ‍

知识的概念

  知识:把有关信息关联在一起所形成的信息结构

  1.相对正确性

  1. 不确定性
  2. 可表示性与可利用性

  ‍

状态空间表示法

  ❑ 状态空间表示法就是 以 “ 状态空间 ” 的形式 来 表 示问题及其搜索过程的一种方法。

  ❑ 状态空间表示法是人工智能中 最基本的形式化方 法,是讨论问题求解技术的基础。

  ‍

  状态空间的四元组表示:(S, O, S₀, G)

  这个四元组定义了整个问题求解的环境:

  • S (状态集合): 这是所有可能状态的集合。 每个状态代表问题在某个时刻的具体情况。 状态通常用状态变量来描述。 状态变量就像问题的“属性”,它们的取值决定了当前的状态。

    • 例子: 考虑一个八数码难题。状态变量可以是九个格子的数字排列。 那么,一个状态就是一个具体的九个数字的排列,例如:[1, 2, 3, 4, 8, 0, 7, 6, 5]​ (其中 0 代表空格)。 S 就包含了所有可能的九个数字排列。
  • O (操作算子集): 这是可以执行的一组操作,这些操作可以将系统从一个状态转换到另一个状态。 操作算子定义了状态之间的转移关系。

    • 例子: 在八数码难题中,操作算子可以是“将空格向上移动”、“将空格向下移动”、“将空格向左移动”、“将空格向右移动”。 每个操作算子都会导致状态的变化。
  • S₀ (初始状态): 这是问题开始时的状态。 它是一个或多个状态的集合,通常只有一个初始状态。

    • 例子: 八数码难题的初始状态可以是 [1, 2, 3, 4, 0, 5, 6, 7, 8]​。
  • G (目标状态集合): 这是我们想要达到的状态,或一组状态。 它可以是一个具体的状态,也可以是一组满足特定条件的状态。

    • 例子: 八数码难题的目标状态可以是 [1, 2, 3, 8, 0, 4, 7, 6, 5]​。

  状态的描述:

  状态是问题求解过程中每一步问题状况的数据结构。 它通常用一组数据表示:

  ​S = {S₁, S₂, ...}

  • 状态变量: 每个 Sᵢ​ 都是一个状态,由一组状态变量的值确定。 每个状态变量代表问题的某个属性。 状态变量可以是各种数据类型,例如数字、布尔值、字符串、甚至更复杂的数据结构。
  • 具体状态: 当每个状态变量都赋予一个确定的值时,就得到一个具体的状态。
  • 数据结构: 任何类型的数据结构都可以用来描述状态,只要它方便问题求解。 程序中可以使用字符、数字、记录、数组、结构、对象等来表示状态。

  例子:一个简单的机器人导航问题

  假设一个机器人在一个 3x3 的网格中移动,目标是到达网格的右下角 (2, 2)。

  • S (状态集合): 所有可能的机器人位置,可以用坐标 (x, y) 表示,其中 0 ≤ x ≤ 2, 0 ≤ y ≤ 2。
  • O (操作算子集): {向上移动, 向下移动, 向左移动, 向右移动} (当然,需要考虑边界条件,机器人不能移动到网格之外)。
  • S₀ (初始状态): (0, 0) (机器人从左上角开始)
  • G (目标状态集合): {(2, 2)}

  状态空间图:

  状态空间可以用图来表示,其中节点代表状态,边代表操作算子。 求解问题就相当于在图中寻找从初始状态到目标状态的路径。 搜索算法,例如广度优先搜索、深度优先搜索、A* 搜索等,都可以用来在这个图中寻找路径。

image

  ‍

  ‍

2.1 产生式表示法

   产生式通常用于表示事实、 规则以及它 们的不确定性度量, 适合于表示事实性 知识和规则性知识。

  产生式表示法如今已被应用于很多领 域,成为人工智能中应用最广泛的一种 知识表示方法。

  ‍

  1. 确定性规则的产生式表示

    基本形式: IF P THEN Q

    或者: P → Q

    意味着: 如果前提 P 被满足,则结论 Q 成立或执行 Q 所规定的操作

  2. 不确定性规则的产生式表示

    基本形式: IF P THEN Q (置信度)

    或者: P → Q (置信度)

    例如: IF 发烧 THEN 感冒 (0.6)

  3. 确定性事实的产生式表示

    三元组表示:(对象,属性,值)

    或者:(关系,对象 1,对象 2)

    例: 老李年龄是 40 岁: (Li,age,40)
    老李和老王是朋友:(friend,Li,Wang)

  4. 不确定性事实的产生式表示

    四元组表示:(对象,属性,值,置信度)

    或者: (关系,对象 1,对象 2,置信度)

    例:老李年龄很可能是 40 岁:(Li,age,40,0.8)

    老李和老王不大可能是朋友:(friend,Li,Wang,0.1)

  ‍

  与蕴含式的主要区别

  蕴含式表示的知识只能是 精确 的,产生式表示的知识可 以是 不确定 的。

image

  ▪ 规则库 : 用于描述相应领域内知识的产生式集合。

  ▪ 综合数据库 (事实库、上下文、黑板等):一个用于 存放问题求解过程中各种当前信息的数据结构。

  ▪ 控制系统 (推理机构):由一组程序组成,负责整个 产生式系统的运行,实现对问题的求解。

  1、推理

  按一定的策略,从规则库中选择与综合数据库中的已知 事实进行匹配。

  ⚫ 所谓 匹配 是指**把规则的前提条件与综合数据库中的已知事实进行比较。**

   ⚫ 如果两者一致或者近似一致且满足预先规定的条件,则称

  匹配成功,相应的规则可被使用;否则称为匹配不成功。

  2、冲突消解

   3、执行规则

   4、检查推理终止条件

image

image

  设已知初始事实存放在综合数据库中: 该动物身上有:暗斑点,长脖子,长腿,奶,蹄

  ‍

image

  产生式表示法的优点

  1. 自然性:符合因果形式,是最重要最广泛使用的形式。
  2. 模块性:各条规则相互独立。
  3. 有效性:即可表示确定性的知识,也可表示启发式知识,又可 表示过程知识。
  4. 统一性:规则具有统一的格 式。

  ‍

框架表示法

  框架为知识的结构化表达提供了一种自然 的表示方法,即:数据结构。 框架可与过程性知识(产生式规则)结合

  框架的核心组成部分:

  一个框架通常由以下几个部分组成:

  • 框架名 (Frame Name): 框架的标识符,用于区分不同的框架。 例如,“鸟”,“飞机”,“汽车”。
  • 槽 (Slot): 框架的属性或特征。 每个槽描述了框架的一个方面。 例如,对于“鸟”这个框架,槽可以包括:“颜色”、“翅膀”、“喙”、“叫声”等等。
  • 槽值 (Slot Value): 槽的具体值。 例如,“颜色”槽的值可以是“蓝色”、“红色”等等。 槽值可以是简单的值(例如,字符串、数字),也可以是更复杂的结构(例如,指向另一个框架的指针)。
  • 默认值 (Default Value): 槽的预设值,当没有提供特定值时使用。 例如,“鸟”框架的“翅膀”槽的默认值可以是“有”。
  • 继承 (Inheritance): 框架之间可以存在继承关系。 子框架继承父框架的槽和槽值,并可以添加自己的槽或修改继承的槽值。 例如,“企鹅”框架可以继承“鸟”框架的属性,并添加“不会飞”这样的特殊属性。
  • 过程性知识 (Procedural Attachment): 框架可以包含过程性知识,例如产生式规则或程序代码,用于处理特定事件或进行推断。 例如,“鸟”框架可以包含一个规则:“如果发现鸟的翅膀受伤,则判断其生存能力降低”。

  框架表示法的优势:

  • 结构化: 框架以一种结构化的方式组织知识,使得知识易于理解和管理。
  • 层次化: 框架支持继承机制,可以有效地表示具有层次结构的知识。
  • 默认值: 默认值机制可以处理不完整信息,提高知识表示的效率。
  • 过程性知识集成: 框架可以结合过程性知识,实现更复杂的知识推理和应用。
  • 易于理解: 框架的表示方式直观易懂,方便人们理解和使用。

  框架表示法的例子:

  让我们用一个简单的例子来说明框架表示法:

  假设我们想表示“鸟”和“企鹅”的知识。我们可以使用以下框架:

  框架:鸟

  • 框架名:鸟
  • 槽:颜色 值:多种颜色(默认值:棕色)
  • 槽:翅膀 值:有(默认值:有)
  • 槽:喙 值:有(默认值:有)
  • 槽:叫声 值:鸣叫(默认值:鸣叫)
  • 槽:飞行能力 值:会飞(默认值:会飞)

  框架:企鹅

  • 框架名:企鹅
  • 继承:鸟
  • 槽:飞行能力 值:不会飞

image

  ‍

特点

  1.结构性

  2.继承性

  3.自然性

  ‍

2.3 问题归约表示

  问题归约表示法的三个核心组成部分和其实质。

   (1) 初始问题描述:

  这是整个问题归约过程的起点。 它清晰、完整地描述了需要解决的问题。 这个描述必须足够精确,以便能够确定问题是否已被解决,以及如何将它分解成子问题。 它可以是自然语言描述,也可以是更形式化的描述,例如数学公式或逻辑表达式。 关键在于,它必须无歧义地定义了目标状态。

  例子: “将 100 个物品装进尽可能少的箱子中,每个箱子的最大容量是 20。”

   (2) 一套把问题变换为子问题的操作符:

  这套操作符定义了如何将一个问题分解成更小的子问题。 它们是问题分解的核心机制。 这些操作符可以是:

  • 函数: 将一个问题作为输入,并返回一个或多个子问题。
  • 规则: 描述在什么条件下,一个问题可以被分解成哪些子问题。
  • 算法: 一个更复杂的算法,用于确定如何最佳地分解问题。

  这些操作符必须是有效的,也就是说,它们必须能够将问题分解成更简单的子问题,并且这些子问题的解能够组合起来得到原始问题的解。

  例子: 对于装箱问题,操作符可以是:“选择一个物品,尝试将其放入已有的箱子中,如果放不下,则创建一个新的箱子”。

   (3) 一套本原问题描述:

  这些是简单到可以直接求解的问题。 它们是问题归约过程的终点。 本原问题通常非常简单,可以直接给出答案,不需要进一步分解。 它们代表了问题分解的基准。

  例子: 对于装箱问题,本原问题可以是:“只有一个物品需要装箱”。 这个本原问题很容易解决:只需要创建一个箱子,并将物品放入其中。

  问题归约的实质:逆向推理

  问题归约的实质是从目标(初始问题)出发,逆向推理,逐步分解问题。 这个过程就像构建一棵树,初始问题是树根,子问题是树枝,本原问题是树叶。 通过逆向推理,我们构建了从初始问题到本原问题的路径,然后通过正向求解本原问题,并逐步组合它们的解,最终得到初始问题的解。 这是一种自顶向下的策略。

  ‍

2.4 语义网络法

  语义网络的核心组成部分是:

  • 节点 (Node): 代表概念或实体。 例如,“狗”、“猫”、“动物”、“颜色”、“红色”等等。 节点可以是具体的个体,也可以是抽象的概念。
  • 边 (Edge): 代表概念之间的关系。 边通常用一个标签来表示关系的类型。 例如,“is-a”(属于)、“has-part”(具有部分)、“has-property”(具有属性)、“located-in”(位于)等等。

  例 用一个语义网络表示下列命题。

  (1) 树和草都是植物;

  (2) 树和草是有根有叶的;

  (3) 水草是草,且长在水中;

  (4) 果树是树,且会结果;

  (5) 苹果树是果树中的一种,它结苹果。

  ‍

  ‍

  分析: 问题涉及的对象有: 植物、树、草、水草、果树、苹果树

   各对象的属性分别为:

  树和草的属性:有根、有叶;

   水草的属性:长在水中;

  果树的属性:会结果;

  苹果树的属性:结苹果。

image

  例子:

  考虑一个简单的语义网络,表示“一只红色的狗”。 它可以表示为:

狗 --is-a--> 动物
狗 --has-property--> 颜色
颜色 --is-a--> 红色

  在这个例子中,“狗”、“动物”、“颜色”、“红色”都是节点,“is-a”和“has-property”是边。

  语义网络的优点:

  • 直观性: 语义网络的图结构非常直观,易于理解和使用。
  • 表达能力: 语义网络能够表达多种类型的知识,包括事实、规则和概念之间的关系。
  • 可扩展性: 语义网络可以很容易地扩展,以包含新的概念和关系。
  • 易于推理: 一些简单的推理任务,例如继承和匹配,在语义网络上很容易实现。

  语义网络的缺点:

  • 表达能力的局限性: 语义网络在表达复杂的逻辑关系和不确定性方面存在局限性。 它难以表达否定、蕴含等复杂的逻辑关系。
  • 语义歧义: 关系标签的含义可能存在歧义,需要仔细定义。 例如,“has-part”关系在不同的上下文中可能具有不同的含义。
  • 知识冗余: 语义网络中可能存在知识冗余,因为相同的信息可能在多个地方重复出现。
  • 缺乏形式化: 语义网络通常缺乏形式化的语义,这使得难以进行严格的逻辑推理。

  语义网络的应用:

  语义网络广泛应用于各种领域,包括:

  • 自然语言处理: 用于理解自然语言文本的语义。
  • 知识工程: 用于构建知识库和专家系统。
  • 信息检索: 用于改进信息检索的效率和准确性。
  • 本体工程: 用于构建本体,描述特定领域的概念和关系。

  语义网络的改进:

  为了克服语义网络的局限性,人们提出了一些改进方法,例如:

  • 引入更丰富的关系类型: 使用更精细的关系类型来表达更复杂的语义。
  • 使用逻辑语言: 将语义网络与逻辑语言结合起来,提高表达能力和推理能力。
  • 引入不确定性: 在语义网络中引入不确定性表示,以处理不确定性知识。

  ‍


人生到处知何似,应似飞鸿踏雪泥。