18.计算机科学导论之人工智能初识学习笔记

[TOC]

计算机科学导论学习笔记

第 5 部分 数据安全与人工智能

此部分包含第15、16、17和18章,包含了计算机中传输的数据压缩(有损与无损)、网络数据在传输过程中如何保证其数据安全, 讨论计算理论,即哪些是可计算的,哪些是不可计算的,最后介绍当前热门的人工智能(AI)的观点,加深我们对计算机数据处理的的认识,为后续学习扩展基础认识。

原文地址:

18.人工智能

作为最后一章,我们将对人工智能(AI)作简单的介绍,当前人工智能不是即将实现,而是已经实现了,将主要介绍人工智能的简史和定义,以及AI需要了解的基础知识学习,最后介绍两种在人工智能中常用的编程语言。

18.1 简单介绍
(0) 人工智能简史

虽然人工智能作为一门独立的学科是相对年轻的,但它还是经历了一段发展的时间,当2400年前希腊哲学家亚里多斯德发明了逻辑推理这个概念时,人工智能就开始了,接着莱布尼茨和牛顿完成了逻辑语言的定稿。

乔治•布尔在19世纪逐步提出的布尔代数(附录E)奠定计算机电子电路的基础。但是思维计算机的主要思想却来自于阿兰•图灵,他提出了图灵测试, “人工智能”这个术语是John McCarthy (约翰•麦卡思)在1956年首次提出的。

(1) 什么是人工智能AI?

答: 人工智能(AI,Artificial Intelligence)是对程序系统的研究,该程序系统在一定程度上能模仿人类的活动,如感知、思考、学习和反应。 简而言之,AI 即模仿人类行为和能力创建软件,

人脑与人工智能对比

  • 功耗:20W/几十万倍
  • 鲁棒性:极强 / 弱
  • 推广性:强 / 弱
  • 犯大错误概率(原理): 没有 / 有
  • 学习样本:少量 / 大量
  • 可理解性(可解释性):好 / 差

当前人工智能技术的五大局限性条件:

  • 拥有丰富的数据或(和)知识
  • 完全信息
  • 确定性
  • 静态(按确定的规则演化)
  • 有限领域于单任务
(2) 人工智能AI应用场景有那些?

当下AI应用场景多如以下情况:

  • 机器学习 - 它通常是 AI 系统的基础,也是我们“教”计算机模型进行预测并根据数据得出结论的方式。
  • 异常情况检测 - 自动检测系统中的错误或异常活动的能力。
  • 计算机视觉 - 软件通过相机、视频和图像直观地解释世界的能力。
  • 自然语言处理 - 计算机理解书面或口头语言并作出相应反应的能力。
  • 对话式 AI - 软件“代理”参与对话的能力。
  • 知识挖掘 - 从大量通常非结构化数据中提取信息以创建可搜索的知识存储的功能。

异常情况检测应用场景 假设你要创建一个软件系统来监视信用卡交易,并检测可能表示欺诈的异常使用模式。

或者要创建一个应用程序来跟踪自动化生产线中的活动并识别故障。

或者要创建一个赛车遥测系统,使用传感器在潜在机械故障发生之前主动向工程师发出相关警告。

可以通过异常情况检测应对这些类型的场景。异常情况检测是一种基于机器学习的技术,可用于分析一段时间内的数据并标识异常更改。

让我们探讨一下异常情况检测如何在赛车场景中发挥作用, 我们可利用汽车内的传感器收集遥测数据,如发动机转速、刹车温度等。 异常情况检测模型经过训练,了解一段时间内遥测度量值的预期波动情况。

如果度量值在正常预期范围之外,则该模型将报告异常,用于提醒赛车工程师通知车手先进站修理,以免因该问题而被迫退赛。

异常情况检测应用场景

异常情况检测应用场景

计算机视觉应用场景

计算机视觉是 AI 的一个领域,它负责处理视觉对象,让我们了解一下计算机视觉带来的一些可能性。

例如,Seeing AI 应用是一个很好的计算机视觉示例,Seeing AI 应用专门面向盲人和弱视群体,它利用 AI 的力量来打开视觉世界,描述附近的人、文字和物体。

大多数计算机视觉解决方案都基于机器学习模型,这些模型可应用于来自相机、视频或图像的视觉输入,如下表描述了常见的计算机视觉任务。

任务

说明

图像分类 | 带有“出租车”标签的出租车图像,图像分类涉及训练机器学习模型,使其根据图像内容对图像进行分类。 例如,你可以在交通监控解决方案中使用图像分类模型,根据图像所包含的车辆类型(例如出租车、公共汽车、骑自行车的人等)对图像进行分类。| 物体检测 | 用边界框突出显示公交车、汽车和自行车骑行者的街道图像,对象检测机器学习模型经过训练,可以对图像中的单个对象进行分类,并使用边界框确定其位置。 例如,交通监控解决方案可使用对象检测来识别不同类别车辆的位置。| 语义分割 | 街道图像,其中已识别出属于公交车、汽车和骑行者的像素,语义分割是一种高级机器学习技术,其中图像中的各个|像素根据其所属的对象进行分类。 例如,交通监控解决方案可能会在交通图像上覆盖“蒙版”图层,以使用特定颜色突出显示不同的车辆。 图像分析 | 显示遛狗人的街道图像,标题为“街道上的遛狗人”,可以创建结合使用机器学习模型和高级图像分析技术从图像中提取信息的解决方案,包括可以帮助对图像进行归类的“标签”,甚至可以归纳总结图像中所示场景的描述性标题。| 人脸检测、分析和识别 | 多个人站在城市街道上的图像,其中突出显示了这些人的人脸人脸检测是对象检测的一种特殊形式,可以在图像中找出人脸。 这可以与分类和面部几何分析技术相结合,用来推断出年龄和情绪状态等细节;甚至根据他们的面部特征来识别个人。| 光学字符识别 (OCR) | 突出显示“多伦多道明银行”标志的建筑物图像,光学字符识别是一种用于检测和读取图像中文本的技术。你可以使用 OCR 读取照片中的文字(例如:路标或店面),或从扫描的文档中提取信息,例如字母、发票或表格。 |

自然语言处理应用场景

自然语言处理 (NLP) 是 AI 的一个领域,它负责创建能够理解书面和口头语言的软件。

NLP 使你能够创建可以执行以下操作的软件:

  • 分析和解释文档、电子邮件和其他来源中的文本。
  • 解释口头语言,并合成语音响应。
  • 将口头或书面短语在各种语言之间进行翻译(不用语言之间的同步翻译)。
  • 解释命令并确定合适的操作。

例如,星舰指挥官是一款由 Human Interact 开发的虚拟现实 (VR) 游戏,故事发生在科幻世界中, 该游戏使用自然语言处理让玩家能够控制对白,并与游戏中的人物和星舰系统交互。

例如,当前流行元宇宙(Metaverse),是人类运用数字技术构建的,由现实世界映射或超越现实世界,可与现实世界交互的虚拟世界 ,具备新型社会体系的数字生活空间。

如下表描述了自然语言处理常见的任务 | 任务 | 功能 | |——|——| 文本分析 | 使用此服务可以分析文本文档并提取关键短语,检测实体(例如地点、日期和人物)并评估情绪(文档内容的正面或负面程度如何)。| 文本翻译 | 使用此服务可在 60 多种语言之间进行文本翻译。 | 语音 | 使用此服务可识别和合成语音,并翻译口语。 | 语言理解智能服务 (LUIS) | 使用此服务可以训练能够理解口头或文本命令的语言模型。 |

对话式AI应用场景 对话式 AI 这一术语用于描述 AI 代理参与人类对话的解决方案。

通常,对话式 AI 解决方案使用机器人来管理与用户的对话, 对话可以通过网站界面、电子邮件、社交媒体平台、消息系统、电话和其他渠道进行。

机器人可以作为以下 AI 解决方案的基础:

  • 产品或服务的客户支持。
  • 餐厅、航空公司、电影院和其他以预约为基础的业务的预订系统。
  • 卫生保健咨询和自我诊断。
  • 智能家居和个人数字助理。

例如,当前最流行强大的ChatGPT(OpenAI)可模拟人类间的相互对话(问答),以及按照使用者的描述生成或者操作某一对象, 如生成图像。

(3) 那么人工智能AI如何学习?

当前是从数据中学习, 在当今世界,我们在日常生活中会创建大量数据。

从我们发送的短信、电子邮件和社交媒体帖子,到我们用手机拍摄的照片和视频,我们产生了大量信息。 我们的房屋、汽车、城市、公共交通基础设施和工厂中的数百万个传感器也在创建更多数据。

数据科学家可使用所有这些数据来训练机器学习模型,这些模型可以根据它们在数据中找到的关系进行预测和推断。

例如,假设一个环境保护组织需要志愿者使用手机应用来对不同种类的野花进行识别和分类,以下动画展示了如何使用机器学习来实现此方案。

识别分类图

识别分类图

动画流程:

  • (1) 一个由植物学家和科学家组成的团队收集有关野花样本的数据。
  • (2) 并对样本的物种进行正确标记
  • (3) 使用算法对标记的数据进行处理,该算法可以提取样本特征与标记的物种之间的关系
  • (4) 该算法的结果内嵌在模型中。
  • (5) 志愿者发现新样本后,该模型可以正确识别物种标记。
(4) 人工智能挑战和风险有那些?

描述: 人工智能是一种强大的工具,可以极大地造福世界, 但是像任何工具一样, 其有好有坏,必须负责任地使用它。

AI 应用程序开发人员面临的一些潜在挑战,例如包括但不限于如下表所示:

挑战或风险

示例

偏差可能会影响结果

贷款审批模型因训练数据中的偏差而产生性别歧视

错误可能会造成伤害

自动驾驶车辆遇到系统故障并引发碰撞

可以公开数据

医疗诊断机器人使用敏感患者数据进行训练,这些数据存储不安全

解决方案可能并不适用于所有人

家庭自动化助手不为视觉障碍用户提供音频输出

用户必须信任复杂系统

基于 AI 的金融服务工具提供投资建议 - 它们基于什么?

谁对 AI 驱动的决策负责?

一个无辜的人因为面部识别证据而被判有罪 - 谁该为此负责?

规避风险

为了解决上述问题在我们进行 AI 软件的开发时,需要遵循六项原则,旨在确保 AI 应用程序能为棘手的问题提供出色的解决方案,而不产生任何意外的负面影响。

  • (1) 公平性: AI 系统应该公平对待所有人。 例如,假设你创建了一个机器学习模型来为银行的贷款审批应用程序提供支持。 该模型应在不考虑任何基于性别、种族或其他因素的偏见的情况下,对是否应批准贷款做出预测,这些偏见可能导致特定的申请人群遭受不公平的差别待遇。 意味着公平性在 AI 提供的上下文中是一个基本的社会与技术双重挑战,也就是说我们必须有足够多样化的人来开发和部署 AI 系统。
  • (2) 可靠性和安全性 AI 系统应可靠且安全地运行。 例如,大家思考一下基于 AI 的自动驾驶软件系统;或诊断患者症状并推荐处方的机器学习模型这些案例。 这些系统一旦出现不可靠性,就可能会给生命安全带来重大风险。 基于 AI 的软件应用程序开发必须经过严格的测试和部署管理,以在发布前确保它们能达到预期。 确保自己开发的系统与我们的设计理念一致,并且符合我们的价值观和原则。系统和模型不会为世界带来损害。 考虑安全性时,我们首先想到的例子时自动驾驶汽车,但绝不限于这些物理系统、物理代理。
  • (3) 隐私和安全 AI 系统应该保护并尊重隐私。 AI 系统所基于的机器学习模型依赖于大量数据,这些数据可能包含必须保密的个人详细信息。 即使对模型进行了训练且系统已投入生产,它仍可能在使用新数据进行预测或采取行动时侵犯隐私或安全。 与日俱增的依赖性和数据对保持系统安全提出了新要求。 当考虑这些人工智能系统的安全性时,你需要考虑数据从何而来、是如何到来的,如果是用户提交的数据,或是预测中使用的公共数据源,你如何防止数据被破坏,并配备异常检测或其他用于检测数据变化的系统,这些变化可能表明有对手试图影响系统结果。
  • (4) 包容性 AI 系统应该成为人们的有力助手,并与人互动。 AI 应不分身体能力、性别、性取向、种族或其他因素,造福社会各个阶层。
  • (5) 透明度 AI 系统应该是可理解的。 应让用户能充分了解系统的用途、工作方式以及局限性。 透明度具有两面性;一方面,透明度意味着创建人工智能系统的人应该对他们使用人工智能的方式和原因持开放态度,同时也要对他们系统的局限性持开放态度。 另一方面,透明度意味着人们应能够理解人工智能系统的行为,这就是人们常说的可解释性或可理解性。
  • (6) 问责 应有相关人员对 AI 系统负责。 设计和开发基于 AI 的解决方案的人员应在管理和组织原则的框架内工作,以确保解决方案符合定义明确的道德和法律标准。

总结: 所以,在将我们的面部识别原则用于整个公司都可以遵循的实践和过程时,我们必须要做的是设定大概的原则(例如对于公平性的承诺),并思考如何让开发团队秉持这些原则来审视开发生命周期的每个阶段。

参考文章

  • Microsoft Azure AI 基础知识(人工智能入门) : https://learn.microsoft.com/zh-cn/training/paths/get-started-with-artificial-intelligence-on-azure/
18.2 基础知识
(1) 图灵测试

在1950年,阿兰•图灵提出了图灵测试, 该测试提出了机器具有智能的一个定义,测试的方式是简单地比较人类的智能行为和计算机的智能行为。

即一个询问者对计算机和人类都提出一组问题,然后询问者得到两组答案,但他不知道哪一组是来自人类,哪一组来自计算机。

在仔细检查两组答案后,如果询问者不能肯定地说出哪一组来自人类,哪一组来自计算机(计算机模拟人类回答),那么,计算机就通过了具有智能行为的图灵测试。

(2) 智能体

什么是智能体?

智能体是一个能智能地感知环境、从环境中学习并与环境进行交互的系统。

智能体可以分成两大类:软件智能体和物理智能体。

1) 软件智能体

软件智能体是一组用来完成特殊任务的程序。 例如,有些智能系统能用来整理电子邮件(e-mail),能检査收到的邮件的内容,然后把它们归到不同的类别中(垃圾、不重要、重要、非常重要等), 另外一个软件智能体的例子是搜索引擎,它搜索万维网,发现能提供与查询主题相关信息的网址。

2) 物理智能体

物理智能体(机器人)是一个用来完成各项任务的可编程系统。简单的机器人可以用在制造行业,从事一些日常的工作,如装配、焊接或油漆。有些组织使用移动机器人去做一些日常的分发工作,如分发邮件或明信片到不同的房间, 移动机器人可以在水下探测石油。 人型机器人是一种自治的移动机器人,它模仿人类的行为。虽然人型机器人只在科幻小说中流行,但是要使这种机器人能合理地与周围环境交互并从环境里发生的事件中学习,这里面还有很多工作要做,在当前正在如火如荼的进行着,坚信通过不断的发展一定会成功的。

(3) 编程语言

描述: 虽然有些通用语言(如C、C++和Java、Python)能用来编写智能软件,但有两种语言是特别为人工智能设计的,它们是 LISP 和 PROLOG 语言

1) LISP LISP (LISt Programming)是约翰•麦卡思在1958年发明的,顾名思义,LISP是一种操纵表的编程语言。LISP把数据和程序都当成表,这就意味着LISP程序能改变它自身。这个特性与智能体的理念相吻合,智能体能从环境中学习并改善自身行为。 但是,LISP的一个缺点是它的行动迟缓。如果要处理的表比较长,LISP就变得很慢。另一个缺点是它的语法复杂。

2) PROLOG PROLOG (PROgraming in LOGic)是一种能建立事实数据库和规则知识库的编程语言。使用PROLOG编程能使用逻辑推理来回答那些可或从知识库中推导出来的问题。但是,PROLOG不是一种效率很高的编程语言,有些复杂问题使用其他语言(如C、C++或Java) 来解决时,效率更高。

3) Python

此处不得不提到Python编程语言,Python是人工智能中使用最广泛的编程语言之一,因为它简单易用,而且可以与数据结构和其他常用的AI算法无缝地使用。

Python是适用AI项目的原因是许多基于Python的有用库可以在AI中使用,比如Numpy提供科学计算能力,Scypy提供高级计算,Pybrain提供机器学习。

4) Java Java也是AI项目的好选择。它是一种面向对象的编程语言,专注于提供AI项目所需的所有高级特性,是可移植的,并提供内置的垃圾收集。

Java社区也是一个优势,丰富的社区生态系统可以帮助开发人员随时随地查询和解决问题。

对于AI项目来说,算法是灵魂,无论是搜索算法、自然语言处理算法还是神经网络,Java都可以提供简单的编码算法。此外,Java可扩展性也是AI项目的一个基本特征。

5) C++ C++是世界上速度比较快的编程语言,其在硬件层面上的交流能力使开发人员能够改进程序执行时间。对于时间很敏感,这对于AI项目是非常有用的,例如,搜索引擎可以广泛使用C++。

在AI项目中,C++可以用于统计,比如神经网络。此外,该算法可以在C++被广泛地快速执行,游戏AI主要使用C++代码,以便更快地执行和响应时间。

18.3 知识表示

当下阶段常常使用人工智能体来解决现实世界中的一些问题,此时就需要他能够进行知识的表达,当知识被表示成数据结构后就能被存储在计算机中的程序操纵, 此小节中我们描述4种常见的知识表示方法语义网、框架、谓词逻辑和基于规则的系统

(1) 语义网

语义网是Richard H.Richens在20世纪60年代提出的, 其使用有向图表示知识。

正如在第12章讨论的,有向图由顶点(nodes)和边(arcs)构成, 语义网用顶点代表概念, 用边(用箭头表示)表示两个概念间的关系。

WeiyiGeek.简单的语义网图

WeiyiGeek.简单的语义网图

1) 概念 描述: 为了给概念一个准确的定义,专家们把概念的定义与集合理论联系起来。因此,概念被看成一个集合或一个子集。

例如,“动物”是所有动物的集合,“马”是所有马的集合,也是“动物”的子集。对象是集合中的成员(实例),概念用顶点表示, 是不是与我们在学习对象编程语言中的类class相似。

2) 关系

描述: 我们使用关系(用边), 表示一条边可以定义一个“子类”关系一条边从子类指向超类,一条边可以定义一个“实例”关系一条边从实例指向它所属的集合,一条边也可以定 义一个对象的属性(颜色、大小……)。

最后,一条边可以定义一个对象的所有权,例如拥有另外一个对象,语义网能很好定义的最重要的关系是“继承”,继承关系定义明了这样一个事实: 一个类的所有属性将出现在继承的类中。

这可以用来从用图表示的知识中推导出新的知识。

(2) 框架

框架与语义网是紧密相关的,在语义网中,图用来表示知识;在框架中,数据结构(记录)用来表示相同的知识

与语义网相比,框架的一个优点是程序更容易处理框架,而不是语义网。

WeiyiGeek.框架表示语义图

WeiyiGeek.框架表示语义图

1) 对象 语义网中的一个节点变成了一组框架中的一个对象,所以一个对象可以定义一个类、一个子类或类的一个实例。例如上图中,爬行动物、哺乳动物、狗、Roxy 和 Ringo 都是对象。

2) 槽 语义网中的边被翻译成“槽”(数据结构中的域), 槽的名字定义了关系的类型和构成关系的槽的值。例如上图中,动物是爬行动物对象的一个槽。

(3) 谓词逻辑

通常的知识表示是谓词逻辑, 谓词逻辑可以用来表示复杂的事实。

由于有了悠久历史的理论逻辑的支持,谓词逻辑成为一门良好定义的语言,此节我们先介绍简单一些的语言——命题逻辑,然后再介绍谓词逻辑。

1) 命题逻辑

命题逻辑是由对世界进行逻辑推理的一组句子组成的一种语言。

  • 运算符: 命题逻辑使用5种运算符,如下所示: 第一个运算符是一元运算符(运算符带一个句子),其他4个都是二元运算符(运算符带两个句子), 每个句子的逻辑值(真或假)取决于原子句子的逻辑值,原子句子是不带运算符的构成复杂句子的特殊句子。图18-3显示了命题逻辑中每个运算符的真值表。
WeiyiGeek.命题逻辑运算符图
  • 句子: 在此种语言中的句子递归定义,如下所示: 1) 大写字母(如A、B、S或T)表示在自然语言中的一个语句,它们是一个句子。 2) 两个常数值(真和假)中的任意一个都是句子。 3) 如果P是句子,则非P也是句子。 4)如果P和Q是句子,则 P V Q, P ^ Q, P -> Q 和 P <-> Q 都是句子。

例如, 以下的是命题语言中的句子: a. 今天是星期天(S) b. 天在下雨(R) c. 今天是星期天或者是星期一(S V M) d. 天没下雨 (非R) e. 如果狗是哺乳动物,那么猫也是哺乳动物(D→C)

  • 推演: 在命题逻辑中需要从已知的事实中推导出新的事实此过程称为推演,给定两个假定为真的句子,我们能推演出新的为真的句子,前面两个句子称为前提,推演出的句子称为结论,而整个称为论断。

前提1: 他或者在家或者在办公室 前提2: 他不在家 结论 所以,他在办公室 如果我们用H代表 “他在家”,O代表 “他在办公室”,符号I-代表“所以”,那上面的论断可以表示成 {H V O , 非 H}| - O

我们是如何证明推演的论断是合法的,一个合法的论断是指它的结论是前提的必然延续。换言之,在一个合法的推演论断中,如果所有的前提都为真,而结论为假,这是不可能的。

验证论断合法性的一种方法是为前提和结论建立真值表,如果我们在其中发现了反例,那么结论就是非法的,反例就像所有的前提都为真,而结论却是假。

WeiyiGeek.推演图

WeiyiGeek.推演图

所以当找不到反例时,论断就是合法的。

2) 谓词逻辑

在命题逻辑中,表示句子的符号是原子的,我们不能分割开它而发现各个组成部分中所含的信息。

例如,如下这样的句子:P1:"琳达是玛丽的母亲” P2: “玛丽是安妮的母亲” , 我们可以用很多方法来组合这两个句子从而产生其他的句子, 但却不能抽取出琳达和安妮间的任何关系。

例如,我们不能从上面两个句子中推导出琳达是安妮的祖母, 若要进行这样的推导,我们就需要使用带谓词逻辑,这种逻辑定义了命题各部分间的关系。

在谓词逻辑中,句子被分成谓词和参数。例如,如下的句子被写成了谓词带两个参数的形式:

P1: “琳达 是 玛丽 的母亲” 变成 母亲(琳达,玛丽) P2: “玛丽 是 安妮 的母亲” 变成 母亲(玛丽,安妮)

上面句子中的母亲关系是由谓词“母亲”来定义的,如果在两个句子中的玛丽是指同一 个人,我们可以推导出琳达和安妮间的新的关系:祖母(琳达,安妮), 这就是谓词逻辑要实现的目的。

WeiyiGeek.谓词逻辑之句子、量词、推演图

WeiyiGeek.谓词逻辑之句子、量词、推演图

3) 超谓词逻辑

由于逻辑推理的需要,逻辑得到了进一步的发展,这些包括高阶逻辑、默认逻辑、模态逻辑和时态逻辑,此处只是简单地罗列一下这些名词。

1) 高阶逻辑: 扩展了谓词逻辑中量词 ∀(所有的)和 彐 (存在) 的范围, 这些谓词逻辑中的量词把变量x和y绑定到实例(在初始化时), 在高阶逻辑中我们能使用量词捆绑那些代表属性和关系的变量,这样在初始化的过程中,这些变量被换成了谓词。

例如,我们可以有 ∀ P(Pj v Ps), 下标 j 和 a 表示 John 和 Anne, 意味着 John 和 Anne 具有完全相同的属性。

2) 模态逻辑: 逻辑的一个快速发展的趋势是模态逻辑, 逻辑中包含了“could”“should”、“may”might”“ought”等这样的表达式,来表达句子中语法上的语气。在这样的逻辑中,我们有符号表示“it is possible that”这样的运算符。

3) 时态逻辑:像模态逻辑一样,用一套时态运算符扩展了谓词逻辑,如“from now on”或者“at some point in time”,它们包含了论断合法性中的时间因素。

4) 默认逻辑: 我们假定论断的默认结论可以被接收,只要论断与知识库中的内容相一致即可。例如,我们假定所有的鸟都会飞,除非知识库中有内容废除了这条通用的事实。

(4) 基于规则的系统

描述: 基于规则的系统使用一组规则来表示知识,这些规则能用来从已知的事实中推导出新的事实。

规则表示当指定条件满足时什么为真,基于规则的数据库是一组if……then……语句,它们的形式为:if A then B 或 A → B, 其中A称为前提,B为结论。

注意在基于规则的系统中,每条规则都是独立处理的,与其他规则没有关联。

1) 组成 描述: 一个基于规则的系统由三部分构成解释器(或推理机)、知识库和事实库, 其关系如下所示:

  • 知识库: 基于规则系统中的知识库部分就是规则的数据库(仓库)。它包含一组预先建立的规则,这些规则能从给定事实中得出结论。
  • 事实库: 包含了知识库中的规则要使用的一组条件。
  • 解释器:(推理机)是一个处理器或控制器(如一段程序),它把规则和事实组合在一起,解释器有两种类型正向推理反向推理
WeiyiGeek.基于规则的系统三部分组成图

WeiyiGeek.基于规则的系统三部分组成图

2) 正向推理

正向推理是这样一个过程,解释器使用一组规则和一组事实来执行一个行动,此行动可能是向事实库中增加一条新的事实,或处理其他一些命令,如开启另一个程序或机器,解释器解释和执行规则,直到不再有要解释的规则。

WeiyiGeek.正向推理的流程图

WeiyiGeek.正向推理的流程图

如果系统中有任何冲突发生,冲突是指有两条不同的规则可以应用到一个事实上,或一条规则可以应用到两个事实上,这时系统就要调用冲突处理过程来解决这个问题,这就保证了只有一个输出能被加到事实库中或一个行动被采取

3) 反向推理

如果系统是证明一个结论,那么正向推理效率不高,面对给出的结论,所有的规则检査所有的事实。这种情况下如果使用反向推理,效率会高些。

WeiyiGeek.反向推理的流程图

WeiyiGeek.反向推理的流程图

过程从一个结论(目标)开始,如果目标已在事实库中,则过程停止,结论得到验证,如果结论不在事实库中,那么系统査找目标在规则结论中的规则。

但是,反向推理不是触发这条规则,而是去验证这条规则中的每个事实(递归)。如果这条规则中的所有事实都在事实库中,那么原来的目标就得到验证。

18.4 专家系统

专家系统使用前面所讨论的知识表示语言,来执行通常需要人类专家才能完成的任务。它们被用在需要人类专家,而人类专家却缺少、昂贵或不可用等场合。

例如,在医疗领域,可建立专家系统从一组症状中得到可能病因的子集,而这项任务通常是由医生来进行的。

(1) 知识抽取

描述: 一个专家系统是建立在预先定义的关于领域专家经验的知识的基础上的, 因此建立专家系统的第一步就是从人类专家身上抽取知识, 抽取的知识就变成了我们前面讲到的知识库。

从专家身上抽取知识通常是困难的,这有几个原因:

  • 1)专家拥有的知识通常是启发式的,它们是基于概率的,而不是确定的。
  • 2)专家常常发现用可以存放在知识库中的规则形式来描述知识是艰难的。 例如,要一步一步地显示故障电动机是如何被诊断的,这对电气工程师来说是非常艰难的, 知识常常是直觉的。
  • 3)知识获取只能通过与专家个人会面才能进行, 如果会面者对这种会面并不擅长,那么会面将是累人的和枯燥的。

所以说,知识抽取过程通常是由知识工程师来完成, 他可能并不是此领域的专家,但他有经验,知道如何去会面,如何去解释答案,所有这些工程师能用来建立知识库。

(2) 事实抽取

为了能推导新的事实或采取动作,除了需要用知识表示语言表示的知识库外,还需要事实库, 专家系统中的事实库是基于事例的,在事例中事实被收集或度量,然后进入系统,被推理机使用。