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^=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],其中W[1]和b[1]是影響第一層激活單元的參數。特徵向量x也是第0層的激活單元,即x=a[0]。
a[1]=g[1](z[1]),這個是作用於z[1]的激活函數
第二層計算如下
z[2]=W[2]a[1]+b[2]
a[2]=g[2](z[2]),這個是作用於z[2]的激活函數
後面幾層依次類推,直到輸出層
z[4]=W[4]a[3]+b[4]
a[4]=g[4](z[4])=y^,此時輸出就是預測值y^
可以發現,一個訓練樣本正向傳播公式可以歸納爲
z[l]=W[l]a[l−1]+b[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]=W[1]X+b[1]=W[1]A[0]+b[1],其中X=A[0],就是把所有樣本從左到右橫向疊在一起
A[1]=g[1](Z[1])
第二層
Z[2]=W[2]A[1]+b[2]
A[2]=g[2](Z[2])
後面幾層依次類推,直到輸出層
Z[4]=W[4]A[3]+b[4]
A[4]=g[4](Z[4])=Y^,Y^就是把所有樣本的預測值y^從左到右橫向疊在一起
針對整個訓練集正向傳播的向量化公式歸納如下
Z[l]=W[l]A[l−1]+b[l]
A[l]=g[l](A[l])
此時要遍歷所有層計算就需要一個顯示for循環,for l=1,2…L,依次計算從輸入層到輸出層整個NN每層的Z和A值。
你可以發現深層NN正向傳播實現過程和單隱層NN實現步驟是非常類似的,只不過多重複了幾遍。