当前课程知识点:人工智能 >  第三章 有信息搜索策略 >  3.5遗传算法 >  Video

返回《人工智能》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《人工智能》慕课在线视频列表

Video课程教案、知识点、字幕

那接下来我们来讲一下另外一种局部搜索

叫做局部束搜索

前面我们讲到的爬山搜索和模拟退火搜索

都是只保存一个当前状态

现在开始这个局部树搜索呢

就是保存k个当前状态而不是一个状态

那么使得搜索的力度更大

就相当于有k个人同时出发去爬山

那么谁爬到最高峰,把这个最高峰返回去作为问
题的解

所以它是同时保存k个状态而不是一个状态

然后让这个k个状态,当然一开始是从这随机产生
的k个状态开始

然后每一次迭代的时候,让这k个状态每一个都产
生自己的后续

所以它一下就能产生很多后续

然后从这k个状态产生的所有后续里去看

如果有任何一个新产生的状态是目标状态它就停
止了

所以它就相当于k个人在同时搜索一样

否则就从k个状态产生的所有后续里选择k个最好
的后续继续搜索迭代

所以这里大家可以看的出来,任何时候都只储存k
个当前状态

每一次都是让这k个状态去搜索

如果搜索到是目标状态就停止

否则又从中选择k个最好的作为k个新的当前状态

继续往下搜索

所以这个是局部束搜索的一个思想

那么我们来看一下局部束搜索里的一个特定算法
叫做遗传算法

这个遗传算法是从生物进化理论里得到的思想

也就是说它模仿的是这种生物进化的思想

那么我们来看一下这是什么意思呢

因为前面我们讲过的搜索算法

它的后续状态都是一个状态产生的

那么我们的遗传算法是通过结合两个状态来产生
后续状态

打个比方说前面的几个算法都是无性繁殖

就是自己产生自己的后代

那么遗传算法有点类似于有性繁殖

就是它要结合两个状态来产生后续状态

就是有一个爸爸一个妈妈

那么我们同样的也是从k个随机产生的状态开始

初始状态都是这样子的

那么这k个状态我们也给它取个名字叫做种群

就是相当于一个种群一个population

然后开始之后我们的状态一般都是表示成字符串

这也是为了便于进行生物的模仿

就是表示成一个染色体的样子

那么一般这个字符串都是由0101来表示的

当然你也可以用其他的字符来形成一个字符串

那么一个状态就表示成一个字符串

就相当于一个状态用一个染色体来表示

然后状态的评估函数在遗传算法里面改名叫做适
应值函数

因为这也是为了和生物进化里面对应起来

一般来说这个适应值函数我们都定义成值越大越
好,适者生存

然后它不但通过结合两个状态来产生后续状态

而且产生的后续状态还要进行变异

也就是说它通过选择父母进行交叉遗传产生后代

然后变异来产生新的一代种群

然后不断的进化不断的迭代下去,直到找到目标
状态为止

这个就是遗传算法它的思想

它和刚才讲过的局部束搜索算法不同的地方

那么我们来看一下这里有一个特定的例子

就能理解遗传算法是怎么操作的

其实上它的思想并不复杂

那么大家看到这里,我们这里用的是八皇后问题
这么一个例子来让遗传算法来搜索

那么对于八皇后问题我们的遗传算法需要把状态
表示成字符串的形式

那么对于八皇后问题这个字符串怎么编

也就是说这个染色体怎么进行编码呢

是这样进行编码的

对于每一种八皇后的摆放位置

也就是说不同的摆放位置对应着不同的状态

这里我们也约定每一列一定要摆放一个

否则状态空间太大了

比如说对应这个摆放位置对应的这个状态

它怎么样用字符串来表示,怎么样进行编码

在遗传算法里这种对状态的表示叫做编码

那么编码是非常非常重要的

那么比如说这里对状态表示编码是这样进行的

每一列皇后在哪一行我们就用这个数字来表示

比如说这一列这个皇后在第六行,我们就用六来
表示

这一列这个皇后在第七行就用七来表示

第三列皇后在第二行,第四列皇后在第四行

第五列皇后在第七行,第六列皇后在第五行

第七、八列皇后在第八行

所以我就用67247588来表示这个状态

或者说对这个状态进行编码

那么编码生成的这个字符串就叫对应着这个状态
的一个染色体

那么这里的编码用的是1到8,八个数字进行编码

所以它形成的这个字符串是由1到8,八个数字构
成的

那么这个染色体编码完成了之后,我们来看一下

比如说我的种群大小k我就设置成4

这些都是要程序员设定的

这个k种群多少,这个编码怎么编

都是遗传算法要解决的问题

假设这里的k,我们的种群大小就是四个

所以一开始初始种群就是随机的产生

就是我用1到8,这八个数字随机的产生一个八位
字符串来作为一个个体

然后你就随机产生四个这样的字符串来作为一个
初始的种群

然后产生这么一个初始的种群之后呢

我们就计算每一个状态的适应值函数

那么这个适应值函数也是要你自己定义的

那么假设我定义的适应值函数是相互攻击不到的
皇后对数

那么一般为什么这样定义,不像前面一样相互攻
击到的皇后对数呢

是因为适应值函数我一般认为值越大越好

是这个原因才定义成相互攻击不到的皇后对数

我们来计算这个状态它相互攻击不到的皇后对数
发现有24对

所以它的适应值函数值是24

然后这个状态相互攻击不到的皇后对数是23

然后它的适应值函数(相互攻击不到的皇后对
数)是20

最后一个是11

然后我们根据适应值函数去挑选个体出来进行繁

所以这一步叫做选择

就是类似于我们生物进化里的适者生存

所以有选择的选择父母出来进行繁殖

所以大家看到选择的原则是什么呢

选择的原则是谁的适应值函数大,谁被选中的概
率就大

所以这个概率是和它的这个适应值函数成正比的

所以这个概率怎么算出来呢

24/(24+23+20+11)就可以算出来它的概率是31%

也就是说这个概率和它的适应值函数成正比

算出它们被选中的概率,然后根据这个概率进行
随机选择

从这个种群里面随机选择父母出来进行繁殖

假设第一次随机选择到了这一对父母,进行繁殖

然后第二次随机选择到了光标所指作为父母进行
繁殖

所以这个选择是可以重复选择,完全是按照概率
随机选择

那么选择出来了两对父母进行繁殖

为什么只选择两对,原因是因为我们要保持种群
的大小不变

所以大家看得选择出第一对父母怎么繁殖

为什么一对父母就可以产生一对后续呢

遗传算法里产生后续的方法用的是交叉遗传的方

这和生物进化理论里面也是一样的

进行交叉遗传,那么交叉遗传是什么意思呢

就是说我要选择一个交叉点

比如说这里它选择的是第三列到第四列这个地方
作为一个交叉点

用第一个父母的前三个327和第二个父母的后五个
并在一起产生一个新的后代32748552

那么这就相当于这个染色体里面每一个字符是一
个基因

那么通过选择交叉点让父亲的前一段基因和母亲
的后一段基因并在一起形成一个新的个体

然后让母亲的前一段基因和父亲的后一段基因并
在一起形成一个个体

所以它就会产生两个新的后续,所以这就是它新
产生出来的两个后代

同样的道理对于这一对父母也是随机选择一个交
叉点

那么随机选择这么一个交叉点

然后同样的父亲的前五位基因和母亲的后三位基
因并在一起形成一个儿子

然后母亲的前五位和父亲的后三位并在一起形成
一个新的后续

所以它也产生出来两个新的后代

所以这个就是我们的交叉遗传产生出来的四个新
的状态

那么这四个新的状态我们还要模仿这个生物进化
里的变异

使得这个新的状态有不同于父母的地方

这个变异有一个变异的概率,也是程序员设定的

也就是说你定义一个变异概率

也就是说到底这个个体要不要发生这个变异是由
这个概率来随机确定的

然后到底是哪一个基因发生变异,变异成什么样
子这是随机的

也就是说变异根据概率选中了你进行变异

然后随机的选择一个基因进行变异

比如说它随机选择了这个第六列的皇后进行变异

只要变异的和原来的不一样

原来第六列皇后放在第五行我让它变异成放在第
一行

所以这个就是变异完成了

那么这个个体没有被选择变异

然后这个个体被选中变异,然后它随机的选择一
个基因进行变异

他选择的是第三列这个皇后进行变异

然后就把这个皇后从第七行放到第二行去

然后这个个体也被选中了进行变异

变异的话它随机的选择一个变异点就是最后一列

让它变成7

那么交叉遗传完了,变异也完了,这个新的种群
就产生了

那么这一轮迭代就结束

就是当前状态已经产生了

也就是说我已经移动到当前状态了

这里就叫做当前种群,这个就是新的当前种群

然后再进行下一轮的迭代

也就是说进行下一轮交叉遗传变异产生新的种群

然后每一次当它产生新的种群

我要去看一下这个新的种群里有没有符合要求的
状态

如果有的话迭代结束,没有的话才进行新一轮迭

使得这个种群不断地向目标状态前进

直到迭代次数到达规定的上限

或者直到当前种群里面包含一个目标状态为止

那么这个就是我们的遗传算法的思想

所以这里面有很多的东西要自己定义的

这个编码需要自己定义,还有适应值函数

还有就是交叉遗传交叉点的控制,变异的概率

还有这个怎么样选择好一点的父母进行交叉遗传

这些都是对于不同的问题是不一样的

那么这个就是我们的遗传算法思想的一个示例

那么看到这里,这里是用图片的形式告诉你交叉
遗传是怎样进行的

那么像这个就是一个父亲,这个是一个母亲

那么它的交叉点选择第三列和第四列之间

所以它就相当于这个672和51447结合

然后就会产生一个新的状态67251447

也就是前三列皇后的摆放位置和父亲相同

然后后五列皇后的摆放位置和母亲相同

所以大家看的出来遗传算法通过结合两个状态来
产生新的后续

那么这个新的后续就会和它们的父母结点有很大
的不同

也就是说其实是这个什么意思呢

这个和前面的单个状态来产生后续状态

它有一个很大的优点就是这里的搜索步伐会更快

就是说我这个步子会迈的比较大

因为我新产生出来的状态可能会和我前面的状态
都很不相同

特别是它还会引入变异

那么变异之后后代的状态可能会和前一代种群有
很大的不同

很大的不同就意味着你搜索的时候是跳着搜索的

那么它这样搜索的话,就是搜索的速度会更快一

并且也更容易找到全局最值点

也就是说更容易逃离这个局部最值点

因为它这里有很多的不确定性

并且它又是步子迈的很大的搜索方法

所以这是遗传算法的一个优点

就比前面那些单状态产生后续状态的搜索算法要
好的地方

人工智能课程列表:

第一章 绪论

-1.1 人工智能概念

--1.1 人工智能概念

-第一章 绪论--1.1 人工智能概念

-1.2 什么是理性智能体

--1.2理性智能体

-第一章 绪论--1.2 什么是理性智能体

第二章 无信息搜索策略

-2.1.1问题求解智能体

--2.1.1问题求解智能体

-第二章 无信息搜索策略--2.1.1问题求解智能体

-2.1.2问题形式化

--Video

-2.1.3 树搜索算法

--Video

-第二章 无信息搜索策略--2.1.2问题形式化

-2.1.4树搜索算法的实现

--Video

-2.2.1搜索策略

--Video

-第二章 无信息搜索策略--2.1.3树搜索算法

-2.2.2宽度优先搜索

--Video

-2.2.3一致代价搜索

--Video

-第二章 无信息搜索策略--2.1.4树搜索算法的实现

-2.3.1深度优先搜索

--Video

-2.3.2有限深度搜索

--Video

-2.3.3迭代深入搜索

--Video

-第二章 无信息搜索策略--2.2.2宽度优先搜索

-2.3.4迭代深入深度搜索性能分析

--Video

-2.4无信息搜索策略小结

--Video

-第二章 无信息搜索策略--2.2.3一致代价搜索

-第二章 无信息搜索策略--2.3.1深度优先搜索

-第二章 无信息搜索策略--2.3.2有限深度搜索

-第二章 无信息搜索策略--2.3.3迭代深入搜索

-第二章 无信息搜索策略--2.3.4迭代深入深度搜索性能分析

-第二章 无信息搜索策略--2.4无信息搜索策略小结

第三章 有信息搜索策略

-3.1贪婪搜索算法

--Video

-3.2.1A星搜索算法

--Video

-第三章 有信息搜索策略--3.2.1A星搜索算法

-3.2.2A星搜索算法的最优性

--Video

-3.2.3可采纳的启发式函数

--Video

-第三章 有信息搜索策略--3.2.2A星搜索算法的最优性

-3.3爬山搜索算法

--Video

-3.4模拟退火搜索算法

--Video

-第三章 有信息搜索策略--3.2.3可采纳的启发式函数

-3.5遗传算法

--Video

-第三章 有信息搜索策略--3.3爬山搜索算法

-第三章 有信息搜索策略--3.5遗传算法

第四章 约束满足问题

-4.1.1什么是约束满足问题

--Video

-第四章 约束满足问题--4.1.1什么是约束满足问

-4.1.2约束满足问题的标准搜索形式化

--Video

-4.2.1回溯搜索算法

--Video

-第四章 约束满足问题--4.1.2约束满足问题的标准搜索形式化

-4.2.2回溯搜索的变量赋值顺序策略

--Video

-4.2.3回溯搜索的前向检查及约束传播

--Video

-第四章 约束满足问题--4.2.1回溯搜索算法

-4.2.4 AC-3弧相容算法

--Video

-4.3约束满足问题的局部搜索方法

--Video

-第四章 约束满足问题--4.2.2回溯搜索的变量赋值顺序策略

-第四章 约束满足问题--4.2.3回溯搜索的前向检

-第四章 约束满足问题--4.3约束满足问题的局部搜索方法

第五章 对抗搜索

-5.1博弈及极小极大值概念

--Video

-5.2极小极大值决策算法

--Video

-第五章 对抗搜索--5.2极小极大值决策算法

-5.3.1剪枝的概念

--Video

-5.3.2 alpha-beta算法

--Video

-5.3.3 alpha-beta剪枝示例

--Video

-5.4 不完美的实时决策

--Video

-第五章 对抗搜索--5.3.3 alpha-beta剪枝示例

-第五章 对抗搜索--5.4 不完美的实时决策

第六章 不确定性推理

-6.1不确定性量化

--Video

-第六章 不确定性推理--6.1不确定性量化

-6.2使用完全联合分布进行推理

--Video

-6.3贝叶斯规则及其应用

--Video

-6.4贝叶斯网络推理

--Video

-第六章 不确定性推理--6.2使用完全联合分布进行推理

-6.5隐马尔可夫模型

--Video

-6.6卡尔曼滤波器

--6.6

-第六章 不确定性推理--6.4贝叶斯网络推理

-第六章 不确定性推理--6.3贝叶斯规则及其应用

-第六章 不确定性推理--6.6卡尔曼滤波器

-结课测试

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。