目錄
淺層神經網絡
神經網絡的表示
- 用上標[i]代表神經網絡的第i層,用上標(i)代表第i個樣本;
- 代表第i-1層和第i層之間的權重參數矩陣,維度爲(代表第i層的單元數);代表第i-1層和第i層之間的偏置參數向量,維度;
- 一般輸入層爲第0層,不算在神經網絡的層數內。
計算神經網絡的輸出
單個樣本前向傳播
把整合爲一個列向量記做,把整合爲一個矩陣
多個樣本前向傳播
把m個樣本的特徵向量堆疊在一起構成特徵矩陣X()作爲輸入,可以同時實現m個樣本的前向傳播,此時中間結果(向量或標量)都相應的擴展爲(矩陣或向量)。擴展的矩陣橫向指標對應不同的訓練樣本,豎向指標對應神經網絡中的不同節點。
激活函數
sigmoid函數與tanh函數
在實際應用中幾乎不使用sigmoid激活函數,tanh函數幾乎在所有方面都優於sigmoid函數。
sigmoid激活函數使用情形(導數爲a(1-a)):
- 使用神經網絡進行2分類時,此時輸出層只有一個單元且輸出需介於0-1之間
sigmoid函數缺點:
- 當輸入z太大或太小時,梯度會接近於0,算法優化速度會非常慢
- 輸出以0.5爲中心,不是以0爲中心,輸出值沒有中心化的效果(輸出數據以0爲中心化可以方便下一層的學習)
tanh函數(導數爲1-a^2):
- 優點:輸出值以0爲中心,有數據中心化的效果。方便下一層的學習。
- 缺點:當輸入z太大或太小時,梯度會接近於0,算法優化速度會非常慢(與sigmoid類似)。
Relu函數和Leaky Relu函數
Relu函數:
- 優點:不存在梯度接近於0的情況,算法優化速度比sigmoid和tanh函數快很多。
- 缺點:當輸入時,梯度=0,但是這影響不大,對於大部分隱藏層的單元來說,輸入,此時梯度都是不爲0的(=1)。
Leaky Relu函數:在Relu函數的基礎上增加了一個超參數,當時的係數需要手動設置,一般設爲0.01,實際操作中,可以進行嘗試然後選出最優的。
使用非線性激活函數原因
使用非線性激活函數可以讓神經網絡得到有趣的輸出。
無論使用多少個隱層,如果每個隱層和輸出層都採用線性激活函數,那麼最後的輸出可以表示爲輸入特徵的線性組合。也就是說,此時的隱層是沒有意義的,不需要任何隱層也可以得到該輸出。但如果機器學習的是線性迴歸問題,比如房價預測,輸出層用線性激活函數也許可以。
神經網絡的梯度下降(反向傳播)
隨機初始化
權重參數W應該隨機初始化,而偏置參數b可以初始化爲0,因爲只要W保證隨機初始化,就可以破壞隱藏單元對稱性。一般隨機初始化權重參數時,還要乘以一個非常小的數,如0.01。因爲如果採用sigmoid或tanh激活函數時,不至於使z過大或過小,導致計算梯度時接近於0,降低算法的優化速度。
深層神經網絡
深層神經網絡前向傳播
其中是對單個樣本前向傳播的向量進行堆疊(一列代表一個樣本),形成相應的矩陣。
覈對矩陣的維數
以5層神經網絡爲例進行覈對矩陣的維數
單個樣本 vs. m個樣本
搭建深層神經網絡塊
先由前向傳播得到,計算損失函數;再反向傳播,先計算出,再繼續利用鏈式法則(以及前向傳播中緩存的中間結果,和參數)逐步計算出,其他層依次進行。
參數和超參數
參數:
超參數:學習率、梯度下降迭代次數、隱層數、各個隱層單元數、激活函數的選擇等等需要自己來設置的參數,實際上超參數的不同取值可以影響模型的實際參數。