国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

BP神經(jīng)網(wǎng)絡隱含層節(jié)點數(shù)確定方法研究

2018-04-13 01:06王嶸冰徐紅艷
計算機技術(shù)與發(fā)展 2018年4期
關(guān)鍵詞:斜率拋物線區(qū)間

王嶸冰,徐紅艷,李 波,馮 勇

(遼寧大學 信息學院,遼寧 沈陽 110036)

0 引 言

人工神經(jīng)網(wǎng)絡具有自學習、自組織和優(yōu)良的非線性逼近能力,因此眾多領(lǐng)域的學者都在對其進行研究和應用。在實際應用中,其中一種人工神經(jīng)網(wǎng)絡—BP神經(jīng)網(wǎng)絡(back propagation neural networks,BPNN)最為人們熟知,并廣泛應用于人工智能、圖像處理、優(yōu)化算法、數(shù)據(jù)挖掘等重要領(lǐng)域。

在對BPNN進行深入研究的過程中,學者們提出了一個非常重要的、不可忽略的問題,即BPNN隱含層節(jié)點數(shù)確定問題。由于對神經(jīng)網(wǎng)絡隱含層節(jié)點數(shù)的確定缺乏有效的方法,目前僅能憑經(jīng)驗和不斷地實驗來確定隱含層節(jié)點數(shù)。針對這個問題,文中提出了一種行之有效的算法,即“三分法”算法。該算法可以簡單、快速地確定BPNN隱含層節(jié)點數(shù)。

1 相關(guān)研究

1.1 BPNN

1986年,Rumelhart等提出了誤差反向傳播法,即BP算法[1]。BPNN能夠?qū)崿F(xiàn)M-N維的映射關(guān)系,而無需事先知道映射關(guān)系的數(shù)學方程式。BPNN模型由三部分構(gòu)成:輸入層、隱含層以及輸出層[2],模型圖如圖1所示。

圖1為三層前饋神經(jīng)網(wǎng)絡,不含Input層,整個網(wǎng)絡含有兩個隱含層Hidden1和Hidden2,一個輸出層Output,各層之間是全連接的關(guān)系。

圖1 三層BPNN

BPNN實現(xiàn)了M維到N維的一個非線性映射關(guān)系,它包括兩個過程,一是前向傳播過程,二是誤差反向傳播過程。

當一個模式從輸入端輸入網(wǎng)絡之后,這個模式將在BPNN中流動,模式通過權(quán)值線路進入每一個隱含層神經(jīng)元節(jié)點,利用激活函數(shù),隱含層各個神經(jīng)元對其進行加權(quán)求和處理,之后經(jīng)過隱含層和輸出層之間的權(quán)值線路進入輸出層單元,處理后在輸出層產(chǎn)生一個輸出模式。在輸入模式轉(zhuǎn)換成輸出模式的期間,從輸入層到輸出層逐步更新各層狀態(tài)的過程即前向傳播過程。接著計算輸出模式和期望模式的誤差,如果誤差大于設定的精度閾值,將誤差順著來路逐層進行反向傳播,接著更新網(wǎng)絡權(quán)值。迭代前向傳播和誤差反向傳播這兩個過程,直至所有訓練樣本的誤差平方和都滿足精度要求為止,至此BPNN的整個學習過程就完成了。

1.2 影響B(tài)PNN性能的參數(shù)

為了設計合理的BPNN,有必要探討影響B(tài)PNN性能的參數(shù),影響B(tài)PNN性能的參數(shù)如下:

(1)隱含層數(shù):隱含層數(shù)的增加可以降低網(wǎng)絡誤差,提高精度,但同時也會使網(wǎng)絡復雜性增大,導致網(wǎng)絡的訓練時間被增大和出現(xiàn)“過擬合”傾向的可能性也被增大。

(2)隱含層節(jié)點數(shù):在BPNN中,隱含層節(jié)點數(shù)是一個非常重要的參數(shù),它的設置對BPNN的性能影響很大,而且是“過擬合”現(xiàn)象的直接原因。但遺憾的是,目前理論上還不存在一種科學普遍的確定方法。這個問題將是文中關(guān)注的重點。

(3)網(wǎng)絡的初始連接權(quán)值:BP算法的先天設計不可避免地使誤差函數(shù)會有多個局部極小點存在,網(wǎng)絡初始連接權(quán)值不同,可能導致BP算法收斂的結(jié)果不同,而這個結(jié)果不能確定是全局最優(yōu)解,有可能是局部最優(yōu)。

(4)學習率:網(wǎng)絡訓練時,網(wǎng)絡學習的穩(wěn)定性受到學習率的影響。設定的學習率大,網(wǎng)絡學習速度快,但會導致修正權(quán)值時權(quán)值會呈現(xiàn)不規(guī)則跳躍而無法收斂;設定的學習率小,網(wǎng)絡學習速度慢,可能使網(wǎng)絡收斂于某個極小值,缺點是會導致學習時間過長。

(5)動量系數(shù):為解決易收斂到極小值、訓練時間長等缺陷,引入了動量系數(shù)因子[3]。附加動量項能夠使得權(quán)值的調(diào)整趨于平滑穩(wěn)定,易找到全局最小值[4]。

2 BPNN與隱含層節(jié)點數(shù)

2.1 隱含層節(jié)點數(shù)對BPNN的影響

在BPNN中,隱含層節(jié)點數(shù)是一個非常重要的參數(shù),它的設置對BPNN的性能影響很大[5],而且是“過擬合”現(xiàn)象的直接原因,目前理論上還沒有一種科學的方法可以確定隱含層節(jié)點數(shù)。由于輸入輸出層節(jié)點數(shù),以及問題的復雜度和轉(zhuǎn)換函數(shù)等都可能影響隱含層節(jié)點數(shù)的確定,它的確定有了更多的不確定性。

若隱含層節(jié)點數(shù)太少,那么會使得網(wǎng)絡無法學習;若太多,雖然在一定程度上可以減小系統(tǒng)誤差,但無疑會增加網(wǎng)絡學習的時間,而且會使訓練掉入局部極小點的陷阱,這也是“過擬合”的內(nèi)在原因。因此,如何合理設計隱含層節(jié)點數(shù),是一個不可避免的問題。確定隱含層節(jié)點數(shù)可以遵循一條基本原則,盡可能取較少的節(jié)點數(shù)來滿足問題的精度要求。

對非訓練樣本的支持能力稱為網(wǎng)絡泛化能力[6]。而泛化能力與網(wǎng)絡的結(jié)構(gòu),即隱含層數(shù)和隱含層節(jié)點數(shù)有關(guān)[7]。學者Nielson通過理論證明存在一個BPNN,只有一個隱含層,但能夠逼近在閉區(qū)間連續(xù)的任何函數(shù)[8],因此不用考慮隱含層層數(shù)問題。

2.2 傳統(tǒng)隱含層節(jié)點數(shù)的確定方法

隱含層節(jié)點數(shù)的選擇是個十分復雜的問題,需要設計者有著長期的實踐積累,憑借自己以往的經(jīng)驗以及借助多次實驗進行確定。隱含層節(jié)點數(shù)與問題的需求、輸入輸出單元的數(shù)目有著不可割舍的直接關(guān)系。若數(shù)目太少,則BPNN不能獲取足夠的信息用來解決問題需求;若數(shù)目太多,會增加學習時間,還會使學習時間過長,卻不能保證最終結(jié)果最好,同時可能出現(xiàn)“過擬合”問題。文獻[9]說明最佳的隱層節(jié)點數(shù)一定存在,如何尋找得到這個最佳節(jié)點數(shù)是一個值得思考的問題。針對該問題,許多學者給出了各種解決方案[10-13],也提出了不少經(jīng)驗公式。

(1)

n1=(n+m)1/2+a

(2)

其中,n為輸入層節(jié)點數(shù);m為輸出層節(jié)點數(shù);a為1~10之間的常數(shù)。

n1=log2n

(3)

解決方案總結(jié)起來有以下幾類:

(1)實驗法,這是一種最無奈的方法,而且消耗大量的人力;

(2)將解空間限制到某個區(qū)間內(nèi),在這個解空間中進行暴力破解,雖然簡單,但消耗時間;

(3)引入超平面、動態(tài)全參數(shù)自調(diào)整等概念,這些都使得算法過于復雜,甚至超過了BPNN學習算法的復雜度,運行這些算法需要消耗過長的時間,所以需要思考一種簡單有效的算法。

通過聯(lián)立式1~3并求解,可以得到一個關(guān)于隱含層節(jié)點數(shù)的區(qū)間[a,b]。這個區(qū)間意味著最佳隱含層節(jié)點數(shù)所在的一個區(qū)間,只要在這個區(qū)間中尋找,就可以找到它。

第一種方法,最簡單也是最容易想到的,即可以使用暴力破解的思想。所謂的暴力破解法,就是利用整個解空間中的每一個解進行驗證計算。

將[a,b]之內(nèi)的所有可能解代入BPNN,然后每一個解構(gòu)成一個BPNN,將所有的樣本通過這些神經(jīng)網(wǎng)絡進行訓練,從而得到這些BPNN中最小的誤差值,所對應的隱含層節(jié)點數(shù)即為所求[14]。

暴力破解法由于搜索了整個解空間,因此該算法一定是有效的,但對于時間復雜度而言,當這個區(qū)間很小或者測試樣本量很小時,暴力破解算法的時間是可以接受的,但當這個區(qū)間特別大或者測試樣本量很大時,所耗費的時間就可能無法容忍,需要繼續(xù)改進。

暴力破解法時間消耗過長主要是因為搜索了整個解空間,如果能夠在求解的過程中縮小解空間,那么時間消耗就可以減少,從而優(yōu)化暴力破解算法。

3 改進的隱含層節(jié)點數(shù)確定方法

3.1 “三分法”算法思想

二分法查找是在一個有序的數(shù)組中進行折半查找,從而將查找算法的時間復雜度降到了O(log2n)。文中借鑒了二分法查找算法思想,但是考慮由于隱含層節(jié)點數(shù)和誤差的關(guān)系的特殊性,不能照搬二分法,需要設計為三分法。

圖2 拋物線曲線

該算法可以一次性去除2/3的不符合選項。如圖2所示的拋物線中,只利用函數(shù)值如何查找最低點的位置。

第一種方法可以使用暴力破解。

(4)

當最低點位于區(qū)間內(nèi)時,那么最低點所在的區(qū)間的斜率絕對值最小(圖2中為區(qū)間[c,d]),且左邊區(qū)間的斜率為負,右邊的區(qū)間為正。所以要找到最小點,只需從[c,d]之間查找。然后在[c,d]中迭代使用“三分法”,直到[a,b]區(qū)間長度小于等于4(不能構(gòu)成三個斜率),此時只需依次比較這四個節(jié)點就可以找到最低點。

通過上述可知,三分法的適用范圍為區(qū)間存在最優(yōu)解,且誤差模型近似為拋物線。通過式1~3獲得區(qū)間內(nèi)一定包含了最優(yōu)的隱含層節(jié)點數(shù),并且也可知它符合拋物線模型。

研究區(qū)間很大時,如果忽略一些特殊點形成的“突刺”(一些特殊的點上誤差可能會高于理想的誤差而出現(xiàn)波動,即突刺),那么誤差的模型是一個拋物線模型。拋物線模型最低谷是誤差最小點,也就是最佳的隱含層節(jié)點數(shù);從這個點往兩側(cè)延伸,隨著遠離這個平衡點,那么誤差會逐漸增大。當隱含層節(jié)點數(shù)為1時,可以認為這個網(wǎng)絡是無用的;當隱含層節(jié)點數(shù)是一個正的無窮時,網(wǎng)絡中的冗余知識使得網(wǎng)絡也是不可用的。

至此,可知“三分法”的實質(zhì)就是將區(qū)間[a,b]分成三段,然后研究這三段的變化趨勢,從而預測最優(yōu)的隱含層節(jié)點數(shù)存在于哪個區(qū)間之內(nèi)。斜率代表了曲線的變化趨勢,斜率越小,說明變化趨勢越小,也就說明了隱含層節(jié)點數(shù)就隱藏在這里。

3.2 算法合理性驗證

為了說明算法的合理性,并且為了演示算法的運行步驟,在此先簡要利用其他研究者的實驗成果進行簡單驗證,后面會繼續(xù)利用實驗驗證“三分法”算法的合理性。

在文獻[15]中,有一章節(jié)研究了隱含層節(jié)點數(shù)和誤差的關(guān)系,這篇論文是關(guān)于BPNN對產(chǎn)品質(zhì)量合格率預測的研究,其實驗結(jié)果如圖3所示。

圖3 隱含層和誤差的關(guān)系曲線

通過觀察圖3可知,這是一個不規(guī)則的拋物線模型,某些地方呈不規(guī)則無規(guī)律變化,而在整體變化趨勢上卻呈拋物線變化,支持了上文的研究理論。對于這個關(guān)系圖,如果使用暴力破解,即依次驗證1~20個節(jié)點,那么需要訓練20次,才能確定節(jié)點數(shù)最優(yōu)解為13;如果使用三分法,那么很快就確定到節(jié)點數(shù)為6~13個。

接下來,探討B(tài)P網(wǎng)絡隱含層節(jié)點數(shù)確定步驟。設ki,j表示區(qū)間(i,j)的斜率,比如k1,6表示區(qū)間(1,6)的斜率。

第一步:因為k1,6<0&&k13,20>0,說明在區(qū)間(1,6)誤差在下降,在區(qū)間(13,20)誤差在上升,那么說明最優(yōu)解可能在區(qū)間(7,12),所以可取區(qū)間(7,12),繼續(xù)使用三分法。

第二步:因為k7,8<0&&k9,10<0&&k11,12<0,說明誤差一直在下降,則可選取區(qū)間(11,12),如此再比較隱含層節(jié)點數(shù)11和隱含層節(jié)點數(shù)12。

第三步:檢測所求解的兩側(cè)的兩個點就可以定位到13。

如此只需訓練11次就可找到最優(yōu)解,比正常的快了幾乎一倍。接下來,仔細分析“三分法”算法思想。

實際上三個區(qū)間的方向性共有8種變化。設三個區(qū)間的斜率分別為k1,k2,k3,則這三個斜率的變化趨勢可以分為6種情況。

(1)k1<0&&k2>0&&k3<0。

k1<0說明誤差在下降,k2>0說明誤差在上升,k3<0說明誤差在下降,出現(xiàn)這種現(xiàn)象可以認為誤差出現(xiàn)了“跳躍”,因此不能使用“三分法”,而使用普通的暴力破解法效果會更好。

(2)k1<0&&k2>0&&k3>0。

k1<0說明誤差在下降,k2>0說明誤差在上升,k3>0說明誤差在上升,所以可以確定最優(yōu)解在中間段區(qū)間,即使在第一段區(qū)間的末尾,由于算法會加一個調(diào)節(jié)因子,依然可以找到。

(3)k1<0&&k2<0&&k3>0。

該情形與情形(2)類似。誤差變化是第一段區(qū)間下降,第二段區(qū)間下降,第三段區(qū)間上升,所以依然選擇中間段區(qū)間。

(4)k1<0&&k2<0&&k3<0。

三者全都小于0,說明誤差一直在下降,所以選擇第三段區(qū)間。

(5)k1>0&&k2>0&&k3>0。

三者均大于0,說明誤差一直在上升,所以選擇第一段區(qū)間。

(6)其他情況,可以認為區(qū)間震蕩,無法確定最優(yōu)解會出現(xiàn)在哪個區(qū)間,需要使用暴力破解法。

由于算法利用的是區(qū)間的變化趨勢,所以每一段區(qū)間最少為三個點,三個區(qū)間則最少需要七個點。因此設置7為臨界值,當區(qū)間大小大于等于7時,一律使用暴力破解法。

其次,對于每一種情況,最優(yōu)解有可能在某個區(qū)間的端點出現(xiàn),這樣的話有可能會錯過這個解,因此為了防止最優(yōu)解在區(qū)間端點出現(xiàn),加入調(diào)節(jié)因子m,n。

3.3 “三分法”算法描述

在前面詳細論述了“三分法”算法的求解原理和算法思想,該算法有效且簡單。引入BPNN中,首先構(gòu)建BPNN,利用求得的節(jié)點數(shù)區(qū)間,代入隱含層構(gòu)建對應的BPNN,BPNN構(gòu)建完成后,將訓練樣本依次通過BPNN進行訓練,利用測試樣本測試網(wǎng)絡,這樣最終會得到BPNN的誤差和隱含層節(jié)點數(shù)的關(guān)系。

“三分法”算法流程:

(1)根據(jù)經(jīng)驗公式1~3確定a,b;

(2)如果b-a小于7,跳轉(zhuǎn)到(8),否則繼續(xù)執(zhí)行;

(3)計算c,d,并獲取ka,c,kc,d,kd,b;

(4)如果ka,c<0&&kc,d<0&&kd,b<0,則a=b,跳轉(zhuǎn)到(2);否則繼續(xù)向下執(zhí)行;

(5)如果ka,c>0&&kc,d>0&&kd,b>0,則b=c,跳轉(zhuǎn)到(2);否則繼續(xù)向下執(zhí)行;

(6)如果ka,c<0&&kc,d>0&&kd,b>0,則a=c,b=d,跳轉(zhuǎn)到(2);否則繼續(xù)向下執(zhí)行;

(7)如果ka,c<0&&kc,d<0&&kd,b>0,則a=c,b=d,跳轉(zhuǎn)到(2);否則跳轉(zhuǎn)到(8);

(8)添加調(diào)節(jié)因子a=a-m,b=b+n,若a小于等于0,重置為1;

(9)暴力求解。

4 實驗結(jié)果與分析

4.1 實驗環(huán)境

文中采用Java編程技術(shù),使用的開發(fā)工具包是jdk1.7,集成開發(fā)環(huán)境采用Eclipse,它可以很好地支持Java應用程序編程。Matlab是一種很強大的工具,集成了計算、可視化和程序設計等功能,有多種工具箱,其中包括神經(jīng)網(wǎng)絡工具箱。神經(jīng)網(wǎng)絡工具箱包括不同神經(jīng)網(wǎng)絡模型的網(wǎng)絡學習和訓練函數(shù),其中就有BPNN,包括BPNN的新建、訓練、測試,為BPNN的仿真實驗提供了便利。

4.2 隱含層節(jié)點數(shù)確定實驗

為了驗證“三分法”算法的正確性,需要進行兩部分實驗。首先需要驗證BPNN誤差和隱含層節(jié)點數(shù)的關(guān)系,其次需要進行“三分法”算法的驗證。

實驗采用UCI上的數(shù)據(jù)集Wine-data,對三個不同品種的葡萄酒分別進行化學分析,從中分析出主要成分并記錄該值。該數(shù)據(jù)集的任務就是實現(xiàn)數(shù)據(jù)分類,從而區(qū)分其所屬品種。

實驗獲取到的結(jié)果如圖4所示。

圖4 網(wǎng)絡誤差與隱含層節(jié)點數(shù)的關(guān)系

通過對Wine-data數(shù)據(jù)集的實驗,發(fā)現(xiàn)隱含層節(jié)點數(shù)與誤差的關(guān)系基本符合拋物線的形式,證明了“三分法”算法的基礎是有效的。而通過對這組實驗結(jié)果使用“三分法”算法,最終可以獲取到最佳解。程序運行過程中a,b,c,d(m,n均設置為0)變化是:

(1)a=1,c=7,d=13,b=20;

(2)a=7,c=9,d=11,b=13;

(3)a=9,b=11。

傳統(tǒng)確定隱含層節(jié)點數(shù)的方法,需要實驗節(jié)點數(shù)為1~20共20次的實驗,而新的“三分法”算法實驗只需要進行1,7,9,10,11,13,20共7次實驗,速度提高了1.8倍,證明了“三分法”算法相對于傳統(tǒng)方法有了明顯的改進。

5 結(jié)束語

針對BPNN結(jié)構(gòu)難以確定的問題,提出了“三分法”算法。通過參考相關(guān)文獻、研究已有成果,發(fā)現(xiàn)BPNN的誤差和隱含層節(jié)點數(shù)的關(guān)系基本符合拋物線模型,所以可以通過研究誤差的趨勢,很快定位到最優(yōu)解的位置,這是“三分法”算法的基礎。同時,為了解決不符合拋物線模型的情況,增強“三分法”算法的魯棒性,結(jié)合了暴力破解法。通過示例演算可知,“三分法”算法可以快速、有效地確定隱含層節(jié)點數(shù),是一種行之有效的算法。

參考文獻:

[1] RUMELHART D E.Learning representation by back-propagating errors[J].Nature,1986,323(6088):533-536.

[2] 周啟超.BP算法改進及在軟件成本估算中的應用[J].計算機技術(shù)與發(fā)展,2016,26(2):195-198.

[3] 師 黎,陳鐵軍.智能控制理論及應用[M].北京:清華大學出版社,2009:104-105.

[4] 王晶晶,王 劍.一種BP神經(jīng)網(wǎng)絡改進算法研究[J].軟件導刊,2015,14(3):52-53.

[5] BAHADIR E.Prediction of prospective mathematics teachers' academic success in entering graduate education by using back-propagation neural network[J].Journal of Education and Training Studies,2016,4(5):113-122.

[6] 周冬冬.BP神經(jīng)網(wǎng)絡樣本數(shù)據(jù)預處理應用研究[D].重慶:重慶大學,2011.

[7] 李武林,郝玉潔.BP網(wǎng)絡隱節(jié)點數(shù)與計算復雜度的關(guān)系[J].成都信息工程學院學報,2006,21(1):70-73.

[8] AZGHADI S M R,BONYADI M R,SHAHHOSSEINI H.Gender classification based on feed forward back propagation neural network[C]//International conference on artificial intelligence & innovations:from theory to applications.[s.l.]:[s.n.],2007:299-304.

[9] RASTEGAR R,HARIRI A.A step forward in studying the compact genetic algorithm[J].Evolutionary Computation,2006,14(3):277-289.

[10] 沈花玉,王兆霞,高成耀,等.BP神經(jīng)網(wǎng)絡隱含層單元數(shù)的確定[J].天津理工大學學報,2008,24(5):13-15.

[11] 張德賢.前向神經(jīng)網(wǎng)絡合理隱含層結(jié)點個數(shù)估計[J].計算機工程與應用,2003,39(5):21-23.

[12] 夏克文,李昌彪,沈鈞毅.前向神經(jīng)網(wǎng)絡隱含層節(jié)點數(shù)的一種優(yōu)化算法[J].計算機科學,2005,32(10):143-145.

[13] 田國鈺,黃海洋.神經(jīng)網(wǎng)絡中隱含層的確定[J].信息技術(shù),2010(10):79-81.

[14] KHANLOU H M,SADOLLAH A,ANG B C,et al.Prediction and optimization of electrospinning parameters for polymethyl methacrylate nanofiber fabrication using response surface methodology and artificial neural networks[J].Neural Computing and Applications,2014,25:767-777.

[15] 溫 文.基于改進BP神經(jīng)網(wǎng)絡的產(chǎn)品質(zhì)量合格率預測研究[D].廣州:華南理工大學,2014.

猜你喜歡
斜率拋物線區(qū)間
巧用拋物線定義妙解題
拋物線高考滿分突破訓練(B卷)
區(qū)間值序列與區(qū)間值函數(shù)列的收斂性
阿基米德三角形在拋物線中的應用
賞析拋物線中的定比分點問題
巧甩直線斜率公式解數(shù)學題
全球經(jīng)濟將繼續(xù)處于低速增長區(qū)間
求斜率型分式的取值范圍
區(qū)間對象族的可鎮(zhèn)定性分析
導數(shù)幾何意義的深層次應用
金寨县| 洛宁县| 霸州市| 桃源县| 海丰县| 高淳县| 平塘县| 武乡县| 云梦县| 甘肃省| 塔河县| 长沙县| 扎鲁特旗| 湘潭市| 盐源县| 兴文县| 兴山县| 青岛市| 临西县| 壤塘县| 榕江县| 江川县| 泸定县| 蒙山县| 南安市| 台安县| 罗平县| 淮阳县| 吐鲁番市| 万载县| 明溪县| 武威市| 浦北县| 三江| 宜兴市| 宣恩县| 蒙山县| 莱芜市| 崇明县| 射阳县| 深州市|