類神經網路:使用反向傳播進行訓練

反向傳播是類神經網路最常見的訓練演算法。這項技術可讓梯度下降演算法用於多層類神經網路。許多機器學習程式碼程式庫 (例如 Keras) 會自動處理反向傳播,因此您不需要自行執行任何基礎計算。請觀看下列影片,從概念上概略瞭解反向傳播的運作方式:

類神經網路訓練最佳做法

本節說明反向傳播的失敗案例,以及最常見的類神經網路正規化方式。

消失的梯度

較低神經網路層 (靠近輸入層) 的梯度可能會變得非常小。在深層網路 (具有多個隱藏層的網路) 中,計算這些梯度可能需要將許多小項相乘。

當下層的梯度值接近 0 時,梯度就會「消失」。梯度消失的圖層訓練速度非常緩慢,或完全無法訓練。

ReLU 活化函式有助於避免梯度消失。

爆炸漸層

如果網路中的權重非常大,則較低層的梯度會涉及許多大型項目的乘積。在這種情況下,您可能會遇到梯度爆炸問題:梯度過大而無法收斂。

批次正規化有助於避免梯度爆炸,降低學習率也有相同效果。

ReLU 死亡單元

如果 ReLU 單元的加權總和低於 0,ReLU 單元可能會卡住。輸出為 0,對網路輸出沒有任何貢獻,且梯度無法再於反向傳播期間流經該節點。如果梯度來源遭到截斷,ReLU 的輸入內容可能永遠不會有足夠的變化,使加權總和回到 0 以上。

降低學習率有助於避免 ReLU 單位失效。

Dropout Regularization

另一種形式的正規化稱為「Dropout 正規化」,適用於類神經網路。做法是在單一梯度步驟中,隨機「捨棄」網路中的單元啟用。Dropout 越多,正則化越強:

  • 0.0 = 無丟棄正則化。
  • 1.0 = 捨棄所有節點。 模型不會學到任何內容。
  • 介於 0.0 和 1.0 之間的值 = 更有用。