CH1:Introduction
人工智能定义目前还不统一。一般解释:人工智能就是用人工的方法在机器(计算机)上实现的智能,或称机器智能、计算机智能。
人工智能分为:
- 弱人工智能:指不能真正实现推理和解决问题的智能机器,并不真正拥有智能,也不会有自主意识。
-
强xxxx:真正能思维的智能机器,并且认为这样的机器是有知觉的和自我意识的。分为:
- 类人:机器的思考和推理类似人的思维
- 非类人:机器产生了和人完全不一样的知觉和意识,使用和人完全不一样的推理方式
人工智能发展史:
孕育期(1956年以前):
- 亚里士多德的演绎推理、莱布尼兹的数理逻辑基础、图灵提出”机器也能思维“、莫克发明ENIAC、麦克洛奇和皮兹提出第一个MP模型(早期的神经网络)、维纳创立的控制论以及行为主义学派。
形成期(1956-1970):
- 达特茅斯会议(1956年,人工智能元年):诞生了”人工智能“一词。
- 其他的如下:
暗淡期(1966-1974):
对于AI的预言过高以及很多应用的失败(萨缪尔的下棋程序、归结法能力有限....),引起了很多人的质疑。
知识应用期(1970-1987):
- 专家系统:从理论走向专门知识应用,如费根鲍姆的MYCIN专家系统、斯坦福大学的杜达的PROSPECTOR。
- 计算机视觉、自然语言处理、机器翻译、机器人等研究领域取得进展。
暗淡期II(1987-1993):
专家系统出现了很多问题。
继承发展期(1986-2005):
将AI拆分成各自为战的几个子领域:
- 机器学习、人工神经网络、智能机器人和行为主义研究趋向热烈和深入。
- 智能计算弥补了人工智能中在数学理论和计算上的不足,更新和丰富了人工智能理论框架,使人工智能进入一个新的发展时期 。
进入新世纪——大数据时代(2005-现在):
(什么是分支因数,看ppt28页的疑问)
人类智能和人工智能的关系:
都能够输入、输出、存储信息、复制、建立符号结构(在符号系统中形成符号结构)、条件性迁移(根据已有符号,继续完成活动过程)
(后两个不太懂?)
- 物理符号系统的假设:任何一个系统能表现出智能 ⇔ 能够执行上述6种功能。这种智能指的是人类所具有的那种智能。
-
三个推论:
- 既然人具有智能,那么他就一定是个物理符号系统。人之所以能够表现出智能,就是基于他的信息处理过程。
- 既然计算机是一个物理符号系统,它就一定能够表现出智能。这是人工智能的基本条件。
- 既然人是一个物理符号系统,计算机也是一个物理符号系统,那么就:能够用计算机来模拟人的智能活动。
-
局限性:在人类智能中,常识扮演着重要角色。人类可能不是按照逻辑的方式来使用常识,常识极难用一组事实和规则详细说明。
图灵测试:让机器模仿人类回答问题,判断它是否具备智能。
问题:提问者不按照问题的范围和提问的标准进行提问,编制回答问题的程序是很困难的。
人工智能的学派
符号主义(Symbolism)
又称为逻辑主义、心理学派、计算机学派
- 原理:物理符号系统假设、有限合理性原理。
- 主要特征:立足于逻辑运算和符号操作,适合于模拟人的逻辑思维过程,解决需要逻辑推理的复杂问题。
- 缺点:形象思维难以模拟
连接主义(Connectionism)
仿生学/生理学派:
- 原理:神经网络间的机制与学习算法。
- 特征:神经元之间的并行协作实现信息处理,处理过程具有并行性,动态性,全局性。
- 缺点:不适合解决逻辑思维(与上边的符号主义相反)
行为主义(Actionism)
又称:进化主义/控制论学派。基于控制论和”动作-感知“型控制系统,属于非符号处理方法。
基本观点:
1、知识和形式化表达和模型化方法是人工智能的重要障碍之一。
2、智能取决于感知和行动,应直接利用机器对环境作用后,环境对作用的响应为原形。(?)
3、智能行为只能通过在现实世界中与周围环境交互作用而表现出来。
4、人工智能可以像人类智能一样逐步进化,分阶段发展和增强。
CH2:知识表示-状态空间知识表示及其搜索方法
知识的一般概念:知识是人们在改造客观世界的实践中积累起来的认识和经验
知识表示:对知识的一种描述,用一组符号把知识编码成计算机可接受的某种结构。
人工智能系统的知识包括(知识的要素):
- 事实:事务的分类、属性,以及各种事实。属于最底层知识。
- 规则:”如果-那么-“形式
- 控制:如何去做一件事
- 元知识:知识库中的高层知识。
以知识和符号操作为基础的智能系统,其求解方法需要某种对解答的搜索。涉及两个方面:问题的表示、求解的方法。
知识表示的一般方法
状态空间法:
几个概念:
- 状态:描述某类事物的差别。
- 算符:使得问题从一种状态转换到另一种状态的手段。
- 状态空间:表示一个问题各种状态及其关系的图。包含S、F、G,分别为初始状态集、操作符集合、目标状态集合。
状态图示法:寻找有向图中的代价最小路径。
搜索推理
找到一条代价较少(时间、空间复杂度最小)的推理路线。
图搜索
记住三个东西:
- OPEN表:记录还未扩展的节点。
- CLOSE表:已经扩展的节点。
- 从目标返回的路径:当前节点必须有指向父节点的指针。
、深度优先搜索
图搜索通用过程:???
盲目搜索:
宽度优先:搜完本层节点才能继续搜下一层的节点。
深搜:扩展最新产生的节点,深度相等的节点任意排列。注意: 扩展的后继节点放在OPEN表的前端。
有界深搜:
- ”深度界限“:起始节点为0,其他节点=父节点深度+1。
- 达到深度界限时,仍未出现目标节点,就换个分支。
等代价搜索:
代价树的宽度优先搜索:对OPEN表中的所有节点排序。
代价树的深度优先搜索:是对扩展结点n的子节点排序。
启发式搜索
A算法(引入估价函数f):选择OPEN表中f值最小的作为扩展结点。
*关于f(n) = g(n) + h(n):*g(n)是从初始节点到节点n已付出的代价,h(n)是节点n到目标节点最佳路径的估计代价。
注意更新扩展结点i的后继节点j:
-
先计算f(j)
-
j既不在OPEN也不在CLOSE中,添加j到OPEN表,并设置指向其父节点的指针
-
如果在OPEN/CLOSE中,需要比较f值:
- 如果新的f值较小,新值代替旧值
- 使j指向i而不是指向j原先的父节点
- 如果j在CLOSE中,把j移回到OPEN中
A算法*(还不是特别明白):
- k(ni,nj),节点ni和nj最小代价路径的实际代价。
- h*(n):从状态n到目标状态的路径的最小估计代价。
- g*(n) = k(S,n); f*(n) = g*(n) + h*(n);
- f是对f的估计,g是对g的估计,h是对h的估计(其中h(n) >= h(n))。
CH3:问题规约知识表示及其搜索方法
1.基本概念
问题规约法:将某个问题转变为子问题集合,而这些子问题可以直接得到。
组成部分:初始问题描述、一套把初始问题转换为子问题的操作符、一套本原问题描述
与或图如下:
-
如果某条弧线从节点a指向节点b,那么节点a叫做节点b的父辈节点;节点b叫做节点a的后继节点或后裔;
-
或节点,只要解决某个问题就可解决其父辈问题的节点集合;
-
与节点,只有解决所有子问题,才能解决其父辈问题的节点集合;
-
终叶节点,是对应于本原问题的节点
-
可解节点定义:
- 终叶节点是可解节点(与本原问题对应)
- 某个非终叶节点含有或后继节点,当其后继节点至少有一个可解时,该非终叶节点为可解节点
- 某个非终叶节点含有与后继节点,当其后继节点全部可解时,该非终叶节点为可解节点
-
不可解节点:
- 无后裔的非终叶节点;
- 含有或后继节点,每个后继节点均不可解
- 含有与后继节点,至少一个后继节点不可解
与或树搜索
盲目式搜索
与或图的一般搜索、深搜、广搜
1.广搜:
执行可解标志过程:就是对其父节点标识(其某个后继节点有终叶节点),并且向上看此时该节点的父节点能否判断其是否可解。
2.深搜:
- 要判断从open表取出来的节点的深度。如果等于深度界限,认定它为不可解节点。
- 将扩展出来的节点放到open的前端,即open是堆栈。
启发式搜索
Max-Min搜索:
基本思想:
-
通过计算当前所有可能的方案来进行比较,寻找一个最优方案。
-
根据问题的特征来定义一个估价函数,用来估算当前博弈树端节点的得分。
-
计算端节点的估值后,在计算其父节点的得分:
- 对或节点:选其子节点的最大得分作为其父节点的得分
- 对与节点:选其子节点的最小得分作为其父节点的得分
-
如果一个行动方案能获得较大的倒推值,则它就是当前最好的行动方案
步骤:
Step1:以 c(o) 为根,生成 k-步博弈树;
- Max代表机器一方,Min代表敌方
Step2:评估博弈树叶节点对应的博弈状态(棋局);
- 定义估价函数est(c),est(c)的值越大,意味着棋局c对Max越有利。
Step3:进行极大极小运算 (Max-Min 运算);
- 由叶节点向根节点方向回溯评估,在Max处取最大评估值(或运算),在Min处取最小评估值(与运算)。
Step4:等待 Min 行棋,产生新的 c(o),返回 step1;
α-β剪枝
基本思想:边生成博弈树边计算评估各节点的倒推值,并且根据评估出的倒推值范围,及时停止扩展那些已无必要再扩展的子节点。
α: Max 节点评估值的下界
β: Min 节点评估值的上界
剪枝规则:
- 对于一个与节点来说,它取当前子节点中的最小倒推值作为它倒推值的上界,称此为β值;(β<= 最小值 )
- 对于一个或节点来说,它取当前子节点中的最大倒推值作为它倒推值的下界,称此为α值.(α >= 最大值)
- α剪枝规则:任何与节点x的β值如果不能升高其父节点的α值,则对节点x以下的分支可停止搜索,并使x的倒推值为β
- β剪枝规则:任何或节点x的α值如果不能降低其父节点的β值,则对节点x以下的分支可停止搜索,并使x的倒推值为α
CH4:谓词逻辑表示与推理技术
谓词逻辑法
置换(Subtitution)&合一(Unification)
置换(Subtitution)是形如: { t1/x1,t2/x2,…, tn/xn}的有限集合。其中,ti是不同于xi的项(常量、变量、函数);x1,x2, …,xn必须是互不相同的变量; ti/xi 表示用ti代换xi。
-
例:令置换 s={t1/x1, … ,tn/xn},而E是一谓词公式, 那么s作用于E,就是将E中出现的变量xi均以ti代入(i=1, … ,n),结果以Es表示,并称为E的一个例。
-
置换乘法(合成) :
-
置换可结合:
- S1S2表示两个置换S1和S2的合成,L表示一表达式,则有:(LS1)S2=L(S1S2),(S1S2)S3=S1(S2S3);
- 置换不可交换。
合一:寻找项对变量的置换,以使两表达式一致。
一个置换s作用于表达式集{Ei}的每个元素,则我们用 {Ei}s来表示置换例的集。
- {Ei}是可合一的:如果存在一个置换s, 使得E1s= E2s= E3s=…。此s为{Ei}的合一者。
- 最一般合一者(记为mgu):通过置换最少的变量以使表达式一致。
消解原理
又称为归结原理。是一种基于逻辑的、采用反证法的推理方法,是机器定理证明的主要方法。
消解法的基本原理:采用反证法或者称为反演推理方法,将待证明的表达式(定理)转换成为逻辑公式(谓词公式),然后再进行归结,归结能够顺利完成,则证明原公式(定理)是正确性的。
证明的基本思想:
- 设F1、 … 、Fn、G为公式,G为F1、 … 、Fn的逻辑推论,当 且仅当公式((F1∧…∧Fn)→ G)是有效的。
- 反证法:设F1、 … 、Fn、G为公式,G为F1、…、Fn的逻辑推论,当且仅当公式(F1∧…∧Fn ∧ ¬G)是不可满足的。
一些概念:
-
文字:一个原子公式和原子公式的否定都叫做文字,如:P(x),¬P(x,f(x)),Q(x, g(x))
-
子句:由文字的析取组成的公式,如: P(x)∨Q(x), ¬P(x,f(x))∨Q(x,g(x))
-
空子句:不包含任何文字的子句
-
子句集:由子句构成的集合
-
消解:消解过程被应用于母体子句对,以便产生一个导出子句。
例如,如果存在某个公理E1∨E2和另一公理 ~E2∨E3,那么E1∨E3在逻辑上成立,这就是消解。而称E1∨E3为E1∨E2和~E2∨E3的消解式(resolvent)。
子句集的求取:
-
消去蕴涵符号:只应用∨和~符号,例如以 ¬A∨B替换A→B。
-
减少否定符号的辖域:每个否定符号~最多只用到一个谓词符号上,并反复应用狄·摩根定律。如:
- 以~A∨~B代替~ (A∧B),
- 以~A∧~B代替~(A∨B),
- 以(∃x){~A}代替~(∀x)A,
- 以(∀x){~A}代替~(∃x)A,
- 以A代替~(~A)
-
对变量标准化:对哑元(受量词约束的变量)改名以保证每个量词有其自己唯一的哑元。
-
消去存在量词:
-
如果要消去的存在量词在某些全称量词的辖域内:如(∀y) [ (∃x) P(x,y) ]
- 以一个Skolem函数代替每个出现的存在量词的量化变量,这里就是用Skolem函数代替∃的量化变量x。
- Skolem函数的变量就是由那些全称量词所约束的全称量词量化变量,所以Skolem函数的变量就是∀约束的y。
- 所以(∃x) P(x,y),写成:(∀y)P(g( y), y)
- Skolem函数所使用的函数符号必须是新的,即不允许是公式中已经出现过的函数符号。
-
如果要消去的存在量词不在任何一个全称量词的辖域内,那么就使用不含变量的Skolem函数即常量。例如:(∃x)P(x)化为P(A)
必须是个新的常量符号,即未曾在公式中其它地方使用过。
-
-
化为前束形:
把所有全称量词移到公式的左边,并使每个量词的辖域包括这个量词后面公式的整个部分。
前束形 = (前缀) (母式)
= (全称量词串) (无量词公式)
-
把母式化为合取范式(由一些谓词公式和(或)谓词公式的否定的析取的有限集组成的合取。)
这里用了分配律
-
消去全称量词
-
消去连词符号∧:用{(A∨B),(A∨C)}代替(A∨B)∧(A∨C)
-
更换变量名称:
例如{~P(x)∨~P(y)∨P[f(x,y)], ~P(x)∨Q[x,g(x)],
P(x)∨P[g(x)]},使一个变量符号不出现在一个以上的子句中:- ~P(x)∨~P(y)∨P[f(x,y)]——> ~P(x1)∨~P(y)∨P[f(x1,y)]
- ~P(x)∨Q[x,g(x)]——> ~P(x2)∨Q[x2,g(x2)]
- ~P(x)∨~ P[g(x)]}——> ~P(x3)∨~ P[g(x3)]
消解反演
应用归结原理证明定理的过程称为归结(消解)反演。
一般过程:
- 建立子句集S
- 从子句集S出发,仅对S的子句间使用归结推理规则
- 如果得出空子句, 则结束;否则转下一步
- 将所得归结式仍放入S中
- 对新的子句集使用归结推理规则
- 转3
说明两点:
- 空子句不含有文字,它不能被任何解释满足, 所以空子句是永假的,不可满足的。
- 归结过程出现空子句,说明出现互补文字,说明S中有矛盾,因此S是不可满足的。
如欲证明Q为P1 ,P2 ,…,Pn的逻辑结论,只需证(P1∧P2∧…∧Pn)∧¬Q是不可满足的。
F为已知前提的公式集,Q为目标公式(结论),用归结反演进行证明的步骤是:
- 否定Q,得到¬Q;
- 把¬Q并入到公式集F中,得到{F, ¬Q};
- 把公式集{F, ¬Q}化为子句集S;
- 应用消解推理规则对子句集S中的子句进行归结,并把每次归结得到的归结式都并入S中。如此反复进行,若出现 了空子句,则停止归结。
消解推理规则
消解的定义:
令L1,L2为两任意原子公式:L1和L2具有相同的谓词符号,但一般具有不同的变量,已知两个子句L1∨α和~L2∨β,如果L1和L2具有最一般合一σ,那么通过消解可以从两个父辈子句推导出一个新子句(α∨β)σ。这个新子句叫做消解式。
含有变量的消解式
必须找到一 个作用于父辈子句的置换,使父辈子句含有互补文字:
消解推理的常用规则
反演求解过程
例:“如果无论约翰(John)到哪里去,菲多(Fido)也就去那里,那么如果约翰在学校里,菲多在哪里呢?”
- 公式集S:(∀x)[AT(JOHN, x) ⇒ AT(FIDO, x)],AT(JOHN,SCHOOL)
- 把问题化为一个包含某个存在量词的目标公式,使得此存在量词量化变量表示对该问题的一个解答: (∃x)AT(FIDO,x)
(1)把由目标公式的否定产生的每个子句添加到目标公式否定之否定的子句中去。
目标公式的否定产生: (∀x)[~AT(FIDO,x)] ,其子句形式为:~AT(FIDO,x) ,得重言式:~AT(FIDO,x)∨AT(FIDO,x)
(2)按照反演树,执行和以前相同的消解,直至在根部得到某个子句为止。
(3)用根部的子句作为一个回答语句。子句AT (FIDO,SCHOOL)就是这个问题的合适答案。
语义网络法
语义网络是知识的一种结构化图解表示,它由节点和弧线组成。
节点用于表示实体、概念和情况等,节点之间的弧线用于表示节点间的关系。
二元语义网络
- 表示简单的事实:
- 表示占有关系和其它情况:
- 用一组基元来表示知识:
多元语义网络
多元关系可转化成一组二元关系的组合,或二元关系的合取。
表示
框架表示
是一种结构化表示法,通常采用语 义网络中的节点-槽-值表示结构。
特征:
-
有一个框架名(可带有参数)
-
有一组属性,每个属性称为一个槽,里面可存放属性值。
- 每个属性对值有要求,不同属性的类型可不同
- 有些属性值可为子框架调用(可带参数)
- 有些属性值是预先确定,有些属性值需在生成实例时代入
- 有些属性值在代入时需满足一定条件,有时,在不同属性的属性值之间还有一些条件需要满足
剧本表示
框架的一种特殊形式,它用一组槽来描述某些事件 的发生序列。
构成:
- 开场条件:给出在剧本中描述的事件发生的前提条件。
- 角色:用来表示在剧本所描述的事件中可能出现的有关人物的一些槽。
- 道具:这是用来表示在剧本所描述的事件中可能出现的有关物体的一些槽。
- 场景:描述事件发生的真实顺序,可以由多个场景组成,每个场景又可以是其它的剧本。
- 结果:给出在剧本所描述的事件发生以后通常所产生的结果。
与框架相比:要呆板得多,知识表达的范围也很窄,因此不适用于表达各种知识,但对于表达预先构思好的特定知识,如理解故事情节等,是非常有效的。
剧本的两个特点:
- 一旦剧本被启用,则可以应用它来进行推理。其中最重要的是运用剧本可以预测没有明显提及的事件的发生。
- 一个典型的事件被中断,也就是给定情节中的某个事件与剧本中的事件不能对应时,则剧本便不能预测被中断以后的事件了。