bp神經網路的背景我們不在做過多的介紹,就是模擬神經元,進行分類訓練。他的物理意義是什麼呢,就是每個神經元對應我們計算中的濾波器,當他"看到"某個或者某組資料,反應就特別強烈,相乘所得的值就特別大,這大概就是所說的啟用吧。首先,我們來看看bp神經的數學樣例圖:
大家肯定有疑問了,為什麼是三層,為什麼不是兩層或者更多層,其實都是可以的,只是是三層效果比較基礎,在前面的線性分類器中我們知道,層數越多,訓練的擬合性就越好,神經網路也是一樣類似的。但是隨著層數的增多,計算的難度以及權值的更新都會變得更加複雜化。
上面已經大致描述了我自己對於bp神經網路物理意義的描述,接下來我們來看看數學推導, 因為數學推導過後,我們才能根據數學推導來進行相應的編碼工作。bp神經網路是有監督的分學習,就是通過多組樣本資料,計算所得結果,然後通過理想結果與所得結果的偏差,來反向更新計算神經源的權重,達到擬合的目的,最終通過不斷的調整權值,與計算所得與期望結果的偏差越來越小。我們來舉個簡單的例子:
輸入: x1=0.05, x2=0.10 這裡樣本其實應該有多個,我們先假設其中乙個,這個例子也是借鑑其中的一段
輸出: e1=0.01, e2=0.99
初始權重:
w1=0.15,w2=0.20,w3=0.25,w4=0.30; b1=0.35 b2=0.60
w5=0.40,w6=0.45,w7=0.50,w8=0.55
這個偏置b有什麼作用能, 其實就是類似截距b,使分類更加靈活貼近實際值
我們先來定義下啟用函式,啟用函式有很多,其主要作用是將線性的神經網路分類變為非線性的,使分類更加靈活, 我們主要用sigmoid函式: 其定義如下:
首先我們來看正向,正向很簡單,就是根據上圖,通過輸入依次計算即可,得到樣本的最終輸出:
n1=sigmoid(net1)=sigmoid(x1*w1+x2*w3+b1) = 0.592666599954
n2=sigmoid(net2)=sigmoid(x1*w2+x2*w4+b1) = 0.701279883341
o1=sigmoid(net3)=sigmoid(n1*w5+n2*w7+b2)=sigmoid(1.1877067)=0.76633
o2=sigmoid(net4)=sigmoid(n1*w6+n2*w8+b2)=sigmoid(1.252404)=0.77771
的到的最終結果[0.76633, 0.77771] 與期望結果[0.05,0.1] 的差別有些大,因此我們需要更新權重即w來使輸入通過計算盡量擬合期望的真實結果,其實就是乙個學習的過程。
更新權值以及偏置的方法已經有專家提出,叫誤差反向傳播,這個演算法的物理意義在於:
我們先定義期望結果與實際結果的方差e,e=
那麼我們如何更新w呢, 讓e有最小值?
首先假設我們想更新w5的值,我們來求e關於w5的偏導數,即求在w5方向上的導數,因為導數在二維線條上反應的是線條的變化率(本身是4緯的,想象下二維導數是切線,三維導數是切平面,但是偏導數是其中某個方向的切線),因此我們更新的公式為w5=w5-為步長,初始化我們可以自定義,為什麼我們只更新這麼長麼,因為我們有多組樣本,可能當前該組樣本所提供的更新方向並非最終我們想要的方向,所以我們姑且先更新這麼長,等待下一組樣本,再朝著另外的方向再進行更新,知道最終所有的樣本訓練完成,這個時候找到最優的w5,使滿足e最小。
接下來,我們來推導
所以最終的更新為w5=w5-( -(e1-o1)*( net*(1-net) )*n1 ),自取,0.5,0.3都可以,將具體的數值帶入即可更新.
類似的,w1~w7,都可以應用改公式來更新,通過多組樣本訓練,得到最優的w以及b, 使整體e最小.
BP神經網路演算法推導
1 前饋神經網路 反饋神經網路 bp網路等,他們之間的關係 前饋型神經網路 取連續或離散變數,一般不考慮輸出與輸入在時間上的滯後效應,只表達輸出與輸入的對映關係 在此種神經網路中,各神經元從輸入層開始,接收前一級輸入,並輸入到下一級,直至輸出層。整個網路中無反饋,可用乙個有向無環圖表示。常見的前饋神...
BP神經網路演算法推導
目錄正向計算 反向傳播 設損失函式為f vec 則f vec delta f vec nabla cdot delta 其中 nabla 是 f vec 的梯度 所以當 delta eta nabla f vec eta 0 時,下降速率最快 即 delta eta frac 設當前啟用函式為f x...
神經網路BP演算法推導
j theta frac1m sum m sum k left y k log left h theta left x right right k left 1 y k right log left 1 left h theta left x right right k right right fr...