臨界點其實不一定是在訓練神經網絡過程中遇到的最大阻礙。
隨著對參數的不斷更新,Loss值會不斷下降,直至幾乎沒有變化,不再下降。當參數更新到臨界點時,意味著gradient非常小,所以要認定參數是否到達臨界點應當確認gradient值是否很小。當Loss不再下降時,且gradient沒有很小,則說明此時參數并未到達臨界點。
訓練停滯小的梯度
Loss幾乎不再變化,但gradient卻還在變化,可以發生了鋸齒現象。
梯度下降法的鋸齒現象是指在優化過程中參數更新呈現來回震蕩的趨勢,導致迭代路徑形成類似鋸齒的形狀。這種現象通常發生在目標函數具有高頻振蕩特性或學習率設置過高時,參數更新可能超過最優解并反復震蕩。 ?
學習率也可以理解為步長,如果太大會產生震蕩的效果,但是如果太小則很難靠近真正的Loss值最小的點。?
學習率應當為每一個參數量身定做。
如果在某一個方向上變化十分平坦(坡度很小),則我們希望學習率可以變大一些,如果在某一個方向上非常陡峭(坡度很大),我們希望學習率可以變小一些。
原先的式子:
可以自動調整學習率的式子:
i表示第i個參數(某一個參數),t代表的是參數的迭代次數,是學習率。
Root Mean Square
當在一條坡度較小的曲線上時,算出的均方根較小所以學習率(紅框)就大,步伐大;反之在一條坡度較大的曲線上時,算出的出的均方根較小所以學習率(紅框)就小,步伐小。
以上所考慮的是同一個參數,其梯度的大小(變化率)是固定差不多的值。
RMSProp
但是實際上,情況會十分復雜,就算是同一個參數、同一個方向,也想要學習率可以動態調整。
第一步,與均方根的方法相同。第二步?,均方根中每一個gradient都有同等的重要性,但在RMSProp中,可以自己調整現在的這個gradient的權重。
學習率調整機制(Learning Rate Scheduling)
為防止出現大幅波動的情況,引入學習率調整機制。
此時的與時間有關。
Learning Rate Decay
隨著時間的不斷進行,隨著參數不斷的更新,讓其越來越小,因為一開始距離終點很遠,隨著參數的不斷更新,距離終點你越來越近,所以把學習率減小,讓參數的更新慢下來。
Warm Up?
Warm Up的思想是讓先變大再變小。
總結
Momentum和都是考慮到過去所以的gradient,它們會不會相互抵消呢,其實他們在使用過去所有gradient的方式不同。Momentum是直接將所有的gradient通通加起來,所有它有考慮方向,也有考慮gradient的正負號。但是均方根就不考慮gradient方向了,它只考慮的是gradient的大小。所有它們不會互相抵消掉。