1. 程式人生 > >神經網路與深度學習課程筆記(第三、四周)

神經網路與深度學習課程筆記(第三、四周)

接著學習吳恩達老師第三、四周的課程。(圖片均來自吳恩達老師課件)

 

第三週

1. 普通的淺層網路

                                                               第0層(a^{[0]})          第1層 (a^{[1]}

)       第二層(a^{[2]}

                                                               輸入層                    隱藏層                   輸出層

2. 淺層網路(單樣本)

直觀上理解,輸入層有3個特徵。隱藏層的4個節點實際上都在重複的計算sigmoid,因此每個節點可產生一個w(1*3)和b(1*1),隱藏層可產生W[1](4*3),b[1](4*1),由sigmoid啟用函式推出a[1](4*1)。這相當於4個隱藏節點各自計算函式得到了4個值。但是W[2]和b[2]和a[2]不是很好理解其意義,我暫且理解為:原始輸入特徵為X,而在隱藏層設定4個節點,通過sigmoid啟用函式將原始的3個特徵對映為4個特徵,因此在輸出層W[2]的維度為1*4,最後再通過sigmoid得出預測值。其實總結來說,也就是隱藏層與輸出層都使用sigmoid作為啟用函式。

學習完這周視訊,再回頭看這一流程。隱藏層(輸出層)所做的便是接收輸入特徵(上一層)的線性組合(權重向量w和偏置向量b)進行非線性函式的對映(啟用函式)。

當擴充套件為多樣本,又是向量化的過程,注意符號的寫法。矩陣中每一列應代表一個樣本,而每一行應代表某個指標(特徵,節點等)。

3. 啟用函式: 令 a = g(z)(代表啟用函式)

(1)sigmoid:除非作為二元分類(0,1)的輸出層,否則選用tanh替代,因為其效果更好。

                                                                  g‘(z) = a(1-a)

(2)雙曲正切函式 tanh 值域(-1,1)

數學上看,即是將sigmoid函式向下平移經過原點,並使其值域拉伸到(-1,1),效果幾乎總比sigmoid函式好,因為其有一個類似於中心化的功能(使均值在0,而sigmoid在0.5)

                                                                               g’(z) = 1 – g(z)^2

(3)ReLU max(0,z)不知道用什麼的時候,可以嘗試,效果不錯,注意在0的時候的斜率(自己定義)

(4)Leaky ReLU max(0.01z,z),0.01的值可以自己定義。修正了ReLU在負值時,斜率為0的問題,效果比ReLU好,但是不經常用 。

4. 理解前向傳播及後向傳播

 在推導後向傳播時保證矩陣的維度匹配。

理解後向傳播以及前向傳播,在於理解傳播二字。根據輸入特徵得到輸出,前向傳播的是一步步的計算過程。通過輸出的反饋,後向傳播的是更新的過程。

初始化神經網路的權重 很重要,不要初始化為0,而是隨機初始化。若初始化權重(w)都為0 ,會使隱藏層的節點做著相同的函式計算,使得隱藏層的計算沒有意義。常常隨機初始化權重為較小的值,例如numpy.random.rand()*0.01。其實設定初始化權值跟所用的啟用函式有關。由於我們採用Sigmoid(或者tanh),並且使用梯度下降法進行收斂,當初始化權值太大或者太小時,會使其收斂的速度較慢。

第四周

1. 符號太多了,注意符號的標記。

2. 前向傳播的過程,最外層的for迴圈無法捨棄(即在每一層傳播的過程)。

3. 深度網路中,清晰的認知到變數的維度很重要(w,b,z…),關鍵在於捕捉到網路的層數L,每層的節點數L[i],以及輸入樣本的m和n(a^{[0]})。

4. 為什麼要用深度網路表示?總結出了兩方面原因:(1)以人臉識別為例,深度網路的每層是一個特徵探測器(邊緣檢測),每個神經元可以理解為再找一個特徵,之後再將這些神經元組合起來,便可以得出檢測結果。也就是說隨著神經網路的前向傳播,逐漸由小特徵匯聚成大特徵(類似於金字塔結構)。(2)另一方面是,同一問題,若利用相對較淺的網路,那麼需要的節點個數會指數級增長。

5. 前向與後向傳播流程

 

這裡有幾點關注的地方:

(1)前向傳播過程中,對於中間變數的快取,可提到計算效率。

(2)後向傳播的推導的過程,注意矩陣間的運算,(維度,轉置)。

(3) 多樣本情形時,W和b的更新記得取平均。

6. 超引數:某種程度上控制著引數的預先設定的引數。(不斷的嘗試)深度學習的應用實則上就是一個經驗的嘗試(資料驅動的本質以及不同環境的配置等),如何選取好的超引數,只能不斷的嘗試。