1. 程式人生 > >吳恩達《深度學習-神經網路和深度學習》4--深層神經網路

吳恩達《深度學習-神經網路和深度學習》4--深層神經網路

1. 深層神經網路長什麼樣?

所謂深層神經網路其實就是含有更多的隱藏層或隱藏層單元的神經網路。

2. 前向傳播

深層神經網路前向傳播的向量化實現:

這裡需要逐層計算每層的z和a,一般只能用for迴圈(從第1層到第L層,輸入層被稱為第0層)

3. 如何確定矩陣的維數

n[0]是輸入層的特徵數,n[1]是第一層的單元數,以此類推,m為樣本數。

4. 構建深層神經網路的塊

前向傳播計算a[l],同時快取w b z,留待反向傳播使用,反向傳播計算導數

反向傳播的初始傳入值dA[L]是求解反向傳播的關鍵,這裡dA[L]是cost function對A[L]的導數,上圖以logistics的cost function為例求解了dA[L]。

對於上圖的深度神經網路,n[0]=3,n[1]=5,n[2]=5,n[3]=3,n[4]=1,L=4,m為樣本數

正向傳播過程:(先確定W的維數,W的維數等於當前層單元數乘以前一層單元數,b總是一列,加法計算的時候會把它複製成m列)

Z[1]=W[1]*A[0]+b[1];   A[0]=X∈ (3,m);  W[1](5,3); b[1](5,1); Z[1]∈(5,m); 

A[1]=g[1](Z[1]); //g[1](z[1])是以Z[1]為引數的啟用函式,可以是ReLU,sigmoid或tanh等,A[1]與Z[1]維數一直也是(5,m),此時快取Z[1],W[1],b[1];

Z[2]=W[2]*A[1]+b[2];   A[1]=X∈ (5,m);  W[2]

(5,5); b[2](5,1); Z[2]∈(5,m); 

A[2]=g[2](Z[2]);  //(5,m)  ,此時快取Z[2]W[2]b[2]

Z[3]=W[3]*A[2]+b[3];   A[2]=X∈ (5,m);  W[3](3,5); b[3](3,1); Z[3]∈(3,m);

A[3]=g[3](Z[3]);   //(3,m)  此時快取Z[3]W[3]b[3]

Z[4]=W[4]*A[3]+b[4];   A[3]=X∈ (3,m);  W[4](1,3); b[4](1,1); Z[4]∈(1,m);

A[4]=g[4](Z[4]);  //(1,m)  Z[4]即模型預估值,此時快取

Z[4]W[4]b[4]

反向傳播過程:(帶‘的所有的g都是表示求導,其他的都是表示矩陣轉置)

dZ[4]=A[4]-Y;  //A[4](1,m); Y∈(1,m);  dZ[4]∈(1,m) ;

dW[4]=1/m*dZ[4]*A[3]';   dZ[4]∈(1,m);  A[3]'∈[m,3]此處表示轉置矩陣;  dW[4]∈(1,3)

db[4]=1/m*sum(dZ[4]);   //按行求均值 db[4]∈(1,1)

dA[3]=W[4]'*dZ[4];  W[4]'(3,1)此處表示轉置矩陣;  dZ[4]∈ (1,m);  dA[3](3,m)

dZ[3]=dA[3]*g[3]';  //dA[3](3,m); g[3]'∈(3,m) 此處表示導數;dZ[3](3,m)這裡的乘法表示對應的矩陣元素相乘;

dW[3]=1/m*dZ[3]*A[2]';   dZ[3]∈(3,m);  A[2]'∈[m,5];  dW[3]∈(3,5)

db[3]=1/m*sum(dZ[3]);   //按行求均值 db[3]∈(3,1)

dA[2]=W[3]'*dZ[3];  W[3]'(5,3)此處表示轉置矩陣;  dZ[3]∈ (3,m);  dA[2](5,m)

dZ[2]=dA[2]*g[2]';  //dA[2](5,m); g[2]'∈(5,m) 此處表示導數;dZ[2](5,m)這裡的乘法表示對應的矩陣元素相乘;

dW[2]=1/m*dZ[2]*A[1]';   dZ[2]∈(5,m);  A[1]'∈[m,5];  dW[2]∈(5,5)

db[2]=1/m*sum(dZ[2]);   //按行求均值 db[2]∈(5,1)

dA[1]=W[2]'*dZ[2];  W[2]'(5,5)此處表示轉置矩陣;  dZ[2]∈ (5,m);  dA[1](5,m)

dZ[1]=dA[1]*g[1]';  //dA[1](5,m); g[1]'∈(5,m) 此處表示導數;dZ[1](5,m)這裡的乘法表示對應的矩陣元素相乘;

dW[1]=1/m*dZ[1]*A[0]';   dZ[1]∈(5,m);  A[0]'∈[m,3];  dW[1]∈(5,3)

db[1]=1/m*sum(dZ[1]);   //按行求均值 db[1]∈(5,1)

5. 引數和超引數(Parameters vs Hyperparameters)

引數就是我們所關心的w和b

超引數就是能夠影響或決定引數w和b的引數,超引數的選擇是深度學習的一個難題,目前主要靠經驗,需要嘗試很多不同的值,每一次都需要實現模型,然後嘗試保留交叉驗證或其他驗證方法來選擇一個較好的值。值得一提的是即使你找到了某個模型的最優解,其值也可能隨時間變化而變化,所以在應用模型的過程中,要注意經常的嘗試不同的超引數,勤於檢驗結果。

6. 名人訪談

受限玻爾茲曼機

變分法

生成對抗網路

膠囊

增強學習

對抗性樣本 //機器學習安全的新領域