淺層神經網絡個人學習筆記Shallow neural networks
-
-
-
- 作者arsoooo
-
- 1.1 計算一個神經網絡的輸出(Computing a Neural Network's output)
- 1.2 多樣本向量化(Vectorizing across multiple examples)
- 1.3激活函數(Activation functions)
-
作者arsoooo
1.1 計算一個神經網絡的輸出(Computing a Neural Network’s output)
在邏輯回歸中,我們有a直接等于yhat,是因為在邏輯回歸中我們隻有一個輸出層,是以我們沒有用帶方括号的上标。此處多層的神經網絡,yhat表示最終輸出,a表示中間層的輸出,這些輸出作為輸入傳入下一層裡繼續計算,是以又叫做激活值。

圖中上标表示神經網絡的層數,下标表示該層的第幾個神經元,這是神經網絡的符号慣例。
接下來計算一個神經網絡的輸出:
從隐藏層的第一個神經元開始計算,如上圖第一個最上面的箭頭所指。從上圖可以看出,輸入與邏輯回歸相似,每個神經元的計算與邏輯回歸一樣分為兩步,隐藏層的第二個以及後面兩個神經元的計算過程一樣,隻是注意符号表示不同。
向量化的過程是将神經網絡中的一層神經元參數縱向堆積起來,例如隐藏層中的w縱向堆積起來變成一個(4,3)的矩陣,用符号W[1]表示。
得到Z[1]後,a[1] = sigmoid(Z[1]),接着通過a[1]進行一次計算得到a[2]。
1.2 多樣本向量化(Vectorizing across multiple examples)
題目複雜,實際上1.1講的是一個訓練樣本放入神經網絡計算,現在是有m個訓練樣本,每個都要放進去計算。
當然我們不要用loop循環,而是把不同訓練樣本的x們組合成一個矩陣,其中水準方向上,對應于不同的訓練樣本;豎直方向上,對應不同的輸入特征,而這就是神經網絡輸入層中各個節點。
1.3激活函數(Activation functions)
a = sigmoid(z),a是激活值,sigmoid是激活函數。除了sigmoid函數以外的非線性函數,tanh函數或者雙曲正切函數是總體上都優于sigmoid函數的激活函數。
tanh函數是sigmoid的向下平移和伸縮後的結果。對它進行了變形後,使得資料的平均值更接近0而不是0.5,tanh函數在所有場合都優于sigmoid函數。
吳恩達老師給出了一些函數選擇的建議:
如果輸出是0、1值(二分類問題),則輸出層選擇sigmoid函數,然後其它的所有單元都選擇Relu函數。
這是很多激活函數的預設選擇,如果在隐藏層上不确定使用哪個激活函數,那麼通常會使用Relu激活函數。有時,也會使用tanh激活函數,但Relu的一個優點是:當z是負值的時候,導數等于0。
這裡也有另一個版本的Relu被稱為Leaky Relu。當z是負值時,這個函數的值不是等于0,而是輕微的傾斜。這個函數通常比Relu激活函數效果要好,盡管在實際中Leaky ReLu使用的并不多。