CV-梯度下降

GD

在這裏插入圖片描述
θnext=θlastωf(θi) \Large \theta_{next} = \theta_{last} - \omega f'(\theta_i)

直到
f(θnext)=0 \Large f'(\theta_{next}) = 0
對於一般的凸函數,其中的θ\theta是一個關於xx的函數
θi=g(xi) \Large \theta _i = g(x_i)
也就是說,給定一個f(x)f(x)的時候,我們只能確定一個θ\theta,只有全面的遍歷所有樣本,我們才能夠的到f(θ)f(\theta)
J(θ)=12i=1m(fθ(xi)yi)2 最小二乘法: J(\theta) =\frac{1}{2}\sum^{m}_{i=1}(f_\theta(x_i) - y_i)^2
一次性全部展開
θnext=θlastwf(θi)=θlastwf(g(xi)) \begin{aligned} \Large \theta_{next} =& \theta_{last} - wf'(\theta_i) \\ \\ \Large = & \theta_{last} - wf'(g(x_i)) \end{aligned}
但是一般來說,樣本不少,直接計算是在耗費資源。

更主要的是,爲了刨除一些特殊性質,會打亂樣本的順序進行再次訓練,以爲提高適應性。
nm,n×m 假設樣本個數爲n,訓練次數爲m,總共重複計算量爲n \times m

BGD

批量梯度下降,它的有優點在於把隨機樣本順序隱藏到了計算步驟當中。
S,nSi,ni{SiSnin 假設總樣本爲S, 個數爲n\\則每次訓練的樣本集爲S_i,樣本爲n_i \\ \left\{ \begin{matrix} S_i \in S \\ n_i \le n \end{matrix} \right.
ni=nn_i = n的時候,就成了一般的梯度下降方法了。

piSip_i \in S_i的時候,得到的θ\theta是僅適用於pip_i這些點的極值參數。

爲了適配全部的點,就應該多組的進行訓練,遍歷全部樣本。

它顯式的優勢在於,減少了每次計算的計算量,可以通過重複計算來慢慢增加精度。

隱式的優勢在於,它把一個一次性達成目的造成的大量計算,拆分成了分步達成,從時間上進行了分離。

把算力分步到了時間片上,相同算力條件下,每次的計算速度加快。

SGD

這個就更加賴皮了,如果把BGD中每次批量的數據量設置爲1,也就是
ni=1 n_i = 1
也就是每次只是計算一個點,它內在的原理是進一步發掘了計算結果的累加性
θnext=θlastωf(θi) \Large \theta_{next} = \theta_{last} - \omega f'(\theta_i)
不過計算過程中,樣本數據固定的話,每次只取一個樣本會增加循環的次數,增加額外開銷。

這種辦法適合單點計算量比較大的情況下使用,否則只會適得其反
θi=f(xi) \Large \theta_i = f(x_i)

Adagrad

前面的優化辦法,都是對計算聚集的拆分辦法,還有一個關於學習率ww的問題
在這裏插入圖片描述

紅到綠,步子跨大了,錯過了最低點。

關於學習率

  • 學習率大了,收斂速度快,但是可能錯過極值點,還有反覆橫跳
  • 學習率太小,收斂速度太慢,計算量大
  • 全部參數使用同一個學習率,收斂慢

爲此,Adagrad提出了一個適配的學習率
wi=wikg(θi)2+εkn \Large w_i = \frac{w}{\sqrt{\sum_i^kg'(\theta_i)^2 + \varepsilon}} \quad k \le n
這樣一來前期時候可以設置一個較大的學習率,快速的收斂。

後期由於累積的梯度增大,學習率逐漸減小,不容易錯過極值反覆橫跳。

更主要的是,它不一定是一維的,每個維度之間的學習率是獨立的,不會在整體收斂情況下讓單一維度反覆橫跳。

其中的ε\Large\varepsilon主要是爲了避免除0的情況

RMSprop

一個數字,一直分一半,最小是多少,需要多少次。

Adagrad重心轉到了學習率上面,提出一個適配的學習率,解決了諸多問題,但是也引出了一個問題

後期學習率逐漸降低,而且降低的太過分了,當累加的梯度到一個很大的地步,每次的學習率就會極小。

一米的路程,如果一步一納米,也是很遠的路程。

所以RMSprop提出這麼一個觀點,累加的梯度應該有一個時效性,太久遠的梯度影響應該減小。
wi=2ρgi1(θi1)+(1ρ)gi(θi)2+ε \Large w_i = \frac{2}{\sqrt{\rho g'_{i-1}(\theta_{i-1}) + (1 - \rho) g'_i(\theta_i)^2+ \varepsilon}}
其中它的輔助參數只是取了上一次的梯度和當前的梯度加權和,通過ρ\Large\rho進行控制。

根據這種觀點,你還可以設計一個卷積函數參數t(n)t(n)
wi=wkit(ki)gi(θi)+ε \Large w_i = \frac{w}{\sum^i_k \sqrt{t(k-i) g'_i(\theta_i) + \varepsilon}}

讓輔助參數不那麼大,在收斂區域學習率不會過於小,導致收斂緩慢即可。

Momentum

山羊在陡峭的地方也站的很穩,站的很穩不一定就是最低點。

可能有很多的極值點,但並非就是全局最優解,Moment的重心回到了全局最優解這個問題上面。

它樸素的思想是,容易逃離的就不是全局最優。

我們每次尋找下一個點都是根據這個表達式
θi=θi1wg(θi1) \Large \theta_i = \theta_{i-1} - wg'(\theta_{i-1})
當梯度趨於00,完全沒有逃離的辦法。

調整ww,太大就會左右橫跳,太小就會陷入局部最優。

前面的辦法都是讓w在初期保持較大值,快速收斂,後期減小,都沒有辦法逃離局部最優,變換模式單一。

也就是說,在梯度很小的時候,不一定要保持較低的學習率進行收斂,需要適應的調整,驗證一下是否全局最優。
vi=avi1wg(θi1)θi=θi1+vi \begin{aligned} \Large v_i =& \Large av_{i-1} - wg'(\theta_{i-1})\\ \Large \theta_i =& \Large \theta_{i-1} + v_i \end{aligned}
全部放在一塊
θi=θi1wg(θi1)+avi1 \Large \theta_i = \theta_{i-1}- wg'(\theta_{i-1}) +av_{i-1}
也就是說,它在最後加上另一個新的控制手段,以此來對極值點進行校驗。每次移動不由單一值控制,而是變成了
avi1wg(θi1) \Large av_{i-1}- wg'(\theta_{i-1})
之前的移動控制學習率的大小,通過之前梯度的影響進行計算。

但是梯度總會減小,偏移量也是一直減小的,無法對當前位置進行更好的調整。

現在加上了一個受之前狀態影響的偏移量,使得可以在梯度很小的時候也能夠進行偏移,逃離局部最優。

偏移的距離和上一次移動距離正相關,也就是說當梯度絕對值較大的時候偏移量也會比較大。

如果是全局最優,在反覆幾次偏離後,梯度逐漸減小,偏移逐漸減小,最終得到最優解。

如果是局部最優,就會偏移出局部區域,從而避免局部最優。

其中viv_i初始值爲0,aa表示vv的衰減率。

Adam

mi=β1mi1+(1β1)g(θi)ni=β2ni1+(1β2)g(θi)2m^=mi1β1in^=ni1β2iθi+1=θiηm^n^+ε \begin{aligned} \Large m_i &= \Large\beta_1m_{i-1} + ( 1 - \beta_1)g'(\theta_{i}) \\ \\ \Large n_i &=\Large \beta_2 n_{i-1} +(1-\beta_2)g'(\theta_{i})^2 \\ \Large \hat m& = \Large \frac{m_i}{1 - \beta_1^i} \\ \Large \hat n &= \Large \frac{n_i}{1 - \beta_2^i} \\ \Large \theta_{i+1} &= \Large\theta_i - \frac{\eta \hat m}{\sqrt{\hat n + \varepsilon}} \end{aligned}

覺得複雜可以先這樣看看
y=kx+by=k(x+bk) \Large y = kx + b \Rightarrow y = k(x + \frac{b}{k})
把原來的式子全部整合爲一個
θi+1=θiηβ2ni1+(1β2)g(θi)21β2i+ε(β1mi1+(1β1)g(θi)1β1i) \Large \theta_{i+1} = \theta_i - \frac{\eta } {\sqrt{\frac{\Large \beta_2 n_{i-1} +(1-\beta_2)g'(\theta_{i})^2}{1 - \beta_2^i} + \varepsilon}} \left(\frac{\Large\beta_1m_{i-1} + ( 1 - \beta_1)g'(\theta_{i})}{1 - \beta_1^i}\right)
也就是說,AdamRMSpropMomentum的整合。讓學習率ww和偏移都進行一種變化的適配。

在收斂的同時,還能避免局部最優解的限制。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章