BP算法

Back propagation(反向傳播)

Backpropagation algorithms are a family of methods used to efficiently train artificial neural networks (ANNs) following a gradient descent approach that exploits the chain rule. The main feature of backpropagation is its iterative, recursive and efficient method for calculating the weights updates to improve in the network until it is able to perform the task for which it is being trained.[1] It is closely related to the Gauss–Newton algorithm.

artificial neural networks

1943年,lMcCuIIochandPitts,1943]將生物神經網絡抽象爲圖所示的簡單
模型,這就是一直沿用至今的“M-P神經元模型”,在這個模型中,神經元接
收到來自“個其他神經元傳遞過來的輸入信號,這些輸入信號通過帶權重的連
接(connection)JE行傳遞,神經元接收到的總輸入值將與神經元的閥值行比
較,然後通過“激活函數”(activationfunction)處理以產生神經元的輸出.

在這裏插入圖片描述

理想中的激活數是圖5.2間所示的階躍函數,它將輸入值映射爲輸出
值“0”或“1”,顯然“1”對應於神經元興奮,“0”對應於神經元抑制.
在這裏插入圖片描述
然而,階躍函數具有不連續、不光滑等不太好的性質,因此實際常用Sigmoid
函數作爲激活數.典型的Sigmoid函數如圖5.2(b)所示,它把可能在較大
範圍內變化的輸入值擠壓到(0,1)輸出值範圍內,因此有時也稱爲“擠壓函
function).
在這裏插入圖片描述

感知層與多層神經元

在這裏插入圖片描述

  • “與” (x1x2)\left(x_{1} \wedge x_{2}\right):令w1=w2=1w_{1}=w_{2}=1,θ=2\theta=2,則
    y=f(1x1+1x22)y=f\left(1 \cdot x_{1}+1 \cdot x_{2}-2\right),僅在x1=x2=1x_{1}=x_{2}=1時,y=1;
    在這裏插入圖片描述

  • “或” (x1x2)\left(x_{1} \vee x_{2}\right):令w1=w2=1w_{1}=w_{2}=1,θ=0.5\theta=0.5,則
    y=f(1x1+1x20.5)y=f\left(1 \cdot x_{1}+1 \cdot x_{2}-0.5\right),當x1=1x_{1}=1x2=1x_{2}=1,y=1;
    在這裏插入圖片描述
    “非” (¬x1)\left(\neg x_{1}\right):令w1=0.6,w2=0w_{1}=-0.6,w_{2}=0,θ=0.5\theta=-0.5,
    y=f(0.6x1+0x2+0.5)y=f\left(-0.6 \cdot x_{1}+0 \cdot x_{2}+0.5\right),當x1=1x_{1}=1時,y=0; 當x1=1x_{1}=1時y=1;
    在這裏插入圖片描述
    這是對於線性問題,這樣解決. 對於非線性問題, 單神經元就無法解決, 比如:
    在這裏插入圖片描述

要解決非線性可分問題,需考慮使用多層功能神經元.例如圖中這個
簡單的兩層感知機就能解決異或問題.在圖中,輸出層與輸入層之間的一
層神經元,被稱爲隱層或隱含層(hiddenlayer),隱含層和輸出層神經元都是擁
有激活函數的功能經元.
在這裏插入圖片描述
更一般的,常見的神經網絡是形如圖5、6所示的層級結構,每層神經元與下
一層神經元全互連,神經元之間不存在同層連接,也不存在跨層連接.這樣的
神經網絡結構通常稱爲“多層前饋神經網絡”(multi-layer feedforward nenral netowrks).
在這裏插入圖片描述

backpropagation

給定訓練數據集,權重(i=1,2,… ,n)以及θ\theta閾值可通過學
習得到.閾值θ\theta可看作一個固定輸入爲-1.0的“啞結點”(dummynode)所對
應的連接權重wn+1w_{n+1},這樣,權重和閥值的學習就可統一爲權重的學習.感知機學習規則非常簡單,對訓練樣例(x,y), 若當前感知機的輸出爲則感知機權
重將這樣調整 :
wiwi+ΔwiΔwi=η(yy^)xi \begin{array}{c}{w_{i} \leftarrow w_{i}+\Delta w_{i}} \\ {\Delta w_{i}=\eta(y-\hat{y}) x_{i}}\end{array}
其中η(0,1)\eta \in(0,1)稱爲學習率(learningrate).從式(1)可看出,若感知機對訓練
樣例,(x,y)預測正確,即 y^=y\hat{y}=y, 則感知機不發生變化,否則將根據錯誤的程度進行權重調整.

啞節點示意圖 :
在這裏插入圖片描述

多層網絡的學習能力比單層感知機強得多、欲訓練多層網絡,上面的簡單感知機學習規則顯然不夠了,需要更強大的學習算法.誤差逆傳播(error BackPropagation,簡稱BP)算法就是其中最傑出的代表,它是迄今最成功的神
經網絡學習算法.現實任務中使用神經網絡時,大多是在使用BP算法進行訓
練,值得指出的是,BP算法不僅可用於多層前饋神經網絡,還可用於其他類型
的神經網絡,例如訓練遞歸神經網絡[Pineda,1987],但通常說"BP網絡”時,
一般是指用BP算法訓練的多層前饋神經網絡、下面我們來看看BP算法究竟是什麼樣.給定訓練
即輸入示例由d個屬性描述,輸出D={(x1,y1),(x2,y2),,(xm,ym)},xiRd,yiRlD=\left\{\left(\boldsymbol{x}_{1}, \boldsymbol{y}_{1}\right)\right.,\left(\boldsymbol{x}_{2}, \boldsymbol{y}_{2}\right), \ldots,\left(\boldsymbol{x}_{m}, \boldsymbol{y}_{m}\right) \}, \boldsymbol{x}_{i} \in \mathbb{R}^{d}, \boldsymbol{y}_{i} \in \mathbb{R}^{l} .
即輸入示例由d個屬性描述,輸出l維實職=值向量 . 爲便於討論,圖給出了一個擁有d個輸入神經元、l個輸出神經元、q個隱層神經元的多層前饋網絡結構,其中輸出層第j個神經元的閾值用θj\theta_{j}表示,隱層第h個神經元的閾值用γh\gamma_{h}表示.輸入層第i個神經元與隱層第h個神經元之間的連接權爲vihv_{i h},記隱層第h個神經元與輸出層第j個神經元之間的連接權爲whjw_{h}j.記隱層第h個神經元接收到的輸入爲αh=i=1dvihxi\alpha_{h}=\sum_{i=1}^{d} v_{i h} x_{i} ,輸出層第j個神經元接收的輸入爲βj=h=1qwhjbh\beta_{j}=\sum_{h=1}^{q} w_{h j} b_{h} , 其中bnb_{n}爲隱層第h個神經元的輸出 . 假設隱層和輸入層神經元都使用Sigmoid函數 .
在這裏插入圖片描述
對於訓練例 (xk,ykx_{k},y_{k}),假定神經網絡輸入爲y^k=(y^1k,y^2k,,y^lk)\hat{\boldsymbol{y}}_{k}=\left(\hat{y}_{1}^{k}, \hat{y}_{2}^{k}, \ldots, \hat{y}_{l}^{k}\right)即 :
y^jk=f(βjθj)(3)\hat{y}_{j}^{k}=f\left(\beta_{j}-\theta_{j}\right) \qquad \qquad \qquad (3)
則神經網絡在(xk,ykx_{k},y_{k}上的均方誤差爲:
Ek=12j=1l(y^jkyjk)2qquad(4)E_{k}=\frac{1}{2} \sum_{j=1}^{l}\left(\hat{y}_{j}^{k}-y_{j}^{k}\right)^{2}qquad \qquad \qquad (4)
圖中的網絡共有(d+l+1)q+l個參數需要確定 : 輸入層到隱層的dXq個權值, q個隱層神經元閥值,l個輸出層神經元閥值BP是一個迭代的學習算法 . 在迭代的每一輪中採用廣義的感知機學習規則對參數進行更新估計 . 任意參數v的更新估計式爲:
vv+Δv(5)v \leftarrow v+\Delta v \qquad \qquad \qquad (5)
下面我們以圖中隱層到輸出層的連接權whjw_{h j}爲例推導 .
BP算法基於梯度下降(gradicent descent)策略,以目標的負梯度方向對參數進行調整, 對公式(4)的誤差EkE_{k} , 給定學習率η\eta ,由:
Δwhj=ηEkwhj(6) \Delta w_{h j}=-\eta \frac{\partial E_{k}}{\partial w_{h j}}\qquad \qquad \qquad (6)
注意到whjw_{hj}先影響到第j個輸出層神經元的輸出值βj\beta_{j}, 再影響到其輸出值y^jk\hat{y}_{j}^{k}然後影響到EkE_{k},有:
Ekwhj=Eky^jky^jkβjβjwhj(7)\frac{\partial E_{k}}{\partial w_{h j}}=\frac{\partial E_{k}}{\partial \hat{y}_{j}^{k}} \cdot \frac{\partial \hat{y}_{j}^{k}}{\partial \beta_{j}} \cdot \frac{\partial \beta_{j}}{\partial w_{h j}}\qquad \qquad \qquad (7)
根據βj\beta_{j}的定義,顯然
βjwhj=bh(8)\frac{\partial \beta_{j}}{\partial w_{h j}}=b_{h}\qquad \qquad \qquad (8)
Simoid函數有一個很好的性質:
f(x)=f(x)(1f(x))(9)f^{\prime}(x)=f(x)(1-f(x)) \qquad \qquad \qquad (9)

推導過程Simoid -> s(x)=11+exs(x)=\frac{1}{1+e^{-x}}
倒置函數-> f(x)=1s(x)=1+exf(x)=\frac{1}{s(x)}=1+e^{-x}
f(x)=s(x)s(x)2(1)f^{\prime}(x)=-\frac{s^{\prime}(x)}{s(x)^{2}}\qquad(1)
f(x)=(1+ex)ddx=ex=1f(x)=11s(x)=s(x)1s(x)(2)f^{\prime}(x)=\left(1+e^{-x}\right)\frac{d}{d x}=-e^{-x}=1-f(x)=1-\frac{1}{s(x)}=\frac{s(x)-1}{s(x)}\qquad(2)
根據(1),(2)消元就可以得到Sigmoid的導數公式
s(x)=s(x)(1s(x))s^{\prime}(x)=s(x) \cdot(1-s(x))

根據公式(3),(4),有
gj=Eky^jky^jkβj=(y^jkyjk)f(βjθj)=y^jk(1y^jk)(yjky^jk)(10)\begin{aligned} g_{j} &=-\frac{\partial E_{k}}{\partial \hat{y}_{j}^{k}} \cdot \frac{\partial \hat{y}_{j}^{k}}{\partial \beta_{j}} \\ &=-\left(\hat{y}_{j}^{k}-y_{j}^{k}\right) f^{\prime}\left(\beta_{j}-\theta_{j}\right) \\ &=\hat{y}_{j}^{k}\left(1-\hat{y}_{j}^{k}\right)\left(y_{j}^{k}-\hat{y}_{j}^{k}\right) \end{aligned} \qquad \qquad \qquad (10)
將公式(10)和(8)代入(7) , 再代入(6) , 就得到了BP算法中關於WhjW_{hj}的更新公式
Δwhj=ηgjbh\Delta w_{h j}=\eta g_{j} b_{h}
同理可得:
Δθj=ηgjΔvih=ηehxiΔγh=ηeh\begin{aligned} \Delta \theta_{j} &=-\eta g_{j} \\ \Delta v_{i h} &=\eta e_{h} x_{i} \\ \Delta \gamma_{h} &=-\eta e_{h} \end{aligned}
其中
eh=Ekbhbhαh=j=1lEkβjβjbhf(αhγh)=j=1lwhjgjf(αhγh)=bh(1bh)j=1lwhjgj\begin{aligned} e_{h} &=-\frac{\partial E_{k}}{\partial b_{h}} \cdot \frac{\partial b_{h}}{\partial \alpha_{h}} \\ &=-\sum_{j=1}^{l} \frac{\partial E_{k}}{\partial \beta_{j}} \cdot \frac{\partial \beta_{j}}{\partial b_{h}} f^{\prime}\left(\alpha_{h}-\gamma_{h}\right) \end{aligned}\\=\sum_{j=1}^{l} w_{h j} g_{j} f^{\prime}\left(\alpha_{h}-\gamma_{h}\right) \\ =b_{h}\left(1-b_{h}\right) \sum_{j=1}^{l} w_{h j} g_{j}
學習率η(0,1)\eta \in(0,1)控制着算法每一輪迭代的更新步長,太大會振盪不收斂 . 太小會收斂過慢 .

指數衰減學習率。這個算法實現達到的效果是:隨着迭代次數的增加逐步減小學習率,是模型前期訓練速度加快,後期訓練模型更加穩定而不會出現極優值兩邊跳動的情況。

誤差傳播算法
累計誤差逆傳播:
E=1mk=1mEkE=\frac{1}{m} \sum_{k=1}^{m} E_{k}
BP算法的目標是最小化訓練集D桑拿的累計誤差 .

補充:
由於神經網絡強大的表達能力,BP神經網絡常常出現過擬合現象.
對此我們可以使用正則化 , 其基本思想是在誤差目標中添加一個用於描述網絡複雜度的部分,例如連接權與閥值的平方 ,令EkE_{k}表示第k個訓練樣例的誤差 , wiw_{i}表示連接權與閥值,則誤差目標函數變爲
E=λ1mk=1mEk+(1λ)iwi2E=\lambda \frac{1}{m} \sum_{k=1}^{m} E_{k}+(1-\lambda) \sum_{i} w_{i}^{2}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章