版权声明:转载请注明出处          https://blog.csdn.net/qq_37205708/article/details/86556326        </div><link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css"><link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css"><div class="htmledit_views" id="content_views"><p id="main-toc"><strong>目录</strong></p>

一、Agent

Agent和环境

理性Agent

Agent的类型和结构

二、搜索策略

三、超越经典搜索(模拟退火、遗传算法)

模拟退火

基本思想

相关概念

具体算法步骤解析

算法优缺点

遗传算法(GA)

基本思想

具体步骤解析

优缺点和应用


一、Agent

Agent和环境

任务环境的规范描述:

PEAS(Performance(性能),Environment(环境),Actuators(执行器),Sensors(传感器))

理性Agent

理性的Agent就是做事正确的Agent,对每一个可能的感知序列,根据已知的感知序列提供的证据和Agent具有的先验知识,理性的Agent应该选择能使其性能度量最大化的行动环境的性质

理性不等同于全知(已知的知识都是有限的)

理性不等于完美:因为同样的Agent在不同的环境下就会变成非理性的

理性是使期望的性能最大化

完美是使实际的性能最大化

Agent的类型和结构

四种基本的类型

①简单反射agent 基于当前的感知选择行动,不关注感知历史

②基于模型的反射agent

Agent根据感知历史维持内部状态,Agent随时更新内部状态信息

③基于目标的agent

除了根据感知信息之外,还要根据目标信息来选择行动

效率比较低,需要推理

搜索和规划算法

④基于效用的agent

当达到目标的行为有很多种的时候,需要考虑效率

环境是部分可观察的和随机的,不确定下的决策过程可以通过基于效用的agent来实现。

效用的作用

多目标相冲突时

多目标在不确定环境中

一个目标有多种行为可以达到时

⑤学习agent

  • 4个组件

    • 性能元件:相当于整个agent
    • 评判元件:反映性能元件做得如何
    • 学习元件:负责改进提高
    • 问题产生器:提出一些新的有建设性的探索尝试

Agent:在IT领域,Agent指能自主活动的软件或硬件实体。

传感器:Agent通过传感器感知环境并通过执行器对所处环境产生影响。以人类Agent为例,眼睛、耳朵等为传感器,手、腿、声道等为执行器。软件Agent接受键盘敲击、文件内容和网络数据包作为传感器输入,并以屏幕显示、写文件和发送网络数据包为执行器来作用于环境。

环境

完全可观察的和部分可观察的:如果Agent的传感器在每个时间点上都能获取环境的完整信息,那么说任务环境是完全可观察的。(完全可观察的环境下Agent不需要维护任何内部状态来记录外部世界)

单Agent与多Agent:

确定的与随机的

如果环境的下一个状态完全取决于当前状态和Agent执行的动作,那么说环境是确定的,否则是随机的。

片段式的与连续的

当前决策是否影响到未来的决策?

静态的与动态的

性能评价随时间流逝改变?

离散的与连续的

观察对象/行动是连续的空间变化?

已知的与未知的

二、搜索策略

状态空间的描述

初始状态、行动、转移模型、目标测试、路径耗散/消耗

例如罗马尼亚问题:

            

性能评价标准

  1. 完备性:如果问题存在解,算法即可找到解
  2. 最优性:能找到最优解
  3. 时间复杂度:花费的时间
  4. 空间复杂度:花费的内存

时间空间复杂度的度量:

  1. 时间由搜索过程中产生的结点数目来度量
  2. 空间由内存中存储的最多结点数量来度量
  3. 通常小于状态空间数量|V|+|E|

无信息搜索

宽度优先搜索:在扩展下一层的任何结点之前,先将本层结点全部扩展(直到找到一个解)。

一致代价搜索:在BFS基础上,优先扩展路径消耗g(n)最小的结点。

一致代价搜索并不是搜索到目标结点就马上结束,而是直到队列为空,且BFS是在扩展结点时检测,一致代价搜索是在结点被选择扩展时检测。

深度优先搜索:DFS的结束条件是没有可扩展的结点了或找到一个解,其优势在于空间开销低,且可用剪枝的方式节省空间和时间。

迭代加深的深度受限搜索:给定一个搜索深度limit,DFS超过该深度则返回,若在该limit下无法搜索到解,则limit++(or +n)重启DFS

有信息搜索

通过对每一个结点设置一个评价函数f(n),找到一个代价最低的未扩散的结点

大多数评价函数由启发函数h构成

h(n):结点到目标结点的最小代价路径的代价估计值

贪婪最佳优先搜索:评价函数f(n) = h(n)

A*搜索:f(n) = g(n) + h(n)

g(n)=到达结点n已经花费的代价

h(n)=结点n到目标节点的评估代价

f(n)=通过结点n到达目标结点的总评估代价

分析比较无信息搜索策略和有信息搜索策略。

答:无信息搜索的结束条件是遍历整个状态空间直到找到一个解。其特点如下:

  1. 除了问题定义中提供的状态信息外没有任何附加信息
  2. 算法只能区分状态是不是目标状态
  3. 无法比较非目标状态的好坏

有信息搜索算法(其中一般的算法称为最佳优先搜索)算法性能取决于启发式函数的质量(选择的算法未改变的情况下)。

有信息搜索算法在能找到最优解的情况下无论时间还是空间复杂度都优于无信息搜索,但有时由于启发式函数的不正确会导致无法得到最优解而是局部最优,或者根本无法得到一个解。所以大多情况下会对有信息搜索进行改进使其得到最优解,无信息搜索是最终策略。

树搜索和图搜索

对于图而言,已访问过的结点不允许再加入到搜索队列(待扩展结点),树搜索允许重复访问扩展过的结点(或者说是把已访问过的结点又作为一个树结点的后代加入到整棵树中)。

检测目标结点的时机

BFS是在扩展结点时检测,一致代价搜索和A星搜索是在结点被选择扩展时检测。

一致代价搜索检测到目标结点并不会立即结束而是继续执行算法直到队列为空,而A星搜索检测到目标结点会立即结束。

另外:贪婪最佳优先搜索是在扩展结点时检测,DFS考虑到其递归的性质应该是在结点被选择扩展时检测(DFS目标结点检测到是终止结点而结束)。

松弛问题

减少了行动限制的问题称为松弛问题。

松弛问题增加了状态空间的边,

原有问题的任一最优解同样也是松弛问题的最优解,但松弛问题可能存在更好的解。

例题:

图一表示一个搜索问题,其中结点表示状态,边上的数字表示状态之间的实际代价,S为初始结点,G为终止结点,表格中的数字表示结点到终止结点的估计代价。根据图一回答如下问题:

               

            图一:搜索状态图

a)   给出宽度优先搜索的搜索路径;

S-G

b)   给出贪婪最佳搜索的树搜索路径,要求给出每一步的扩展结点和代价值;

S-G

c)   给出A*的树搜索路径,要求给出每一步的扩展结点和代价值;

S-B-D-G

d)   给出A*的图搜索路径,要求给出每一步的扩展结点和代价值;

S-A-C-G

e)   比较c,d结果的最优性并给出解释

c结果最优,d结果非最优;

评估函数是启发式的而非一致性的;

图搜索的过程中给出了Closed list表示已经被扩展过的结点,显然被扩展过的结点不会再选择被扩展且到该结点的路径不会再被加入队列。

例2

考虑Figure 1,其中A是开始结点,G是目标结点,边上的数字代表两个结点之间的实际代价,结点上的数字代表结点到达目标结点的评估代价。

使用一致代价搜索算法模拟从开始结点到达目标结点的过程。

Figure 1. 搜索树

入队

出队

队列

1

A

{(A,0)}

2

B,C

A

{(B,1),(C,3)}

3

C,G

B

{(C,2),(G,10)}

4

G,H

C

{(H,4),(G,7)}

5

G

H

{(G,5)}

6

G

因此最后的路径为A-B-C-H-G,代价为5。

三、超越经典搜索(模拟退火、遗传算法)

模拟退火

基本思想

模拟退火其实也是一种贪心算法,但是它的搜索过程引入了随机因素。在迭代更新可行解时,以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。以下图为例,假定初始解为左边蓝色点A,模拟退火算法会快速搜索到局部最优解B,但在搜索到局部最优解后,不是就此结束,而是会以一定的概率接受到右边的移动。也许经过几次这样的不是局部最优的移动后会到达全局最优点D,于是就跳出了局部最小值。

相关概念

“退火”的由来:

根据热力学的原理,在温度为T时,出现能量差为dE的降温的概率为p(dE),表示为:

其中k是波尔兹曼常数,值为,且dE<0,因此dE/kT<0,所以p(dE)函数的取值范围是(0,1)。满足概率密度函数的定义。其实这条公式更直观意思就是:温度越高,出现一次能量差为p(dE)的降温的概率就越大;温度越低,则出现降温的概率就越小。

在实际问题中,这里的“一定的概率”的计算参考了金属冶炼的退火过程。假定当前可行解为x,迭代更新后的解为x’,那么对应的“能量差”定义为:

其对应的“一定概率”为:

注:在实际问题中,可以设定k=1。因为kT可以等价于一个参数 T。如设定k=2、T=1000,等于直接设定T=2000的效果

具体算法步骤解析

dE<0接受新解,上图表示的是搜索全局最小值的问题。

温度循环次数的增加而下降(速率自己定),T小到一定程度的话就不会再接受新解了。(相当于前面几次必定接受新解)

PS:最小值优化问题,即我们要找一个全局最小值,f(x)理解为“能量差”,冶炼过程中放热则下一能量比上一能量小,dE<0是接受的(合理地),所以我们定义f(x)的时候要注意了,对于最小值优化问题,x越小要让f(x)越小才对;对于不合理的情况我们才以一定的概率去接受它,另外注意并不是“退火”一次就降温,而是定一个迭代次数。

1.初始化:初始温度T(充分大),温度下限?_???(充分小),初始解状态x(是算法迭代的起点),每个T值的迭代次数L;

2.对l=1,2,...,L做第3至第6步;

3.产生新解x’: (x’=x+Δx);

4.利计算增量Δf=f(x’)−f(x),其中f(x)为优化目标;

5.若Δ?<0 (若寻找最大值,则Δ?>0 )则接受x'作为新的当前解,否则以概率?^(−Δ?/??)接受x'作为新的当前解;

(代码实现?产生一个(0-1)范围内的随机数与p比较)

6.如果满足终止条件则输出当前解作为最优解,结束程序。(终止条件通常取为连续若干个新解都没有被接受时终止算法。);

7. T逐渐减少,且T>?_???,然后转第2步。

算法优缺点

模拟退火算法的应用很广泛,可以高效地求解NP完全问题,如货郎担问题(Travelling Salesman Problem,简记为TSP)、最大截问题(Max Cut Problem)、0-1背包问题(Zero One Knapsack Problem)、图着色问题(Graph Colouring Problem)等等,但其参数难以控制,不能保证一次就收敛到最优值,一般需要多次尝试才能获得(大部分情况下还是会陷入局部最优值)。观察模拟退火算法的过程,发现其主要存在如下三个参数问题:

(1) 温度T的初始值设置问题

温度T的初始值设置是影响模拟退火算法全局搜索性能的重要因素之一、初始温度高,则搜索到全局最优解的可能性大,但因此要花费大量的计算时间;反之,则可节约计算时间,但全局搜索性能可能受到影响。

(2) 退火速度问题,即每个T值的迭代次数

模拟退火算法的全局搜索性能也与退火速度密切相关。一般来说,同一温度下的“充分”搜索是相当必要的,但这也需要计算时间。循环次数增加必定带来计算开销的增大。

(3) 温度管理问题

温度管理问题也是模拟退火算法难以处理的问题之一。实际应用中,由于必须考虑计算复杂度的切实可行性等问题,常采用如下所示的降温方式:

T=α×T.α∈(0,1).

T=α×T.α∈(0,1).

注:为了保证较大的搜索空间,αα一般取接近于1的值,如0.95、0.9。

遗传算法(GA)

基本思想

遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。

具体步骤解析

初始种群->通过适应函数选择出双亲配对->杂交产生的后代->变异->新的种群(满足停止条件?重复)

以简单的背包问题为例

survival points表示生存点数(该值越高则评估为越好),假设背包承重上限为30

染色体即一个可行解,其中的元素称为基因。

多个染色体构成一个种群(一组解)。

对每个染色体需要对其适应度进行评估,这就需要适应函数,这里简单的设适应函数为survival points的总值。

然后需要从种群中进行选择---轮盘赌选择法---选择适应度高的染色体进行交配

轮盘赌选择法:某个染色体被选择的概率 = 该染色体适应度/种群适应度

之后是交叉,这里就不得不回到起点---必须将问题编码,背包问题采用二进制编码(一般都采用?),还有浮点编码(规则?),不同的编码方式必然对应不同的交叉规则。

比较简单的有单点交叉和多点交叉

单点交叉:在个体串中随机设定一个交叉点,实行交叉时,该点前或后的两个个体的部分结构进行互换,并生成两个新个体

个体A:1 0 0 1 ↑1 1 1 → 1 0 0 1 0 0 0 新个体

个体B:0 0 1 1 ↑0 0 0 → 0 0 1 1 1 1 1 新个体

多点交叉就相当于设置两个交叉点。

交叉完之后是变异

依据个体编码表示方法的不同,可以有以下的算法:

a)实值变异

b)二进制变异。

一般来说,变异算子操作的基本步骤如下:

a)对群中所有个体以事先设定的变异概率判断是否进行变异

b)对进行变异的个体随机选择变异位进行变异。

终结条件:当最优个体的适应度达到给定的阈值,或者最优个体的适应度和群体适应度不再上升时,或者迭代次数达到预设的代数时,算法终止。预设的代数一般设置为100-500代。

优缺点和应用

缺点:

(1)编码不规范及编码存在表示的不准确性。

(2)单一的遗传算法编码不能全面地将优化问题的约束表示出来。考虑约束的一个方法就是对不可行解采用阈值,这样,计算的时间必然增加。

(3)遗传算法通常的效率比其他传统的优化方法低。

(4)遗传算法容易过早收敛。

(5)遗传算法对算法的精度、可行度、计算复杂性等方面,还没有有效的定量分析方法。

应用:

由于遗传算法的整体搜索策略和优化搜索方法在计算时不依赖于梯度信息或其它辅助知识,而只需要影响搜索方向的目标函数和相应的适应度函数,所以遗传算法提供了一种求解复杂系统问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,所以广泛应用于许多科学,下面我们将介绍遗传算法的一些主要应用领域

---函数优化

---组合优化

---车间调度

END

agent与搜索(人工智能学习笔记)相关推荐

  1. 人工智能学习笔记----05

    人工智能学习笔记----05 文章目录 人工智能学习笔记----05 数据理解 一.数据导入 csv文件介绍 二.数据的维度 三.数据可视化 四.数据预处理 五.选定数据的特征 数据理解 一.数据导入 ...

  2. 【人工智能学习笔记】人工智能里的数学——概述

    系列文章目录 [人工智能学习笔记]人工智能里的数学--概述 [人工智能里的数学]一元函数微分学 [人工智能里的数学]线性代数基础 [人工智能里的数学]多元函数微分学 前言 与软件开发相比,人工智能领域 ...

  3. 黑马程序员--分布式搜索ElasticSearch学习笔记

    写在最前 黑马视频地址:https://www.bilibili.com/video/BV1LQ4y127n4/ 想获得最佳的阅读体验,请移步至我的个人博客 SpringCloud学习笔记 消息队列M ...

  4. 【人工智能学习笔记】初识人工智能

    文章目录 前言 一.人工智能的定义 二.人工智能的应用 1.计算机视觉技术 2.自然语言处理 3.其他具体应用举例 三.AI算法工程师主要工作流程 四.人工智能的基本概念 机器学习 有监督学习 VS ...

  5. python人工智能学习笔记_[Python] 人工智能与自然语言处理学习笔记(1)

    最近我参加了一个人工智能与自然语言处理的课程,这是第一周的学习笔记.这份笔记不涉及一般知识,全部都是与实践(我在这门课上的作业)有关的总结. 文章目录理论学习人工智能的五种模型:作业1. Rule B ...

  6. 【web搜索】学习笔记-层次汇合聚类HAC算法

    层次汇合聚类(Hierarchical Agglomerative Clustering,HAC) 算法如下: 相关链接: 层次聚类算法原理及实现 学习笔记: 先附上上一段链接中的代码: // HAC ...

  7. 人工智能学习笔记(一)Agent

    智能agent 开篇前言 agent的分类 1.简单反射agent 2.基于状态的反射agent 3.基于目标的agent 4.基于效用的agent 5.学习agent Exploration vs ...

  8. 人工智能学习笔记(三)有信息搜索

    问题求解agent 背景介绍 一.问题描述 二.A星算法和启发式函数(heuristic function) 三.可采纳性和一致性 1.可采纳性(admissible) 2.一致性(consisten ...

  9. 人工智能学习笔记:基本遗传算法及其改进算法

    文章目录 1 引言 2 基本思想及发展历史 3 基本遗传算法详细步骤 3.1 编码 3.2 初始群体设定 3.3 设计适应度函数 3.4 遗传操作 3.4.1 选择 3.4.2 交叉 3.4.3 变异 ...

最新文章

  1. 正则表达式学习实例1
  2. Struts 2创始人Patrick Lightbody看《精通Struts 2:Web 2.0开发实战 》
  3. 计算机发现概述教案,计算机网络概述教案
  4. mysql 移植 azure_初码-Azure系列-记一次MySQL数据库向Azure的迁移
  5. Extjs Window用法详解 3 打印具体应用,是否关掉打印预览的界面
  6. [51nod] 1267 4个数和为0
  7. AI当下要破局,不能没有知识图谱!
  8. ASP.NET AJAX学习记要(2)-下手之JavaScript
  9. 科比退役原因-数据分析
  10. Firefox扩展IE Tab Plus内置功能导致浏览所有网页加载superfish.com脚本
  11. 如何制作疫情民生地图
  12. 一、Windows许可证即将过期怎么办
  13. LabVIEW采集鼠标、键盘数据
  14. 【ES】原生es的复杂查询
  15. Android开发应用案例——简易计算器(附完整源码)
  16. vue 富文本 quill 编辑器,实现图片上传到服务器,以及实时字数统计
  17. ibm服务器x3650m4引导,IBM X3650 M4安装win 2008 Server操作指南
  18. ChatGPT版必应发飙!怒斥人类:放尊重些
  19. CELLS方式引用单元格
  20. Linux(RedHat9.0)下Alsa声卡驱动的安装

热门文章

  1. 刷脸支付会员营销效率高成本底更精准智能
  2. 解决Make时,“/usr/bin/ld: 找不到 -lXXX”问题的四种方法
  3. 一致性、可能性和关系的一般性质 刘易斯逻辑之七
  4. “互联网+教育”三大发展趋势
  5. 普思立:激光锡焊在医疗行业的应用
  6. 201571030321 马玉婷 实验四 小学四则运算需求分析结对报告
  7. mongodb 集群分片布署
  8. Android CardView卡片
  9. android判断进入通话状态,Android-9种通话状态(精确)
  10. MindSpore图片分类之LeNet网络池化和全连接