首先有一個(gè)種小東西,它們都生活在大草原上套像,跑的快的就不會(huì)被吃掉酿联,就可以生存下來。
這個(gè)東西的一般是長這樣的:
它由幾個(gè)元素組成:
Node夺巩,暫且把它叫做腿贞让,也就是上圖圓圓的東西顏色越深表示和地面的摩擦力越大
Muscal,肌肉柳譬,連接圓圈的粗線喳张,顏色越深越粗的肌肉表示更有力量,而且每一條肌肉都有不同的原始長度美澳。肌肉越強(qiáng)销部,他就越有能力拉動(dòng)連接的兩個(gè)Node
還有最重要的下圖:時(shí)鐘。也就是這些肌肉有拉長的時(shí)間和收縮的時(shí)間人柿。在拉長時(shí)間柴墩,肌肉總想讓兩腿之間距離變遠(yuǎn),收縮時(shí)間肌肉又想讓腿之間距離近凫岖。
是不是很復(fù)雜江咳?
其實(shí)就可以想象一下:幾個(gè)鐵球被幾根橡皮筋連接在一起,橡皮筋在有規(guī)律的抽動(dòng)哥放,然后這個(gè)東西隨著抽動(dòng)會(huì)向前跑歼指。
所以然后我們的目標(biāo)來了:什么樣的這樣的東西(幾個(gè)球,幾根皮筋甥雕,強(qiáng)度多少)可以跑的最快踩身?
就是遺傳算法發(fā)揮作用的時(shí)候到了。
第一步社露,第一批種子選手
遺傳算法首先要有父本挟阻。也就是初始的一些這樣的小東西。
一般來說要是我們知道一些知識(shí),比如大概知道什么樣子的東西可以跑的快的話附鸽,可以挑一些出來作為父本脱拼。
但是我們現(xiàn)在連這些東西怎么跑都不知道,怎么會(huì)知道哪個(gè)跑的快坷备?
于是最粗暴的就是:隨便來1000個(gè)熄浓!
100個(gè)隨機(jī)生成的小東西。有三條腿的省撑,也有四條五條六條七條的赌蔑,肌肉也有多有少。然后我們看看他們跑的怎么樣竟秫。
第一位選手:
怎么說呢娃惯,在一陣蠕動(dòng)當(dāng)中,一號(hào)選手竟然可以在15秒跑出差不多1米的距離鸿摇。表現(xiàn)非常不錯(cuò)石景!
你以為這個(gè)不夠快劈猿?
看看比如2號(hào)選手:
“請(qǐng)不要躺在地上”
還有其他選手:
總體來說拙吉,因?yàn)槭侨侩S機(jī)生成的選手,很多都只能留在原地揪荣,而且有一半選手選擇了向后退而不是向前筷黔。
遺傳算法第二步:生存
“適者生存”
第一代的父本,按照在15秒之內(nèi)跑的距離排序仗颈。跑的慢的就會(huì)被淘汰掉佛舱。
1000個(gè)小東西按照跑的快慢排序
但是,并不一定是所有跑的慢的都會(huì)大自然就一定會(huì)被淘汰掉挨决。只是說请祖,跑的快的更容易保留下來,跑的慢的更容易死掉脖祈。
大自然就是這么神奇肆捕,會(huì)允許一些幸運(yùn)的弱者生存下來。說不定會(huì)在下一代表現(xiàn)出不一樣的特點(diǎn)盖高。
第一代的1000個(gè)慎陵,淘汰掉一半,剩下的才有資格作為下一代的父本喻奥,留下基因席纽。下圖黑色的代表被淘汰了。
遺傳算法第三步:產(chǎn)生后代
就像兩個(gè)黑頭發(fā)生下來有大概率是黑頭發(fā)撞蚕,父母都1米9生下孩子大概率都也會(huì)很高润梯。但是也會(huì)有兩個(gè)父母都不聰明生的天才小孩。
遺傳算法里也是一樣,兩個(gè)父親(不要在意這些細(xì)節(jié))結(jié)合產(chǎn)生的后代纺铭,有可能“腿”會(huì)不一樣粗:
也很有可能“肌肉”會(huì)不一樣強(qiáng)壯:
但是也會(huì)相對(duì)比較少見有變異的:
腿不一樣多抒和。當(dāng)然都是大自然的力量,和隔壁住了誰關(guān)系不大彤蔽。
變異在遺傳算法中的意義就在于:就算父本的基因中不包含有最佳的基因(比如父本都是5條腿摧莽,但是最佳的方案其實(shí)是3條),也有可能會(huì)通過變異產(chǎn)生顿痪。變異的結(jié)果如果很好镊辕,就會(huì)留下來成為新的父本。這樣下一代群體中就包含了最佳的基因蚁袭。
于是我們又有了下一代:上一代500個(gè)樣本的孩子-->1000個(gè)新的樣本征懈。
遺傳算法最后一步:迭代
我們已經(jīng)有了完整的過程,
1. 有一個(gè)群體
2. 群體根據(jù)成績(目標(biāo)函數(shù))隨機(jī)淘汰
3. 交叉產(chǎn)生新的群體
4. 群體再次淘汰
5. 不斷的重復(fù)3和4揩悄,直到找到滿足條件的樣本(達(dá)到要求)卖哎,或者群體不能再顯著的進(jìn)化。
我們看一下這樣的遺傳算法删性,最終可以達(dá)到什么樣子的效果
到第10代的時(shí)候亏娜,跑的最快的一個(gè)已經(jīng)可以在15秒跑到快3米。跑起來是這個(gè)樣子的
這個(gè)小東西有5條腿蹬挺,已經(jīng)可以穩(wěn)定向前蠕動(dòng)
到了第30代:
感覺已經(jīng)要快飛起來了维贺。還是5條腿。
30代的時(shí)候巴帮,跑的最快的一個(gè)已經(jīng)可以在15秒內(nèi)跑到6米溯泣,而中間值(千人馬拉松第500名)也可以跑到3米。整個(gè)群體都在飛快的進(jìn)步
這個(gè)圖顯示了進(jìn)化中每一代跑的最快的(上邊黑線)和群體中位數(shù)(紅線)的成績榕茧。
然后到了62代垃沦,一個(gè)有4條腿的家伙成為了新的冠軍:
看來是進(jìn)化的力量發(fā)揮了作用。有4條腿的族群中進(jìn)化出現(xiàn)了一個(gè)非常利于跑步的結(jié)構(gòu):后邊一條黑色腿用押,前邊一條白色腿肢簿,中間兩條相似的腿。
而且在整個(gè)群體中只恨,4條腿6根肌肉的生物也占據(jù)了大部分译仗,其他3條腿,5條腿的大多慢慢都被淘汰了官觅。
結(jié)果
到了300代的時(shí)候纵菌,增長速度變得非常緩慢,停止模擬休涤。
這一代里有個(gè)叫博爾特的跑的簡直要飛起來了咱圆,我們欣賞一下:
大自然真是神奇~學(xué)到了么笛辟?
——————
關(guān)注我會(huì)有意想不到的事情發(fā)生
還有有喜歡的可以關(guān)注我,關(guān)注我的知乎專欄序苏,或者我的微信公眾號(hào) /投稿/聊天
機(jī)械+數(shù)據(jù)工程師/職業(yè)發(fā)展/一起成長
機(jī)械數(shù)據(jù)工程師的未來?zhuanlan.zhihu.com
文章預(yù)告:
如何從機(jī)械轉(zhuǎn)到數(shù)據(jù)倔喂?
和專業(yè)的出身的數(shù)據(jù)分析師相比沒有競爭力灿里,工業(yè)背景的數(shù)據(jù)分析師可以做什么瓶颠?