未經允許,不得擅自改動和轉載
學習使用前向傳播和反向傳播搭建出有一個隱藏層的神經網絡。
- hidden layer Neural Network
3.1 神經網絡概覽
3.2 神經網絡表示
- 雙層神經網絡(只有一個隱藏層,單隱層神經網絡)
- 輸入層-四個隱藏層單元-輸出層
- 雙層神經網絡。不把輸入層看做一個標準的層
- 這里的隱藏層有兩個相關的參數w和b,使用上標[1]表示這些參數,w是4x3矩陣,b是4x1向量(4代表有四個節點或者隱藏單元,3來自于3個輸入特征)
- 輸出層也有相關的參數w^[2] (1x4,隱藏層有四個隱藏單元,輸出層只有一個單元),b^[2]【1x1】
3.3 計算神經網絡的輸出
gengrate 生成
compute 計算
matrix 矩陣
- 神經網絡只不過是計算這些步驟很多次
3.4 多個例子中的向量化
訓練樣本橫向堆疊構成矩陣X
- m個訓練樣本
- 用激活函數來表示這些式子
a^[2](i)
【i是訓練樣本i,2指的是第二層】
- 一個for循環遍歷所有的m訓練樣本
- 向量化
3.5 向量化實現的解釋
這就是對不同訓練樣本向量化的神經網絡,接下來,我們目前為止我們一直都是用sigmoid函數
3.6 激活函數(activation function)
如何使用不同種類的激活函數,simoid只是其中的一個可能選擇
- 為了搭建神經網絡,可以選擇的是選擇隱層里用哪個激活函數,還有神經網絡的輸出單元用什么激活函數
有一個函數總比sigmoid函數表現好,那就是a=tanh(z)(雙曲正切函數),
函數介于+1和-1之間,意味著激活函數的平均值更接近0
但 二分分類是,輸出層最好用sigmoid,因為y輸出介于0-1更合理
不過,sigmoid和tanh函數都有一個缺點,如果z非常大,或非常小,函數的斜率很接近0,這樣會拖慢梯度下降算法
修正線性單元(ReLU)就派上用場了(z為正,斜率為1,為負,斜率為0)
在選擇激活函數時有一些經驗法則
- 如果你的輸出值是0或1,如果你在做二元分類,那么sigmoid很適合作為輸出層的激活函數,然后其他所有單元都用ReUL。
如果你不確定隱層應該用哪個,那就用ReUL作為激活函數
還有個帶泄露的ReUL(z小于0是有一個緩緩的斜率,)通常比ReUL激活函數好,不過實際中使用的頻率沒那么高
在實踐中使用ReUL激活函數,學習速度通常會快得多,比使用tanh或sigmoid激活函數快得多,因為ReUL沒有函數斜率接近0時,減慢學習速度的學習速度的效應
說一下幾個激活函數
sigmoid
除非用在二元分類的輸出層,不然絕對不要用,或者幾乎從來不會用最常用的默認激活函數ReLU,不確定用哪個,就用這個,或者帶泄露的ReLU(max(0.01z, z))
3.7 為什么需要非線性激活函數(nonlinear activation function)?
如果用線性激活函數(linear activation function)或者叫做恒等激活函數,那么神經網絡只是把輸入線性組合再輸出,
無論你的神經網絡多少層,一直在做的只是計算線性激活函數,和沒有任何的標準Logistic回歸是一樣的,因為兩個線性函數組合的本身就是線性函數,除非你引用非線性,
- 只有一個地方可以使用線性激活函數g(z) = z,就是你要機器學習的是回歸問題,所以y是一個實數,
-
線性激活函數不可能用在隱藏層(除壓縮),要用,也是用在輸出層,
image.png
3.8 激活函數的導數
接下來討論梯度下降的基礎,如何估計,如何計算單個激活函數的導數,斜率,
3.9 神經網絡的梯度下降法
梯度下降算法的具體實現,如何處理單隱層神經網絡,
提供所需的方程,來實現反向傳播,或者說梯度下降算法,
keepdims = true(確保python輸出的是矩陣)
- 正向傳播 4個方程
- 反向傳播 6個方程
3.10 (選修)直觀理解反向傳播
3.11 隨機初始化
當你訓練神經網絡時,隨機初始化權重非常重要,對于logistic回歸,可以將權重初始化為零,
但如果將神經網絡各參數數組初始化為0,再使用梯度下降算法(gredient descent),那會完全失效
因為我們需要兩個不同的隱藏單元,去計算不同的函數,這個問題的解決方案是隨機初始化所有參數,
- 可以令W^[1] = np.random,randn, 這可以產生參數為(2, 2)的高斯分布隨機變量,然后你再乘以一個很小的數字【因為通常喜歡把權重矩陣初始化非常小的隨機數】,所有你將權重初始化很小的隨機數,
- 如果訓練單隱層神經網絡時,沒有太多的隱藏層,設為0.01還可以,但當訓練一個很深的神經網絡時,可能要試試0.01以外的常數,
- 把b初始化0是可以的
所以,在這周的視頻里,你知道如何設立單隱層神經網絡,初始化參數,并用正向傳播計算預測值,還有計算導數,然后使用梯度下降,反向傳播