【數據挖掘】遺傳算法原理淺析:什麼是遺傳算法?遺傳算法的工作原理是什麼?

1.基礎知識

遺傳算法(Genetic Algorithm,GA),是什麼?在理解遺傳算法之前,首先需要了解兩部分內容:一個是進化算法,一個是算法背後的生物學背景

1.1 生物學背景

不論是遺傳算法,還是進化算法,顧名思義,都是在做一種對生物進化論的仿真。以下是關於進化論的一些生物學術語:
基因型(genotype):性狀染色體的內部表現;
表現型(phenotype):染色體決定的性狀的外部表現,或者說,根據基因型形成的個體的外部表現;
進化(evolution):種羣逐漸適應生存環境,品質不斷得到改良。生物的進化是以種羣的形式進行的。
適應度(fitness):度量某個物種對於生存環境的適應程度。
選擇(selection):以一定的概率從種羣中選擇若干個個體。一般,選擇過程是一種基於適應度的優勝劣汰的過程。
複製(reproduction):細胞分裂時,遺傳物質DNA通過複製而轉移到新產生的細胞中,新細胞就繼承了舊細胞的基因。
交叉(crossover)不是交叉步過人 兩個染色體的某一相同位置處DNA被切斷,前後兩串分別交叉組合形成兩個新的染色體。也稱基因重組或雜交;
變異(mutation):複製時可能(很小的概率)產生某些複製差錯,變異產生新的染色體,表現出新的性狀。
編碼(coding):DNA中遺傳信息在一個長鏈上按一定的模式排列。遺傳編碼可看作從表現型到基因型的映射。
解碼(decoding):基因型到表現型的映射。
個體(individual):指染色體帶有特徵的實體;
種羣(population):個體的集合,該集合內個體數稱爲種羣

概念鏈接:https://www.jianshu.com/p/ae5157c26af9 來源:簡書

基因(Gene):一個DNA的功能片段
基因性狀(Gene Trait):控制某個特徵的表現,比如控制眼睛的顏色,頭髮的顏色
等位基因(Allele):設置特徵的可能性,可以取多少不同的值。比如頭髮可能是黑色,可能是金色
基因型(Genotype):攜帶的是什麼基因,是TT還是TS
表現型(Phenotype):表現出來的基因特徵是怎樣的,是高還是矮;是男還是女

John Holland.Adaptation in Natural and Artificial Systems,1975.

1.2 進化算法

進化算法的概念。遺傳算法GA進化算法EA的一部分。遺傳算法(Genetic Algorithm,GA),是進化算法的框架和核心。

各種進化算法有什麼異同? - 及時物語的回答 - 知乎
https://www.zhihu.com/question/39152390/answer/901070749

不過,遺傳算法對交叉操作要看重一些,認爲變異操作是算法的輔助操作;而進化規劃和進化策略認爲在一般意義上說交叉並不優於變異,甚至可以不要交叉操作。
 
進化算法-百度百科https://baike.baidu.com/item/%E8%BF%9B%E5%8C%96%E7%AE%97%E6%B3%95

1.2.1 概念

進化算法,或稱“演化算法” (evolutionary algorithms) 是一個“算法簇”,儘管它有很多的變化,有不同的遺傳基因表達方式,不同的交叉和變異算子,特殊算子的引用,以及不同的再生和選擇方法,但它們產生的靈感都來自於大自然的生物進化。與傳統的基於微積分的方法和窮舉法等優化算法相比,進化計算是一種成熟的具有高魯棒性和廣泛適用性的全局優化方法,具有自組織、自適應、自學習的特性,能夠不受問題性質的限制,有效地處理傳統優化算法難以解決的複雜問題。
進化算法囊括了很多算法,是一個EA family,旗下有NBA2K,戰地6等遊戲 ,其中比較經典的四個算法是:Genetic Algorithm遺傳算法;Genetic Programming遺傳程序設計;Evolution Strategies;Evolutionary Programming。現在同樣也有提出新的進化算法:Estimation of Distribution Algorithm用統計學方法對問題空間進行建模,用模型驅動搜索;Particle Swarm Optimization子羣算法;Ant Colony Optimization蟻羣算法;Differential Evolution差分進化;
進化算法的基本框架還是簡單遺傳算法所描述的框架,但在進化的方式上有較大的差異,選擇、交叉、變異、種羣控制等有很多變化,進化算法的大致框圖可描述如下圖所示。
在這裏插入圖片描述

進化算法-百度百科https://baike.baidu.com/item/%E8%BF%9B%E5%8C%96%E7%AE%97%E6%B3%95

1.2.2 進化計算關鍵概念

清華大學袁博老師在《數據挖掘:理論與算法》慕課中,歸納了七點進化計算的關鍵概念。
在這裏插入圖片描述
我認爲,算法能夠實現優化的核心原因在於其中的如下兩點。
1.Population-Based Stochastic Optimization Methods
基於數量的隨機優化方法。
算法有一定隨機性,每次結果都不完全一樣。
2.Inherently Parallel
固有並行
還是拿剛纔的“拼臉”爲例,可以讓100個人同時去拼臉,是並行的,這樣可以有效防止結果比較少帶來的後果。結果比較少很可能出現這些人都沒有最好看的那個特徵,也沒有變異出這樣的特徵,這樣結果會聚簇在一個次好看甚至次次次次好看的外貌結果上,陷入局部最優解。

1.2.3 進化計算的求解過程

在這裏插入圖片描述
如上圖所示,我們有一個需要優化的問題(problem)。優化問題在計算前需要先編碼(coding) 成可以被計算機執行的數據。
編碼完成後,建立目標函數(objective function)公示,定義好各個變量(如時間、地點等)。當然,任何一個數據挖掘問題都同樣需要相關領域的知識(domain knowledge) 支持,脫離現實的數據挖掘算法對現實幫助是毫無助益的。
完成上述過程後,就可以開始進行進化計算(evolution search) 了。
在這裏插入圖片描述
計算通常包括四大部分:評估(evaluate),評估現在的路線哪個好,哪個不好;選擇(Select),選擇比較好的路線進行雜交(crossover)變異(mutate),最終生成更好的路線。

1.2.4 應用舉例

舉一個進化算法的簡單的例子。比如說我們想要進化出世界上最好看的人的樣子,進化算法是這麼做的。先找到一羣人,我們從裏面找到最好看的幾個人,然後多複製(reproduction)這些長得好看的人,少複製一些長得不好看的人。(爲什麼也要複製長得不好看的人呢?一方面是爲了加大樣本量,另一方面是因爲資源不能過早過度集中)
在這裏插入圖片描述
不過在複製之後,我們並沒有發現更好看的人,因爲我們做得只是克隆。爲了有機會發現更好看的人,我們就需要對這些人做變異(mutation)處理。
在這裏插入圖片描述

圖片來源:B站-啊嗎糉《把11個up主的五官拿出來打亂 還能再復原麼?》
https://www.bilibili.com/video/BV1Ez411v7vT/

有的人眼睛變了,有的人嘴巴變了,有的人鼻子變了。我們把這些變異的人也加入進樣本中,再從中找最好看的人;如此往復迭代,一代一代迭代下去,找到優化解。(不過確實,在好不好看的這個問題上並不存在一個客觀的最優解,這裏是把人的主觀審美作爲客觀環境進行篩選,這也解釋了爲什麼進化算法以及進化論是適者生存,而不是強者生存。)
綜上,進化算法可以模擬自然界的物競天擇,也同樣可以對目標對象結果進行優化。

2.遺傳算法是什麼

2.1 定義

遺傳算法(Genetic Algorithm,GA)最早是由美國的 John holland於20世紀70年代提出,該算法是根據大自然中生物體進化規律而設計提出的。**是模擬達爾文生物進化論的自然選擇和遺傳學機理的生物進化過程的計算模型,是一種通過模擬自然進化過程搜索最優解的方法。**該算法通過數學的方式,利用計算機仿真運算,將問題的求解過程轉換成類似生物進化中的染色體基因的交叉、變異等過程。在求解較爲複雜的組合優化問題時,相對一些常規的優化算法,通常能夠較快地獲得較好的優化結果。遺傳算法已被人們廣泛地應用於組合優化、機器學習、信號處理、自適應控制和人工生命等領域。

鄭樹泉.工業智能技術與應用[M].上海:上海科學技術出版社,2019

遺傳算法的先驅John Holland在《Adaptation in Natural and Artificial Systems》一書中指出,遺傳算法是"inspired by and loosely based on Darwin’s Theory",收達爾文進化論啓發,並且是較爲寬鬆地基於他,不是完全的匹配的;遺傳算法是把生物學中的這些概念:Chromosome染色體,Crossover交叉,Mutation變異,Selection選擇(Survival of the Fittest適者生存) 以某種算法的形式結合在一起。
通俗來說,遺傳算法是一種借鑑了達爾文生物進化論理論的算法,如果把每一個數據都看作一個染色體,那麼遺傳算法就是通過染色體與染色體基因的組合交叉和變異,重組出新的染色體解集的過程,通過不斷演化從而得到新的染色體集合,如此循環往復,不斷迭代進化,最終的聚簇即爲算法尋求的優化結果。

2.2 基本思想

1.Each solution to the problem is represented as a chromosome.
每一個解決問題的方法都代表一個染色體。
2.The initial solutions may be randomly generated.
最初的解決方案可能是隨機生成的
3.Solutions are evolved during generations.
解在迭代的過程中逐漸形成。
4.Improved gradually based on the principle of natural evolution.
基於自然進化而逐漸進步。
一言以蔽之,他的基本思想是:最初生成隨機的染色體,代表隨機的候選candidate;通過進化的方式不斷改進。
與傳統算法思想的區別在於,傳統算法思想多是根據公式一步到位求解,但其實很多情況並不是一步到位求解就可以解決的情況,需要遺傳算法逐步求解。

2.3 基本組成部分 Basic Components

2.3.1 表達 Representation

1.coding編碼
二進制問題(比如是或者不是):0101
連續型問題(比如市場價格):0.8,1.2,-0.3

2.genetic operator遺傳操作
(1)crossover交叉
交換兩個染色體的遺傳物質
(2)mutation變異
在被選位置隨機調整基因值

3.Selection Strategy選擇策略
選擇哪些染色體去繁殖後代(複製reproduction)
選擇哪些後代(offspring)可以生存下來

4.Individual個體(Chromosome染色體)
每一維對應一個對應參數的取值
(1)A vector that represents a specific solution to the problem
一個向量代表一個明確的問題解
(2)Each element on the vector corresponds to a certain variable/parameter.
每一個向量(公式層面)的要素都符合一個確定的變量/決定因素(事實層面)

5.Population人口數量
他意味着(1)A set of individuals是個體的集合,是一個聚簇;(2)GAs maintain and evolve a population of individuals GA算法是保留並逐漸形成一個規模龐大的個體集合(3)Parallel Search並行搜索,利於尋找全局最優解Global Optimization.

6.offspring後代
New individuals generated via genetic operators.
經由遺傳操作(雜交變異複製),從原來的向量中生成新的向量。
Hopefully contain better solutions.
希望後代中包含更優解。

7.其他編碼方式encoding
(1)除了Binary二進制編碼方式外,還可以運用Gray格雷碼編碼
在這裏插入圖片描述
格雷碼任何相鄰兩位間的距離都是1,二進制則不然,這就導致二進制的海明距離非常大,爲了檢測d個錯誤,需要一個海明距離爲d+1的編碼方案,使用二進制將使得檢測錯誤的工作量大大增加。

兩個合法代碼對應位上編碼不同的位數稱爲碼距,又稱海明距離

(2)TSP(旅行商)問題,簡單用12345編碼城市是有問題的。

2.4 選擇策略

2.4.1 value selection

根據數值大小對資源進行分配。但是這樣分配有一個壞處,萬一出現了一個很大的數值,將導致資源重度傾斜向該向量,導致資源過早過度集中。

2.4.2 rank selection

所以學界提出了rank selection,用等級來選擇分配,這將減小很大數值的資源權重。

2.4.3 Tournament selection

每次挑選兩個或三個,兩兩PK,三三PK,捉對廝殺挑選。但是這樣可能會出現一個問題,兩兩捉對廝殺,只要不是倒數第一,就有可能被選中出線。

2.4.4 Elitism selection

精英選擇。保送那些優秀的子代,目的是爲了防止出現當初優秀父代母代在雜交後的子代還不如父代母代的情況出現。

2.4.5 Offspring Selection

一種是把子代完全替換父代,把子代作爲新父代繼續迭代。(μ,λ)Strategy
一種是把100個子代和100個父代的所有樣本數據中選100個最好的作爲新父代。(μ+λ)Strategy

2.5 工作原理

遺傳算法的工作,需要兼顧廣度和深度;既要有足夠大的搜索範圍,又要能夠比較精確地實現收斂。

2.5.1 crossover雜交

2.5.1.1 雜交方式

分爲一點雜交、兩點雜交和多點雜交。
在這裏插入圖片描述
一點雜交one point crossover,是選擇一點作爲雜交位,後面的基因序列全部進行交換;
在這裏插入圖片描述
兩點雜交two point crossover,是選擇兩個點作爲雜交位,只替換兩個雜交位中的基因序列。
在這裏插入圖片描述
多點雜交uniform crossover,有50%的概率挑選雜交位上的一種表現作爲新子代。
在這裏插入圖片描述

2.5.1.2 雜交風險

如果拿123456789指代城市,路線1是123456789,路線2是312849576;從第五位開始進行雜交,得到子路線1:123449576,子路線2:312856789;這時我們很容易發現,子路線1中,4這個地方去了兩邊,但是沒有去8;子路線2去了兩次8,這就產生了問題。

面對這樣的問題,有兩種解決方式。一種方式是把重複的算子變成不重複的;一種方式是推倒重來,重組直到不重複爲止。

2.5.2 Mutation 變異

一種保持種羣基因多樣性的方式。(降低不成熟收斂的可能性)
隨機選較少的幾個變異位,把0變成1,1變成0;如果是連續型變量,可以加高斯噪聲,把0變成0.1或-0.2

2.5.3 Selection 選擇

把更多的資源分配給更優秀的向量。

2.6 工作框架 GA Framework

在這裏插入圖片描述
初始化,生成一個初始的種羣。
評估1,對每一個個體的適應度進行評估。Evaluate the fitness f(x) of each individual
之後的步驟包括兩層循環:外面的循環是指一代一代的循環,裏面的小循環用於生成population中的每一個個體。
評估2,對新產生的父代進行評估。
最後輸出output,return the best individual found,返回最優的個體值。

2.7 決定因素parameters

遺傳算法中,有很多關鍵參數是需要調整的。只有恰當的取值,才能助於發現更優的結果。

2.7.1 數量規模 population size

每個樣本都要進行評估,數據量太大的話,將導致很低的效率,很慢的收斂速度slow convergence rate.
數據量太少的話,將導致premature convergence,未成熟收斂;即結果收斂在一個不成熟的位置上。

2.7.2 雜交率 crossover rate

一般的染色體雜交併不是100%的雜交,而是部分的雜交,部分地保留到子代中,詳見上文中的2.5工作原理。
一般的推薦值是0.8,80%雜交,20%保留。

2.7.3 變異率 mutation rate

推薦值是1/L,每一次只有其中的一位進行mutation變異。如果變異率特別高會變成一個隨機搜索;太低的話同樣容易導致結果收斂在一個不成熟的位置上。

2.7.4 選擇策略 selection strategy

1.tournament selection
詳見2.4.3
2.Truncation Selection (Select top T individuals)
前T個個體被保留下來
3.其他選擇策略,詳見2.4
選擇的策略 同樣是一個決定因素。

以上內容是本人對遺傳算法的理解,如果有誤,歡迎批評指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章