模型参数优化(一):遗传算法
? ? ? ?參數(shù)是指算法中的未知數(shù),有的需要人為指定,比如神經(jīng)網(wǎng)絡(luò)算法中的學(xué)習(xí)效率,有的是從數(shù)據(jù)中擬合而來,比如線性回歸中的系數(shù),如此等等。在使用選定算法進(jìn)行建模時(shí),設(shè)定或得到的參數(shù)很可能不是最優(yōu)或接近最優(yōu)的,這時(shí)需要對參數(shù)進(jìn)行優(yōu)化以得到更優(yōu)的預(yù)測模型。常用的參數(shù)優(yōu)化方法主要包括交叉驗(yàn)證、網(wǎng)格搜索、遺傳算法、粒子群優(yōu)化、模擬退火,本節(jié)介紹遺傳算法。
? ? ??遺傳算法實(shí)質(zhì):選定一批最佳參數(shù),使得目標(biāo)函數(shù)最優(yōu)。
1.基本概念
? ? ? ? 遺傳算法是模擬自然界遺傳選擇與淘汰的生物進(jìn)化計(jì)算模型。達(dá)爾文的自然選擇學(xué)說認(rèn)為,遺傳和變異是決定生物進(jìn)化的內(nèi)在因素。遺傳是指父代與子代之間,在性狀上的相似現(xiàn)象,而變異是指父代與子代之間以及子代的個(gè)體之間,在性狀上或多或少地存在的差異現(xiàn)象,變異能夠改變生物的性狀以適應(yīng)新的環(huán)境變化。而生存斗爭是生物進(jìn)化的外在因素,由于弱肉強(qiáng)食的生存斗爭不斷地進(jìn)行,其結(jié)果是適者生存,具有適應(yīng)性變異的個(gè)體被保留下來,不具有適應(yīng)性變異的個(gè)體被淘汰。更進(jìn)一步,孟德爾提出了遺傳學(xué)的兩個(gè)基本規(guī)律:分離律和自由組合律,認(rèn)為生物是通過基因突變與基因的不同組合和自然選擇的長期作用而進(jìn)化的。
? ? ? ?由于生物進(jìn)化與某些問題的最優(yōu)求解過程存在共通性,即都是在產(chǎn)生或?qū)ふ易顑?yōu)的個(gè)體(或者問題的解),這就產(chǎn)生了基于自然選擇、基因重組、基因突變等遺傳行為來模擬生物進(jìn)化機(jī)制的算法,通常叫作遺傳算法,它最終發(fā)展成為一種隨機(jī)全局搜索和優(yōu)化的算法。
? ? ? ?遺傳算法研究的對象是種群,即很多個(gè)體的集合,對應(yīng)于求解的問題,這里的個(gè)體代表一個(gè)解,種群代表這些解的集合,當(dāng)然,開始的時(shí)候,也許所有的解不是最優(yōu)的,經(jīng)過將這些解進(jìn)行編碼、選擇、交叉、變異之后,逐代進(jìn)化,從子代中可以找到求解問題的全局最優(yōu)解。
- 編碼:將表現(xiàn)型的解轉(zhuǎn)化為基因型,便于進(jìn)行遺傳操作;
- 解碼:即是從基因型轉(zhuǎn)化為表現(xiàn)型,以直觀判斷個(gè)體的表現(xiàn)以,從而決定是否選擇進(jìn)入下一代或直接得到最優(yōu)解。
- 選擇的標(biāo)準(zhǔn):優(yōu)化準(zhǔn)則。
- 交叉:也就是基因重組,即兩個(gè)個(gè)體,互相交換?因型的對應(yīng)片段。
- 變異:指的是基因突變,是指個(gè)體基因型中某個(gè)基因的改變。
? ? ? 種群的每代個(gè)體經(jīng)過了這幾個(gè)關(guān)鍵的步驟之后,種群得以進(jìn)化,在最終的子代中找到問題的最優(yōu)解。這就是使用遺傳算法求解最優(yōu)化問題的大致過程。
2、名詞概念
? ? ? 染色體(個(gè)體):在參數(shù)尋優(yōu)問題中一個(gè)染色體代表一個(gè)參數(shù),染色體的十進(jìn)制數(shù)值,用于獲取待尋優(yōu)參數(shù)實(shí)際輸入到模型中的值。
? ? ??基因:每一個(gè)染色體都對應(yīng)多個(gè)基因,基因是二進(jìn)制數(shù),基因的取值長度是染色體的長度。遺傳算法的交叉、變異操作都是對染色體的基因進(jìn)行的。
? ? ? 種群:初始化的染色體可能的取值數(shù)
? ? ? 適應(yīng)度函數(shù):表征每一組染色體(每一組參數(shù))對應(yīng)的模型評價(jià)指標(biāo)(本博文的python實(shí)例中,采用3-flod 交叉檢驗(yàn)的平均值作為適應(yīng)度函數(shù)值)。
? ? ? 假設(shè)對于兩個(gè)參數(shù)的尋優(yōu),我們設(shè)定染色體長度為20,種群數(shù)為200,就是說初始化兩個(gè)染色體,每個(gè)染色體初始化200個(gè)可能的值,每一個(gè)染色體的十進(jìn)制數(shù)值用20位二進(jìn)制數(shù)表示。、
3. 遺傳算法實(shí)現(xiàn)過程
第一步:編碼。變量x是遺傳算法的表現(xiàn)型形式,從表現(xiàn)型到基因型的映射稱為編碼,通常采用二進(jìn)制編碼形式,串的長度取決于求解的精度。
- 染色體長度:如參數(shù)batch取值范圍為[10,100],區(qū)間長度為90,將其分成90份。因?yàn)?#xff1a;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ?所以二進(jìn)制串的長度是7,即染色體長度是7。
- 解碼:二進(jìn)制對應(yīng)的十進(jìn)制數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
(1)首先將二進(jìn)制轉(zhuǎn)為十進(jìn)制:比如一個(gè)二進(jìn)制為10101,轉(zhuǎn)化為十進(jìn)制就是(2)把21放到上面的解碼公式就得到了最終的batch:min=10,max=100
第二步:產(chǎn)生父代個(gè)體,構(gòu)建初始種群。
第三步:選擇個(gè)體。根據(jù)適應(yīng)度函數(shù)選擇再生個(gè)體,被選出的概率正比于染色體的適應(yīng)性,適應(yīng)性分?jǐn)?shù)愈高,被選中的可能性也就愈大。常用的方法就是采用所謂的輪盤賭選擇法。
第四部:交叉。
第五步:變異。
即:
? ? ? ?第一步:(產(chǎn)生初始種群:即優(yōu)化參數(shù)的候選者)根據(jù)種群規(guī)模,隨機(jī)產(chǎn)生初始種群,每個(gè)個(gè)體表示染色體的基因型,如LSTM超參數(shù)batch_size、epochs等優(yōu)化,初始種群為batch_size、epochs的候選值。
? ? ? ?第二步:(計(jì)算適應(yīng)度:即目標(biāo)函數(shù))計(jì)算每個(gè)個(gè)體的適應(yīng)度,并判斷是否滿足優(yōu)化準(zhǔn)則,若滿足,則輸出最佳個(gè)體及其代表的最優(yōu)解,并結(jié)束算法;若不滿足,則轉(zhuǎn)入下一步。適應(yīng)度,即因變量f,如LSTM的loss。
? ? ? ?第三步:(選擇)依據(jù)適應(yīng)度選擇再生個(gè)體,適應(yīng)度高的個(gè)體被選中的概率高,反之,適應(yīng)度低的個(gè)體被選中的概率低,甚至可能被淘汰。
? ? ? ?第四步:(交叉)根據(jù)一定的交叉概率和交叉方法生成子代個(gè)體。
? ? ? ?第五步:(變異)根據(jù)一定的變異概率和變異方法,生成子代個(gè)體。
? ? ? ?第六步:(循環(huán)計(jì)算適應(yīng)度)由交叉和變異產(chǎn)生新一代種群,返回到第二步。
?遺傳算法中的優(yōu)化準(zhǔn)則,一般根據(jù)問題的不同有不同的確定方式。通常采取如下之一作為判斷條件:
4、遺傳算法單參數(shù)/多參數(shù)尋優(yōu)
? ? ? ?多參數(shù)尋優(yōu)和單一參數(shù)尋優(yōu)的基本思路是相同的,不過在種群初始化時(shí),每次需要初始化m個(gè)染色體,并且在選擇、交叉、變異操作時(shí),m個(gè)染色體是分別進(jìn)行的。
? ? ? 步驟一:種群、染色體、基因初始化。
? ? ? 步驟二:計(jì)算種群中每一組染色體對應(yīng)的適應(yīng)度函數(shù)值。
? ? ? 步驟三:對種群中的染色體進(jìn)行選擇、交叉、變異操作,產(chǎn)生新的種群。
? ? ? 步驟四:判斷是否滿足終止條件?如果不滿足,跳轉(zhuǎn)到步驟二;如果滿足,輸出最優(yōu)參數(shù)。
? ? ? 步驟五:結(jié)束。
5. 代碼實(shí)現(xiàn)?
5.1 python實(shí)現(xiàn)
? ? ?參考:遺傳算法(GA)的新手入門必備,python3案例
? ? ? ? ? ? ? ??python遺傳算法(詳解)
? ? ? ? ? ? ? ??遺傳算法多參數(shù)尋優(yōu)
4.2 R實(shí)現(xiàn)
? ? ? R語言預(yù)測實(shí)戰(zhàn):6.3.5
總結(jié)
以上是生活随笔為你收集整理的模型参数优化(一):遗传算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R语言笔记-sample()函数
- 下一篇: 模型参数优化(二):粒子群优化