2020-5-11 吳恩達-NN&DL-w4 深層NN(4.1 深層神經網絡-含符號約定,4.2 深層網絡中的前向傳播)

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.1 深層神經網絡 Deep L-layer Neural network

前面的學習中我們瞭解了邏輯迴歸和向量化單隱層NN中的正向傳播和反向傳播,爲什麼要隨機初始化權重,這些都是實現深度NN的基本理念。

本週的目標就是實現深度NN模型。

先來觀察下面幾個圖。
在這裏插入圖片描述

上圖左邊是邏輯迴歸模型,右邊是單隱藏NN。

在這裏插入圖片描述

上圖是一個雙隱層的NN。
在這裏插入圖片描述

上圖是一個5隱層的NN。

第一個邏輯迴歸的模型,從技術層面上說,是單層NN,我們稱之爲“淺層”。而最後一個5隱層NN稱之爲“深層”。深層或者淺層是一個程度問題

有些函數只有非常深的NN可以學習。儘管對於任何給定的問題很難去提前預測到底需要多深的神經網絡,我們可以先去嘗試邏輯迴歸一層NN,然後兩層NN(含一個隱層),依次增加隱藏層數,把隱藏層的數量看做是另一個可以自由選擇大小的超參數,再在保留的交叉驗證數據上評估,或者用你的開發集來評估。

符號約定
在這裏插入圖片描述

上圖是一個含3隱層和1個輸出層的4層NN。從左往右,隱層中單元數量是5,5,3。

  • 我們用L表示層數,L=4。
  • 用n[i]表示第i層的節點數,第一層n[1]=5,第二層n[2]=5,第三層n[3]=3,第四層n[4]=n[L]=1。
  • 輸入層n[0]=3。
  • 用a[i]表示第i層的激活函數,a[i]=g[i](z[i])
  • 輸入特徵x是第0層的激活函數,x=a[0]
  • 預測值y^\hat y=a[L]
  • 用w[i]表示第i層計算z[i]的權重值
  • 用b[i]表示第i層計算z[i]的偏置值

4.2 深層網絡中的前向傳播 Forward Propagation in a Deep Network

本節將介紹如何在深層NN中應用前向傳播和反向傳播。
在這裏插入圖片描述

我們先來看一個訓練樣本x的情況,如何計算第一層的激活單元。

z[1]=W[1]x+b[1]=W[1]a[0]+b[1]z^{[1]}=W^{[1]}x+b^{[1]}=W^{[1]}a^{[0]}+b^{[1]},其中W[1]W^{[1]}b[1]b^{[1]}是影響第一層激活單元的參數。特徵向量x也是第0層的激活單元,即x=a[0]x=a^{[0]}
a[1]=g[1](z[1])a^{[1]}=g^{[1]}(z^{[1]}),這個是作用於z[1]z^{[1]}的激活函數

第二層計算如下

z[2]=W[2]a[1]+b[2]z^{[2]}=W^{[2]}a^{[1]}+b^{[2]}
a[2]=g[2](z[2])a^{[2]}=g^{[2]}(z^{[2]}),這個是作用於z[2]z^{[2]}的激活函數

後面幾層依次類推,直到輸出層

z[4]=W[4]a[3]+b[4]z^{[4]}=W^{[4]}a^{[3]}+b^{[4]}
a[4]=g[4](z[4])=y^a^{[4]}=g^{[4]}(z^{[4]})=\hat y,此時輸出就是預測值y^\hat y

可以發現,一個訓練樣本正向傳播公式可以歸納爲

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和a向量從左到右橫向疊起來。
例如:
Z[1]=[z[1](1)z[1](2)z[1](3)z[1](m)]Z^{[1]}= \left[ \begin{array}{c} \vdots &\vdots & \vdots & \vdots & \vdots\\ z^{[1](1)} & z^{[1](2)} & z^{[1](3)} & \vdots & z^{[1](m)}\\ \vdots &\vdots & \vdots & \vdots & \vdots\\ \end{array} \right]

第一層

Z[1]=W[1]X+b[1]=W[1]A[0]+b[1]Z^{[1]}=W^{[1]}X+b^{[1]}=W^{[1]}A^{[0]}+b^{[1]},其中X=A[0]X=A^{[0]},就是把所有樣本從左到右橫向疊在一起
A[1]=g[1](Z[1])A^{[1]}=g^{[1]}(Z^{[1]})

第二層

Z[2]=W[2]A[1]+b[2]Z^{[2]}=W^{[2]}A^{[1]}+b^{[2]}
A[2]=g[2](Z[2])A^{[2]}=g^{[2]}(Z^{[2]})

後面幾層依次類推,直到輸出層

Z[4]=W[4]A[3]+b[4]Z^{[4]}=W^{[4]}A^{[3]}+b^{[4]}
A[4]=g[4](Z[4])=Y^A^{[4]}=g^{[4]}(Z^{[4]})=\hat YY^\hat Y就是把所有樣本的預測值y^\hat y從左到右橫向疊在一起

針對整個訓練集正向傳播的向量化公式歸納如下

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

此時要遍歷所有層計算就需要一個顯示for循環,for l=1,2…L,依次計算從輸入層到輸出層整個NN每層的Z和A值。

你可以發現深層NN正向傳播實現過程和單隱層NN實現步驟是非常類似的,只不過多重複了幾遍。

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