其他分享
首页 > 其他分享> > 人工智能提纲式汇总+简要分析 可用于复习《人工智能——一种现代的方法》

人工智能提纲式汇总+简要分析 可用于复习《人工智能——一种现代的方法》

作者:互联网

文章目录

人工智能

第一章 什么是AI

两种AI

发展,历史等等暂略

第二章 智能Agent

一个Agent通过传感器(sensor)感知周围的环境(environment),并且通过表现评估(performance)和行动器(actuator)做出反应:

agent的行为由agent的function决定,而agent的function则由program实现

PEAS:指的是以上几个单词的缩写

理性AI的任务环境的规范描述

在这里插入图片描述

(所谓rationally指的是使得performance measure最大)

任务环境的分类:

Agent的represent:

第三章 通过搜索进行问题求解

我们可以把一个问题分为六个部分来看待:

那么,假如我们能够搜索到所有的可能路径,是不是就可以直接得到“最优解”了呢?但是,事实上我们很多时候并不能搜索到所有的情况(搜索量太大等等),即搜索空间过大,这也是为什么我们需要学习一些naive的搜索方法。

Performance Metrics knwn as PF metrics

1.搜索树

什么是搜索树,实际上就是把搜索的过程用一颗树的形式表示出来,树上的一个branch就是搜索问题里的一个path

搜索树的空间和时间复杂度主要由:b 每个节点最大子节点数,d 最小花费解的深度,m 任意path的最大长度 确定。

BFS 宽度优先搜索

维护一个先进先出FIFO的队列,每次都去优先获取最浅的所有节点
在这里插入图片描述

最优性?否,最浅的节点并不一定是最优的节点,除非是相对深度的非递减树

完备性?如果b有限,总能找到一个解

时间复杂度:

空间复杂度:
空间复杂度:O(b(d+1))

UCS 一致代价搜索

维护一个按照path cost从低到高排序的队列,每次优先搜索更低cost的path,举个例子:

在这里插入图片描述

如果cost非负的话,可以找到最优解

如果每一步的cost都大于一个正整数e,那么可以找到解

时间和空间复杂度:引入C*表示最优解的总cost,那么复杂度是在这里插入图片描述
,这比BFS的复杂度大得多

DFS 深度优先算法

维护一个后进先出LIFO的stack

PFmetrics:

完备性?不一定能找到一个解,就算d是有限的,如果树的深度无限会有可能陷入无限的循环

最优性?找到的目标点就会返回,这个解并不一定是最优的

时间O(bm)

空间O(bd) 只需要记录从根节点到当前节点路径上的所有节点以及路径上尚未扩展的节点即可,甚至可以优化到O(d)

DLS 深度受限搜索

通过限制搜索深度,解决DFS陷入无限的死循环的尴尬局面,但是更尴尬的是这使算法陷入了另一个局面:无论是算法的完备性,还是最优性都完全不能得到保证,应该最优解可能在更深的深度

IDS 迭代加深的深度优先搜索

用这种方式会经过很多次搜索,首先,限制搜索深度为d,当搜索完所有节点之后若没有发现最优解,就让d=d+1继续进行下一次搜索,直到获得最优解

完备性?是的,只要b不是无穷的

最优性?是的,只要path cost不会随着深度增加而减少

空间复杂度:O(bd)

时间复杂度:O(bd

BSM 双向搜索

用一颗前向树和一颗后向树代替整颗树,一颗从起点展开,一颗从终点展开,当两颗树相交的时候,就是得到答案的时候

完备性?同时使用BFS树的时候是的。

最优性?不一定是最优解,除非每个路径有着uniform cost

复杂度,都是O(bd/2)

不是全部都适用这种方法,比如如果“目标”不明朗或者有非常多,或者某些不可逆的搜索情况等等

两种状态重复的情况

考虑拥有重复state的树如下

caseA和caseB对应这两种不同的重复情况,其中caseA会形成一个闭合的环,而B不会

caseA

这将是一个无限循环的环路,因此带有环的branch不会成为最优解,所以可以删除,因此当遇到一个和其祖先节点有着相同state的节点,我们将不会对这个节点做expend

caseB

当使用BFS的时候,右边的B节点会被先访问,因此我们在使用BFS遇到某个已经被访问过的状态的时候,我们就不再去expend这个节点。

当不是BFS的时候,左边的节点有可能先被访问到,这是侯在访问右边的节点的时候,我们就要判断这两条path哪一个cost更小了,如果右边的节点更小,我们才会继续expend这个节点。

总结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZRAp8hIV-1616604947625)(image-20201227012254134.png)]

2.启发搜索

区别:普通的搜索没有domain knowlege(问题本身定义之外的知识,例如黑白棋AI中,不同棋盘位置的点有着不同的重要性),而启发式搜索有。

我们使用启发函数h(n)作为我们的cost去寻找最小的花费的路径,h(n)表示从节点n到目标节点的最小花费估计值。

贪婪最佳优先搜索

在这个算法中,我们只使用启发信息,因此算法的评估函数f(n)=h(n)

完备性:否,可能会陷入死循环,哪怕节点有限

最优性:否,会陷入局部最优而不是全局最优

时间和空间复杂度: O(bm)好的启发函数可以有效降低复杂度(m是最大可能的深度)

A*搜索

不仅考虑了启发函数h(n),还考虑了g(n)即从开始节点到达此节点已经花费的代价

f(n)=g(n)+h(n)

完备性:是

最优性:需要启发函数满足admissible可采纳性(意思是f(n)不会超过这个解的实际代价,h(n)≤cost(n,goal)),和一致性(h(n)≤cost(n,n的邻居)+h(n的邻居)),其中满足一致性一定满足可采纳性。
如果启发函数是可采纳的,A*的树搜索是最优的,如果是一致的,那么图搜索也是最优的
proof:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7s8VwkM4-1616604947625)(image-20201227025241775.png)]

时间和空间:O(bd

其中,越大的启发函数效果越好,(越接近真实情况)。

3.深入探讨启发函数

对于可采纳的启发函数h1和h2,如果h1≥h2我们就说h1是一个更有效的启发函数

有效分枝因子

使用A星算法,从树的根节点到找到最优解的过程中,我们有以下函数:

其中b星就是我们所说的有效分枝因子,意思是平均意义下,一个节点的几个分支被使用了,其大小越接近1越好。

使用relaxed problem松弛问题来构建启发函数

提出一个观点:任意文图的松弛问题的最优解将会是原问题的启发函数

可能有一点点难以理解,做出说明:松弛问题指的是放宽限制,例如经典的八数码问题,如果我们把数字的移动改成可以任意一个位置移动到另一个位置,这个新的问题的确切最优解就可以当作启发函数用到原问题中去,因为放宽了限制之后,相当于给原问题引入了新的边,因为这个解是新问题的最优解,所以他一定满足一致性。

使用子问题构建启发函数

再次考虑八数码问题,如果把12345678都排好序这样的原问题改成只排序1234,这就是子问题。(即子问题的cost一定小于原问题),h(1234)就是子问题1234的开销。

如果我们简单的把只移动1,2,3,4和只移动5,6,7,8的启发函数相加,能不能得到原问题的可采纳启发函数呢?

不能,但是如果我们在子问题中,忽略其他棋子的移动,再把他们相加,得到的就是原问题的一个可采纳启发函数。

使用经验构建启发函数

假如我们对随机的10000种八数码棋局进行分析,算出他们的最优解,然后我们人为设定一些特征,例如特征x:不在位的棋子数,然后我们计算在这种特征下的平均最优解消耗,我们可以用加权的方式组合多种最优解:

但是我们不保证可采纳性或是一致性。

第三章 超越经典搜索

什么是超越经典?不再使用树来表示搜索过程,而是用其他的方式去表示.

一般搜索算法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1KGg01Xl-1616604947626)(image-20201227170431096.png)]

通过这样的过程,不断的优化解决方案.

爬山法

是一种贪婪思想的算法,即找到当前状态下向着最优解前进最快的方向前进(以最快的方式上山).

缺点是容易陷入局部最优(不是最高的山顶),或者遇到困境(平原,没有出路,所有出路都一样).

模拟退火 simulated annealing

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jJCKwqHa-1616604947627)(image-20201227172940657.png)]

如果当前前进的方向,能够让解变好,则让他随着这个方向移动,如果当前行进的方向不能的话,则依概率向这个方向前进,而概率的大小取决于这个解有多好,以及T的大小.T会随着时间逐渐下降,而p也随着T的下降而降低.

局部束搜索 local beam search

维持k个状态而不是一个状态.

初识时,随机产生k个状态,然后选择k个最好的可选的后继状态去expend这些状态,k个并行的搜索会彼此交流,会把资源集中在发展的好的状态中,一旦有一个状态找到了最优解,则停止算法.

但是为了避免这些状态缺乏多样性,集中在一小个范围里,可以随机选取k个状态而不是选最好的k个节点.

进化算法 EA

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9GoKWtpg-1616604947628)(image-20201227204943214.png)]

举个简单的例子:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uKbpGzIz-1616604947628)(image-20201227210725243.png)]

在这里插入图片描述

在这里插入图片描述

第四章 对抗搜索

不止一个agent,而是多个agent进行对抗的搜索算法,例如围棋AI.

游戏的定义:

博弈树 TIC TAC TOE Search Tree

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lImLIL0a-1616604947630)(image-20201227212329396.png)]

1.博弈中的优化策略

Minimax算法

即每次假设对方下的棋会让自己的得分(UTILITY)变低

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-udsBsqxC-1616604947631)(image-20201227214817914.png)]

其中最后一层上的数字表示的是在终止状态下的效用函数的值,而中间节点的值则表示的是极大极小值,每一层的极大极小值都由下一层的节点的值决定.

2.Alpha-Beta Pruning

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tBq0Wlny-1616604947632)(image-20201227221335612.png)]

在算法中维护两个变量a,b分别记录当前节点往下的所有路径中,MAX节点做出的最优选择,和MIN节点做出的最优选择.

如果当钱某个节点的值比目前的MAX的a或者MIN的b值,更差的时候,则裁剪掉当前节点的其他分支.

具体过程可以看看这个网站

alpha-bate pruning不会影响到最终结果,但是时间复杂度还是不低(O(m/2))

3.不完美的实时决策

因为有些时候,我们并不能搜索完整张博弈树,所以我们只能够用一个启发估计函数EVAL代替效用函数,这里的启发评估函数,返回的是对游戏期望效用值的估计.

第五章 约束满足问题

需要定义一个包含多个变量的state,和目标约束

在这里插入图片描述

变量的排序顺序不会影响输出结果

1.约束

2.回溯搜索

略 看题

3.局部搜索

将CSP重构成为一个约束优化问题,对于这个问题,我们有一个不满足约束有冲突的起始状态,我们的目标函数是经可能最小化约束违反.

任意选择一个有冲突的变量,对他进行某种操作,使得未来的冲突尽可能的小

第六章 逻辑Agent

1.基于知识的Agent

首先需要一个核心部件:知识库,这是一个语句的集合

Agent 可以TELL知识库自己感知到的内容,也可以ASK知识库自己该干什么.

简而言之,就是Agent将自己感受到的,学习到的知识储存起来,维护一个知识库

2.命题逻辑

先来了解几个定义

几种语法:

几种语义: 这里简单说明语义是用来判断特定模型中语句真值的规则

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MHiakwhb-1616604947634)(image-20201228041936399.png)]

3.推理和可满足性(Satisfiability)问题

我们的目的是要证明某些问题是可满足的,当然这是历史上第一个被证明为NP完全的问题

我们想要知道某个语句是否被蕴含在KB中,通过枚举KB中的每一条语句的情况去推理固然简单,但是复杂度是很高的,因为每个变量有ture和false两种状态,固共有O(2n的复杂度)

CNF

归结规则只应用于子句(析取式),因此我们要把每个语句改写成子句的合取式.(即CNF)

过程如下:

  1. 消去等价词
  2. 消去蕴含词
  3. 否定词只能出现在文字而非括号或其他符号的前面
  4. 对嵌套的析取和合取符号进行分配

一个回溯算法 DPLL

和之前的回溯算法比较相似,但是加入了一些功能:

第七章 一阶逻辑

1.定义

比命题逻辑表达能力更强的逻辑.

我们考虑对象和关系:对象可以是任意的物体,关系则是对象之间的关系,有一些关系可能是函数:一个输入对应一个输出

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rEIZdyJY-1616604947634)(image-20201228053946977.png)]

2.创建一个知识库

3.命题推理

退化到命题推理

略略略

第八章 规划

规划就是决定一系列的行动(解决办法)让agent去完成一个目标.规划的目标更多的在于一个目标被达到的过程和方法.

PDDL

动作模式 action schema

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TlxTkMmK-1616604947635)(image-20201228182119687.png)]

一组由动作,前提,效果组成的.前提和效果都是动作的合取

状态空间搜索规划算法

前向状态空间搜素

第九章 不确定性量化

Agent的环境可能是部分可观察或不确定的,agent需要处理不确定性.

标签:提纲,函数,人工智能,Agent,搜索,最优,节点,启发,复习
来源: https://blog.csdn.net/qq_43210583/article/details/115191982