2020-5-13 吳恩達-NN&DL-w4 深層NN(4.5 搭建深層神經網絡塊)

1.視頻網站:mooc慕課https://mooc.study.163.com/university/deeplearning_ai#/c
2.詳細筆記網站(中文):http://www.ai-start.com/dl2017/
3.github課件+作業+答案:https://github.com/stormstone/deeplearning.ai

4.5 搭建深層神經網絡塊 Building blocks of deep neural networks

我們已經瞭解了正向反向傳播的基礎組成部分,它們也是深度NN的重要組成部分,本節將介紹用它們建一個深度NN。
在這裏插入圖片描述

觀察上圖,這是一個層數較少的NN。
在第l層

  • 參數是W[l]W^{[l]}b[l]b^{[l]}
  • 正向傳播的輸入是a[l1]a^{[l-1]},即前一層的輸出。
  • 正向傳播的輸出是a[l]a^{[l]}

所以l層每個節點的2步計算過程如下

z[l]=W[l]a[l1]+b[l]z^{[l]}=W^{[l]}a^{[l-1]}+b^{[l]}
a[l]=g[l](z[l])a^{[l]}=g^{[l]}(z^{[l]})

我們可以把z[l]z^{[l]}保存下來,因爲它對於正向反向傳播的步驟都非常有用。

接着看反向傳播,同樣在第l層

  • 輸入是da[l]da^{[l]},即後(右邊)一層的輸出。
  • 輸出是da[l1]da^{[l-1]}dW[l]dW^{[l]}db[l]db^{[l]}

概念
正向函數forward function:用作正向傳播步驟的函數。
它在第l層的輸入是a[l1]a^{[l-1]},輸出是a[l]a^{[l]},參數是W[l]W^{[l]}b[l]b^{[l]}。同時,它還需要保存z[l]z^{[l]}
在這裏插入圖片描述

反向函數backward function:用作反向傳播步驟的函數。
它在第l層的輸入是激活函數的導數da[l]da^{[l]},輸出是da[l1]da^{[l-1]}。這裏還會計算出dz[l]dz^{[l]}dW[l]dW^{[l]}db[l]db^{[l]}
在這裏插入圖片描述

實現了正向函數和反向函數後,NN的計算過程如下

正向傳播步驟

  • 把特徵a[0]a^{[0]}放入第一層,計算激活函數,輸出a[1]a^{[1]},保存z[1]z^{[1]}
  • 計算第二層激活函數,輸出a[2]a^{[2]},保存z[2]z^{[2]}
  • 後面幾層依次類推
  • 最後計算出第l層,也就是輸出層的預測值a[l]=y^a^{[l]}=\hat y

在這裏插入圖片描述

反向傳播步驟,包含一系列的反向迭代來計算反向梯度

  • 在第l層輸入da[l]da^{[l]},輸出da[l1]da^{[l-1]}dW[l]dW^{[l]}db[l]db^{[l]}
  • 依次類推,直至第2層,輸入da[2]da^{[2]},輸出da[1]da^{[1]}dW[2]dW^{[2]}db[2]db^{[2]}
  • 對於第1層,沒有必要計算da[1]da^{[1]}。因爲這是輸入特徵x的導數,對於訓練監督學習的權重W沒有必要

完成上述步驟,即最終完成了一次訓練過程,現在我們得到了導數項dW和db,可以進行權重更新(α\alpha是學習率)

W[l]=W[l]αdW[l]W^{[l]}=W^{[l]}-\alpha dW^{[l]}
b[l]=b[l]αdb[l]b^{[l]}=b^{[l]}-\alpha db^{[l]}

到這裏爲止,就實現了深度NN的一個梯度下降循環。

補充一點,編程時候注意事項:請把z,W和b的值保存下來,方便正向和反向計算。

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