deep learning 深度網絡和BP反饋

Abstract:近兩年,DeepLearningDL 在國內逐漸活躍起來。DeepLearning 主要應用於圖像識別,目標檢測等圖像處理方面。很多研究機構、企業已經把它運用於文本、語音,甚至金融、電子等行業。我相信DL 在未來幾年將會在更多的行業中得到應用。在DL 中參數調節的算法尤爲重要,大部分參數調節的算法均採用BP 反饋算法,瞭解其原理對我們學習原理或者工程運用都非常有用。本文旨在介紹BP 反饋的原理,讓讀者更加了解深度網絡的學習過程。

1. 深度網絡


下面是一個簡單的神經網絡的結構圖。
這裏寫圖片描述
對於深度網絡,就是加入深度網絡,在輸入的時候可能加入了卷積(一維卷積可以處理一維的波形,二維卷積一般處理圖像,三維卷積一般可以處理視頻圖像)或者多層隱含層,更或者適合自己領域的一些帶參數的處理,這個視情況而定。

  • 一維的深度網絡:

一維信號處理
一維信號的深度網絡,我們也可以看成一種卷積過程,如果學過信號處理,我們可以把這個網絡看做一個一維傅里葉變換的形成,提取不同成分的特徵(傅里葉是提取不同的頻率成分)。對於語音或者其他的電信號的波可以在網絡的前面加入蝶形算法形成深度網絡,應用於語音識別或者波形識別。對於文本也可以加入帶參數預處理方式加入網絡的前端。當然對於不同的應用領域的處理方式就不太一樣了。

  • 二維深度網絡
    二維信號(圖像)
    二維的深度網絡代表就是卷積神經網絡,是先通過卷積再採樣,與一維卷積不一樣,我理解爲一種有限的卷積,而兩個完整的信號卷積,如一維信號X和一維信號Y的卷積,是整個序列進行卷積。而二維圖像,也可以展開爲一個一維信號X,卷積核也可以展開爲一個序列Y,這時卷積就是有限長的X信號的與整個Y信號進行卷積。但是卷積的本質不會改變,可以理解爲對某一段信號求取不同的成分,對於信號的傅里葉變換,就是求取某一段序列的頻率成分。二維深度網絡大多運用圖像。

  • 三維深度網絡
    這裏寫圖片描述
    三維的深度網絡主要用於視頻方面或者二維信號的時間序列。

2.BP反饋算法

下面將講解BP反饋算法在深度網絡中的原理。
一維網絡:
假如一個4層的深層網絡。輸入層爲3,第一層隱含層爲3,第二層隱含層爲2,輸出層爲1(輸出層爲1一般用於迴歸, 2一般用於分類)。
那麼第一層三個神經元的三個輸出分別爲
a(2)1=f(W(1)11x1+W(2)12x1+W(3)13x1)
a(2)2=f(W(1)21x1+W(2)22x1+W(3)23x1)
a(2)3=f(W(1)31x1+W(2)32x1+W(3)33x1)
上述網絡加了f() 爲激活函數
預期輸出值:hW,b(x)=f(W211a(2)1+W(2)12a(2)2+W(2)13a(2)3)
這樣我們就可以寫出損失函數:
J(W,b;x,y)=12hW,b(x)y2
但是這個函數中有些點不可導或者不連續或者不是嚴格個凸函數,這樣在後面求取梯度的時候會造成錯誤。那麼我們需要加入L2 正則。那麼此時損失函數可以寫爲:
J(W,b)=12hW,b(x)y2+λ2nl1l=1sli=1sl1i=1(W(l)ji)2
這樣損失函數就保證了嚴格凸連續,是一個強凸二次函數。
下面可以就可以採用很多策略來優化這些參數。比如:最速下降法,擬牛頓法,牛頓法,有限內存的擬牛頓法等。通常採用是最速下降法(SD) 和有限內存的擬牛頓法(LBFGS) ,因爲這兩個方法不需要求取海森矩陣Hessian ,大大節約了計算的效率和計算機的內存。而牛頓法和擬牛頓法需要求取Hessian 矩陣,對於小數據的計算不會造成影響,但是對大數據,尤其是圖像,視頻這些信息量比較大的數據,那麼代價就大了,所以通常採用這兩方法進行參數優化。SDLBFGS 比較的話,SD 計算量更小些,因爲LBFGS 是用損失函數的梯度近似代替Hessian 矩陣。最速下降法的更新公式如下:
W(l)ij:=W(l)ijαb(l)iJ(W,b)
那麼對於含有激活函數的深度網絡,輸出神經元(當然可以是多個)的梯度。對於每一個的輸出神經元我們可以得到。假設一共有nl 層網絡,那麼輸出層爲nl ,那麼每一個神經元我們設定如下:
δnli=z(nl)iyhW,b(x)2=yia(nl)if(z(nl)i)
每層l=nl1,nl2,...,2 都有如下關係:
δ(l)i=(sl+1j=1W(l)jiδ(l+1)jf(z(l)i)
下面具體以圖例解釋下這個公式:
BP反饋圖例
假設有兩個輸出神經元,每個神經輸出的損失值分別δ1δ2 ,輸入神經元有三個,分別標號爲1,2,3 ,輸入神經元1 號與輸出神經元連接的權值分別爲W11,W12 ,輸入神經元1 號與輸出神經元連接的權值分別爲W21,W22 ,輸入神經元1 號與輸出神經元連接的權值分別爲W31,W32 ,那麼神經元1 號的損失和爲δ11=W11δ1+W12δ2 ,相應的神經元2 號和3 號神經元損失和分別爲δ12=W21δ1+W22δ2δ13=W31δ1+W32δ2 ,
這個公式可以看做是誤差的分配,前一層的多個神經元連接到一個神經元上,這個神經元的損失值求出,然後根據前饋連線的權值算出前一層每一個神經元的損失值,如果輸出層有多個神經元,傳回前一層就相疊加就可以求出神經元的損失,依次類推到更多的神經元以及更深層的網絡層。
這是每一層W 的梯度可以由下式得到:
W(l)ijJ(W,b)=a(l)jδ(l+1)i
每一層W 的梯度公式如上式子,加上學習率α 就可以更新W .使損失函數達到最小。

懷柔風光
懷柔風光

發佈了59 篇原創文章 · 獲贊 60 · 訪問量 46萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章