關(guān)于神經(jīng)網(wǎng)絡(luò)
第一次寫簡書,如有不足之處還請多多包涵。
閑話不多說了,進入正題。首先介紹一下什么是神經(jīng)網(wǎng)絡(luò)。人們口中常說的“神經(jīng)網(wǎng)絡(luò)”有兩種:第一種,生物方面的,一般指生物的大腦神經(jīng)元,細(xì)胞,觸點等組成的網(wǎng)絡(luò),用于產(chǎn)生生物的意識,幫助生物進行思考和行動(摘自度娘);第二種,人工方面的,也稱人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks,簡寫為ANNs),是一種模仿生物神經(jīng)網(wǎng)絡(luò)行為特征,進行分布式并行信息處理的算法數(shù)學(xué)模型。
生物神經(jīng)網(wǎng)絡(luò)
初中、高中生物就學(xué)的不怎么樣,所以對生物神經(jīng)網(wǎng)絡(luò)也就不怎么深究了。抱歉,直接上個圖,只要明白長啥樣就行(偷個懶)。

人工神經(jīng)網(wǎng)絡(luò)
現(xiàn)在才是我們重點要討論的內(nèi)容:MP神經(jīng)網(wǎng)絡(luò)和BP神經(jīng)網(wǎng)絡(luò)。
一、MP神經(jīng)網(wǎng)絡(luò)

上圖就是一個基本的MP神經(jīng)網(wǎng)絡(luò)。其中,Layer L1被稱為神經(jīng)網(wǎng)絡(luò)的輸入層,何為輸入層?就是類似于咱們?nèi)祟惖母泄俳邮盏降穆暡?、光波等等。Layer L2被稱為隱藏層,就是類似于咱們將接收到的聲波、光波傳輸?shù)酱竽X皮層相應(yīng)區(qū)域的過程。Layer L3被稱為輸出層,就是類似于咱們大腦將數(shù)據(jù)接收轉(zhuǎn)換的過程,比如,將聲波轉(zhuǎn)換成語言、將光波轉(zhuǎn)換成一個蘋果......等等。
在MP神經(jīng)網(wǎng)絡(luò)模型中,從輸入層到隱藏層的計算是通過以下公式進行的:

對線性模型(Linear Model)比較了解的人應(yīng)該非常熟悉這個公式
線性模型可以表示成有限個基函數(shù)(basis function)的線性融合,基函數(shù)的形式可以自己定義,舉個簡單的例子,?j(x)(吐槽一下,這個?太難打出來了)可以是關(guān)于輸入 m 次冪的多項式 x^m。實際上神經(jīng)網(wǎng)絡(luò)也可以看成是一些線性函數(shù)的疊加,不過中間有了一個激活函數(shù)f(),情況就變得跟線性模型不一樣了。W等代表從輸入層到隱藏層、隱藏層到輸出層每一個連接(圖中的連線)的權(quán)重。激活函數(shù)f()之所以成為激活函數(shù),可以把它想象成一個開關(guān),控制著神經(jīng)元的開(1)或者關(guān)(0),它的作用是永遠(yuǎn)把輸入值限制在-1到1(或者0到1)之間。在本應(yīng)用中,利用的是Sigmoid函數(shù)(也成為S型函數(shù))。

二、BP神經(jīng)網(wǎng)絡(luò)
MP神經(jīng)網(wǎng)絡(luò)有一個最大的問題就是無法控制誤差,也就是無法保證模型計算的精度。就好比日常銷售物品都有售后服務(wù)一樣,一錘子買賣是行不通的。所以,我們需要一個反向的反饋來控制,也就是縮小了實際輸出和期望輸出的差距,也就減少了誤差,模型也就變得更加精確。
BP即Back Propagation的縮寫,也就是反向傳播的意思,顧名思義,將什么反向傳播?顯然,輸入的數(shù)據(jù)是已知的,變量只有那些個連接權(quán)重W了,那這些連接權(quán)重如何影響輸出呢?現(xiàn)在假設(shè)輸入層第i個節(jié)點到隱層第j個節(jié)點的連接權(quán)重發(fā)生了一個很小的變化ΔWij,那么這個ΔWij將會對輸出Wij*x產(chǎn)生影響,導(dǎo)致輸出sj也出現(xiàn)一個變化Δsj,然后產(chǎn)生Δθ(sj),然后傳到各個輸出層,最后在所有輸出層都產(chǎn)生一個誤差Δe。所以說,權(quán)重的調(diào)整將會使得輸出結(jié)果產(chǎn)生變化,那么如何使這些輸出結(jié)果往正確方向變化呢?這就是接下來的任務(wù):如何調(diào)整權(quán)重。首先,誤差表達式為:

其中ej為第j個節(jié)點的誤差值,yj上邊帶個橫線(抱歉,Mac上實在打不出來)代表模型在這個節(jié)點的實際輸出,yj代表這個節(jié)點期望輸出,采用平方是為了消除正負(fù)值的影響。所以,用L(e)代替上邊的式子,所以現(xiàn)在我們的目標(biāo)變成了求L(e)在W上的梯度。
何為梯度?在向量微積分中,標(biāo)量場的梯度是一個向量場。標(biāo)量場中某一點上的梯度指向標(biāo)量場增長最快的方向,梯度的長度是這個最大的變化率。所以,L(e)在W上的梯度就是讓L(e)在這W上增長最快(當(dāng)然是下降),也就是為了減少誤差減少的最快。
用w1ij表示輸入層第i個節(jié)點到隱層第j個節(jié)點的連接權(quán)重,w2ij表示隱層第i個節(jié)點到輸出層第j個節(jié)點的連接權(quán)重,s1j表示隱層第j個節(jié)點的輸入,s2j表示輸出層第j個節(jié)點的輸入,1表示輸入層權(quán)重,2表示輸出層的權(quán)重。(為什么有反向權(quán)重?反向傳播不需要反向權(quán)重么?)那么有:

上式利用鏈?zhǔn)角髮?dǎo)法,分成了兩個復(fù)合函數(shù),分別求L在是s1j和s1j在w1ij上的梯度。因為:(MP網(wǎng)絡(luò)輸出公式)

所以求s1j在w1ij上梯度就相當(dāng)于求xi

于是乎

接下來,由于s1j對所有輸出層(輸出層也可能有多個單元哦)都有影響,所以(繼續(xù)鏈?zhǔn)角髮?dǎo))

因為需要反向推導(dǎo)輸出層的輸入

所以繼續(xù)鏈?zhǔn)角髮?dǎo)

所以將前面的式子綜合起來得

聲明一個新的變量來表示L在slj上的梯度
則隱藏層的L在slj上的梯度為

輸出層的為

到此,可以看出:輸出層每個節(jié)點都會得到一個誤差e,把e作為輸出層反向輸入,這時候就像是輸出層當(dāng)輸入層一樣把誤差往回傳播,先得到輸出層δ,然后將輸出層δ根據(jù)連接權(quán)重往隱層傳輸,一直到達輸入層,得到所有的δ,然后更新權(quán)重就完成了反向傳播。
以上就是MP和BP神經(jīng)網(wǎng)絡(luò)的工作原理。