2020-5-13 吳恩達-NN&DL-w4 深層NN(4.6 前向和反向傳播(以3層NN實現爲例))

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.6 前向和反向傳播 Forward and backward propagation

上一節瞭解了構成深度NN的基本模塊,每一層都有前向傳播步驟以及一個相反的反向傳播步驟,本節將介紹如何實現這些步驟。

前向傳播

第l層輸入a[l-1],輸出a[l],保存z[l],W[l]和b[l]

前向傳播的步驟

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]})
輸入特徵x=a[0]x=a^{[0]}

向量化實現

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]})
輸入特徵集合X=A[0]X=A^{[0]}

反向傳播

第l層輸入da[l],輸出da[l-1],dz[l],dW[l]和db[l]

反向傳播的步驟

dz[l]=da[l]g[l](z[l])dz^{[l]}=da^{[l]}\ast g^{[l]'}(z^{[l]})
dW[l]=dz[l]a[l1]dW^{[l]}=dz^{[l]}a^{[l-1]}
db[l]=dz[l]db^{[l]}=dz^{[l]}
da[l1]=W[l]Tdz[l]da^{[l-1]}=W^{[l]T}dz^{[l]}

3.9 神經網絡的梯度下降法曾經給出過單隱層NN的dz公式

dz[l]=W[l+1]Tdz[l+1]g[l](z[l])dz^{[l]}=W^{[l+1]T}dz^{[l+1]}∗g^{[l]′}(z^{[l]})

注意,其實2個公式是一致的。

向量化實現

dZ[l]=dA[l]g[l](Z[l])dZ^{[l]}=dA^{[l]}\ast g^{[l]'}(Z^{[l]})
dW[l]=1mdZ[l]A[l1]TdW^{[l]}=\frac 1m dZ^{[l]}A^{[l-1]T}
db[l]=1mnp.sum(dZ[l],axis=1,keepdims=True)db^{[l]}=\frac 1m np.sum(dZ^{[l]},axis=1,keepdims=True)
dA[l1]=W[l]TdZ[l]dA^{[l-1]}=W^{[l]T}dZ^{[l]}

彙總

輸入X

  • 第一層使用修正線性單元激活函數Relu
  • 第二層使用另外一個Relu函數
  • 第三層使用sigmoid函數(如果是二分分類)
  • 輸出預測值y^\hat y
  • 計算損失L(y^,y)L(\hat y,y)
    在這裏插入圖片描述

然後開始向後迭代,反向傳播求導

  • 使用保存的 z[l]z^{[l]}來計算dW[3]db[3]dW[2]db[2]dW[1]db[1]dW^{[3]},db^{[3]},dW^{[2]},db^{[2]},dW^{[1]},db^{[1]}
  • 依次回傳da[3]da[2]da[1]da^{[3]},da^{[2]},da^{[1]}

以上就是一個3層NN的前向和反向傳播。

前向傳播,我們使用輸入數據X來初始化。
對於邏輯迴歸的反向傳播,初始化使用的是
dA[l]=(y(1)a(1)+1y(1)1a(1)......y(m)a(m)+1y(m)1a(m))dA^{[l]}=(-\frac {y^{(1)}}{a^{(1)}}+\frac {1-y^{(1)}}{1-a^{(1)}}......-\frac {y^{(m)}}{a^{(m)}}+\frac {1-y^{(m)}}{1-a^{(m)}})

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