深度學習(一):神經網絡和反向傳播

從這一節開始,將介紹神經網絡的相關內容。
博客不以介紹基本概念爲主,而是注重一些淺顯的推到和證明過程,以幫助理解。
如果你對神經網絡一竅不通,你應該去看神經網絡與深度學習
該博客可以看做是對於該文章的摘要。

概念圖

神經網絡數據流向圖
上述圖片顯示了神經網絡的數據流動。
其中的每一個圓圈表示一個神經元。
一般對於神經元的描述如下:

一個神經元有幾個輸入和一個輸出,多個輸入和其權重相乘後在相加,其和通過和一個權重比較來決定輸出的值。

這裏寫圖片描述
用公式來表示就是:

a=σ(wx+b),x=(x1,...,xn)T,w=(w1,...,wn)bR

即x爲輸入,w爲權重,b是一個實數,代表偏置,σ(x) 是從輸入到輸出的映射,a爲對應的輸出。
如果你閱讀過前面機器學習的內容機器學習(二):邏輯迴歸或者機器學習(四):損失函數,就知道了可以使用躍階函數和sigmoid函數作爲判斷輸出值的標準,並會明白一般我們喜歡使用sigmoid函數。
同樣的,一般來說,神經網絡也採用sigmoid函數作爲從輸入到輸出的決定標準。

代價函數

義同損失函數,我們需要一個標準來優化神經網絡。
神經網絡的代價函數如下:

C(w,b)=12nx||ya||2

y是對應於x的label,a是對應於x的神經網絡輸出值。
a是用過一系列的矩陣相乘,和sigmoid函數計算出來的。
目標是使得C(w,b)最小,其中w,b是參數變量,參考前一篇博客機器學習(三):梯度下降法,我們將使用梯度下降方法。
若能得到CwCb ,就能得到梯度下降的跟新規則:
wk=wkηCwkbl=blηCbl

那麼接下來的重點就是對於中間的結果,如何求解梯度了。

反向傳播(backpropagation)

在介紹這一節前,將詳細規定一下各參數。
一個神經網絡中的所有參數如下:
神經網絡的各參數描述
l1 層的第i個神經元到第l 層的第j個神經元的權重是wlji
則第l 層的的第j個神經元的輸出爲

alj=σ(i=1kwljial1i+blj)

爲了簡潔,可以使用矩陣的表示形式:
al=σ(wlal1+bl)
.
同時引入一箇中間變量:
zlwlal1+bl

zl 被稱爲帶權輸入。
下面將開始反向傳播中梯度的推導。

梯度推導

再推倒前,先引入一箇中間結果,因爲最後的形式會用到這個中間結果,即:

δlj=Czlj

該定義可以理解爲第l 層的第j個神經元上的誤差。

公式1

δLj=CzLj=CaLjaLjzLj=CaLjσ(zLj)

注意到這裏的L ,他是最後一層神經元,即結果層。

公式2

根據公式1,可以求得最後一層的誤差,那麼知道知道了各層誤差間的關係,就能求得所有層的誤差項了。

δlj=Czlj=kCzl+1kzl+1kzLj

然後展開,因爲知道z之間的前後關係(具體過程可能有點複雜,這裏先不貼出詳細的推到了),因此可以找出最後的化簡結果:
δlj=kwl+1kjδl+1kσ(zlj)

公式3

因爲zlwlal1+bl ,因此可以很容易得到:

Cblj=δlj

同理可得:

公式4

Cwljk=al1kδlj

到最後根據公式3和公式4,終於可以得到梯度的公式了。
因爲梯度的推到是從後往前,因此稱爲反向傳播。

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