《03 推理:目标树与基于规则的专家系统》视频链接

【Tips】
首先解释一下什么是基于规则的专家系统?
专家系统是人工智能的主要研究领域之一,是基于行业规则进行业务处理的计算机程序。这些规则来源于行业知识,用于描述特定条件下所要执行的动作,并且定义了相关动作对于数据的影响。因此,专家系统可以利用其推理能力得出结论或者执行相关分析任务。在专家系统中,解决问题所需的知识,作为一个规则集合存储在知识库中,形成知识库系统。

【内容简介】

这节内容教授主要讲述了三个例子来解释基于规则的专家系统。

First:一个可以移动方块的人工智能程序

一个可以移动方块的人工智能程序,这个程序的用途是:我们在桌面上放了一堆方块,程序作为一个假想手来操作这些方块,进行什么操作的命令是人为输入的。当我们输入命令后,程序开始移动这些方块来完成我们的命令。

这个程序的特别之处在于当它完成命令后,你可以向它提问它移动的步骤和思路,它会为你解释移动每一步的理由,看到这里,是不是觉得这个程序简直太智能了。实际上它的实现原理与我们上次说的目标树有关。

Second:一个识别动物的例子

有一个基于规则的专家系统,用来诊断血液中细菌感染的程序,准确率很高。但由于涉及到太多医学专业知识,所以用一个识别动物的例子来解释原理。

Third:杂货店装袋的例子

【笔记】

由于我没有找到教授的GitHub源码,所以我只能画图来解释了。

首先第一个例子:移动方块程序。

移动方块程序的流程图是这样的:

举个具体点的例子,如下图所示,我们要将 B1 放到 B2 上,则变化就如下图所示:

当移动完成时,教授向程序开始提问:
Q:为什么要移开Bx?
A:因为要清理B1的顶
》>>>>>>>>>>>>>>>>>>>>《
Q:怎么清理B1的顶?
A:移开Bx

上述移动操作及如何让程序回答自身行为的实现靠的都是下图-----目标树 来完成的:

如图所示:
当你要回答Why的问题是,向上追溯一个动作就可以
当你要回答How的问题是,向下追溯一个动作就可以

所以此程序之所以能精准地回答问题原因在于,它记录了自己每一步移动的步骤形成了目标树,当你提问时,他会按照目标树来回答问题。

正如人们观察到蚂蚁在海滩上会创造出复杂的移动轨迹,但实际上它只是为了避开沙滩上分布的沙砾而已。

行为的复杂性 = MAX(程序复杂性,环境复杂性)
The complexity of the behavior = Max ( the complexity of the program, the complexity of the environment)

第二个例子:识别动物的程序

加入我们现在身处一个动物园内,我给你一些动物的特征,你能猜出它是什么动物吗?

  1. has hair
  2. has claws
  3. sharp teeth
  4. forward pointing eyes
  5. eating meat
  6. got spots
  7. very fast

bingo,答案就是猎豹啦。

我们的整个推理过程就如下图所示:

上述图就又是一个 “目标树(Goal Tree)”,这就是一种基于规则的专家系统。

而基于规则的专家系统可以分为:

  1. 前向链专家系统(Forward-Chain Rule-Based Expert System)
  2. 后向链专家系统(Backward-Chain Rule-Based Expert System)

而我们这个识别动物的程序是 前向链专家系统(from the facts we give it to the conclusion up on the right),即从已知事实推出结论。

那什么是后向链呢?还是以这个例子为例,如果我给你面前摆了一个动物,我问你这个动物是猎豹吗?你首先会去确认:它是哺乳动物吗,看看有没有毛发?是肉食动物吗,看看有没有尖牙利爪?再看看身上是否有斑点?是否移动敏捷?如果符合则这是猎豹。

即我们的思考方式就如下图一样发生了改变(我将上图进行了镜像反转,不要在意图上文字的错误,主要是看思维方式发生了改变:这次我们是假设动物为猎豹,从而推导出去一些事情)

这里是先假设是这个动物是猎豹,往回利用之前的规则去验证,就是后向链专家系统(what I am going to do is work backward from a hypothesis)

【Tips】
不论是向前还是向后,专家系统都是 演绎系统,Deduction System (working with facts to produce new facts)

第三个例子:杂货店装袋的例子

这个例子主要是用来讲述 如何获取专业规则(知识工程中的三大法则) 。

如果说你是一个专业的装袋员,当你给顾客装袋时,你的规则是什么?大的重的放底部,小的轻的放顶部;容易被压坏的不能放底部;干的湿的要分开等等。

那么我们怎么知道这些规则的?

  1. 通过观察个案,获得规则。
  2. 考虑看起来相同,但实际处理方式有所不同的东西。比如普通酒水和冰冻的酒水就不能用相同的方式处理,因为冰冻的酒水会弄湿纸袋子和其他物品。
  3. 根据以上的规则建立一个系统,观察它何时出问题,出现问题的原因肯定是因为缺少了某一条规则,这时你再添加进去。

最后老师留了一个问题:从我们今天的例子我们可以得知所谓智能专家系统其实只是建立在规则上的加了修饰的系统,它基于规则,但是并不代表它理解这条规则,就比如最后一个例子中程序知道薯片不能放到袋子最底部,也许它还知道因为这样薯片容易被压坏,但它是否知道薯片为什么不能被压呢?也就是说它并没有常识,那么规则和常识之间又是什么关系呢?

《麻省理工学院公开课:人工智能》笔记三

《麻省理工学院公开课:人工智能》笔记二相关推荐

  1. python学习笔记(二) 基本运算

    python学习笔记(二) 基本运算 1. 条件运算 基本语法 if condition1: do somethings1elif condition2: do somethings2else: do ...

  2. python读书笔记二、文件基本操作

    ##!_*_coding:utf-8_*_# 文件read操作###############################################################一.文件打开 ...

  3. Python面试笔记二

    一.算法 1.归并排序 2.快速排序 3.算法复杂度 4.哈希表数据结构 二.数据库 1.设计一个用户关注系统的数据库表 1.设计一个用户关注系统的数据库表,写三个相关的SQL语句 两张表,一张use ...

  4. Python基础笔记(二) List、tuple、循环语句

    一.List Python内置的一种数据类型是列表:list. list是一种有序的集合,可以随时添加和删除其中的元素.list是数学意义上的有序集合,也就是说,list中的元素是按照顺序排列的.构造 ...

  5. 【懒懒的Python学习笔记二】

    列表是Python新手可直接使用的最强大的功能之一. 一.创建一个列表 在Python中,用方括号([ ])表示一个列表,其中用逗号(,)分割列表元素,下面是一个简单的列表示例: . 如果你让Pyth ...

  6. python学习笔记(二十三) -- 多进程和多线程

    目录 多线程多进程的意义 多进程的使用 方式一(fork):  只能在Unix/Linux/Mac系统下执行,windows不可以 方式二(multiprocessing.Process): 全平台通 ...

  7. python基础笔记二_面向对象

    面向对象 Object Oriented 概述 面向过程 1.分析出解决问题的步骤,然后逐步实现.例如:婚礼筹办-- 发请柬(选照片.措词.制作)-- 宴席(场地.找厨师.准备桌椅餐具.计划菜品.购买 ...

  8. python学习笔记二——阅读MakeHuman程序源码小结

    1.环境变量 用Python Shell设置或获取环境变量的方法: 一.设置系统环境变量 1.os.environ['环境变量名称']='环境变量值' #其中key和value均为string类型 2 ...

  9. Python学习笔记|二.Python安装教程

    Python 安装教程 Python是跨平台的,它可以运行在Windows.Mac和各种Linux/Unix系统上.在Windows上写Python程序,放到Linux上也是能够运行的. 安装Pyth ...

  10. python学习笔记二— 循环

    程序结构 •三种结构◾顺序 ◾循环 ◾分支 分支结构 •分支结构基本语法◾if (如果) 条件表达式: ◾语句1 ◾语句2 ◾语句3 ◾- •条件表达式就是计算机结果必须为 布尔值 的表达式 •表达式 ...

最新文章

  1. ==和equals的浅析
  2. Hive group by实现-就是word 统计
  3. Windows 7 SP1确实将有性能改进
  4. 删除SQL Server注册
  5. 家乐福首家付费会员店遇到「喜与忧」背后,行业同质化问题浮出水面
  6. aws 部署python lambda_python - 如何使用Aws Lambda(python)接收文件 - 堆栈内存溢出
  7. mysql 帐号开启远程_两大步骤教您开启MySQL 数据库远程登陆帐号
  8. oc代码混淆_OC代码混淆工具
  9. factory工厂模式之工厂方法FactoryMethod
  10. hibernate jar 下载地址
  11. 微机计算机继电保护原理,微机继电保护的装置构成
  12. oracle的多个exclude,记录一下expdp exclude的用法
  13. 皮卡丘0.1.5V.GPC无敌版
  14. IOS端 vux中scroll滚动自动回弹到顶部或者左侧的解决办法
  15. c语言大学教程答案pdf,C++大学教程(第九版) 保罗·戴特尔(Paul Deitel)等著 完整中文pdf扫描版[197MB]...
  16. linux命令返回结果保存到文件,Linux终端运行命令及结果同时保存入文件方法总结...
  17. 夜深人静写算法(三十七)- 威尔逊定理
  18. 空洞卷积(Dilated Convolutions)
  19. NGINX根据客户端真实ip限制/referer限制
  20. linux 内存占用过高

热门文章

  1. Lattice PCIe 学习 1
  2. wp手机 htc x310e
  3. 易到用车最艰难时刻,未来赌什么?
  4. 易到用车网:没有一辆车的租车公司
  5. FairyGUI笔记 :MovieClip(三)
  6. java制作名片applet程序_【小程序 提取码:krua】壹佰智能名片小程序版本V1.1.45 – 持续更新 无后门...
  7. 调用QQ与陌生人聊天
  8. 河套学院2018级计算机一级考试,河套学院2018-2019学年本科生就业率
  9. 虚拟化是什么意思?包含哪些技术?与私有云有什么区别?
  10. Python3练习题系列(01)