經(jīng)過兩天的研究,終于更加清晰地搞明白了所謂BP,做此記錄。
M-P模型
M-P模型,其實(shí)就是按照生物神經(jīng)元的結(jié)構(gòu)和工作原理來構(gòu)造出來的比較簡單的模型。下圖為M-P模型的示意圖:
具體的推論詳見http://blog.csdn.net/u013007900/article/details/50066315
拋去繁重的公式,我們可以把這個模型理解為:
要想下一個神經(jīng)元接收到信息,那么接收到的信號一定要大于某一個闕值θ才能由輸出信號yj輸出,該闕值由具體的神經(jīng)元決定;也就是說,輸入的信號總和在經(jīng)過神經(jīng)元后失去了闕值θ的信號以后,轉(zhuǎn)化為輸出信號輸出。
我們假每一個輸出信號x都輸入一定的神經(jīng)元Wij,那么該神經(jīng)元共接收到的輸入信號即為
這個公式不難理解,于是在神經(jīng)元中失去了闕值量θ后:
經(jīng)過信號轉(zhuǎn)化(激活函數(shù)f(x)的作用)為輸出信號:
然而神經(jīng)元突觸的信號類型又分為興奮和抑制兩種狀態(tài),于是,在M-P模型中,這種性質(zhì)體現(xiàn)為權(quán)值w的正負(fù),如果權(quán)值是負(fù),那么輸出y值就也為負(fù),體現(xiàn)為抑制狀態(tài);如果權(quán)值是正,那么輸出y值就也為正,體現(xiàn)為興奮狀態(tài)。
這種“閾值加權(quán)和”的神經(jīng)元模型稱為M-P模型 ( McCulloch-Pitts Model ),也稱為神經(jīng)網(wǎng)絡(luò)的一個處理單元( PE, Processing Element )。
激活函數(shù)
常用的激活函數(shù)有五種:
線性激活函數(shù):
非線性激活函數(shù):
在進(jìn)行BP神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練的時候,我們常用的函數(shù)是S形函數(shù)。
感知器
簡單來說,感知器就是一個簡單的神經(jīng)網(wǎng)絡(luò)模型,以下是感知器的拓?fù)浣Y(jié)構(gòu)圖:
而oi表現(xiàn)形式為兩種,1和-1,來表示興奮和抑制。
多層感知器
我們將突觸的興奮和抑制兩種興奮類型的分類運(yùn)用到數(shù)學(xué)計算的分類上面,假設(shè)兩組數(shù)據(jù)共有4個數(shù)據(jù),每個數(shù)據(jù)都有兩個輸入信號:(0,0),(0,1),(1,0),(1,1),每個數(shù)據(jù)都進(jìn)行了一個(sgn)與運(yùn)算,將所求結(jié)果進(jìn)行分類:計算后結(jié)果為:因此,單層感知器的作用為可以使用一條直線來對輸入數(shù)據(jù)進(jìn)行線性分類,如果仍舊不太明白的話,可以從公式入手來進(jìn)行分析:
所以可以得知,這是一個關(guān)于x1,x2的線性函數(shù),而在圖1中用于分類的紅色直線,則是與函數(shù)w1j x1+w2j x2-θj=0成線性關(guān)系的函數(shù)。
到此,我們已經(jīng)講解了單層感知器的實(shí)現(xiàn)分類原理,引入多層分類器的原因在于,單層感知器的局限性只能區(qū)分二維平面中的線性函數(shù),而對于多維平面,或著非線性函數(shù)來說,則無法實(shí)現(xiàn)分類。
可以看出,在加入了隱層以后輸入層的數(shù)據(jù)不再直接經(jīng)過簡單的權(quán)值激活運(yùn)算就直接進(jìn)入輸出層,而是在多層的隱層經(jīng)過復(fù)雜計算后,再輸入層輸出,這樣的計算方法,可以保證輸出的o和輸入信號x1,x2,不再是簡單的線性關(guān)系,而其中的計算也將會隨著隱層的增加而無限度地復(fù)雜化。
我們可以比較一下單層感知器和多層感知器的分類能力:
由上圖可以看出,隨著隱層層數(shù)的增多,凸域?qū)⒖梢孕纬扇我獾男螤睿虼丝梢越鉀Q任何復(fù)雜的分類問題。實(shí)際上,Kolmogorov理論指出:雙隱層感知器就足以解決任何復(fù)雜的分類問題。
異或問題的解決:
BP算法
在M-P模型中,我們得知,為了實(shí)現(xiàn)有效的分類,需要加入一定數(shù)量的隱層來加強(qiáng)算法的復(fù)雜性,而在隱層內(nèi)部的計算我們是無法得知的,因此,我們需要進(jìn)行神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。
這樣說可能有點(diǎn)突兀,我們不妨這樣想,我們已知的是一組數(shù)據(jù)和它們相對應(yīng)的分類狀況,求解的是如何可以用同類的數(shù)據(jù)來得到正確的分類。
或者這樣說,我們已知:
x1=2,x2=3時,y=5,x1=4,x2=5時,y=9,那么,求解x1=8,x2=0時,y的值,這樣是不是好理解很多?
總之,我們需要的是一個可以滿足當(dāng)前條件的“公式”,讓它可以計算出更多的數(shù)據(jù),這在我們的小學(xué)數(shù)學(xué)里叫做解算式,在這里就可以叫做訓(xùn)練。
我們需要知道這些數(shù)據(jù)在隱層里是經(jīng)過怎樣的計算,才得到了輸出結(jié)果,于是,我們需要先進(jìn)性數(shù)據(jù)的訓(xùn)練,然后再根據(jù)現(xiàn)有未知結(jié)果的數(shù)據(jù)套進(jìn)去,得到預(yù)期結(jié)果。
而我們在這里,得出的所謂隱層結(jié)構(gòu)的計算,就是需要訓(xùn)練出的“公式”。
具體的BP訓(xùn)練方式下次更新。