人智导(二十):知识表示与自动推理(Ⅲ)

前向链与后向链推理策略

总述

到目前为止

  • 我们已经有了知识表示的语言
  • 我们也已有了合适的推理规则(泛化的假言推理)使用知识
    现在考虑如何构建一个推理程序
  • 泛化的假言推理能通过两个方式得以实现
    • 前向链推理方式(forward chaining)
    • 后向链推理方式(backward chaining)

前向链推理

  • 始于知识库(KB)中的句子,依次通过推理规则产生新的结论
  • 过程被触发通过不断地增加新观察到的事实p到知识库KB
  • 前向链推理可被设计在TELL这个部分中:
    • 发现所用前件包含p的蕴含式(公理)
    • 如果蕴含式其它前件也都与某些事实匹配,增加变量置换后的蕴含式后件(新的结论)到知识库KB中
    • 由于产生了新的句子,继续触发在知识库中的进一步推理

前向链推理算法

The Forward-Chaining Inference Algorithm

Procedure FORWARD-CHAINING(KB, p)if there is a sentence in KB that is a renaming of p then return;add p to KB;for each (1) in KB such that some i,(2) succeeds doFIND-AND-INFER(3)end

(1): (p1∧p2∧⋯∧pn→q)(p_1\wedge p_2\wedge\dots \wedge p_n\to q)(p1​∧p2​∧⋯∧pn​→q)
(2): UNIFY(pi,p)=θUNIFY(p_i, p)=\thetaUNIFY(pi​,p)=θ
(3): (KB,[p1,…,pi−1,pi+1,…,pn],q,θ)(KB, [p_1, \dots ,p_{i-1}, p_{i+1}, \dots ,p_n], q, \theta)(KB,[p1​,…,pi−1​,pi+1​,…,pn​],q,θ)
变量可以换名表示:例如,likes(x, IceCream)和likes(y, IceCream)可以变量换名使得二者一致
Find and Inference子过程

Procedure FIND-AND-INFER(KB, premises, conclusion, (1))if premises = [] thenFORWARD-CHAIN(KB, SUBST((1), conclusion))else for each p' in KB such thatUNIFY(p', SUBST((1), FIRST(premises))) = (2) doFIND-AND-INFER(KB, REST(premises), conclusion, COMPOSE((1), (2)))end

(1): θ\thetaθ
(2): θ2\theta_2θ2​
COMPOSE(θ1,θ2)COMPOSE(\theta_1, \theta_2)COMPOSE(θ1​,θ2​):置换效果等价于轮流应用其中的一个,即SUBST(COMPOSE(θ1,θ2),p)=SUBST(θ2,SUBST(θ1,p))SUBST(COMPOSE(\theta_1, \theta_2), p)=SUBST(\theta_2, SUBST(\theta_1, p))SUBST(COMPOSE(θ1​,θ2​),p)=SUBST(θ2​,SUBST(θ1​,p))

前向链推理示例

  • 知识库初始只包含蕴含式(公理),以Horn范式表示

    • America(x)∧Ins(y)∧Nation(z)∧Hostile(z)∧Sell(x,z,y)→Criminal(x)America(x)\wedge Ins(y)\wedge Nation(z)\wedge Hostile(z)\wedge Sell(x, z, y)\to Criminal(x)America(x)∧Ins(y)∧Nation(z)∧Hostile(z)∧Sell(x,z,y)→Criminal(x)
    • Owns(China,x)∧LHC(x)→Sell(Trump,China,x)Owns(China, x)\wedge LHC(x)\to Sell(Trump, China, x)Owns(China,x)∧LHC(x)→Sell(Trump,China,x)
    • LHC(x)→Ins(x)LHC(x)\to Ins(x)LHC(x)→Ins(x)
    • Enemy(x,America)→Hostile(x)Enemy(x, America)\to Hostile(x)Enemy(x,America)→Hostile(x)
  • 依次向知识库加入新观察到的事实(facts)
    • FORWARD-CHAINING(KB, American(Trump))
    • FORWARD-CHAINING(KB, Nation(China))
    • FORWARD-CHAINING(KB, Enemy(China, America))
    • FORWARD-CHAINING(KB, Owns(China, LHC))
    • …\dots…

前向链推理的特点

  • 推理过程并不是直接面向任何特别问题(query)的求解
  • 典型地,它是一个数据驱动的过程,并且产生许多与问题无关的结论
  • 前向推理是产生式(规则)系统实现的基础(expert system专家系统)

后向链推理

  • 针对query,发现其所在的结论部分(后件)的蕴含式,依次确定其前件是否是知识库中的事实、或者其它蕴含式的后件
  • 直接面向query,通过知识库去试图发现所有的答案(目标驱动)
  • 后向链推理可被设计在ASK这个部分中:
    • 查看答案是否直接能从知识库KB中的句子提供
    • 发现其所在结论部分(后件)的所有蕴含式
    • 再依次确定其前件是否存在于知识库中的事实
  • 后向链是逻辑程序设计(logic programming)的基础

后向链推理示例

如图

推理的完备性

我们要得到结论S(A)

  • 泛化的假言推理不能推导出S(A)
  • 原因:∀x¬P(x)⇒R(x)\forall x\neg P(x) \Rightarrow R(x)∀x¬P(x)⇒R(x)不能转换成Horn范式
    这意味着:泛化的假言推理过程是不完备的,有句子被知识库KB逻辑蕴含,但推理程序不能推导出来

推理的完备性

  • FOL推理的完备性:对AI学科具有极其重要的价值
  • 完备推理的意义在于:机器是有可能的,回答或解决任何的问题,只要能够被一阶谓词逻辑(FOL)所表示
  • 哥德尔证明了一阶谓词逻辑的完备性定理
  • 对于一阶谓词逻辑,我们能够发现这样的推理规则,使得推理过程是完备的,即ifKB⊨αthenKB⊢Rαif~KB~\models\alpha~then~KB~\vdash_R\alphaif KB ⊨α then KB ⊢R​α 证明完备的推理性过程存在,但还需给出具体过程

归结:完备的推理方法

  • 归结推理规则:α∨β,¬βγα∨γ\frac{\alpha\vee\beta , \neg\beta\gamma}{\alpha\vee\gamma}α∨γα∨β,¬βγ​等价于¬⇒β,β⇒γ¬α⇒γ\frac{\neg\Rightarrow \beta, \beta\Rightarrow\gamma}{\neg\alpha\Rightarrow\gamma}¬α⇒γ¬⇒β,β⇒γ​

    • 归结:功能更强于假言推理,假言推理不能推导出新的蕴含式(implication);仅能推导出原子句子(结论)

泛化的归结推理规则

  • 泛化的归结推理规则(蕴含形式implications)
    对于原子句子pip_ipi​, qiq_iqi​, rir_iri​, sis_isi​,若UNIFY(pj,qk)=θUNIFY(p_j, q_k)=\thetaUNIFY(pj​,qk​)=θ:
    KaTeX parse error: Can't use function '\r' in math mode at position 60: …_1\vee\dots\vee\̲r̲_n,\\s_1\wedge\…

归结的范式形式

  • 合取范式CNF
    知识库中的每个句子都是文字的析取(disjunction);知识库即视为所有的句子的合取(conjunction)
    例如:
    ¬P(w)∨Q(w)\neg P(w)\vee Q(w)¬P(w)∨Q(w); P(x)∨R(x)P(x)\vee R(x)P(x)∨R(x)
    ¬Q(y)∨S(y)\neg Q(y)\vee S(y)¬Q(y)∨S(y); ¬R(z)∨S(z)\neg R(z)\vee S(z)¬R(z)∨S(z)
  • 蕴含范式INF
    知识库KB中每个句子是一蕴含式,前件是原子句的合取,后件是原子句的析取
    例如:
    P(w)→Q(w)P(w)\to Q(w)P(w)→Q(w); True→P(x)∨R(x)True\to P(x)\vee R(x)True→P(x)∨R(x)
    Q(y)→S(y)Q(y)\to S(y)Q(y)→S(y); R(z)→S(z)R(z)\to S(z)R(z)→S(z)
  • 归结规则是假言(modus ponens)规则的泛化 α,α→ββ\frac{\alpha ,\alpha\to\beta}{\beta}βα,α→β​等价于True→α,α→βTrue→β\frac{True\to\alpha, \alpha\to\beta}{True\to\beta}True→βTrue→α,α→β​
  • 蕴含范式是Horn范式的泛化
    蕴含范式的后件是原子句的析取,而Horn范式的后件是单一原子子句

归结推理过程

一个示例:

  • 归结推理的过程优于假言推理过程,但仍是不完备的
    举例:
    从空的KB推导p∨¬pp\vee\neg pp∨¬p
  • 完备的推理过程是:归结(resolutions)+反证(refutation),即反证KaTeX parse error: Undefined control sequence: \lefttightarrow at position 26: …neg P\to False)\̲l̲e̲f̲t̲t̲i̲g̲h̲t̲a̲r̲r̲o̲w̲ ̲(KB\to P)
  • 完备的推理过程:合理和完备的归结方法
  • 推导出结论α\alphaα:
    • 步骤一:取α\alphaα的非
    • 步骤二:转换其为蕴含范式INF
    • 步骤三:添加到KB中(句子均为INF表示)
    • 步骤四:推导出矛盾(即false)
  • 示例如下图:
  • 归结方法是反证完备的(refutation-complete)
    归结方法并不是用来生成知识库句子集所有逻辑结论,而是对于枚举的任何query句子,若它是知识库句子集的逻辑结论,则归结方法就可以给出一个推理过程(构造一个证明)
  • 通过query句子取非的方式(negated-goal反证),发现query的答案
  • 归结方法是实现定理证明器(Theorem Prover)的基础

转换为合取或蕴含范式

  • 一阶谓词逻辑表示的任何句子都可转换为合取或蕴含范式
    步骤如下:
  • eliminate implications
  • move ¬\neg¬ inwards
  • standardize variables
  • move quantifiers left
  • skolemization
  • distribute ∧\wedge∧ over ∨\vee∨
  • flatten nested conjunctions and disjunctions
  • convert disjunctions to implications

人智导(二十):知识表示与自动推理(Ⅲ)相关推荐

  1. 人智导(二十二):规划(下)

    人智导(二十二):规划(下) 部分有序的规划:实例 部分有序(Partial Order)的规划举例 问题:购买milk, banana, drill, 然后回家 SM: 超市(supermarket ...

  2. 人智导(十七):基于知识的方法

    人智导(十七):基于知识的方法 基于知识的智能体 智能体感知(perceiving)环境后决定在环境中如何行动 决策(decision making):基于知识(knowledge) 知识表示与自动推 ...

  3. 从未在一起更让人遗憾_二十不惑强行悲伤结尾,我们本可以在一起,才最让人遗憾...

    二十岁,本应该去尝试一下的.说真的,如果他们在一起了,后来分手,我都会释怀.但是他们本可以在一起却因为种种拒绝,太让人难过. 看到他们就真的想起 "从未在一起和在一起之后分手,哪一个更遗憾? ...

  4. 技术人攻略访谈二十九:平行世界守护者

    文:Gracia (本文为原创内容,部分或全文转载均需经过作者授权,并保留完整的作者信息和技术人攻略介绍.Sai对本文亦有贡献.) 导语:本期采访对象吴峰光,任职于Intel开源技术中心.从第一次向内 ...

  5. Android 天气APP(二十六)增加自动更新(检查版本、通知栏下载、自动安装)

    上一篇:Android 天气APP(二十五)地图天气(下)嵌套滑动布局渲染天气数据 效果图 开发流程 1.开发前言 2.上传应用到分发平台 3.版本数据请求与存储 4.检查版本更新.自定义更新提示弹窗 ...

  6. 二十不惑,三十而已|网易互联网人的“焦虑必杀技”

    今年夏天 电视剧<二十不惑>和<三十而已> 占据了一半以上的热搜和话题 不论是初入社会懵懂的"新人" 还是站在人生节点.三十不易的"老人" ...

  7. 东北大姐剪纸被误认为油画,遭人质疑二十多年,只因太过逼真,看完后:真香!不愧是天下第一剪!...

    全世界只有3.14 % 的人关注了 爆炸吧知识 "这是剪纸?太惟妙惟肖了, 我还以为是水彩画呢!" 这是一位网友的留言. 茂盛的树木.潺潺的流水-- 这些栩栩如生的场景, 真难想象 ...

  8. 第三百二十六节,web爬虫,scrapy模块,解决重复ur——自动递归url

    第三百二十六节,web爬虫,scrapy模块,解决重复url--自动递归url 一般抓取过的url不重复抓取,那么就需要记录url,判断当前URL如果在记录里说明已经抓取过了,如果不存在说明没抓取过 ...

  9. (96)自动售货机状态转移图,面试必问(二十)(第20天)

    (96)自动售货机状态转移图,面试必问(二十)(第20天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)自动售货机状态转移图,面试必问(二十)(第20天) 5) ...

  10. 有些人二十几岁就提前退休了,凭什么?

    自从本杰明·富兰克林说出那句传世名言:「时间就是金钱.」人类由此便进入了一场自强不息,拼命加速竞争,以求获得更多金钱更多时间,却又同时更缺钱更缺时间的生活死循环. 我写过一篇文章讲述<我是如何在 ...

最新文章

  1. boost::hana::intersection用法的测试程序
  2. OSI分层和五层协议
  3. java 类的高级特性_java程序-类的高级特性
  4. stone 的 log4j配置详解
  5. 第十一章:李淳风的秘谋
  6. 2017蓝桥杯B组:取数位(递归,求余和除法)
  7. Appium真机运行Device Name获取方法
  8. ginx+Tomcat负载均衡配置
  9. 摄像机和镜头的基础知识
  10. android Logcat打印格式说明
  11. Scratch软件编程等级考试四级——20210320
  12. 性能测试中的二八原则
  13. RFID标签的安全机制——LCAP协议的C++代码实现
  14. Log sum inequalit 对数和不等式的证明
  15. OpenCV-Python身份证信息识别
  16. E0413: 不存在从 “std::string“ 到 “const char *“ 的适当转换函数
  17. 如何快速查找指定基因的调控网络
  18. ssoj4027: 挖煤(coal)
  19. 使用QT开发ros人机交互界面(1)——安装ROS Qt Creator Plug-in并运行helloworld
  20. fm调制matlab仿真,matlab fm调制仿真.doc

热门文章

  1. MTK6580适应小分辨率
  2. [基于kk搭建k8s和kubesphere] 3 kubekey下载
  3. 再见,杀毒软件之父,王江民!
  4. simulink 全桥逆变无控整流DC-DC电路
  5. 不小心隐藏IDEA的main menu,让它恢复显示的解决方法
  6. win10计算机网络共享设置密码,Win10使用技巧:给共享文件夹添加密码
  7. apktool java_apktool 是GOOGLE提供的APK编译工具,需要JAVA运行环境,推荐使用JDK1.6或者JDK1.7...
  8. Groovy 快速入门
  9. CSS学习13:表格样式
  10. python更改下载源地址