王錦,趙德群
(北京工業(yè)大學(xué) 信息學(xué)部,北京 100124)
伴隨著各行各業(yè)的智能化的發(fā)展,神經(jīng)網(wǎng)絡(luò)算法得到了廣泛應(yīng)用。但是就目前來(lái)看,常用的BP神經(jīng)網(wǎng)絡(luò)盡管具有較高的可塑性,卻存在收斂速度慢、學(xué)習(xí)效率低等問(wèn)題。采用遺傳算法對(duì)神經(jīng)網(wǎng)絡(luò)權(quán)值進(jìn)行優(yōu)化,可以使網(wǎng)絡(luò)自適應(yīng)能力得到增強(qiáng),并出示網(wǎng)絡(luò)實(shí)現(xiàn)自進(jìn)化,所以能夠得到更優(yōu)的神經(jīng)網(wǎng)絡(luò)算法。因此,還應(yīng)加強(qiáng)對(duì)基于遺傳算法的神經(jīng)網(wǎng)絡(luò)權(quán)值優(yōu)化方法的分析,以便更好的進(jìn)行神經(jīng)網(wǎng)絡(luò)的應(yīng)用。
在智能控制、傳感技術(shù)、機(jī)器人技術(shù)等領(lǐng)域,神經(jīng)網(wǎng)絡(luò)得到了廣泛應(yīng)用。但就目前來(lái)看,依然缺少較優(yōu)的神經(jīng)網(wǎng)絡(luò)算法,以至于神經(jīng)網(wǎng)絡(luò)在應(yīng)用過(guò)程中容易陷入到局部最優(yōu)的問(wèn)題中。從結(jié)構(gòu)上來(lái)看,神經(jīng)網(wǎng)絡(luò)由類(lèi)似神經(jīng)元的單元及單元間帶權(quán)連接弧構(gòu)成,各單元擁有各自狀態(tài)。通過(guò)反復(fù)學(xué)習(xí)和訓(xùn)練各類(lèi)樣本,神經(jīng)網(wǎng)絡(luò)可以實(shí)現(xiàn)各連接弧上權(quán)值及單元狀態(tài)調(diào)整,直至網(wǎng)絡(luò)達(dá)到穩(wěn)定狀態(tài)。此時(shí),利用神經(jīng)網(wǎng)絡(luò)可以對(duì)網(wǎng)絡(luò)輸入模式和輸出模式的映射關(guān)系進(jìn)行反映,達(dá)到學(xué)習(xí)的目的。一般來(lái)講,固定對(duì)象系統(tǒng)通過(guò)實(shí)例訓(xùn)練,就能形成權(quán)值分布穩(wěn)定的神經(jīng)網(wǎng)絡(luò),作為系統(tǒng)的知識(shí)表示。而神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法的好壞,取決于網(wǎng)絡(luò)結(jié)構(gòu)和神經(jīng)元間連接權(quán)值。在網(wǎng)絡(luò)結(jié)構(gòu)已經(jīng)固定的情況下,則要實(shí)現(xiàn)網(wǎng)絡(luò)權(quán)值的優(yōu)化,即通過(guò)訓(xùn)練對(duì)參數(shù)進(jìn)行連續(xù)優(yōu)化,完成最優(yōu)連接權(quán)值的查找。權(quán)值的整體分布包含網(wǎng)絡(luò)全部信息,以往需要根據(jù)確定的某個(gè)權(quán)值變化規(guī)則進(jìn)行權(quán)值獲取,然后通過(guò)訓(xùn)練實(shí)現(xiàn)權(quán)值布局調(diào)整。但采用傳統(tǒng)的網(wǎng)絡(luò)權(quán)值優(yōu)化算法,需要沿梯度下降方向進(jìn)行權(quán)值搜索,學(xué)習(xí)結(jié)果對(duì)初始權(quán)值向量較為敏感,初始權(quán)值不同將會(huì)直接影響最終結(jié)果。同時(shí),采用傳統(tǒng)算法也容易出現(xiàn)陷入局部最小的問(wèn)題,在出現(xiàn)局部極小點(diǎn)時(shí)獲得的解并非全局最優(yōu)解。此外,實(shí)際計(jì)算時(shí)僅能憑借經(jīng)驗(yàn)和實(shí)驗(yàn)進(jìn)行訓(xùn)練速度、學(xué)習(xí)率等采納數(shù)選取,容易因取值不當(dāng)造成網(wǎng)絡(luò)震蕩,繼而導(dǎo)致網(wǎng)絡(luò)無(wú)法收斂。
早在上世紀(jì)70年代,遺傳算法得以被提出。由于該算法擁有較強(qiáng)的問(wèn)題解決能力和廣泛適應(yīng)性,所以在工程研究等領(lǐng)域得到了應(yīng)用。遺傳算法是根據(jù)群體遺傳學(xué)和進(jìn)化論得到的算法,以生物進(jìn)化過(guò)程為背景,對(duì)生物進(jìn)化步驟進(jìn)行模擬分析,引入繁殖、雜交、選擇等概念,可以根據(jù)適者生存、優(yōu)勝劣汰原則實(shí)現(xiàn)不斷進(jìn)化,最終在最適應(yīng)環(huán)境個(gè)體上收斂,獲得問(wèn)題最優(yōu)解[1]。所以采用遺傳算法,并非對(duì)具體參數(shù)搜索空間中的某個(gè)解進(jìn)行評(píng)估,而是能夠在整個(gè)搜索空間中同時(shí)搜索大量可行解,避免收斂于局部最優(yōu)的問(wèn)題出現(xiàn)。所以采用遺傳算法,可以看成是對(duì)多維參數(shù)空間進(jìn)行并行搜索,能夠?qū)?wèn)題解編制成編碼串,構(gòu)成一代種群,實(shí)現(xiàn)對(duì)解空間的全面覆蓋。在此基礎(chǔ)上,可以隨機(jī)進(jìn)行初代賦值,然后通過(guò)一代一代的進(jìn)化獲得最優(yōu)解。由于該算法具有一定隨機(jī)性,并且能夠?qū)崿F(xiàn)多點(diǎn)隨機(jī)搜索,因此可以完成全局最優(yōu)解的查找。按照這一思路,采用遺傳算法需要將優(yōu)化問(wèn)題可行解利用二進(jìn)制編碼串表示,得到對(duì)應(yīng)基因鏈碼,當(dāng)做是物種染色體。而編碼串的組成,則被看成是基因塊。結(jié)合問(wèn)題求解目標(biāo),可以對(duì)適應(yīng)函數(shù)進(jìn)行定義,從而對(duì)可行解的優(yōu)劣進(jìn)行衡量。從隨機(jī)群染色體中進(jìn)行搜索,對(duì)所有個(gè)體適應(yīng)值進(jìn)行分別計(jì)算,可以完成染色體群復(fù)制。按照固定概率實(shí)現(xiàn)交換變異,可以得到新的染色體群。最終,直至得到的個(gè)體擁有足夠適應(yīng)值或達(dá)到最大代數(shù),可以得到最優(yōu)解。
從算法流程上來(lái)看,通過(guò)對(duì)生物遺傳機(jī)制進(jìn)行借鑒,算法由初始化、選擇、雜交和突變構(gòu)成,為隨機(jī)化非線性算法。在初始化過(guò)程中,需要對(duì)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)、輸入樣本集、輸出樣本集進(jìn)行確定,得到權(quán)值編碼和個(gè)體位串長(zhǎng),根據(jù)編碼映射確定權(quán)值與個(gè)體位串關(guān)系。在選擇階段,需要完成染色體個(gè)數(shù)等遺傳參數(shù)的設(shè)置,同時(shí)完成自適應(yīng)調(diào)整算法的設(shè)定,得到隨機(jī)初始群體,包含N個(gè)個(gè)體。對(duì)所有個(gè)體位串進(jìn)行譯碼,則能獲得N組網(wǎng)絡(luò)權(quán)值和結(jié)構(gòu)相同的N個(gè)網(wǎng)格。輸入樣本集,并實(shí)現(xiàn)前向傳播,可以獲得N個(gè)輸出。利用適應(yīng)度函數(shù)進(jìn)行網(wǎng)絡(luò)評(píng)價(jià),即以誤差函數(shù)倒數(shù)為評(píng)價(jià)函數(shù),可以對(duì)各染色體適應(yīng)度值進(jìn)行計(jì)算。而計(jì)算誤差較大時(shí),得到的適應(yīng)度值將越小。在遺傳空間進(jìn)行適應(yīng)度優(yōu)選,可以完成函數(shù)值大的多個(gè)個(gè)體選擇,淘汰適應(yīng)度小的個(gè)體。采用交叉、變異遺傳算子,可實(shí)現(xiàn)當(dāng)前群體處理,獲得下一代群體。反復(fù)實(shí)現(xiàn)迭代,可以實(shí)現(xiàn)權(quán)值優(yōu)化。
網(wǎng)絡(luò)編碼為神經(jīng)網(wǎng)絡(luò)權(quán)值優(yōu)化的基礎(chǔ),因?yàn)檫z傳算法無(wú)法直接用于進(jìn)行空間參數(shù)的處理,僅能對(duì)基因鏈碼表達(dá)形式的個(gè)體進(jìn)行處理。在網(wǎng)絡(luò)編碼上,可以采用二進(jìn)制編碼、實(shí)數(shù)編碼等方式。通常的情況下,采用二進(jìn)制編碼方法進(jìn)行問(wèn)題解的參數(shù)形式轉(zhuǎn)換,如式(1)所示,為各解實(shí)際值X與二進(jìn)制位串標(biāo)示值B的關(guān)系。式中,X在[Xmax,Xmin]范圍內(nèi)取值,L為B的長(zhǎng)。無(wú)需外部信息,僅憑適應(yīng)函數(shù)值即可進(jìn)行優(yōu)化搜索。
針對(duì)復(fù)雜系統(tǒng)優(yōu)化問(wèn)題,采用二進(jìn)制編碼過(guò)于繁雜,算法的收斂精度和速度都會(huì)受到一定程度的影響,導(dǎo)致算法缺乏空間搜索能力。而采用實(shí)數(shù)編碼,則能根據(jù)個(gè)體空間與可行解空間對(duì)應(yīng)關(guān)系進(jìn)行個(gè)體解碼,將碼串長(zhǎng)度看成是神經(jīng)網(wǎng)絡(luò)權(quán)值個(gè)數(shù)[2]。針對(duì)神經(jīng)網(wǎng)絡(luò)權(quán)值優(yōu)化問(wèn)題,由于權(quán)值均以實(shí)數(shù)表示,所以可以直接利用實(shí)數(shù)編碼方式,使各權(quán)值與實(shí)數(shù)對(duì)應(yīng),然后通過(guò)串連進(jìn)行各位串的位表達(dá)。確定編碼方式后,可以實(shí)現(xiàn)初始化操作,在編碼最大范圍內(nèi)得到隨機(jī)初始值。經(jīng)過(guò)遺傳算子操作后,得到的初始化網(wǎng)絡(luò)還要加強(qiáng)合理性分析,對(duì)各神經(jīng)狀態(tài)進(jìn)行掃描,確定存在輸入和輸出值。一旦發(fā)現(xiàn)輸入或輸出全為零,還要判定為無(wú)效神經(jīng)元,可直接刪除。
實(shí)際進(jìn)行適應(yīng)度函數(shù)選取時(shí),還應(yīng)認(rèn)識(shí)到適應(yīng)度越大的染色體進(jìn)行下一代繁殖的機(jī)會(huì)越大。所以選擇算子還應(yīng)發(fā)揮產(chǎn)生大量適應(yīng)度值大的個(gè)體的作用,確保個(gè)體能夠更多的參與到下一代繁殖中,得到更多的后代個(gè)體。由于網(wǎng)絡(luò)權(quán)值擁有固定的進(jìn)化結(jié)構(gòu),所以可以忽律網(wǎng)絡(luò)復(fù)雜度等結(jié)構(gòu)參數(shù),達(dá)到簡(jiǎn)化計(jì)算的目標(biāo)。結(jié)合這一思路,在染色體個(gè)數(shù)為N的條件下,假設(shè)第i各染色體為xi,對(duì)應(yīng)的適應(yīng)度值為fi,還要利用選擇算子完成染色體復(fù)制。而在得到的下一代種群中,可以按照式(2)進(jìn)行復(fù)制染色體個(gè)數(shù)的計(jì)算。
在標(biāo)準(zhǔn)的遺傳算法中,還包含交叉算子和變異算子。采用交叉算子,可以使存在于原本群體中優(yōu)良個(gè)體得到保存,并且也能完成新的解空間搜索,得到多樣性個(gè)體[3]。但是如果按照概率隨機(jī)進(jìn)行交叉,盡管可以使個(gè)體多樣性得到保持,從局部最優(yōu)中挑出,但也會(huì)因交叉概率過(guò)大導(dǎo)致算法收斂過(guò)慢。實(shí)際進(jìn)行算子設(shè)計(jì)時(shí),可以采用兩點(diǎn)算術(shù)雜交方法,得到具有較強(qiáng)搜索能力的實(shí)數(shù)編碼。在種群數(shù)量較大的情況下,將產(chǎn)生明顯差別。針對(duì)參與交叉配對(duì)的染色體,還要在相應(yīng)元素差e實(shí)現(xiàn)閾值θ引入,在e>θ的條件下,編碼相差度φ應(yīng)當(dāng)加1,直至φ大小超出3時(shí),可時(shí)配對(duì)個(gè)體進(jìn)行交叉配對(duì),否則需要進(jìn)行參與配對(duì)個(gè)體的重新選擇。
采用變異算子,可以促使個(gè)體串的部分位基因值發(fā)生變化。針對(duì)二進(jìn)制位串,在字符集為{0,1}的條件下,就是對(duì)部分基因位置值進(jìn)行取反操作,將0變?yōu)?,將1變?yōu)?,實(shí)現(xiàn)局部搜索和加速最優(yōu)解收斂,也能避免有用遺傳模式的丟失,促使個(gè)體模式多樣性得到增強(qiáng)。實(shí)際進(jìn)行算子設(shè)計(jì)時(shí),針對(duì)實(shí)數(shù)編碼,還要采用反向變異算子,在利用簡(jiǎn)單變異算子變異后,比較子代與父代適應(yīng)度函數(shù)。在下一代擁有較高適應(yīng)度函數(shù)的情況下,將其看成是反向變異算子子代,否則看成是反方向變異結(jié)果子代[4]。針對(duì)普通變異,需要在父代上進(jìn)行ξ添加,在得到的子代擁有較高適應(yīng)度值時(shí)可維持不變,否則將減去ξ。因此在每輪操作后,僅有最優(yōu)個(gè)體能夠保留下來(lái),適應(yīng)值小個(gè)體將被淘汰,以免重復(fù)競(jìng)爭(zhēng)。但是這類(lèi)個(gè)體可以參與本輪交叉和變異操作,用于實(shí)現(xiàn)下一代搜索指導(dǎo)。在解決尋優(yōu)問(wèn)題時(shí),如果存在約束條件,可以在適應(yīng)值計(jì)算前淘汰無(wú)法滿足條件的個(gè)體,以便在新競(jìng)爭(zhēng)開(kāi)始前利用新個(gè)體進(jìn)行淘汰個(gè)體的替代,從而使收斂速度得到提高,同時(shí)保證種群多樣性。
在遺傳算法實(shí)現(xiàn)過(guò)程中,還要完成部分參數(shù)的提前選擇,包含變異概率、初始種群數(shù)、交叉概率等等。在初始種群數(shù)較大的情況下,可以完成較多解的同時(shí)處理,所以可以獲得較強(qiáng)的空間搜索能力,但是也將導(dǎo)致迭代時(shí)間增加。所以通常的情況下,初始種群數(shù)被限定在幾十到幾百之間[5]。而在交叉概率選取上,由于該數(shù)值越大搜索最優(yōu)解子空間的速度越快,但同時(shí)也可能造成算法過(guò)早收斂,因此通常限定在0.25到1之間。在變異概率選取上,該數(shù)值通常較小,如果過(guò)大將盡管可以使個(gè)體多樣性增強(qiáng),但是將對(duì)收斂性產(chǎn)生影響,因此限定在0.001到0.01范圍內(nèi)。針對(duì)某三層前向網(wǎng)絡(luò),網(wǎng)絡(luò)輸入層節(jié)點(diǎn)數(shù)和輸出層節(jié)點(diǎn)數(shù)分別為2和1,隱層節(jié)點(diǎn)數(shù)為5,可以分別采用標(biāo)準(zhǔn)BP神經(jīng)網(wǎng)絡(luò)算法和基于遺傳算法的神經(jīng)網(wǎng)絡(luò)優(yōu)化方法。結(jié)合需求,可以完成如式(3)的函數(shù)選擇,并將訓(xùn)練樣本和檢驗(yàn)樣本均設(shè)置為30個(gè),交叉概率和變異概率分別為0.4和0.01,精度ε達(dá)到0.004。
從訓(xùn)練情況來(lái)看,采用標(biāo)準(zhǔn)BP神經(jīng)網(wǎng)絡(luò)算法精度能夠達(dá)到0.0045,在檢驗(yàn)過(guò)程中精度則能達(dá)到0.0046,而采用基于遺傳算法的神經(jīng)網(wǎng)絡(luò)權(quán)值優(yōu)化方法,算法精度能夠達(dá)到0.0038,檢驗(yàn)精度能夠達(dá)到0.0038。由此可見(jiàn),相較于標(biāo)準(zhǔn)算法,采用優(yōu)化方法可以更好的進(jìn)行學(xué)習(xí)成果的復(fù)現(xiàn),并且也可以大奧預(yù)設(shè)精度要求。而如表1所示,在相對(duì)均方誤差均為0.0060的情況下,采用標(biāo)準(zhǔn)算法需要經(jīng)過(guò)6237次網(wǎng)絡(luò)訓(xùn)練,采用優(yōu)化方法僅需要220次訓(xùn)練。在相對(duì)均方誤差達(dá)為0.0016時(shí),采用標(biāo)準(zhǔn)方法無(wú)法經(jīng)過(guò)網(wǎng)絡(luò)訓(xùn)練達(dá)到這一精度水平,采用優(yōu)化方法則能通過(guò)1060次訓(xùn)練達(dá)到要求。因此,采用基于遺傳算法的神經(jīng)網(wǎng)絡(luò)權(quán)值優(yōu)化方法,可以更快的完成網(wǎng)絡(luò)訓(xùn)練,并實(shí)現(xiàn)全局優(yōu)化。在網(wǎng)絡(luò)結(jié)構(gòu)較大的情況下,通過(guò)對(duì)控制參數(shù)進(jìn)行合理設(shè)定,則能使方法收斂速度快的優(yōu)勢(shì)得到充分發(fā)揮。
表1 算法網(wǎng)絡(luò)訓(xùn)練次數(shù)比較Table 1 Comparison of algorithm network training times
通過(guò)研究可以發(fā)現(xiàn),采用神經(jīng)網(wǎng)絡(luò)解決問(wèn)題,容易出現(xiàn)陷入局部最優(yōu)的困境,算法無(wú)法實(shí)現(xiàn)快速收斂。針對(duì)這一問(wèn)題,還要實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)權(quán)值優(yōu)化,才能更好的完成全局最優(yōu)解的搜索。采用遺傳算法,可以通過(guò)網(wǎng)絡(luò)編碼和選擇適應(yīng)函數(shù)提高神經(jīng)網(wǎng)絡(luò)自適應(yīng)能力,并利用交叉算子和變換算子促使網(wǎng)絡(luò)進(jìn)化,使網(wǎng)絡(luò)性能得到有效改善。從方法實(shí)現(xiàn)情況來(lái)看,采用遺傳算法實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)權(quán)值優(yōu)化后,網(wǎng)絡(luò)收斂速度和算法精度都得到了改善。