大家好
欢迎回来
我们这一节还继续
基于仿生算法的人工智能系统
那么我们接着介绍我们的拼图游戏当中的遗传和变异
我们在确定了基因和个体之后
我们就要通过父代的个体来繁衍
获得新的子代
那么这个过程当中有在模仿
自然界的进化的法则
就包括了遗传和变异
那么所谓的遗传和变异
我们先来看遗传
那么我们知道所谓的遗传就是子代具有父代的特征
所以就是说子女和父母有一定程度的相似
就是来自于基因的复制
就是原封不动的把基因传递给子代
那么当然因为有性繁殖
所以父代有两个一个父一个母
是吧
那么父母亲他都会出各自出一半的基因
让这些基因的自由的组合和交叉
变化得到这个子代
所以就是子代会跟父母有一定程度的相似
但是又不完全一样
我们知道遗传包括了复制和交叉的话
那么他只是原来原有基因的一个重组
所以它不会产生新的基因
不会产生新的相对于我们的拼图游戏来说
那么父代的128个图案和另一个128个图案
如果只是复制和交叉的话
它不会产生新的三角形的图案出来
那么在基因遗传算法当中作为复制的模拟
它的目的就是要保留我们父代的
128个图形当中自身优良的部分的基因
那么所谓的优良就是更接近我们
最终火狐图标的部分
那么它的方式复制的方式
遗传方式就是把父代的基因
原封不动的复制给子代
那么复制的过程当中还包括了
进一步的进行交叉
交叉其实很重要
它需要通过有性繁殖
把来自于父母双方的基因给它
组合在一起来得到新的子代
那这样我们才有可能生成跟父代
不一样的一群的这种个体
而这些个体又跟他的父代有一点相似的
具有相似性
而我们父代经过了自然选择
其实已经筛选出基因
也就是优良的那部分
更接近火狐图标的那部分
让这一部分再进行重新组合
生成一批新的形状
那么这些新的形状里头就有可能
越来越接近我们最终的火狐图标
但是我们也知道复制和交叉它不可能产生新的三角形
你无论如何复制和交叉
都很有可能在一条路线上你越走越远
但是他一直还是不能够达到我们理想的目标
因为最初的父代的最初的老祖先的群体
他是完全随机生成
对吧
所以就需要有第二个重要的环节
变异环节
那么在自然界当中也有变异
那么如果要产生完全不同的一些革命性的性状
那么就需要通过基因突变来产生新的基因
那么因为已有的基因它很有可能
就是我们的父代或者说祖先的这一代
它是完全随机生成的
基因有可能不是最优的
你运气不可能会那么好
一生成马上就生成一个图标
所以需要一步一步的遗传
然后一些进行突变了
来进行一些革命性的变化
体现在生物的进化当中
当然也有可能原来比如说啄木鸟的例子
这是一个有益的突变
那么其中的某一个基因发生了突变
它的属性发生了变化了以后
那么它可能会使鸟的嘴变长
它就更容易吃到这个虫子
那么从而使得有益突变的现状
它更加因为更加适合自然环境
所以他就被保留下来
那么使得个体一步一步的更加
适合这个角色
当然我们在拼图游戏当中也是一样的
对于128个三角形而言
我们也需要一个突变来产生新的
形状的三角形
那么这些新的形状三角形其中有
一部分可能就会越来越接近我们
最终的火狐图标的终点
那么现在相对于我们的火狐图标
的拼图游戏而言
我们来看看这个基因是如何进行复制和交叉的
那么对于我们现有的父代的个体
比如说这是一个父代个体
这是一个父代个体
那么你可以直接选择遗传和继承
也可以让他们选择交换某一些三角形进行交叉
比如说这个是父代的个体
把他的基因分成两组
这个也是父代的个体
把它的基因也分成两组
那么两组以后就是原来的一半
那么你要生成一个完整健康的个体
你必须基因的数量是跟原来是一样多的
所以就是交叉组合生成一样多的个体
然后我们看看这里生成的这两个个体
实际上都继承了原来父代个体的一些属性
都跟父代个体有些相像
但是又不完全一样
那么这就是复制和交叉
那么在拼图游戏当中也必须要进行变异
变异这个是基于遗传算法当中
一个非常重要的一个环节
那么在我们三角形作为基因当中
需要把某一个父代的个体的一部分的三角形进行变异的话
那么我们就可以选择一个是完全随机变异
比如说把三角形某一个三角形进行剔除掉
然后再生成一个随机三角形放进去
当然也可以在原有的基础上进行
稍微的改变
比如我们选中一个三角形
那么保留其中的一些顶点的位置
然后改变其他顶点的位置
然后还有改变颜色
或者说改变透明度
在这个基础上进行一个稍微的改变
那么这也是变异
是吧
那么这个就是存在于变异还有几个指标
就是第一是完全随机
特别跨度特别大的一个突变
还是说是一个小的一个变异
还有你有多少个三角形同时并行变异
这个组成了变异的概率
这些参数都是可以在基因遗传
算法当中进行调节的
那么在自然界当中生物变异的
概率其实是不确定的
那么基因发生突变的原因会有很多
像我们在日常生活当中有听到
很多所谓的叫做致癌的物质
所谓的致癌它就是容易引起基因突变
让这个基因突变的概率变得很高的
这么一些物质
这些物质会导致原来正常的基因复制受损
然后他突然变成另外一个基因
当你如果说在这个突变的过程当中
恰巧变成了像癌细胞那样的基因的话
那么你就会更容易得癌症
这是日常生活当中自然界的生物变异的概率
当然我们对于我们的三角形拼图
游戏的算法而言
其实我们可以通过微调不同的变异方式
微调不同的变异的概率
比如说128条里头
我变异是五条还是十条
那么可以进行在我们算法的调试
的过程当中可以来调试这些参数
然后最终获得更好的求解的效果
那么更好的求解效果目标就是两个
第一个是尽量减少迭代的代数
减少算法执行的时间
第二个是让最后的结果更加接近
我们的火狐图标的样子
那么所以我们基因遗传算法当中
调整这些参数也是特别重要的
我们最后得到一个总结
在基因遗传算法当中
那么第二步确定好了基因以及个体之后
遗传和变异是非常重要的
我们模仿自然界当中的个体的遗传和变异
我们对在基因遗传算法当中
也可以直接做这些事情
所谓的遗传就是直接的得到
来自父代的个体的这些基因
变异就是随机的改变来自父代的基因
父代通过遗传和变异然后来生成新的子代
新的子代当中就会有来自于
父代的继承下来的这些性状和基因的表现
也可能会有发生变异
能得到一些革命性的改变
那么这些一步一步的
代继的这些一步步的遗传和变异
以及它的繁殖
最终都会像我们所需要的进化的方向去发展
因为我们有一个选择适应度函数
在那控制他
让这些个体越来越接近我们最终的进化的终点
在拼图游戏当中
进化的终点就是火狐图标的样子