資源描述:
《多層前饋神經(jīng)網(wǎng)絡(luò)算法資料課件.ppt》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、多層前饋神經(jīng)網(wǎng)絡(luò)算法王玉良神經(jīng)網(wǎng)絡(luò)算法基礎(chǔ)知識多層前饋神經(jīng)網(wǎng)絡(luò)神經(jīng)網(wǎng)絡(luò)例題123目錄神經(jīng)網(wǎng)絡(luò)實(shí)例演示4多層前饋神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖隱藏層和輸出層的節(jié)點(diǎn)被稱作神經(jīng)節(jié)點(diǎn),神經(jīng)網(wǎng)絡(luò)的層數(shù)為隱藏層數(shù)+輸出層數(shù)。神經(jīng)網(wǎng)絡(luò)是全鏈接的,即每一個(gè)節(jié)點(diǎn)和它下一層的每一個(gè)節(jié)點(diǎn)都有鏈接。神經(jīng)網(wǎng)絡(luò)輸入和結(jié)構(gòu)的確定神經(jīng)網(wǎng)絡(luò)可以接受離散型和連續(xù)型的數(shù)據(jù)。若將輸入規(guī)范化,使得他們落入0到1這個(gè)區(qū)間內(nèi),會有較佳的結(jié)果。一般對于分類數(shù)據(jù),用0和1分別表示一種狀態(tài),若狀態(tài)多于兩種,可以增加輸入節(jié)點(diǎn)。關(guān)于隱藏層的層數(shù)和每一層的數(shù)量,沒有“最好的”方案,需要反復(fù)調(diào)整,從而得到較優(yōu)解。神經(jīng)網(wǎng)絡(luò)
2、節(jié)點(diǎn)結(jié)構(gòu)權(quán)重和偏倚的初始值為(-1,1)隨機(jī)值。輸入節(jié)點(diǎn)將輸入值輸出。隱藏層節(jié)點(diǎn)和輸出層節(jié)點(diǎn)結(jié)構(gòu)如下圖所示:關(guān)于擠壓函數(shù)(激活函數(shù))擠壓函數(shù)是將一個(gè)較大的數(shù)(凈輸入)映射到0到1區(qū)間,常用的擠壓函數(shù)主要為logistic函數(shù)。對于不同的神經(jīng)網(wǎng)絡(luò)應(yīng)用,還有其他的擠壓函數(shù)。該函數(shù)的自變量是凈輸入。神經(jīng)網(wǎng)絡(luò)的誤差因?yàn)闄?quán)重和偏倚的初始值是隨機(jī)得到的,所以初始狀態(tài)的神經(jīng)網(wǎng)絡(luò)是無法滿足我們的要求的。這時(shí)候我們就需要比較計(jì)算結(jié)果和訓(xùn)練數(shù)據(jù)的“正確答案”,得到誤差,從而調(diào)整神經(jīng)網(wǎng)絡(luò)內(nèi)的權(quán)重和偏倚,來得到較滿意的神經(jīng)網(wǎng)絡(luò)。神經(jīng)網(wǎng)絡(luò)誤差的計(jì)算輸出層節(jié)點(diǎn)誤差的計(jì)算:其
3、中是輸出節(jié)點(diǎn)的輸出,是訓(xùn)練數(shù)據(jù)的“答案”。隱藏層節(jié)點(diǎn)誤差的計(jì)算:其中是隱藏層節(jié)點(diǎn)的輸出,是下一層節(jié)點(diǎn)誤差與權(quán)重積的和。多層前饋神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖可見誤差計(jì)算是從后往前計(jì)算的的神經(jīng)網(wǎng)絡(luò)權(quán)重與偏倚的更新操作是節(jié)點(diǎn)的誤差,l是學(xué)習(xí)率,取值范圍為(0,1)(相當(dāng)于梯度下降法的步長)偏倚的更新與權(quán)重的更新非常類似。權(quán)重與偏倚的更新操作都使用的是梯度下降法。權(quán)重的更新:偏倚的更新:梯度下降法梯度下降法又叫最速下降法(steepestdescendmethod),用來求解函數(shù)的最大或者最小值的,屬于無約束優(yōu)化問題。梯度向量為函數(shù)值f對每個(gè)變量的導(dǎo)數(shù),該向量的方向就
4、是梯度的方向,向量的大小也就是梯度的大小。梯度下降法梯度下降法的基本原理:現(xiàn)假設(shè)我們要求函數(shù)f的最大(?。┲?,首先任取一個(gè)初始點(diǎn),然后下一個(gè)點(diǎn)的產(chǎn)生時(shí)是沿著梯度直線方向(反方向)進(jìn)行迭代,迭代公式如下:為步長,為梯度方向神經(jīng)網(wǎng)絡(luò)算法總結(jié)到這里神經(jīng)網(wǎng)絡(luò)算法的計(jì)算部分就結(jié)束了,我們進(jìn)行一下總結(jié):輸入節(jié)點(diǎn)將值輸入到隱藏層,隱藏層和輸出層的每一個(gè)節(jié)點(diǎn)進(jìn)行計(jì)算,并輸出。計(jì)算過程為加權(quán)和+偏倚得到凈輸入,凈輸入作為擠壓函數(shù)的參數(shù)進(jìn)行計(jì)算,得到的結(jié)果就是每一個(gè)節(jié)點(diǎn)的輸出值。這樣從前到后按層計(jì)算就會得到神經(jīng)網(wǎng)絡(luò)的結(jié)果。更新操作的方向與計(jì)算方向相反。通過輸出節(jié)點(diǎn)的
5、輸出和訓(xùn)練數(shù)據(jù)的“正確答案”求出誤差,使用梯度下降法對權(quán)重和偏倚進(jìn)行更新。這樣后向前按層更新,從而實(shí)現(xiàn)對整個(gè)神經(jīng)網(wǎng)絡(luò)的更新操作。神經(jīng)網(wǎng)絡(luò)算法總結(jié)神經(jīng)網(wǎng)絡(luò)算法的停止條件:1、小于某一個(gè)閾值,代表已經(jīng)非常接近于最優(yōu)值,從而停止迭代。2、與所有訓(xùn)練數(shù)據(jù)的平均誤差小于一個(gè)閾值,代表我們得到了滿意解,從而停止迭代。3、達(dá)到一定的迭代次數(shù),從而停止迭代。例題如圖是一個(gè)多層前饋神經(jīng)網(wǎng)絡(luò),學(xué)習(xí)率為0.9。設(shè)一組訓(xùn)練數(shù)據(jù)為輸入值為(1,0,1),結(jié)果為1例題輸入、權(quán)重和偏倚的初始值如下:例題為了計(jì)算每一個(gè)節(jié)點(diǎn)的輸出,我們首先計(jì)算凈輸入(以節(jié)點(diǎn)4為例):這樣我們就可
6、以求得節(jié)點(diǎn)4和節(jié)點(diǎn)5的凈輸入:例題下面將凈輸入作為參數(shù)輸入擠壓函數(shù)就可以求出節(jié)點(diǎn)的輸出:例題此時(shí)我們求出了隱藏層的輸出,再根據(jù)隱藏層的輸出計(jì)算輸出層節(jié)點(diǎn)6:同理,首先求凈輸出L6:從而求得節(jié)點(diǎn)6的輸出:例題到此我們就完成了神經(jīng)網(wǎng)絡(luò)算法的一次計(jì)算,下面對該網(wǎng)絡(luò)進(jìn)行更新操作。例題因?yàn)楦虏僮鞯捻樞蚴菑暮笸暗?,首先對輸出?jié)點(diǎn)進(jìn)行更新。先求輸出節(jié)點(diǎn)的誤差Err6:因?yàn)橛?xùn)練數(shù)據(jù)的“正確答案”為1,所以T6等于1。權(quán)重進(jìn)行更新操作:偏倚進(jìn)行更新操作:例題同理,可以對節(jié)點(diǎn)4、5進(jìn)行更新操作,其誤差計(jì)算方法與節(jié)點(diǎn)6不同:權(quán)重和偏倚的更新操作與節(jié)點(diǎn)6相同,在這里
7、就不詳細(xì)計(jì)算:神經(jīng)網(wǎng)絡(luò)算法難點(diǎn)神經(jīng)網(wǎng)絡(luò)的計(jì)算過程和更新過程還是比較簡單的。但神經(jīng)網(wǎng)絡(luò)也存在難點(diǎn),主要包括兩方面:1、神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的確定。2、因?yàn)闄?quán)重和偏移的初始值是隨機(jī)的,有可能有限次內(nèi)不能得到滿意解。3、神經(jīng)網(wǎng)絡(luò)算法學(xué)習(xí)出來的規(guī)則難以讓人理解。例題回顧一下,更新操作是從后往前的,更新節(jié)點(diǎn)6更新了偏倚以及權(quán)重w46,w56。同理,更新節(jié)點(diǎn)4更新了以及w14,w24,w34;更新節(jié)點(diǎn)5。。。這樣就完成了一次對于神經(jīng)網(wǎng)絡(luò)的更新。關(guān)于更新操作的時(shí)機(jī)一般訓(xùn)練數(shù)據(jù)有很多組,將所有訓(xùn)練數(shù)據(jù)進(jìn)行一次計(jì)算+更新操作,叫做一次迭代。每處理一個(gè)樣本就進(jìn)行一次更新叫做
8、實(shí)例更新;處理完所有訓(xùn)練數(shù)據(jù)后,再進(jìn)行更新操作叫做周期更新。一般數(shù)學(xué)計(jì)算中常常使用周期更新,用計(jì)算機(jī)實(shí)現(xiàn)時(shí)常常使用實(shí)例更新。實(shí)例更新所需