1. 程式人生 > >Deeplearning.ai學習筆記-神經網路和深度學習(二)

Deeplearning.ai學習筆記-神經網路和深度學習(二)

前言

這次學習的主題是深度學習,學習的第一門課程就是吳恩達的Deeplearning.ai專案課程。此係列筆記也是根據該深度學習課程整理而成。
該系列筆記是該課程中重點知識的羅列和自己的一些理解,可供正在學習此課程的同學作為參考,也是方便自己日後複習使用。
學習本課程需要有一點python基礎、懂得Numpy庫的基礎使用,有高中的數學基礎、懂得一點點矩陣、向量知識大致就可以了。這些知識可以到吳恩達的機器學習課程學習。

關於本篇筆記:這篇筆記是深度學習課程中第一課《神經網路和深度學習》的第二篇筆記,主要是淺層神經網路和深層神經網路的基礎

淺層神經網路

啟用函式

啟用函式就是在每個圈裡使用的函式,啟用函式一般都是非線性的。因為z函式已經是一個線性函式,如果啟用函式還是線性函式,那麼隱藏層將沒有意義。

所以在一般情況下啟用函必須要有而且都是非線性函式。

z=WTX+b

以下是四個啟用函式:

sigmoid activation function :除非在二元分類的輸出層,否則不要用。
tanh函式,一般情況下這個函式都比sigmoid函式好。
ReLU函式是最常用的函式,如果不知道用什麼函式預設就用這個函式。
帶洩漏ReLU函式:當x<0時,斜率略小於0

ReLU函式

修正指的是最小值>0

ReLU函式當x>0時,斜率為1;當x<0時,斜率為0;當x=0時,斜率不存在
ReLU的缺點也就在於x=0時的情況

引數

引數上標[]代表層數:輸入層為[0],……[1],[2]……
第一個樣本上標(1),接著(1)(2)……

每兩個層次之間都是輸入與輸出的關係。
如果輸入層有k個特徵或引數輸給輸出層
那麼輸出層中每個圈(神經節點)中就有k個w和一個b。
W的維度:有幾個特徵,w就有幾個元素;有幾個圈,就有幾個w

其實函式Z=W^T X+b就是一個加權的函式
W是權重向量,一般不會初始化為0。因為W的任務是將每個輸進來的x進行加權。W的值一般都很小。
b是偏置向量,b的值可以初始化為0.

深層神經網路

L代表層數,第l層。輸入層為第0層。
n代表一層中神經單元的個數。

對於深層神經網路的前向傳播,和之前類似,只不過複雜一點的向量化。再次強調,向量化的思想非常重要,能夠儘量避免for迴圈,但是在向量化的過程中最要注意的是矩陣的維度。

上圖中,抽象出來的公式是:

for l in range(1,L+1):

Z[l]=W[l]A[l1]+b[l] A[l]=g[l](Z[l])

其中A^{[0]}=X;X={x_1,x_2,x_3}

為什麼需要深層神經網路

原因1: 對於深層神經網路,神經網路前幾層研究比較低層次的,之後幾層是將低層次的內容組合在一起研究複雜層次的。
比如:語音識別:前幾層是聲音的聲波識別->聲音的音位->聲音裡的字母->單詞->短語->句子
從最低層次的不斷向上提升層次。

原因2: 是遵循電路原理:淺層次的網路相對於深層次的需要指數級的神經單元才能達到和深層次的同樣效果。

當然神經網路不是越深越好,層次的深度和調引數一樣,也是需要不斷的嘗試選擇一個最適合的層次。

深層網路的前向後向

正向傳播為了傳播A,反向傳播為了獲得dw,db。