1. 程式人生 > >BP神經網路

BP神經網路

  • 意義
  • 基本原理
  • 結構圖
  • 啟用函式(σ函式)
  • BP網路輸入輸出關係
  • BP網路的學習演算法 –思想 – 學習過程 –學習本質
  • BP演算法實現

意義:

通過比較簡單的概念構建複雜的概念

基本原理:

利用輸出後的誤差來估計輸出層的直接前導層的誤差,再用這個誤差估計更前一層的誤差,如此一層一層的反傳下去,就獲得了所有其他各層的誤差估計。

結構圖:

在這裡插入圖片描述

啟用函式

使σ(wTx)logistic signmod大多使用 \quad σ(w^T\vec x)是logistic \, signmod函式 在這裡插入圖片描述 使用一組n個輸入的x

1,x2,x3,x4,...,xnx_{1}, x_{2},x_{3},x_{4},...,x_{n}並將他們與一個輸出y相關聯。希望學習一組權重w1,w2,w3,w4,...,wnw_{1},w_{2},w_{3},w_{4},...,w_{n}並計算他們的輸出f(x,w)=net=x1w1+x2w2+...+xnwnf(x,w)= net= x_{1}w_{1}+x_{2}w_{2}+...+x_{n}w_{n}簡單來說,就是根據每個類別的輸入樣本簡單的返回函式f(x)本身的值來預測一個實數。

BP網路輸入輸出關係:

輸入:

f(x,w)=net=x1w1+x2w2+...+xnwnf(x,w)= net= x_{1}w_{1}+x_{2}w_{2}+...+x_{n}w_{n}

輸出:

y=f(net)=11+enety = f(net) = \frac{1}{1+e^{-net}}

輸出的導數:

y=f(net)=11+enet1(1+enet)2=y(1y)y' = f'(net) = \frac{1}{1+e^{-net}}-\frac{1}{{(1+e^{-net}})^2} = y(1-y)

BP網路的學習演算法

思想:

將輸出誤差以某種形式通過隱層向輸入層逐層反傳(即將誤差分攤給各層的所有單元——各層單元的誤差訊號,以此來修正各單元權值)

學習過程:

神經網路在外界輸入樣本的刺激下不斷改變網路的連線權值,以使網路的輸出不斷地接近期望的輸出。訊號的正向傳播<—>誤差的反向傳播 在這裡插入圖片描述

學習本質:

對各連線權值的動態調整。常使用隨機梯度下降法(SGD)調節權重

BP演算法實現

  • 網路結構:輸入層n個輸入神經元,隱含層有p個神經元,輸出層有q個神經元(假設為3層網路,隱含層可拓展)
  • 變數定義: x=(x1,x2,x3,x4,...,xn)&ThinSpace;&ThinSpace;hi=(hi1,hi2,hi3,...,hin)ho=(ho1,ho2,ho3,...,hon)&ThinSpace;&ThinSpace;yi=(yi1,yi2,yi3,...,yin)yo=(yo1,yo2,yo3,...,yon)&ThinSpace;&ThinSpace;d=(d1,d2,d3,d4,...,dn)&ThinSpace;&ThinSpace;輸入向量: \quad \quad\quad\quad\quad\quad \quad \quad \vec x = (x_{1},x_{2},x_{3},x_{4},...,x_{n}) \quad\,\,\\ 隱含層輸入向量: \quad\quad\quad\quad\quad\vec {hi} = (hi_1,hi_2,hi_3,...,hi_n) \quad\\ 隱含層輸出向量: \quad\quad\quad\quad\quad\vec {ho} = (ho_1,ho_2,ho_3,...,ho_n)\,\,\\ 輸出層輸入向量: \quad\quad\quad\quad\quad\vec {yi} = (yi_1,yi_2,yi_3,...,yi_n) \quad\\ 輸出層輸出向量: \quad\quad\quad\quad\quad\vec {yo} = (yo_1,yo_2,yo_3,...,yo_n)\,\,\\ 期望輸出向量: \quad \quad\quad\quad\quad\quad \vec d = (d_{1},d_{2},d_{3},d_{4},...,d_{n}) \quad\,\,

wihwhobh&ThinSpace;&ThinSpace;&ThinSpace;bo&ThinSpace;&ThinSpace;&ThinSpace;&ThinSpace;k=1,2,..m&ThinSpace;&ThinSpace;f(.):&ThinSpace;&ThinSpace;E(k)=12o=1q(do(k)yoo(k))2&ThinSpace;&ThinSpace;E=1mk=1mE(k)=12mk=1mo=1q(do(k)yoo(k))2輸入層與中間層的連線權值: \quad \quad \quad\quad \quad\quad \quad w_{ih} \quad \quad \quad \quad \\ 隱含層與輸出層的連線權值:\quad \quad \quad \quad \quad \quad \quad w_{ho} \quad \quad \quad \quad \\ 隱含層各神經元的閾值: \quad \quad \quad\quad\quad \quad \quad \quad \quad b_{h} \quad\quad \quad \quad\,\,\, \\ 輸出層各神經元的閾值: \quad \quad \quad\quad\quad \quad \quad \quad \quad b_{o} \quad\quad \quad \quad\,\,\,\, \\ 樣本資料個數:\quad \quad \quad\quad\quad\quad\quad \quad \quad\quad\quad\quad \quad k=1,2,..m \,\,\\ 啟用函式:\quad \quad \quad\quad\quad\quad\quad \quad \quad \quad\quad\quad\quad \quad \quad f(.) \quad\quad\quad\quad \\ 單個樣本的訓練誤差:\quad \quad \quad\quad\quad\,\, E(k) = \frac{1}{2} \sum_{o=1}^q(d_{o}(k)-yo_{o}(k))^2\,\,\\ 誤差函式:\quad \quad \quad E= \frac{1}{m} \sum_{k=1}^mE(k)= \frac{1}{2m} \sum_{k=1}^m\sum_{o=1}^q(d_{o}(k)-yo_{o}(k))^2\\