摘要
1) 一句话总结 本讲座系统介绍了实用知识表示与逻辑推理在人工智能工程中的核心地位,涵盖了逻辑编程基础、非单调推理、复杂度控制及元逻辑等面向真实世界复杂性的技术实践。
2) 关键要点
- AI 的“两条腿”:稳健的人工智能系统需要将机器学习(从数据中学习)与知识表示及推理(表达知识、运用规则、处理冲突)相结合。
- 知识表示的严格定义:知识表示框架必须同时具备形式语言与语义(蕴含)。推理系统在工程实现上通常更容易做到可靠性,但未必能做到完备性。
- 工程化推理系统的核心诉求:面向实际应用的系统需具备计算可扩展性、社会技术可扩展性、组合性、可解释性以及面对冲突和不完整知识的鲁棒性。
- 逻辑编程与推理方向:逻辑编程包含事实、规则与约束;实际工程系统通常偏向反向推理(目标驱动)或混合式推理,以避免纯正向推理(数据驱动)的高昂穷举成本。
- 非单调推理与可废止性:真实世界的规则通常允许例外。系统需支持非单调推理(新增断言可撤销旧结论),并通过设定规则优先级来实现可废止性,从而平息冲突。
- 控制计算复杂度:为防止带参数的逻辑函数引发无限递归,工程上采用限制语法规模、有限理性约束以及表格化缓存等技术,以维持多项式级别的推理复杂度。
- 元逻辑与高阶表达:通过 HiLog、高阶语法的一阶语义化、物化与规则 ID,系统能够在元层面处理规则的出处、优先级并生成解释。
- 工业界应用与工具:逻辑编程是关系数据库、知识图谱查询和业务规则引擎的重要基础;讲者提到的代表性工具包括 XSB、Prolog、Rulelog 及概率逻辑编程系统。
3) 风险与缺口
- 经典逻辑的脆弱性风险:经典逻辑在面对矛盾时可能陷入“什么都能推出”的灾难性状态,不适应真实世界的知识管理。
- 推理不可判定风险:在逻辑函数中引入参数可能导致递归生成无限结构,从而使推理过程走向不可判定。
- 纯正向推理的成本风险:在实际系统中采用纯正向链式穷举推理的计算成本过高。
- 资源库生态缺口:相比于简单的语义网,目前在更复杂的知识表示与推理层面仍缺乏成熟的资源库生态。
- 嵌入的局限性:嵌入可视为一种映射结构,但其作为知识表示在可解释性与可交流性方面存在明显局限。
正文
把 AI 看成“两条腿”
讲者用一个直观的比喻开场:理解人工智能,可以把“知识表示与推理”和“机器学习”看作两条腿。许多系统要想走得稳,既需要会从数据里学,也需要能把知识说清楚、用规则推下去、在冲突里不崩。
逻辑知识表示到底在说什么
讲者强调,在逻辑与知识表示语境里,“知识表示”不是泛泛的“把东西表示出来”,而是一个更严格的概念:
- 一个知识表示框架要同时给出形式语言与语义。
- 形式语言至少要能表达断言与结论;在某些系统里,两者允许的语法甚至可能不完全重叠。
- 语义通常用“蕴含”来界定:哪些结论在给定断言集合下应该被视为成立。
在这套视角中,“推理”不是装饰品,而是实现语义的方式:系统要能据此回答查询、给出结论。讲者随后引出两个经常在工程里撞上的性质:
- 可靠性:系统推出的结论是正确的。
- 完备性:所有语义上应该推出的结论都能被推出。
他提醒,这类系统往往更容易做到可靠,但未必完备。
机器学习与推理的关系:讲者的主张
讲者提出一个带观点色彩的主张:机器学习里的归纳并非孤立发生,它在训练与评估循环中会依赖大量“推导/推理”环节。
为了避免把“数学计算的推断”与“逻辑学意义的演绎推理”混为一谈,可以把他这里的“推理”理解为更宽泛的工程过程:模型在迭代搜索、误差评估、一致性检查、增量更新等环节里,需要把一组规则或计算过程落实为可比较的预测与指标,然后再把结果反馈到下一轮迭代。
他也提到,神经网络可视为表达能力较弱的一类表示系统,核心是数值运算;而另一些方法在“模型组件如何组合、知识如何组织”方面更具表现力。
经典逻辑的脆弱性与工程系统的要求
讲者把“经典逻辑”的一个突出问题概括为脆弱性:一旦出现矛盾,系统可能陷入“什么都能推出”的灾难性状态,这与真实世界的知识管理不相容。
因此,面向信息技术的推理系统更关注一组工程性质:
- 计算可扩展性:要在大规模知识上跑得动。
- 社会技术可扩展性:在人机协作、知识持续更新、沟通出错的场景下还能维护系统。
- 组合性:模块化、可复用、易更新,并能与其他系统集成。
- 可解释性:能把结论的推导链条展开给人看,便于调试与建立信任。
- 鲁棒性:面对冲突、例外与不完整知识不至于“气泡一戳就破”。
逻辑编程的基本图景
讲者把逻辑编程看作面向实际系统的重要路线之一,并用一组基础概念串起它的语法与推理方式:
- Horn 子句、事实、规则与完整性约束。
- 查询回答。
- 正向推理(数据驱动)、反向推理(目标驱动)与二者混合。
他用“苏格拉底—凡人—会犯错—谦逊”的例子说明:
- 正向链式推理会逐步推出所有能推出的结论。
- 反向链式推理则从目标出发,通过子目标回溯到事实与规则。
在他的叙述里,实用系统往往更偏向目标驱动或混合式推理,因为纯正向穷举成本过高。
单调性、非单调推理与两种否定
讲者用“加新断言后会不会撤回旧结论”解释单调性:
- 单调逻辑:加更多前提不会让结论变少。
- 非单调推理:新增信息可能撤销旧结论。
他给出一个虚构的定价规则例子:同一商品在“非促销日”与“促销日”有不同价格。当后来加入“某天也是促销日”的断言时,系统需要撤销先前的价格结论并替换为新的价格结论。
由此他引出两种否定在实用规则系统中的角色:
- 弱否定:更接近“当前信息不足以推出 Q”。
- 强否定:更接近经典否定,可能引入直接冲突。
为什么“例外”是常态:可废止性与优先级
讲者强调,很多领域里的规则并不是“永远成立”,而是“通常成立但允许例外”。要让系统能在现实世界运行,就需要可废止性与处理冲突的机制。
他以供应链交期规则为例,说明当多条规则同时适用且结论冲突时,可以通过规则优先级来平息冲突:某些更具体、更权威或更新的规则覆盖更一般的规则。
在他的说法里,这种处理不仅避免崩溃,还能促进模块化,让系统像“把火放进炉子”那样可控。
工业界的落点与工具生态
讲者给出一个强烈的判断:在结构化知识管理里,逻辑编程及其子集具有核心地位。关系数据库、知识图谱查询、业务规则引擎等都可以在这一谱系里理解。
他还提到一些开源工具与路线,用来支撑可扩展推理、模块化与可解释性等需求,例如:
- XSB 及其推理技术(如表格化)。
- Prolog 系统与相关扩展。
- Rulelog 与基于其思想的引擎与语言实现。
- 概率逻辑编程方向,以及把不确定性与推理结合的系统。
这些名称在转写中存在一定口误或拼写误差,但它们共同指向一个主题:把表达能力、可解释性、可扩展性、鲁棒性放在同一个工程框架里权衡。
复杂度、逻辑函数与有限理性
讲者用 Herbrand 宇宙的直观解释说明:一旦允许带参数的逻辑函数,递归就可能生成无限结构,从而让推理走向不可判定。
为了在工程上保持可处理性,他提到一些限制与策略,例如:
- 对规则的语法规模做限制,让变量数与元数保持在可控范围。
- 通过“有限理性”的约束,把过深或过大的结构视为未定义或不关心,从而维持多项式级别的推理复杂度。
- 用表格化等技术在推理过程中做缓存与依赖管理,避免重复计算与无穷循环。
元逻辑:让系统能“谈论规则本身”
在讲者的框架里,很多高级能力可以视为元层面的表达:系统不仅推结论,还要能处理规则、出处、优先级、转换与解释。
他提到的关键点包括:
- HiLog 一类的高阶语法能力:语法上允许谓词或函数像变量一样使用,但通过变换保持在一阶语义可处理的范围。
- 物化:把公式或规则变成可操作的对象。
- 规则 ID:为规则赋予可引用的标识,从而表达来源、优先级与可废止性。
这些能力与解释生成、知识交换、自反与互操作等目标密切相关。
问答摘录
- 知识库有没有类似“模型仓库”的资源库?讲者认为在更复杂的知识表示与推理层面仍有待改善,但在语义网等较简单类型上已有相应资源库。
- 嵌入算不算知识表示?讲者认为嵌入可以视作一种映射结构,但其可解释性与可交流性存在局限。
- 人类推理是否按正向/反向链式进行?讲者认为人类常常直接跳到结论;而 KR 系统的价值之一在于把推导细节展开,用于检验与验证。
- 上下文依赖怎么办?讲者指出早期工程常试图减少上下文依赖,但现实世界充满例外与语境差异,因此需要更灵活的机制来处理。