北京化工大学人工智能导论期末复习笔记
写在前面人工智能学科是进来计算机科学领域热门学科,人工智能导论作为一门导论性课程,对我们对机器学习、人工智能、数据挖掘的概念了解还是十分有好处的。
虽然平时这门课没上几节,最后考试也不难,遂把期末复习的笔记整理发布出来,一方面可能有以后的学弟学妹可能有帮助,二来也是做一个小小的记录。
如果对人工智能感兴趣的话,还是十分推荐学弟学妹们平时多多听一点,其实基本概念并不难,不要像我一样,一开始就被吓唬住了。
推荐一些我复习过程中看的科普文章,可能对理解串联这些概念有所帮助:
知识点整理老师给考点复习文档,晚上有一个比较全的答案,但是比较乱,下面是我自己整理的和我个人的笔记整理在一起了。
第一章绪论(这一章主要考的就是概念,背下就可以了,可能在简答题和填空题中考)
1.什么是人工智能?人工智能的意义和目标是什么?
人工智能是智能机器所执行的通常与人类智能有关的智能行为;
人工智能研究的近期目标是使现有的计算机不仅能做一般的数值计算及非数值信息的数据处理而且能运用知识处理问题能模拟人类的部分智能行为。
2.完整的物理符号系统的基本功能输入符号、输出符号、存储符号、复制符号建立符号结构(通过找出各符号间的关系,在符号系统中形成符号结构)、条件性转移(根据已有符号,继续完成活动过程)
3.人工智能有哪些主要学派?他们的认知观分别是什么?
心理学派,认为人工智能源于数理逻辑。生理学派,认为人工智能源于仿生学,特别是对人脑模型的研究。控制论学派,认为人工智能源于控制论。
4.人工智能的研究领域包括哪些?
数据挖掘、模式识别、机器视觉、自然语言处理、智能系统、专家系统、机器学习、神经网络、机器人学、人工生命、智能CAD、组合优化问题、自动定理证明、分布式人工智能系统、智能通信等(背几个就行了)
5.什么是图灵测试?(这个不用背,理解了就好了,考了一个选择题)
让一位测试者分别于一台计算机和一个人进行交谈,而测试者事先并不知道哪一个被测者是人,哪一个是计算机。如果交谈后测试者分不出哪一个被测者是人,哪一个是计算机,则可以认为这台被测的计算机具有智能。
第二章知识表示(一些概念会考填空器,主要是考知识表示的两种方法:一阶谓词表示和语义网络表示)
1.知识的层次及其概念?(没考,理解了就很好背)噪声-》数据-》信息-》知识-》元知识
数据:信息的载体和表示信息:数据的语义知识:把有关信息关联在一起形成的结构元知识:有关知识的知识,是知识库的高层知识
2.知识的属性及引起不确定性的因素?(没考)
相对正确性不确定性(引发因素:随机性、模糊性、不完全性、经验)可表示性可利用性
3.知识的分类?(没考)
按作用范围:常识性知识、领域性知识按作用及表示:事实性知识、过程性知识、控制性知识按结构及表现形式:逻辑性知识、形象性按知识确定性:确定性知识、不确定性知识
4.什么是知识表示?(考了一个填空题)
就是知识的符号化和形式化的过程,是研究用机器表示知识的可行性、有效性的一般方法,是一种数据结构与控制结构的统一体,既考虑知识的存储又考虑知识的使用。
5.常用的知识表示方法及其衡量标准?
表示方法
一阶谓词表示法产生式表示法框架表示法语义网络表示法面向对象表示法状态空间表示法问题规约表示法衡量标准6.会用一阶谓词表示知识
三步走:
定义谓词P(x1,x2…)(表示的含义就是x1是/属于P。谓词=谓词名P+个体x1/x2(个体是一个常量/变量/函数整体))。首先谓词是什么?谓词就是命题的一种符号化形式。命题就是一句可以判断正误的陈述句(比如:老张是一名教师,谓词就是Teacher(LaoZhang))。用连接词(﹁(非)∨(或)∧(与)→(蕴含)━(等价))和量词(全称量词∀和存在量词∃)连接各个谓词,形成谓词公式。举个例子:
Everydoghasbittenapostman.
定义谓词:
Dog(x):xisadog
Postman(y):yisapostman
Bite(x,y)xhasbitteny
连接谓词:∀x∃yBite(Dog(x),Postmain(y))
7.会用语义网络表示知识
重要的理解语义网络,其实就是一个有向图。既然是有向图,一定有节点和有向边(弧)(表示两者的关系)。语义网络还多一个"无向边",表示节点的属性。
此外,节点不仅可以表示一个对象,还有两种特殊的节点:合取节点,析取节点,通过和普通的对象节点使用有向边连接,可以表示并且和或者的关系。
举个例子:例如:与会者有男,有女,有年老的,有年青的。(其中,A,B,C,D分别代表四种不同情况的会者)
8.会用框架表示知识
这里主要理解框架就可以了。
框架就是一种能数据结构,这种结构用来描述一个对象的属性。
框架结构如下:
举个例子:
框架名:〈教师〉姓名:单位(姓、名)年龄:单位(岁)性别:范围(男、女)缺省:男职称:范围(教授,副教授,讲师,助教)缺省:讲师部门:单位(系,教研室)住址:〈住址框架〉工资:〈工资框架〉开始工作时间:单位(年、月)截止时间:单位(年、月)把具体信息填入框架的槽和侧面,就得到了事例框架。
框架名:〈教师-1〉姓名:夏冰年龄:36性别:女职称:副教授部门:计算机系软件教研室住址:〈adr-1〉工资:〈sal-1〉开始工作时间:1988,9截止时间:1996,79.面向对象的基本特征及其表示
模块性、封装性、继承性、多态性、易维护性。
第三章搜索和推理1.搜索的分类?
首先我们得搞懂,搜索是什么?搜索不是指广义的搜索,而是问题的求解方式。
我们可以把问题看做一个图,一个图包含很多状态(节点)。解决问题就是搜索到目标状态。
所以我们研究的搜索可以说是图搜索。
搜索方向
数据驱动目的驱动双向搜索搜索策略(这个是我们要重点掌握的)
盲目搜索(其实就是图的遍历,盲目就是说节点的权值是相同的,我们没用运用任何提示信息,告诉我们某条路径搜索成功的可能性更大,只是盲目的搜索所有可能的路径,判断是否是问题的解决)
深度优先遍历宽度/广度优先遍历(层次遍历)启发式搜索(和上面相反,使用启发性信息使用估价函数给每个节点不一样的优先级(权重),这样能够减少搜索的时间)
A搜索算法A*搜索算法2.宽度优先与深度优先搜索算法过程的不同点
宽度优先搜索过程中,我们需要定义了两个数据结构:
open表:存储这样的节点,节点已经被访问过,但是该节点的子节点(不包括孙子辈分的)没有被访问过closed表:存储已经扩展过的节点。这里"扩展过"的意思就是,已经把该节点的子节点加入到open表了。具体可以看下面的例子。比如在上面图中,我们需要搜索节点9,我们的操作过程是这样的:
我们先把0节点放到open表,表示从0开始访问,如果0是目标节点,结束。
否则把open表的第一个节点(0节点)放到closed表中,然后看0节点是否可以扩展(是否有子节点)。
如果可以扩展,就先把子节点(这里是1,2)放到open表的尾部,再判断该节点的子节点是不是目标节点。
如果不是,继续从opn表取出第一个节点重复上述操作(这里是先取出1放到closed表,然后把3,4,5依次放到open表尾部,然后再取出2,把6,7,8放到open表尾部,再取出3,把9,10放到open尾部,其中9是目标节点,结束搜索)
整个过程可以抽象成下面的流程图:
从上面过程可以看出,open表是一个队列结构,先进先出,每次都是把扩展的子节点放到open表末尾排队,每次取出队首的第一个元素。整个过程也是一层一层的遍历。
深度优先理解了宽度优先过程,深度优先与前面区别就是每次把扩展的子节点放到open表的队首,每次取出队首的第一个元素。这其实一个栈的结构,后进先出。
仍然以上面为例,说明过程:
一开始把0放入open,取出放入closed,扩展节点1,2放入open表队首。此时2在队首,取出2,扩展节点6,7,8放入队首,此时8在队首,取出放入closed,无法扩展,再次从open取出队首7,无法扩展,再次从open表去除6,无法扩展。
然后再从open取出队首1,把扩展节点3,4,5放入open表,取出5和4都无法扩展。再取出3,扩展节点9和10放入open,其中9是目标节点,结束搜索。
总结,两者区别如下:
宽度优先是队列结构
深度优先是堆栈结构
3.理解A*算法,能找出算法可扩展的节点数和最短路径?
前面也已经说过了,启发式搜索就是利用启发式信息通过估价函数,给每个节点确定代价。
A算法:每次扩展后的节点加入到open表中,都要按照估价函数,按代价从小到大,对open表的节点进行重新排序,然后取出队首的元素(代价最小的节点)。
估价函数为f(x)=g(x)+h(x)
f(x)从初始结点经过x结点到达目的结点的路径的最小代价估计值g(x)是初始节点到节点x的实际代价;h(x)是节点x到目标节点的最优路径的估计代价。举个例子:
八数码问题也称为九宫问题。在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的某一数字,不同棋子上标的数字不相同。棋盘上还有一个空格,与空格相邻的棋子可以移到空格中。要求解决的问题是:给出一个初始状态和一个目标状态,找出一种从初始转变成目标状态的移动棋子步数最少的移动步骤。题目如下:
对于八数码问题来说,每个状态就相当于一个节点。
先把初始节点移入open表中,计算代价是4,然后移出队首元素进入closed表,看能否扩展(上图中深蓝色空格可以与相邻上、左、右交换),扩展出3个节点A、B、C(括号内是它的代价),排序后移入open表,每次取出代价最小的,即B节点,B节点又扩展D/E/F三个节点。D节点扩展C/H节点,与之前的E/F一起排序。
再从open表取出E节点,扩展I/J节点。以此类推……
A*算法:思想和上面一样,就是估价函数变化了一点。
4.理解产生式系统的推理方式?
知识库+推理机
这里介绍两个概念:
产生式产生式重点是规则知识的表示,因为产生式系统其实就是一个专家系统,根据规则库来判定。
产生式系统分为三部分:
规则库(用产生式表示的规则知识)综合数据库(包括事实库和中间产生一些结果)推理机(就是用来将已知事实根据规则库推理到另一个事实)举个例子:
规则库:如果一个人很帅,他的性格也一定不错(只是举个例子哈)
事实库:小明很帅
推理结果:小明性格也不错
5.规则推理的冲突消解方法?能根据要求进行简单的推理。
冲突发生条件是,一个事实匹配上了多个规则,这样就会得到多个结论。
处理冲突方法有:按针对性排序/按已知事实新鲜性排序/按匹配度排序/按条件个数排序/按上下文限制排序/按冗余限制排序/按领域问题的特点排序(这个背下来就可以了)
6.什么是不确定推理?
推理分为确定性推理和不确定推理。
很好理解,比如上面推理小明性格也不错,就是确定性推理,因为它基于确定性的规则。
确定性推理的方法有:自然演绎、归纳演绎、与/或型不确定推理方法有概率方法(经典概率、逆概率(贝叶斯公式,这个公式很简单,不要被名字吓到了),就是概率论的概率推导)、可信度方法(C-F模型)、模糊推理法7.能求解证据和结论的不确定计算方法。
C-F模型
首先我们需要明确两个概念:不确定知识和模糊知识,这两个是不一样的。
举个例子:
小明很帅(概率是0.8,小明可能不帅,也可能帅)
小明比较0.8帅(帅的程度是0.8,小明一定很帅,但是不帅贼帅那种)
对于不确定知识,可信度表示是不确定知识真实(存在)的可能性
对于模糊知识,可信度表示的是模式知识存在的程度(已经肯定是存在的了)。
说完了可信度,那么C-F模型到底是什么东西?
C-F模型是特指对不确定知识可信度的符号化。C-F全称是可信度因子(certaintyfactor)。通过C-F模型(可信度)可以对不确定知识(规则)进行推理。
C-F模型表示知识(规则)的不确定性
CF(H,E)的取值范围:[-1,1]。若由于相应证据的出现增加结论H为真的可信度,则CF(H,E)>0,证据的出现越是支持H为真,就使CF(H,E)的值越大。反之,CF(H,E)