進階最佳化

變異數縮減 SGD(variance-reduced SGD)

從單一樣本或小批次算出的隨機梯度,是真實梯度的一個帶雜訊估計,而這種雜訊即使在最優點也不會消失。於是固定步長的單純 SGD 只會落進極小值周圍的一個「雜訊球」裡,逼得人得用衰減的學習率,並承受 t 分之一階的緩慢收斂率。變異數縮減問的是:我們能不能抵消掉大部分雜訊,在「有限個函數之和」上重新取得全批次梯度下降所享有的快速線性收斂?

SVRG 用一個過時的錨點來做。它週期性地在快照點 w-hat 計算精確的全梯度,然後使用修正後的估計:grad f_i(w) 減 grad f_i(w-hat) 加上 w-hat 處的全梯度。這個估計仍然是無偏的,但當迭代值逼近最優點時它的變異數縮到零,因為逐樣本項與它的快照對應項幾乎抵消。SAGA 用不同的方式達成同樣目的:儲存並逐步更新一張「每個樣本最近一次梯度」的表。

對強凸的有限和問題,這些方法可證明線性收斂,這個漂亮的結果讓它們在凸的機器學習目標上表現極佳。在深度網路裡優勢大致蒸發了:非凸地形、資料擴增、龐大的資料集規模,以及快照本身不斷移動,全都對它不利,所以實務上在神經網路上通常是單純的 SGD 或 Adam 勝出。

\tilde g = \nabla f_i(w) - \nabla f_i(\hat w) + \nabla F(\hat w)

SVRG 的修正是無偏的,且其變異數在最優點附近趨於零。

SAGA 用記憶體換變異數:它為每個訓練樣本各存一個梯度,對許多凸問題還好,但當資料集與參數數都很龐大時就不切實際。

又称
SVRGSAGAvariance reduction變異數縮減