知识表示与推理

1. 什么是知识与知识表示?

知识表示 (Knowledge Representation - KR) 是指用机器表示知识的可行性、有效性的一般方法,可以看作是将知识符号化并输入到计算机的过程和方法。


2. 自然语言的层级与逻辑基础


3. 命题逻辑 (Propositional Logic)

3.1. 语法 (Syntax)

  • 原子命题 (Atomic Proposition): 由单个命题词组成,每个命题词代表一个或为真或为假的命题,记作 P,QP, Q 等。
    • Example: “天空是蓝色的” (PP)
  • 复合命题 (Compound Proposition): 通过逻辑连接词连接命题而形成的。
    • Example: “天空是蓝色的并且草地是绿色的” (PQP \land Q)
  • 逻辑连接词 (Logical Connectives):
    1. 否定 (Negation): ¬\neg (非)
      • ¬P\neg P: 天空不是蓝色的。
    2. 合取 (Conjunction): \land (且)
      • PQP \land Q: 天空是蓝色的且草地是绿色的。
    3. 析取 (Disjunction): \lor (或)
      • PQP \lor Q: 天空是蓝色的或草地是绿色的。
    4. 蕴涵 (Implication): \to (如果…那么…)
      • PQP \to Q: 如果天空是蓝色的,那么草地是绿色的。
    5. 等价 (Equivalence / Biconditional): \leftrightarrow (当且仅当…)
      • PQP \leftrightarrow Q: 天空是蓝色的当且仅当草地是绿色的。

3.2. 语义 (Semantics)

  • 语义定义了用于判定特定模型中的语句真值的规则。
  • 每个原子语句的真值在模型中被直接指定。
  • 复合语句的真值可以通过递归计算得到(通常使用真值表)。
  • 永真命题 (Tautology):P¬PP \lor \neg P
  • 永假命题 (Contradiction):P¬PP \land \neg P

3.3. 命题演算形式系统 PC (Propositional Calculus)

  • 证明 (Proof): 从公理和已知前提,通过推理规则推导出结论的过程。
  • 演绎 (Deduction): 一种证明方式。
  • 定理证明示例: PCAA\vdash_{PC} A \to A (证明 AAA \to A 是一个定理)。

4. 谓词逻辑 (Predicate Logic / First-Order Logic - FOL)

4.1. 语法 (Syntax)

  • 个体 (Individuals): 客观存在的实体,可以是具体物体或抽象概念。
  • 谓词 (Predicates): 用于描述或判断个体的性质或关系。
    • Example: “天空是蓝色的” Blue(sky)\rightarrow \text{Blue}(\text{sky})
    • Example: “a是b的朋友” Friend(a,b)\rightarrow \text{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)\text{Father}(\text{linruhai}, \text{lindaiyu}) \to \neg \text{Female}(\text{linruhai})
  • 量词 (Quantifiers):
    • 全称量词 (Universal Quantifier): \forall (对于所有的…)
      • x Child(x)Likes(x,icecream)\forall x \text{ Child}(x) \to \text{Likes}(x, \text{icecream}) (所有小孩子都喜欢冰淇淋)
    • 存在量词 (Existential Quantifier): \exists (存在…使得…)
      • x Child(x)¬Likes(x,icecream)\exists x \text{ Child}(x) \land \neg \text{Likes}(x, \text{icecream}) (存在小孩子不喜欢冰淇淋)
    • 变量 xx 被称为量词约束的变量。没有自由变量的项称为基项 (ground term)。

4.2. 语义 (Semantics)

  • 解释 (Interpretation): 给个体词在个体域中指定具体的个体,给谓词指定具体的性质或关系,以及给量词指定个体域并判定其范围。
    • Example: 谓词 FF 可以解释为“高”。
  • 置换 (Substitution): 利用项(常量、变量或函数)对变量进行替换的过程,形如 {v1/t1,v2/t2,,vn/tn}\{v_1/t_1, v_2/t_2, \dots, v_n/t_n\}
    • viv_i 是互不相同的变量。
    • tit_i 是项。
    • vi/tiv_i/t_i 表示用 tit_i 置换 viv_i。合法前提:tivit_i \neq v_iviv_i 不出现在 tit_i 中,不出现循环置换。
  • 公式真值判断:
    • 原子公式:根据解释直接判断。
    • 复合公式:根据逻辑联结词规则和子命题真值判断。
    • 含 quantifier 公式:根据量词定义和个体域判断。

4.3. 逻辑蕴涵与等价

  • 逻辑蕴涵 (Logical Entailment): 如果在一个特定的解释下,公式 AA 为真必然导致公式 BB 也为真,则 AA 蕴含 BB (ABA \models BABA \to B 在某些上下文中)。
    • 可用反证法证明:假设 AABB 假,推导出矛盾。
  • 逻辑等价 (Logical Equivalence): 如果两个公式 AABB 在所有可能的解释下都取相同的真值,则 AABB 等价 (ABA \Leftrightarrow BABA \equiv B)。
    • 证明方法:真值表法 (对命题逻辑),逻辑等价变换法 (ABA \models BBAB \models A)。

4.4. 谓词逻辑的常用推理规则和公理

  • 常用推理规则 (永真蕴涵式):

    1. 化简式: PQPP \land Q \Rightarrow P
    2. 附加式: PPQP \Rightarrow P \lor Q
    3. 析取三段论: ¬P,PQQ\neg P, P \lor Q \Rightarrow Q
    4. 假言推理 (Modus Ponens): P,PQQP, P \to Q \Rightarrow Q
    5. 拒取式 (Modus Tollens): ¬Q,PQ¬P\neg Q, P \to Q \Rightarrow \neg P
    6. 假言三段论: PQ,QRPRP \to Q, Q \to R \Rightarrow P \to R
    7. 二难推理: PQ,PR,QRRP \lor Q, P \to R, Q \to R \Rightarrow R
    8. 全称特化 (Universal Instantiation): (x)P(x)P(a)(\forall x)P(x) \Rightarrow P(a) (a 是个体域中任一个体)
    9. 存在特化 (Existential Instantiation): (x)P(x)P(a)(\exists x)P(x) \Rightarrow P(a) (a 是使 P(x) 为真的某个特定个体,通常引入新常量)
  • 谓词演算的公理模式 (Axioms for FOL):

    • AX(1.1): A(BA)A \to (B \to A)
    • AX(1.2): (A(BC))((AB)(AC))(A \to (B \to C)) \to ((A \to B) \to (A \to C))
    • AX(1.3): (¬A¬B)(BA)(\neg A \to \neg B) \to (B \to A)
    • AX2: vAAtv\forall v A \to A_t^v (t 对 A 中变元 v 可代入, Atv=A(t/v)A_t^v = A(t/v))
    • AX3: v(AB)(vAvB)\forall v (A \to B) \to (\forall v A \to \forall v B)
    • AX4: AvAA \to \forall v A (v 在 A 中无自由出现)
    • 推理规则模式仍为 Modus Ponens (rmpr_{mp}).

5. 逻辑推理方法

5.1. 演绎、归纳与溯因

  • 演绎推理 (Deductive Reasoning): 从一般原理推导出个别结论。 (e.g., 三段论)
    • 大前提: 足球运动员身体强壮。
    • 小前提: 高波是足球运动员。
    • 结论: 高波身体强壮。
  • 归纳推理 (Inductive Reasoning): 从个别案例推导出一般规律。
    • 完全归纳: 检查全部产品合格 \Rightarrow 该厂产品合格。
    • 不完全归纳: 检查部分样品合格 \Rightarrow 该厂产品合格 (结论不一定为真)。
  • 溯因推理 (Abductive Reasoning): 从结论和规则出发,推测可能的前提 (寻求最佳解释)。

5.2. 自然演绎 (Natural Deduction)

从一组已知为真的事实出发,运用经典逻辑的推理规则推出结论的过程。


6. 归结原理 (Resolution Principle)

6.1. 基本概念

  • 文字 (Literal): 一个原子公式 (PP) 或其否定 (¬P\neg P)。
    • PP: 正文字 (Positive Literal)
    • ¬P\neg P: 负文字 (Negative Literal)
  • 子句 (Clause): 任何文字的析取 (disjunction)。单个文字也是子句。
    • Example: P¬QRP \lor \neg Q \lor R, 通常写作 (P,¬Q,R)(P, \neg Q, R)
  • 空子句 (Empty Clause): 不包含任何文字的子句,记作 NIL 或 \Box。空子句是永假的,不可满足的。
  • 子句集 (Clause Set): 由子句构成的集合,表示子句间的合取 (conjunction)。
    • Example: {(P,¬Q),(¬P,R)}\{(P, \neg Q), (\neg P, R)\} 表示 (P¬Q)(¬PR)(P \lor \neg Q) \land (\neg P \lor R)

6.2. 归结式 (Resolvent)

对于任意两个子句 C1C_1C2C_2,若 C1C_1 中有一个文字 LL,而 C2C_2 中有一个与 LL 成互补的文字 ¬L\neg L,则分别从 C1C_1C2C_2 中删去 LL¬L\neg L,并将其剩余部分组成新的析取式。这个新的子句被称为 C1C_1C2C_2 关于 LL 的归结式。C1C_1C2C_2 则是该归结式的亲本子句 (parent clauses)。

  • 符号表示: Lα,¬Lβαβ\frac{L \lor \alpha, \quad \neg L \lor \beta}{\alpha \lor \beta}
  • 定理: 两个子句的归结式是这两个子句(作为集合)的逻辑推论。
    • {(P,Q1),(¬P,Q2)}(Q1,Q2)\{(P, Q_1), (\neg P, Q_2)\} \models (Q_1, Q_2)
  • 特殊情况: 子句 LL¬L\neg L 的归结式为空子句 (NIL)。

6.3. 鲁宾逊归结原理 (Robinson’s Resolution Principle)

  1. 检查子句集 SS 中是否包含空子句。若包含,则 SS 不可满足。
  2. 若不包含,则在 SS 中选择合适的子句进行归结,将归结式加入 SS
  3. 一旦归结出空子句 (NIL),就说明原始子句集 SS 是不可满足的。

6.4. 命题逻辑中的归结推理过程

  1. 把前提集 KBKB 转化成子句集表示,得到 SKBS_{KB}
  2. 把待证明命题 α\alpha 的否定式 ¬α\neg \alpha 也转化成子句集表示 S¬αS_{\neg \alpha}
  3. 构造新的子句集 S=SKBS¬αS = S_{KB} \cup S_{\neg \alpha}
  4. 对子句集 SS 反复应用归结规则,直至导出空子句 (NIL)。若导出空子句,则证明 α\alpha 成立。

6.5. 谓词逻辑中的归结推理

在谓词逻辑中应用归结法,主要增加了两个复杂性:

  1. 公式转换: 将所有谓词公式(包括 KBKB¬α\neg \alpha)化为子句范式 (Clausal Form / Conjunctive Normal Form - CNF)
  2. 合一 (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 谓词来从证明中提取答案。

  1. 已知前提 FF 化为子句集 SS
  2. 待求解的问题 P(x)P(x) (假设我们想知道哪个 xx 满足 PP),将其否定并与 Answer 构成析取式: ¬P(x)Answer(x)\neg P(x) \lor \text{Answer}(x)
  3. ¬P(x)Answer(x)\neg P(x) \lor \text{Answer}(x) 化为子句并加入 SS,得到 SS'
  4. SS' 应用归结原理。
  5. 若得到归结式 Answer(t)\text{Answer}(t),则 tt 就是问题的答案。

7. 历史贡献


课后作业

答案(仅供参考)

令: E1=P(a,x,h(g(z)))E_1 = P(a, x, h(g(z))) E2=P(z,h(y),h(y))E_2 = P(z, h(y), h(y))

我们寻找一个替换 σ\sigma 使得 σ(E1)=σ(E2)\sigma(E_1) = \sigma(E_2)

比较第一个参数: aa (常量) 和 zz (变量)。 σ1=z/a\sigma_1 = {z/a}。 应用 σ1\sigma_1

σ1(E1)=P(a,x,h(g(a)))\sigma_1(E_1) = P(a, x, h(g(a)))

σ1(E2)=P(a,h(y),h(y))\sigma_1(E_2) = P(a, h(y), h(y))

比较第二个参数: xx (变量) 和 h(y)h(y) (函数项)。 σ2=z/a,x/h(y)\sigma_2 = {z/a, x/h(y)}

应用 σ2\sigma_2

σ2(E1)=P(a,h(y),h(g(a)))\sigma_2(E_1) = P(a, h(y), h(g(a)))

σ2(E2)=P(a,h(y),h(y))\sigma_2(E_2) = P(a, h(y), h(y))

比较第三个参数: h(g(a))h(g(a))h(y)h(y)。 函数符号 hh 相同。最终的替换是 σ3=z/a,x/h(g(a)),y/g(a)\sigma_3 = {z/a, x/h(g(a)), y/g(a)}

应用 σ3\sigma_3

σ3(E1)=P(a,h(g(a)),h(g(a)))\sigma_3(E_1) = P(a, h(g(a)), h(g(a)))

σ3(E2)=P(a,h(g(a)),h(g(a)))\sigma_3(E_2) = P(a, h(g(a)), h(g(a)))

答案(仅供参考)

将前提和结论翻译成谓词逻辑公式:

前提1 (P1): 有理数都是实数。 x(Q(x)R(x))\forall x (Q(x) \rightarrow R(x))

前提2 (P2): 无理数也都是实数。 x(W(x)R(x))\forall x (W(x) \rightarrow R(x))

前提3 (P3): 有些数不是实数。 x(¬R(x))\exists x (\neg R(x))

结论 (C): 有些数既不是有理数,也不是无理数。 x(¬Q(x)¬W(x))\exists x (\neg Q(x) \land \neg W(x))

将结论否定 (¬C\neg C):

¬C¬(x(¬Q(x)¬W(x)))\neg C \equiv \neg (\exists x (\neg Q(x) \land \neg W(x))) x¬(¬Q(x)¬W(x))\equiv \forall x \neg (\neg Q(x) \land \neg W(x)) x(Q(x)W(x))\equiv \forall x (Q(x) \lor W(x)) (根据德摩根定律)

所有公式(P1, P2, P3, ¬C\neg C)转换成子句形式:

P1: x(Q(x)R(x))\forall x (Q(x) \rightarrow R(x))

消除蕴含: x(¬Q(x)R(x))\forall x (\neg Q(x) \lor R(x))

去掉全称量词 (变量 xx 保持为变量): ¬Q(x)R(x)\neg Q(x) \lor R(x)

子句 C1: ¬Q(x),R(x){\neg Q(x), R(x)}

P2: x(W(x)R(x))\forall x (W(x) \rightarrow R(x))

消除蕴含: x(¬W(x)R(x))\forall x (\neg W(x) \lor R(x))

去掉全称量词: ¬W(x)R(x)\neg W(x) \lor R(x)

子句 C2: ¬W(x),R(x){\neg W(x), R(x)}

P3: x(¬R(x))\exists x (\neg R(x))

Skolem化:引入一个Skolem常量(例如,cc)来代替存在量词绑定的变量 xx¬R(c)\neg R(c)

子句 C3: ¬R(c){\neg R(c)}

¬C:x(Q(x)W(x))\neg C: \forall x (Q(x) \lor W(x))

去掉全称量词: Q(x)W(x)Q(x) \lor W(x)

子句 C4: Q(x),W(x){Q(x), W(x)}

用归结法从子句集 {C1, C2, C3, C4} 推导空子句 (\square):

我们当前的子句集是:

¬Q(x),R(x){\neg Q(x), R(x)}

¬W(x),R(x){\neg W(x), R(x)}

¬R(c){\neg R(c)}

Q(x),W(x){Q(x), W(x)}

现在进行归结:

步骤 1: 归结 C1 和 C3。 C1: ¬Q(x),R(x){\neg Q(x), R(x)} C3: ¬R(c){\neg R(c)} 为了归结 R(x)R(x)¬R(c)\neg R(c),我们需要一个最一般合一项 (MGU) σ1=x/c\sigma_1 = {x/c}。 应用 σ1\sigma_1 后,得到新的子句 C5:

C5: ¬Q(c){\neg Q(c)} (来自 C1, C3)

步骤 2: 归结 C2 和 C3。 C2: ¬W(x),R(x){\neg W(x), R(x)} C3: ¬R(c){\neg R(c)} 使用 MGU σ2=x/c\sigma_2 = {x/c}。 应用 σ2\sigma_2 后,得到新的子句 C6:

C6: ¬W(c){\neg W(c)} (来自 C2, C3)

步骤 3: 归结 C4 和 C5。 C4: Q(x),W(x){Q(x), W(x)} C5: ¬Q(c){\neg Q(c)} 使用 MGU σ3=x/c\sigma_3 = {x/c}。 应用 σ3\sigma_3 后,得到新的子句 C7:

C7: W(c){W(c)} (来自 C4, C5)

步骤 4: 归结 C6 和 C7。 C6: ¬W(c){\neg W(c)} C7: W(c){W(c)} 这两个子句互补。 得到空子句: \square (来自 C6, C7)

结论:

由于我们从前提和结论的否定推导出了空子句 (\square),这表明前提和结论的否定是不可满足的(矛盾的)。因此,原始论断是有效的。

答案(仅供参考)

将结论否定

¬C¬x(Student(x)Happy(x))x¬Student(x)¬Happy(x)¬Student(x)¬Happy(x)\neg C \equiv \neg \exist x (Student(x) \land Happy(x)) \equiv \forall x\neg Student(x)\lor \neg Happy(x) \equiv \neg Student(x) \lor \neg Happy(x),设为子句 C4

归结 C1, C4,得到 C5:

¬Happy(john)\neg Happy(john)

归结 C2, C4, 得到 C6:

¬Happy(jane)\neg Happy(jane)

归结 C3, C5, 得到 C7:

Happy(jane)Happy(jane)

归结 C6, C7, 得到空子句 \square,因此前提和结论的否定是不可满足的。所以原始结论有效。