这可能是有史以来最容易理解的遗传算法

《这可能是有史以来最容易理解的遗传算法》

首先有一个种小东西,它们都生活在大草原上,跑的快的就不会被吃掉,就可以生存下来。

这个东西的一般是长这样的:

《这可能是有史以来最容易理解的遗传算法》

它由几个元素组成:

Node,暂且把它叫做,也就是上图圆圆的东西颜色越深表示和地面的摩擦力越大

Muscal,肌肉连接圆圈的粗线,颜色越深越粗的肌肉表示更有力量,而且每一条肌肉都有不同的原始长度。肌肉越强,他就越有能力拉动连接的两个Node

还有最重要的下图:时钟。也就是这些肌肉有拉长的时间和收缩的时间。在拉长时间,肌肉总想让两腿之间距离变远,收缩时间肌肉又想让腿之间距离近。

《这可能是有史以来最容易理解的遗传算法》

是不是很复杂?

其实就可以想象一下:几个铁球被几根橡皮筋连接在一起,橡皮筋在有规律的抽动,然后这个东西随着抽动会向前跑。

《这可能是有史以来最容易理解的遗传算法》

所以然后我们的目标来了:什么样的这样的东西(几个球,几根皮筋,强度多少)可以跑的最快?

就是遗传算法发挥作用的时候到了。

第一步,第一批种子选手

遗传算法首先要有父本。也就是初始的一些这样的小东西。

一般来说要是我们知道一些知识,比如大概知道什么样子的东西可以跑的快的话,可以挑一些出来作为父本。

但是我们现在连这些东西怎么跑都不知道,怎么会知道哪个跑的快?

于是最粗暴的就是:随便来1000个!

《这可能是有史以来最容易理解的遗传算法》

100个随机生成的小东西。有三条腿的,也有四条五条六条七条的,肌肉也有多有少。然后我们看看他们跑的怎么样。

第一位选手:

《这可能是有史以来最容易理解的遗传算法》

怎么说呢,在一阵蠕动当中,一号选手竟然可以在15秒跑出差不多1米的距离。表现非常不错!

你以为这个不够快?

看看比如2号选手:

《这可能是有史以来最容易理解的遗传算法》

“请不要躺在地上”

还有其他选手:

《这可能是有史以来最容易理解的遗传算法》

总体来说,因为是全部随机生成的选手,很多都只能留在原地,而且有一半选手选择了向后退而不是向前。

遗传算法第二步:生存

“适者生存”

第一代的父本,按照在15秒之内跑的距离排序。跑的慢的就会被淘汰掉。

《这可能是有史以来最容易理解的遗传算法》

1000个小东西按照跑的快慢排序

但是,并不一定是所有跑的慢的都会大自然就一定会被淘汰掉。只是说,跑的快的更容易保留下来,跑的慢的更容易死掉

大自然就是这么神奇,会允许一些幸运的弱者生存下来。说不定会在下一代表现出不一样的特点。

第一代的1000个,淘汰掉一半,剩下的才有资格作为下一代的父本,留下基因。下图黑色的代表被淘汰了。

《这可能是有史以来最容易理解的遗传算法》

遗传算法第三步:产生后代

就像两个黑头发生下来有大概率是黑头发,父母都1米9生下孩子大概率都也会很高。但是也会有两个父母都不聪明生的天才小孩。

遗传算法里也是一样,两个父亲(不要在意这些细节)结合产生的后代,有可能“腿”会不一样粗:

《这可能是有史以来最容易理解的遗传算法》

也很有可能“肌肉”会不一样强壮:

《这可能是有史以来最容易理解的遗传算法》

但是也会相对比较少见有变异的:

《这可能是有史以来最容易理解的遗传算法》

腿不一样多。当然都是大自然的力量,和隔壁住了谁关系不大。

变异在遗传算法中的意义就在于:就算父本的基因中不包含有最佳的基因(比如父本都是5条腿,但是最佳的方案其实是3条),也有可能会通过变异产生。变异的结果如果很好,就会留下来成为新的父本。这样下一代群体中就包含了最佳的基因。

于是我们又有了下一代:上一代500个样本的孩子–>1000个新的样本。

遗传算法最后一步:迭代

我们已经有了完整的过程,

1. 有一个群体

2. 群体根据成绩(目标函数)随机淘汰

3. 交叉产生新的群体

4. 群体再次淘汰

5. 不断的重复3和4,直到找到满足条件的样本(达到要求),或者群体不能再显著的进化。

我们看一下这样的遗传算法,最终可以达到什么样子的效果

到第10代的时候,跑的最快的一个已经可以在15秒跑到快3米。跑起来是这个样子的

《这可能是有史以来最容易理解的遗传算法》

这个小东西有5条腿,已经可以稳定向前蠕动

到了第30代:

《这可能是有史以来最容易理解的遗传算法》

感觉已经要快飞起来了。还是5条腿。

30代的时候,跑的最快的一个已经可以在15秒内跑到6米,而中间值(千人马拉松第500名)也可以跑到3米。整个群体都在飞快的进步

这个图显示了进化中每一代跑的最快的(上边黑线)和群体中位数(红线)的成绩。

《这可能是有史以来最容易理解的遗传算法》

然后到了62代,一个有4条腿的家伙成为了新的冠军:

《这可能是有史以来最容易理解的遗传算法》

看来是进化的力量发挥了作用。有4条腿的族群中进化出现了一个非常利于跑步的结构:后边一条黑色腿,前边一条白色腿,中间两条相似的腿。

而且在整个群体中,4条腿6根肌肉的生物也占据了大部分,其他3条腿,5条腿的大多慢慢都被淘汰了。

结果

到了300代的时候,增长速度变得非常缓慢,停止模拟。

这一代里有个叫博尔特的跑的简直要飞起来了,我们欣赏一下:

《这可能是有史以来最容易理解的遗传算法》

大自然真是神奇~学到了么?

《这可能是有史以来最容易理解的遗传算法》

——————

关注我会有意想不到的事情发生

还有有喜欢的可以关注我,关注我的知乎专栏,或者我的微信公众号 /投稿/聊天

机械+数据工程师/职业发展/一起成长

机械数据工程师的未来​zhuanlan.zhihu.com

《这可能是有史以来最容易理解的遗传算法》

文章预告:

如何从机械转到数据?

和专业的出身的数据分析师相比没有竞争力,工业背景的数据分析师可以做什么?

    原文作者:黑盒理论
    原文地址: https://www.jianshu.com/p/d80461c57455
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞