1 神經網絡概覽
2 神經網絡表示
其中g是激活函數,,是用來與l-1的輸出當作l層的輸入做矩陣乘法得到l層的值,的形狀是(l層單元數,l-1層單元數),的形狀是(l層單元數,1),故
3 激活函數
隱藏層單元激活函數:tanh幾乎總是優於sigmoid函數,因爲tanh的輸出介於(-1,1),激活函數的平均值更接近於0,在有些場景可能需要平移數據,讓數據的均值爲0,使用tanh也有類似數據中心化的效果,使得數據的均值更接近0,而非0.5,使下一層的學習更加方便。tanh和sigmoid有一個共同的缺點,當z很小或很大時,則其梯度非常小,會拖慢梯度下降算法。通常會使用Relu函數,當z小於0時,其梯度爲0,但是實踐中很少能碰到000000...的情況。
爲什麼要使用非線性激活函數,因爲若使用線性激活函數或恆等激活函數,則神經網絡只是將輸入線性組合再輸出,若使用線性激活函數或不使用激活函數,則無論神經網絡有多少層一直只是做的線性組合,唯一可使用線性激活函數的就是輸出層。舉例如下,隱藏層和輸出層均未使用激活函數,則輸出依舊是輸入的線性組合。
激活函數的導數
4 神經網絡的梯度下降法
5 隨機初始化
爲何要隨機初始化:舉例如下,若將初始化爲0,則由於全連接層,每個隱藏層單元的輸入都是一樣的,現在權重也一樣,則隱藏層單元的輸出也一樣,即,然後若也初始化爲0,則他們的梯度也一樣,即,以爲這多次迭代後依舊,相當於多個隱藏單元在計算相同的東西,故需要隨機初始化。
其實,只要W數據類似下面這種情況,也就是所有行向量相等,則所有隱藏層單元就計算的是同樣的東西
爲什麼要用比較小的隨機值初始化,主要是怕遇到形如tanh和sigmoid的激活函數,若權重參數過大,則z很容易絕對值過大,即梯度很小,會拖慢梯度下降速度。