遺傳演算法理解與思路**
本文將會簡要的介紹遺傳演算法,該方法也是一種啟發式搜尋的演算法,它是**於生物學進化規律的經典概念,就是適者生存、優勝劣汰的思路。該演算法是上個世紀70年代被提出的,它不需要像神經網路之類的方法需要對函式的連續性有要求,而是可以使用基於概率的思路去進行搜尋,結合遺傳、變異、選擇的思路進行搜尋,具有更好的全域性搜尋最優點的能力,該演算法在各個行業應用廣泛,比如訊號處理、自動化控制、組合優化等領域。遺傳演算法基本的步驟和生物進化的步驟其實比較類似,下面介紹一下遺傳演算法的基本步驟:
1、初始化種群,設定相關的引數和隨機生成一些初始的種群,種群數量一般可以取100個,顯然種群的數量越多搜尋的能力會越好,但是搜尋的速度會變慢;而種群的數量如果較少的時候,容易陷入區域性最優點,但是搜尋的速度會變得較快。
2、適應度計算,為了評價每乙個物件適應環境的情況,我們用適應度去評價每乙個物件的適應情況。適應度計算其實是乙個函式或者說是乙個公式,它可以把當前物件的狀態對映為乙個可以比較大小的值,適應函式其實是乙個連續非負的、簡單計算的、泛化性較強的乙個函式,具體可以看實際問題來確定適應度函式。當計算得到的適應度越大,說明這個物件的質量越好並且適應環境的能力較強。通過計算適應度可以為後續的選擇提供基礎,並且通過適應度來進行做優勝劣汰的標準。
3、選擇更好的物件,通過上一步的適應度計算後,選擇適應度較高的物件進行後續的遺傳,也就是留下適應環境較好的物件進行後代的遺傳,而適應度較低的群體就被捨棄,無法進行下一步的遺傳。對於選擇的方法有很多,比如區域性選擇法、適應度比例法,而不同的方法選擇的優等物件是不一樣的,不同的問題可以選擇不同的選擇方法。
4、交叉遺傳過程,該操作其實就是生物的遺傳操作,父代將優秀的基因傳給子代,讓子代擁有更好的基因。而在遺傳演算法中,我們會根據上一步選出的多個優秀的物件互相來進行交叉遺傳,也就是「優中選優,後代更優"的思路。利用交叉運算元去選取父代物件的部分結構進行重組後形成新子代物件,可以使得子代的適應度會更強,能夠更好地適應環境。
5、個體物件基因突變,即利用變異運算使得種群中的個體物件的基因串的某些基因值進行修改,增加了一部分的隨機性。變異運算的方法有很多,比如有二進位制變異、實值變異等;但它的基本步驟都是一樣的,都是在最開始初始化引數的時候設定固定的變異概率,然後在變異步驟的時候對可以進行變異的個體去隨機選擇基因串的變異基因值進行變異操作。
6、重複上述步驟2到步驟5,直到滿足演算法的終止條件,比如某一代的個體滿足了適應度閾值或者種群的總體適應度不再提公升,或者是達到了迭代的次數比如500代,就可以結束遺傳演算法,並且輸出具有最大適應度的物件作為全域性的最優解。
對於遺傳演算法的理解,除了上述介紹的步驟外,還有最重要的下面三個細節:
1)編碼形式的選擇,如果使用的是實值編碼,那麼容易導致陷入區域性最優;如果使用的是二進位制編碼,那麼計算會變慢並且編碼含義難以理解,所以使用者需要根據實際問題去確定編碼形式。
2)初始化種群的選擇,可以直接隨機化生成後進行簡單的篩選,留下較好的物件個體進行迭代;也可以根據具體問題的先驗知識或者資訊來確定初始化物件,從而使得初始化的物件盡可能地散布佔據整個解空間。
3)選擇的方法,在計算得到適應度後進行選擇,可以採用「輪盤賭",即各個物件被選擇的概率和它自身的適應度值的大小成正比,適應度越大的物件越有可能被選上;而也可以採用「精英機制",即直接按照當前個體按照適應度進行排序後,選出適應度最高的k個物件進行後續的交叉遺傳等操作。
通過上述的介紹,我們對遺傳演算法有了初步的理解,該演算法其實是比較有特點的,但是該演算法的優缺點也是十分明顯的。其中演算法的優點就是:
1、該演算法可以進行並行化,伺時處理多個物件或者多個解,在當前大資料的背景下可以較好地在分布式集群上進行使用,加快搜尋的速度。
2、該演算法的適用性和泛化性較強,不需要依賴其他先驗條件或者是專業資訊並且不受可導或者連續的限制,可以隨意使用在不同應用、不同場景的問題。
3、該演算法在迭代的過程中,可以自動調整並控制引數,具有比較好的自適應性、自學習性,並且由於加入了基因突變的操作,陷入區域性最優點的概率比較小,對全域性搜尋的最優解尋找是比較有利的。
而遺傳演算法其實也有下面幾個缺點,分別是:
1、遺傳演算法的效率不夠高,並且由於它比較趨向於模糊類的方法,所以很難評價或者確定它得到的解是查為比較好的解。
2、不同的編碼方式,比如實值編碼、二進位制編碼會導致結果不一樣,並且編碼過程本身存在不一致或者不規範的問題。同時如果遇到實際問題中存在一些限制條件的化,會導致遺傳演算法得到的解丕夠準確,因為遺傳演算法的處理思路並沒有把約束條件體現出來。
總的來說,遺傳演算法是一種泛化性較好、穩定行較強、適合並行化處理的啟發式搜尋方法,在各個行業應用非常廣泛,在當前深度學習和大資料火熱的時代,了解遺傳演算法原理並進行使用是非常有必要的,所以初學者在學習遺傳演算法的時候可以結合神經網路進行具體的應用和優化。
泛統計理論初探 均值漂移演算法初探
均值漂移聚類演算法簡介 本文主要是介紹均值漂移聚類演算法,又稱為mean shift cluster,該演算法屬於無監督學習的聚類方法。主要從演算法的使用場景 步驟 核心思路等角度去介紹演算法。之前其實也介紹過一些聚類的演算法,比如kmeans dbscan等方法,本次介紹的均值漂移聚類演算法是一種...
泛統計理論初探 初探XGBoost方法
初探xgboost方法 在本文中將會繼續介紹整合學習裡的boosting思路,並且會選用xgboost方法來介紹。xgboost是一種優化過的提公升學習方法,該方法在一些競賽或者專案中經常被使用,它的 正確率是比較高的,總體來說效能不錯。其實從該方法的名字我們可以發現,這是一種在gbdt方法的基礎上...
泛統計理論初探 初探MCMC取樣和MH取樣
初探mcmc取樣方法和mh取樣方法 在之前介紹的文章中,我們介紹了基本的取樣方法。在了解簡單的取樣方法後,本次文章將會介紹mcmc取樣方法與優化的mh取樣方法,這兩種方法對於一些高維度特徵的資料可以進行比較合理的取樣。mcmc取樣方法其實就是蒙特卡洛馬爾科夫鏈的取樣方法,因為這兩個術語的英文簡寫都是...