1. 程式人生 > >deeplearning.ai課程學習(4)

deeplearning.ai課程學習(4)

 

第四周:深層神經網路(Deep Neural Networks)

1、深層神經網路(Deep L-layer neural network)

在打算使用深層神經網路之前,先去嘗試邏輯迴歸,嘗試一層然後兩層隱含層,把隱含層的數量看做是另一個可以自由選擇大小的超引數,然後再保留交叉驗證資料上評估,或者用你的開發集來評估。

 

2、前向傳播和反向傳播(Forward and backward propagation)

前向傳播:

 

反向傳播:

3、為什麼使用深層表示?(Why deep representations?)

 

 

假設,建立一個人臉識別或是人臉檢測系統,深度神經網路所做的事就是,當你輸入一張臉部的照片,可以把深度神經網路的第一層,當成一個特徵探測器或者邊緣探測器。

第一張大圖中的小方塊(第一行第一列)就是一個隱藏單元,它會去找這張照片裡(“|”)邊緣的方向。那麼這個隱藏單元(第四行第五列),可能是在找(“—”)水平向的邊緣在哪裡。

 我們可以把照片裡組成邊緣的畫素們放在一起看,然後它可以把被探測到的邊緣組合成面部的不同部分(第二張大圖)。比如說,可能有一個神經元會去找眼睛的部分,另外還有別的在找鼻子的部分,然後把這許多的邊緣結合在一起,就可以開始檢測人臉的不同部分。最後再把這些部分放在一起,比如鼻子眼睛下巴,就可以識別或是探測不同的人臉(第三張大圖)。

 

4、引數VS超引數(Parameters vs Hyperparameters)

 演算法中的learning rate (學習率)、iterations(梯度下降法迴圈的數量)、L(隱藏層數目)、nL(隱藏層單元數目)、choice of activation function(啟用函式的選擇),這些數字實際上控制了最後的引數W和b的值,所以它們被稱作超引數。

 

如何尋找超引數的最優值?

Idea—Code—Experiment—Idea這個迴圈,嘗試各種不同的引數,實現模型並觀察是否成功,然後再迭代。

例如,通常你有個想法,比如你可能大致知道一個最好的學習率值,可能說a=0.01最好,我會想先試試看,然後你可以實際試一下,訓練一下看看效果如何。

然後基於嘗試的結果你會發現,你覺得學習率設定再提高到0.05會比較好。如果你不確定什麼值是最好的,你大可以先試試一個學習率a,再看看損失函式J的值有沒有下降。

然後你可以試一試大一些的值,然後發現損失函式的值增加併發散了。然後可能試試其他數,看結果是否下降的很快或者收斂到在更高的位置。

你可能嘗試不同a的並觀察損失函式J怎麼變換,如果這個a值會加快學習過程,並且收斂在更低的損失函式值上(箭頭標識),那麼就確定使用這個a值。