李齊民
(中國地質(zhì)大學(xué) 武漢 430074)
BP神經(jīng)網(wǎng)絡(luò),由于它的網(wǎng)絡(luò)架構(gòu)較為簡單,算法實(shí)現(xiàn)較為容易,現(xiàn)已成為應(yīng)用最廣泛的神經(jīng)網(wǎng)絡(luò)模型之一[1]。為了獲得更好的實(shí)驗(yàn)結(jié)果,在BP神經(jīng)網(wǎng)絡(luò)中,超參數(shù)的調(diào)整相對(duì)來說會(huì)一定的影響其訓(xùn)練結(jié)果[2~3]。對(duì)于神經(jīng)網(wǎng)絡(luò)隱含層神經(jīng)元的數(shù)目的參數(shù)調(diào)整,除了基于經(jīng)驗(yàn)的設(shè)置神經(jīng)元數(shù)目外,還提出了動(dòng)態(tài)結(jié)點(diǎn)創(chuàng)建(Dynamic Node Creation)的方法,隨機(jī)地添加結(jié)點(diǎn),然后進(jìn)行訓(xùn)練?;蛘呤褂谜煌队胺ǎ∣rthogonal Projection Method)實(shí)現(xiàn)動(dòng)態(tài)結(jié)點(diǎn)創(chuàng)建[4~5]。
相比于這一些方法,本文在動(dòng)態(tài)結(jié)點(diǎn)創(chuàng)建的過程中,使用了一些臨界條件使相應(yīng)的神經(jīng)元進(jìn)行分裂或融合,這樣既可以做到在動(dòng)態(tài)創(chuàng)建結(jié)點(diǎn)的過程中不對(duì)訓(xùn)練結(jié)果產(chǎn)生負(fù)面影響,同時(shí)也不會(huì)導(dǎo)致由于產(chǎn)生過多的神經(jīng)元而影響訓(xùn)練速度。
反向傳播算法是基于前饋神經(jīng)網(wǎng)絡(luò)的一種權(quán)重更新算法,我們定義神經(jīng)元的輸出為
由此,我們可以有相應(yīng)的權(quán)重和閾值的更新公式:
其中α為學(xué)習(xí)速率,E為樣本的誤差。
對(duì)于輸出層的誤差權(quán)重和閾值的更新公式,可以直接根據(jù)激活函數(shù)的導(dǎo)數(shù)得到結(jié)果。根據(jù)誤差反向傳播的思想,我們對(duì)于第l層的誤差,可以將其轉(zhuǎn)換為l+1層誤差反向求和得到。通過導(dǎo)入數(shù)據(jù)集對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行反復(fù)地訓(xùn)練,可以得到訓(xùn)練完成的神經(jīng)網(wǎng)絡(luò)。
在神經(jīng)網(wǎng)絡(luò)進(jìn)行正向傳播的過程中,如果神經(jīng)元的個(gè)數(shù)是固定的,容易造成對(duì)訓(xùn)練集產(chǎn)生過擬合(神經(jīng)元個(gè)數(shù)過多)或者欠擬合(神經(jīng)元個(gè)數(shù)過少)的現(xiàn)象。而神經(jīng)元的數(shù)量如果能在訓(xùn)練的過程中動(dòng)態(tài)的增加或者減少,那么這樣的現(xiàn)象就會(huì)相對(duì)緩解。但首先為了保證輸出結(jié)果的正確,在結(jié)點(diǎn)創(chuàng)建的過程中神經(jīng)元的輸出不應(yīng)當(dāng)發(fā)生改變,不然會(huì)影響到網(wǎng)絡(luò)之前訓(xùn)練的結(jié)果。
同時(shí)神經(jīng)元的分裂僅會(huì)發(fā)生在隱含層當(dāng)中,因此可以得到在第l層i個(gè)神經(jīng)元發(fā)生分裂得到的等式為
其中式(4)、(5)、(6)為分裂得到的兩個(gè)神經(jīng)元Node'與Node''與相應(yīng)的連接權(quán)重和偏置的等式,為第l+1層第k個(gè)神經(jīng)元與第l層第i個(gè)神經(jīng)元的連接權(quán)重。
此時(shí),對(duì)于新生成的神經(jīng)元,可以使用隨機(jī)數(shù)的方式直接根據(jù)原本的神經(jīng)元生成相應(yīng)的權(quán)重和偏置,即
為了防止生成的神經(jīng)元出現(xiàn)權(quán)重過低的情況,其中R為服從標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)數(shù)。因而根據(jù)式(4),可以得到
式(5)、(6)可以根據(jù)式(4)到式(7)、(8)的推導(dǎo)方式得出相應(yīng)的權(quán)重與偏置更新公式。
同樣地,融合的方式則根據(jù)式(4)、(5)、(6)將兩個(gè)神經(jīng)元融合為一個(gè)神經(jīng)元即可。
關(guān)于融合與融合的神經(jīng)元的選擇,我們可以考慮將表現(xiàn)最佳的神經(jīng)元進(jìn)行分裂,將表現(xiàn)較差的神經(jīng)元之間進(jìn)行融合。其中評(píng)判神經(jīng)元好壞的方式,可以參考He等使用剪枝進(jìn)行優(yōu)化神經(jīng)網(wǎng)絡(luò)的方法[6],他們測試了多個(gè)衡量單個(gè)神經(jīng)元重要性的指標(biāo),得出使用“onorm”進(jìn)行評(píng)價(jià)的效果最好
其中dl+1為第l+1層的寬度,即神經(jīng)元的個(gè)數(shù)。
同時(shí)對(duì)于發(fā)生分裂和融合的判定方式,可以通過判斷當(dāng)前數(shù)據(jù)集的識(shí)別的誤差與上一次識(shí)別的誤差來確定,即識(shí)別誤差降低則進(jìn)行神經(jīng)元的融合,識(shí)別誤差升高進(jìn)行神經(jīng)元的分裂。
最后為了防止算法的進(jìn)行過程中進(jìn)行大量的分裂與融合,規(guī)定每訓(xùn)練一定量的數(shù)據(jù)集(如100)才進(jìn)行一次判斷。
本文測試選取多種不同的數(shù)據(jù)集進(jìn)行測試,在weka上進(jìn)行代碼的編寫,其中學(xué)習(xí)速率為0.3,迭代次數(shù)為2000,隱藏層數(shù)僅一層,同時(shí)設(shè)定從1個(gè)神經(jīng)元開始進(jìn)行分裂與融合。得到表1的實(shí)驗(yàn)結(jié)果。
表1 算法測試結(jié)果
我們可以看到結(jié)果良好(88.2120%的平均正確率)。統(tǒng)計(jì)了在訓(xùn)練過程中的神經(jīng)元的數(shù)量變化結(jié)果,可以得到如圖1的實(shí)驗(yàn)結(jié)果。
圖1 神經(jīng)元?jiǎng)討B(tài)數(shù)量變化圖
可以看到,經(jīng)過一段時(shí)間的增長之后,神經(jīng)元的數(shù)量趨向于穩(wěn)定,不會(huì)出現(xiàn)神經(jīng)元數(shù)量爆炸式增長的情況,同時(shí)識(shí)別正確率也處于一個(gè)比較高的狀態(tài)。
本文提供了一種對(duì)神經(jīng)網(wǎng)絡(luò)結(jié)點(diǎn)個(gè)數(shù)自動(dòng)調(diào)整的一個(gè)方案,通過進(jìn)行分裂與融合操作,使神經(jīng)網(wǎng)絡(luò)的結(jié)點(diǎn)數(shù)量可以根據(jù)情況動(dòng)態(tài)的變化。該方法經(jīng)過實(shí)驗(yàn)驗(yàn)證過后效果良好,因而可以考慮將其應(yīng)用于各個(gè)領(lǐng)域中。