知识表示与推理
1. 什么是知识与知识表示?
知识表示 (Knowledge Representation - KR) 是指用机器表示知识的可行性、有效性的一般方法,可以看作是将知识符号化并输入到计算机的过程和方法。
2. 自然语言的层级与逻辑基础
3. 命题逻辑 (Propositional Logic)
3.1. 语法 (Syntax)
- 原子命题 (Atomic Proposition): 由单个命题词组成,每个命题词代表一个或为真或为假的命题,记作 P,Q 等。
- 复合命题 (Compound Proposition): 通过逻辑连接词连接命题而形成的。
- Example: “天空是蓝色的并且草地是绿色的” (P∧Q)
- 逻辑连接词 (Logical Connectives):
- 否定 (Negation): ¬ (非)
- 合取 (Conjunction): ∧ (且)
- P∧Q: 天空是蓝色的且草地是绿色的。
- 析取 (Disjunction): ∨ (或)
- P∨Q: 天空是蓝色的或草地是绿色的。
- 蕴涵 (Implication): → (如果…那么…)
- P→Q: 如果天空是蓝色的,那么草地是绿色的。
- 等价 (Equivalence / Biconditional): ↔ (当且仅当…)
- P↔Q: 天空是蓝色的当且仅当草地是绿色的。
3.2. 语义 (Semantics)
- 语义定义了用于判定特定模型中的语句真值的规则。
- 每个原子语句的真值在模型中被直接指定。
- 复合语句的真值可以通过递归计算得到(通常使用真值表)。
- 永真命题 (Tautology): 如 P∨¬P。
- 永假命题 (Contradiction): 如 P∧¬P。
3.3. 命题演算形式系统 PC (Propositional Calculus)
- 证明 (Proof): 从公理和已知前提,通过推理规则推导出结论的过程。
- 演绎 (Deduction): 一种证明方式。
- 定理证明示例: ⊢PCA→A (证明 A→A 是一个定理)。
4. 谓词逻辑 (Predicate Logic / First-Order Logic - FOL)
4.1. 语法 (Syntax)
- 个体 (Individuals): 客观存在的实体,可以是具体物体或抽象概念。
- 谓词 (Predicates): 用于描述或判断个体的性质或关系。
- Example: “天空是蓝色的” →Blue(sky)
- Example: “a是b的朋友” →Friend(a,b)
- 符号 (Symbols):
- 常量符号 (Constant Symbols): 表示对象,如
lindaiyu。
- 谓词符号 (Predicate Symbols): 表示关系,如
Parent, Female。
- 函词符号 (Function Symbols): 表示函数,如
JadePendantOf(person)。
- 项 (Terms): 指代对象的逻辑表达式。
- 常量符号是项:
lindaiyu。
- 由函词和参数构成的是复合项:
JadePendantOf(lindaiyu) (林黛玉的玉佩)。
- 原子语句 (Atomic Sentences): 由指代对象的项和指代关系的谓词构成。
- Example:
Female(lindaiyu) (林黛玉是女性)。
- 复合语句 (Complex Sentences): 由原子语句和逻辑连接词构造。
- Example: Father(linruhai,lindaiyu)→¬Female(linruhai)
- 量词 (Quantifiers):
- 全称量词 (Universal Quantifier): ∀ (对于所有的…)
- ∀x Child(x)→Likes(x,icecream) (所有小孩子都喜欢冰淇淋)
- 存在量词 (Existential Quantifier): ∃ (存在…使得…)
- ∃x Child(x)∧¬Likes(x,icecream) (存在小孩子不喜欢冰淇淋)
- 变量 x 被称为量词约束的变量。没有自由变量的项称为基项 (ground term)。
4.2. 语义 (Semantics)
- 解释 (Interpretation): 给个体词在个体域中指定具体的个体,给谓词指定具体的性质或关系,以及给量词指定个体域并判定其范围。
- Example: 谓词 F 可以解释为“高”。
- 置换 (Substitution): 利用项(常量、变量或函数)对变量进行替换的过程,形如 {v1/t1,v2/t2,…,vn/tn}。
- vi 是互不相同的变量。
- ti 是项。
- vi/ti 表示用 ti 置换 vi。合法前提:ti=vi, vi 不出现在 ti 中,不出现循环置换。
- 公式真值判断:
- 原子公式:根据解释直接判断。
- 复合公式:根据逻辑联结词规则和子命题真值判断。
- 含 quantifier 公式:根据量词定义和个体域判断。
4.3. 逻辑蕴涵与等价
- 逻辑蕴涵 (Logical Entailment): 如果在一个特定的解释下,公式 A 为真必然导致公式 B 也为真,则 A 蕴含 B (A⊨B 或 A→B 在某些上下文中)。
- 可用反证法证明:假设 A 真 B 假,推导出矛盾。
- 逻辑等价 (Logical Equivalence): 如果两个公式 A 和 B 在所有可能的解释下都取相同的真值,则 A 和 B 等价 (A⇔B 或 A≡B)。
- 证明方法:真值表法 (对命题逻辑),逻辑等价变换法 (A⊨B 且 B⊨A)。
4.4. 谓词逻辑的常用推理规则和公理
5. 逻辑推理方法
5.1. 演绎、归纳与溯因
- 演绎推理 (Deductive Reasoning): 从一般原理推导出个别结论。 (e.g., 三段论)
- 大前提: 足球运动员身体强壮。
- 小前提: 高波是足球运动员。
- 结论: 高波身体强壮。
- 归纳推理 (Inductive Reasoning): 从个别案例推导出一般规律。
- 完全归纳: 检查全部产品合格 ⇒ 该厂产品合格。
- 不完全归纳: 检查部分样品合格 ⇒ 该厂产品合格 (结论不一定为真)。
- 溯因推理 (Abductive Reasoning): 从结论和规则出发,推测可能的前提 (寻求最佳解释)。
5.2. 自然演绎 (Natural Deduction)
从一组已知为真的事实出发,运用经典逻辑的推理规则推出结论的过程。
6. 归结原理 (Resolution Principle)
6.1. 基本概念
- 文字 (Literal): 一个原子公式 (P) 或其否定 (¬P)。
- P: 正文字 (Positive Literal)
- ¬P: 负文字 (Negative Literal)
- 子句 (Clause): 任何文字的析取 (disjunction)。单个文字也是子句。
- Example: P∨¬Q∨R, 通常写作 (P,¬Q,R)。
- 空子句 (Empty Clause): 不包含任何文字的子句,记作 NIL 或 □。空子句是永假的,不可满足的。
- 子句集 (Clause Set): 由子句构成的集合,表示子句间的合取 (conjunction)。
- Example: {(P,¬Q),(¬P,R)} 表示 (P∨¬Q)∧(¬P∨R)。
6.2. 归结式 (Resolvent)
对于任意两个子句 C1 和 C2,若 C1 中有一个文字 L,而 C2 中有一个与 L 成互补的文字 ¬L,则分别从 C1 和 C2 中删去 L 和 ¬L,并将其剩余部分组成新的析取式。这个新的子句被称为 C1 和 C2 关于 L 的归结式。C1 和 C2 则是该归结式的亲本子句 (parent clauses)。
- 符号表示: α∨βL∨α,¬L∨β
- 定理: 两个子句的归结式是这两个子句(作为集合)的逻辑推论。
- {(P,Q1),(¬P,Q2)}⊨(Q1,Q2)
- 特殊情况: 子句 L 和 ¬L 的归结式为空子句 (NIL)。
6.3. 鲁宾逊归结原理 (Robinson’s Resolution Principle)
- 检查子句集 S 中是否包含空子句。若包含,则 S 不可满足。
- 若不包含,则在 S 中选择合适的子句进行归结,将归结式加入 S。
- 一旦归结出空子句 (NIL),就说明原始子句集 S 是不可满足的。
6.4. 命题逻辑中的归结推理过程
- 把前提集 KB 转化成子句集表示,得到 SKB。
- 把待证明命题 α 的否定式 ¬α 也转化成子句集表示 S¬α。
- 构造新的子句集 S=SKB∪S¬α。
- 对子句集 S 反复应用归结规则,直至导出空子句 (NIL)。若导出空子句,则证明 α 成立。
6.5. 谓词逻辑中的归结推理
在谓词逻辑中应用归结法,主要增加了两个复杂性:
- 公式转换: 将所有谓词公式(包括 KB 和 ¬α)化为子句范式 (Clausal Form / Conjunctive Normal Form - CNF)。
- 合一 (Unification): 对含有变量的子句进行归结时,需要找到合适的变量置换使得互补的文字能够匹配。
6.5.1. 合一 (Unification)
6.5.2. 谓词公式化为子句集 (CNF Conversion / Skolemization)
6.6. 可判定性 (Decidability) 与 完备性 (Completeness)
- 可判定问题: 如果存在一个算法,该算法用于求解该类问题时,可在有限步内停止,并给出正确的解答。
- 谓词逻辑 (FOL): 是半可判定的 (semi-decidable)。
- 如果一个语句集是不可满足的,那么归结过程保证在有限步骤内推导出空子句 (归结是反驳完备的 - refutation complete)。
- 如果语句集是可满足的,归结过程可能永不停止 (无法证明其可满足性)。
- “There can be no procedure to decide if a set of clauses is satisfiable.”
6.7. 应用归结原理求解问题 (问答系统)
可以通过引入一个特殊的 Answer 谓词来从证明中提取答案。
- 已知前提 F 化为子句集 S。
- 待求解的问题 P(x) (假设我们想知道哪个 x 满足 P),将其否定并与
Answer 构成析取式: ¬P(x)∨Answer(x)。
- 将 ¬P(x)∨Answer(x) 化为子句并加入 S,得到 S′。
- 对 S′ 应用归结原理。
- 若得到归结式 Answer(t),则 t 就是问题的答案。
7. 历史贡献
课后作业
答案(仅供参考)
令: E1=P(a,x,h(g(z))) E2=P(z,h(y),h(y))
我们寻找一个替换 σ 使得 σ(E1)=σ(E2)。
比较第一个参数: a (常量) 和 z (变量)。 σ1=z/a。 应用 σ1:
σ1(E1)=P(a,x,h(g(a)))
σ1(E2)=P(a,h(y),h(y))
比较第二个参数: x (变量) 和 h(y) (函数项)。 σ2=z/a,x/h(y)。
应用 σ2:
σ2(E1)=P(a,h(y),h(g(a)))
σ2(E2)=P(a,h(y),h(y))
比较第三个参数: h(g(a)) 和 h(y)。 函数符号 h 相同。最终的替换是 σ3=z/a,x/h(g(a)),y/g(a)。
应用 σ3:
σ3(E1)=P(a,h(g(a)),h(g(a)))
σ3(E2)=P(a,h(g(a)),h(g(a)))
答案(仅供参考)
将前提和结论翻译成谓词逻辑公式:
前提1 (P1): 有理数都是实数。 ∀x(Q(x)→R(x))
前提2 (P2): 无理数也都是实数。 ∀x(W(x)→R(x))
前提3 (P3): 有些数不是实数。 ∃x(¬R(x))
结论 (C): 有些数既不是有理数,也不是无理数。 ∃x(¬Q(x)∧¬W(x))
将结论否定 (¬C):
¬C≡¬(∃x(¬Q(x)∧¬W(x))) ≡∀x¬(¬Q(x)∧¬W(x)) ≡∀x(Q(x)∨W(x)) (根据德摩根定律)
所有公式(P1, P2, P3, ¬C)转换成子句形式:
P1: ∀x(Q(x)→R(x))
消除蕴含: ∀x(¬Q(x)∨R(x))
去掉全称量词 (变量 x 保持为变量): ¬Q(x)∨R(x)
子句 C1: ¬Q(x),R(x)
P2: ∀x(W(x)→R(x))
消除蕴含: ∀x(¬W(x)∨R(x))
去掉全称量词: ¬W(x)∨R(x)
子句 C2: ¬W(x),R(x)
P3: ∃x(¬R(x))
Skolem化:引入一个Skolem常量(例如,c)来代替存在量词绑定的变量 x。 ¬R(c)
子句 C3: ¬R(c)
¬C:∀x(Q(x)∨W(x))
去掉全称量词: Q(x)∨W(x)
子句 C4: Q(x),W(x)
用归结法从子句集 {C1, C2, C3, C4} 推导空子句 (□):
我们当前的子句集是:
¬Q(x),R(x)
¬W(x),R(x)
¬R(c)
Q(x),W(x)
现在进行归结:
步骤 1: 归结 C1 和 C3。 C1: ¬Q(x),R(x) C3: ¬R(c) 为了归结 R(x) 和 ¬R(c),我们需要一个最一般合一项 (MGU) σ1=x/c。 应用 σ1 后,得到新的子句 C5:
C5: ¬Q(c) (来自 C1, C3)
步骤 2: 归结 C2 和 C3。 C2: ¬W(x),R(x) C3: ¬R(c) 使用 MGU σ2=x/c。 应用 σ2 后,得到新的子句 C6:
C6: ¬W(c) (来自 C2, C3)
步骤 3: 归结 C4 和 C5。 C4: Q(x),W(x) C5: ¬Q(c) 使用 MGU σ3=x/c。 应用 σ3 后,得到新的子句 C7:
C7: W(c) (来自 C4, C5)
步骤 4: 归结 C6 和 C7。 C6: ¬W(c) C7: W(c) 这两个子句互补。 得到空子句: □ (来自 C6, C7)
结论:
由于我们从前提和结论的否定推导出了空子句 (□),这表明前提和结论的否定是不可满足的(矛盾的)。因此,原始论断是有效的。
答案(仅供参考)
将结论否定
¬C≡¬∃x(Student(x)∧Happy(x))≡∀x¬Student(x)∨¬Happy(x)≡¬Student(x)∨¬Happy(x),设为子句 C4
归结 C1, C4,得到 C5:
¬Happy(john)
归结 C2, C4, 得到 C6:
¬Happy(jane)
归结 C3, C5, 得到 C7:
Happy(jane)
归结 C6, C7, 得到空子句 □,因此前提和结论的否定是不可满足的。所以原始结论有效。