梯度檢驗
具體的梯度下降的理論和公式推導,部分部落格已經解釋的很詳盡了,本文更多的在於梯度下降的拓展問題。
現有結果表明,在處理複雜任務上,深度網路比淺層的網路有更好的效果。但是,目前優化神經網路的方法都是基於反向傳播的思想,即根據損失函式計算的誤差通過梯度反向傳播的方式,指導深度網路權值的更新優化。這樣做的原因在於:
深層網路由許多非線性層堆疊而來,每一層非線性層都可以視為乙個非線性函式,因此整個深度網路可以看成是乙個復合的非線性多元函式。
f (x
)=fn
(...
f3(f
2(f1
(x)∗
θ1+b
)∗θ2
+b).
..)f(x) = f_n (...f_3 (f_2 (f_1 (x) * \theta_1 + b) * \theta_2 + b)...)
f(x)=f
n(.
..f3
(f2
(f1
(x)
∗θ1
+b)∗
θ2+
b)..
.)我們最終的目的是希望整個多元函式可以很好的完成輸入到輸出之間的對映。假設不同的輸入,輸出的最優解是g(x
)g(x)
g(x)
,那麼,優化深度網路就是為了尋找到合適的權值,滿足los
s=l(
g(x)
,f(c
))loss = l(g(x), f(c))
loss=l
(g(x
),f(
c))取得極小值點,比如最簡單的損失函式los
s=∣∣
g(x)
−f(x
)∣∣2
2loss = ||g(x) - f(x)||_2^2
loss=∣
∣g(x
)−f(
x)∣∣
22深度神經網路訓練的時候,採用的是反向傳播方式,該方式使用鏈式求導,計算每層梯度的時候回涉及連乘操作,因此如果網路過深:
(1) 如果連乘的因子大部分小於1,連乘之後會趨近於0,後面的網路層的引數不發生變化,即梯度消失。
(2) 如果連乘的因子大部分大於1,連乘之後會趨近於無窮,即梯度**。
,x)sigmoid容易發生梯度消失,可以將啟用函式替換為relu。
(1) 模型無法從訓練資料中獲得更新(如低損失)。
(2) 模型不穩定,導致更新過程中的損失出現顯著變化。
(3) 訓練過程中,模型損失變成nan
hinton在2023年發表**,提出無監督逐層訓練方法。基本思想是每次訓練一層隱節點,訓練時將上一層隱節點的輸出作為輸入,而本層隱節點的輸出作為下一層隱節點的輸入,次過程稱為「預訓練」(pre-training);預訓練完成後,再對整個網路進行「微調」(fine-tunning)。hinton在訓練深度信念網路(deep belief networks中,使用了這個方法,在各層預訓練完成後,再利用bp演算法對整個網路進行訓練。此思想相當於是先尋找區域性最優,然後整合起來尋找全域性最優,此方法有一定的好處,但是目前應用的不是很多了。
梯度剪下這個方案主要是針對梯度**提出的,其思想是設定乙個梯度剪下閾值,然後更新梯度的時候,如果梯度超過這個閾值,直接將梯度置為該值。
relu的表示式具體見上。如果啟用函式的導數為1,則不存在梯度**的問題,例如relu函式替代sigmoid和tanh。
batchnorm全名是batch normalization,簡稱bn,即批規範化,通過規範化操作將輸出訊號x規範化保證網路的穩定性。
詳見參考1
詳見參考1和4
只用於除錯中,不可用於訓練過程。
參考
詳解機器學習中的梯度消失、**原因及其解決方法
深度拾遺(01) - 梯度**/梯度消失/batch normal
詳解梯度**和梯度消失
添基礎 | batchnorm原理及**詳解
深度學習 梯度下降和反向傳播
引用知乎上的乙個回答 那麼導數的本質是什麼?就是變化率唄,例如小王今年賣了100頭豬,去年90頭,前年80頭,也就是說每年增加10頭,這就是變化率,完整點就是說10頭 年,是有單位的,也就是說導數為10,說白點就是自變數單位變化量的基礎上因變數的變化量,自變數就是年份,單位為年,因變數為豬的數量,年...
深度學習優化方法 AdaGrad 梯度下降
梯度下降演算法 隨機梯度下降演算法 sgd 小批量梯度下降演算法 mini batch sgd 動量法 momentum nesterov動量法有乙個共同的特點是 對於每乙個引數都用相同的學習率進行更新。但是在實際應用中,各個引數的重要性肯定是不一樣的,所以我們對於不同的引數要動態的採取不同的學習率...
深度學習基礎 BP和訓練 常用的梯度下降
梯度下降是線性回歸的一種 linear regression adam adaptive moment estimation 本質上是帶有動量項的rmsprop,它利用梯度的一階矩估計和二階矩估計動態調整每個引數的學習率。adam的優點主要在於經過偏置校正後,每一次迭代學習率都有個確定範圍,使得引數...