人智导(二十):知识表示与自动推理(Ⅲ)
人智导(二十):知识表示与自动推理(Ⅲ)
前向链与后向链推理策略
总述
到目前为止
- 我们已经有了知识表示的语言
- 我们也已有了合适的推理规则(泛化的假言推理)使用知识
现在考虑如何构建一个推理程序 - 泛化的假言推理能通过两个方式得以实现
- 前向链推理方式(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
人智导(二十):知识表示与自动推理(Ⅲ)相关推荐
- 人智导(二十二):规划(下)
人智导(二十二):规划(下) 部分有序的规划:实例 部分有序(Partial Order)的规划举例 问题:购买milk, banana, drill, 然后回家 SM: 超市(supermarket ...
- 人智导(十七):基于知识的方法
人智导(十七):基于知识的方法 基于知识的智能体 智能体感知(perceiving)环境后决定在环境中如何行动 决策(decision making):基于知识(knowledge) 知识表示与自动推 ...
- 从未在一起更让人遗憾_二十不惑强行悲伤结尾,我们本可以在一起,才最让人遗憾...
二十岁,本应该去尝试一下的.说真的,如果他们在一起了,后来分手,我都会释怀.但是他们本可以在一起却因为种种拒绝,太让人难过. 看到他们就真的想起 "从未在一起和在一起之后分手,哪一个更遗憾? ...
- 技术人攻略访谈二十九:平行世界守护者
文:Gracia (本文为原创内容,部分或全文转载均需经过作者授权,并保留完整的作者信息和技术人攻略介绍.Sai对本文亦有贡献.) 导语:本期采访对象吴峰光,任职于Intel开源技术中心.从第一次向内 ...
- Android 天气APP(二十六)增加自动更新(检查版本、通知栏下载、自动安装)
上一篇:Android 天气APP(二十五)地图天气(下)嵌套滑动布局渲染天气数据 效果图 开发流程 1.开发前言 2.上传应用到分发平台 3.版本数据请求与存储 4.检查版本更新.自定义更新提示弹窗 ...
- 二十不惑,三十而已|网易互联网人的“焦虑必杀技”
今年夏天 电视剧<二十不惑>和<三十而已> 占据了一半以上的热搜和话题 不论是初入社会懵懂的"新人" 还是站在人生节点.三十不易的"老人" ...
- 东北大姐剪纸被误认为油画,遭人质疑二十多年,只因太过逼真,看完后:真香!不愧是天下第一剪!...
全世界只有3.14 % 的人关注了 爆炸吧知识 "这是剪纸?太惟妙惟肖了, 我还以为是水彩画呢!" 这是一位网友的留言. 茂盛的树木.潺潺的流水-- 这些栩栩如生的场景, 真难想象 ...
- 第三百二十六节,web爬虫,scrapy模块,解决重复ur——自动递归url
第三百二十六节,web爬虫,scrapy模块,解决重复url--自动递归url 一般抓取过的url不重复抓取,那么就需要记录url,判断当前URL如果在记录里说明已经抓取过了,如果不存在说明没抓取过 ...
- (96)自动售货机状态转移图,面试必问(二十)(第20天)
(96)自动售货机状态转移图,面试必问(二十)(第20天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)自动售货机状态转移图,面试必问(二十)(第20天) 5) ...
- 有些人二十几岁就提前退休了,凭什么?
自从本杰明·富兰克林说出那句传世名言:「时间就是金钱.」人类由此便进入了一场自强不息,拼命加速竞争,以求获得更多金钱更多时间,却又同时更缺钱更缺时间的生活死循环. 我写过一篇文章讲述<我是如何在 ...
最新文章
- boost::hana::intersection用法的测试程序
- OSI分层和五层协议
- java 类的高级特性_java程序-类的高级特性
- stone 的 log4j配置详解
- 第十一章:李淳风的秘谋
- 2017蓝桥杯B组:取数位(递归,求余和除法)
- Appium真机运行Device Name获取方法
- ginx+Tomcat负载均衡配置
- 摄像机和镜头的基础知识
- android Logcat打印格式说明
- Scratch软件编程等级考试四级——20210320
- 性能测试中的二八原则
- RFID标签的安全机制——LCAP协议的C++代码实现
- Log sum inequalit 对数和不等式的证明
- OpenCV-Python身份证信息识别
- E0413: 不存在从 “std::string“ 到 “const char *“ 的适当转换函数
- 如何快速查找指定基因的调控网络
- ssoj4027: 挖煤(coal)
- 使用QT开发ros人机交互界面(1)——安装ROS Qt Creator Plug-in并运行helloworld
- fm调制matlab仿真,matlab fm调制仿真.doc
热门文章
- MTK6580适应小分辨率
- [基于kk搭建k8s和kubesphere] 3 kubekey下载
- 再见,杀毒软件之父,王江民!
- simulink 全桥逆变无控整流DC-DC电路
- 不小心隐藏IDEA的main menu,让它恢复显示的解决方法
- win10计算机网络共享设置密码,Win10使用技巧:给共享文件夹添加密码
- apktool java_apktool 是GOOGLE提供的APK编译工具,需要JAVA运行环境,推荐使用JDK1.6或者JDK1.7...
- Groovy 快速入门
- CSS学习13:表格样式
- python更改下载源地址