《Python神經(jīng)網(wǎng)絡(luò)編程》閱讀筆記3
1.5 有時候一個分類器不足以求解問題
線性分類器存在一個局限性,而理解了這個局限性,我們就可以更好地理解神經(jīng)網(wǎng)絡(luò)的設(shè)計。
這個局限性就是存在不能用一條直線把問題解答的情況。

可以看到,用兩個分類器(直線)就可以解決這個問題。
1.6 神經(jīng)元——大自然的計算機器
動物大腦比起傳統(tǒng)計算機而言具有的顯著特征是模糊性。
人具有大約一千億(1*10^11)個神經(jīng)元,果蠅具有十萬(1*10^5)個神經(jīng)元,線蟲只有302個神經(jīng)元。我們還不理解大腦的全部功能,但是對于神經(jīng)元如何使用不同方式計算,我們有一定的認知。
一個神經(jīng)元接收了一個電輸入,輸出另一個電信號。
觀察表面,神經(jīng)元不會立即反應(yīng),而是會抑制輸入,輸入足夠強之后才可以觸發(fā)輸出。
簡而言之就是刺激足夠強,才會有反應(yīng)。
我們用一個激活函數(shù)來模擬這種現(xiàn)象:y=1/(1+e^(-x))。
之所以用這個,是因為在后續(xù)計算中會比較容易。
神經(jīng)元會有多個輸入,但是介質(zhì)是一樣的,它們的總和是x。
同樣,一個神經(jīng)元的輸出可以傳遞給多個神經(jīng)元,并且可以控制軸突數(shù)量來控制增益K。
我們可以猜測單個軸突末端的輸出y是基數(shù),下一個神經(jīng)元接收到的信號可以是Ky。

大致上就可以構(gòu)建上圖中的模型。
這里的箭頭就像軸突一樣,每一個箭頭都可以有一個權(quán)重w,這個w和之前的K意義是一樣的,只不過K是離散的整數(shù),w是連續(xù)的實數(shù)。
這些w在神經(jīng)網(wǎng)絡(luò)優(yōu)化時可能會趨于0,這就相當(dāng)于鏈接被斷開。
1.7 在神經(jīng)網(wǎng)絡(luò)中追蹤信號
之前的3*3神經(jīng)網(wǎng)絡(luò)還是較為復(fù)雜,為了學(xué)習(xí),我們研究2*2的神經(jīng)網(wǎng)絡(luò)。

神經(jīng)網(wǎng)絡(luò)的第一層是輸入層,僅表示輸入信號。無需計算,所以不會對輸入應(yīng)用激活函數(shù)。
而第二層則會帶著權(quán)重和上一層的輸入來計算接下來的輸出。
其中權(quán)重是神經(jīng)網(wǎng)絡(luò)進行學(xué)習(xí)的內(nèi)容,實際生物的神經(jīng)系統(tǒng)中也應(yīng)該是通過改變突觸連接強度來學(xué)習(xí)的(猜測,雖然大概是對的)!
看起來編寫復(fù)雜的神經(jīng)網(wǎng)絡(luò)會比較麻煩。但實際上通過數(shù)學(xué),可以簡潔地刻畫這樣的過程。這樣的簡潔性不僅對人、對計算機都很有幫助。這個數(shù)學(xué)方法就是利用矩陣。
記上面2*2神經(jīng)網(wǎng)絡(luò)的各權(quán)重是w11、w12、w21、w22(大家應(yīng)該能理解這個意思吧,我就不解釋了)。
可以用矩陣將其中一、二層之間的計算關(guān)系表示為:

1.9 使用矩陣乘法的三層神經(jīng)網(wǎng)絡(luò)示例
三層分別為輸入層、隱藏層、輸出層。
總之需要一個輸入矩陣I表示輸入。這個是輸入層所做的所有事情——表示輸入。
輸入到隱藏層的組合調(diào)節(jié)信號X=W*I,W是權(quán)重矩陣。記為Winput_hidden。
隱藏層到輸出層也有一個Whidden_output。
我也不太好解釋具體的計算,反正我感覺蠻簡單的0.0。
就是對中間層、輸出層來說,會有一個上一層的輸出矩陣O,作為自己的I,然后WI得到調(diào)節(jié)后的輸入X,得到本層的輸出矩陣O=sigmoid(X)。
輸入層的O=I。