有史以來最容易理解的遺傳演算法

首先有一個種小東西,它們都生活在大草原上,跑的快的就不會被吃掉,就可以生存下來。

這個東西的一般是長這樣的:

它由幾個元素組成:

  • 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.zhihu.com/video/971534793821835264 https://www.zhihu.com/video/971534861256912896 https://www.zhihu.com/video/971534883608371200 https://www.zhihu.com/video/971534901137371136

想要下載的可以聯繫~版權原作者所有

推薦閱讀:

牢地基築高樓,美林數據在電力和製造業穩紮穩打
(python)數據挖掘、機器學習演算法學習材料分享
推薦系統乾貨總結
還在與數據表格鬥毆?這12個數據可視化工具正準備來解放你
如何構建一般時間序列問題的回歸解決方案

TAG:遺傳演算法 | 大數據 | 數據挖掘 |