BP神經網路演算法的理解
BP神經網路在百度百科中的解釋就是:BP(back propagation)神經網路是1986年由Rumelhart和McClelland為首的科學家提出的概念,是一種按照誤差逆向傳播演算法訓練的多層前饋神經網路,是目前應用最廣泛的神經網路。大家應該對基本的神經網路模型有一定程度的瞭解,神經網路模型包含了很多神經元模型,每一個神經元都有著自己的權重,然後一般來說,典型的神經網路包含輸入層,隱藏層和輸出層,然後輸入層和隱藏層一般來說都會有自己的偏置項。如圖所示,我們可以看一個典型的神經網路模型:
為了方便計算,我們將輸入項設成i1和i2,還有一個偏置項b1,同理,在隱藏層為h1,h2和一個偏置項b2,輸出層為o1和o2。wi表示層與層之間連線的權重,每一層的啟用函式我們使用常用的Sigmoid函式,然後我們對上圖的神經網路附上資料的初始值,可以得到下面這張圖:
在這張帶權值的神經網路圖中,我們可以正向計算出輸入層到隱藏層的輸出,也就是h1,就是權重和輸入值加上偏置項的和:
這個時候我們的啟用函式是Sigmoid函式:
所以我們得到的h1就是f(0.3775):
同樣的道理,我們可以得到h2的輸出:
在計算完隱藏層的輸出之後,接下來就是計算隱藏層到輸出層的計算,同樣的道理,上一輪計算的輸出就作為這一輪計算的輸入,就可以得到:
我們將輸入層到隱藏層的輸出作為隱藏層到輸出層的輸入,然後可以計算得到:
那麼加上啟用函式的處理我們可以得到:
同理我們可以計算得到o2的輸出:
這樣我們就得到了神經網路的正向傳播就結束了,兩個輸出0.751365和0.772928。但是這兩個輸出和我們實際的神經網路輸出0.01和0.99相差還是比較大的,這個時候為了縮小輸出值和真實值之間的誤差,我們就要對誤差進行神經網路的反向傳播,通過反向傳播來重新更新權值,然後重新計算輸出。
如上述所示,我們現在開始來計算反向傳播,首先我們要計算這個神經網路的總誤差,我們計算神經網路誤差的公式如下:
通過這個公式我們就可以計算整個神經網路的誤差:
同理我們可以計算得到o2的誤差: