rmsprop
首先,我們看乙個非常經典的自適應學習率優化演算法:rmsprop。rmsprop 雖然不是最早提出的自適應學習率的優化演算法,但是它卻是相當實用的一種,它是諸如 adam 這樣更綜合的演算法的基石,通過它我們可以觀察自適應學習率的優化演算法是怎麼做的。
演算法概覽
一般的梯度下降是這樣的:
很明顯,這裡的 γ 是乙個超引數,便是學習率,它可能需要在不同階段做不同的調整。而 rmsprop 則是:
演算法分析
對比樸素的 sgd,可以發現 rmsprop 在對 θ 的更新中,將原來是標量的學習率 γ,換成了乙個向量。
如果把這個向量也看成是學習率,那麼 rmsprop 就是找到了乙個方案,能夠給引數的每個分量分配不同的學習率。
這個學習率的調節,是通過因子來實現的,而則是梯度平方的滑動平均。本質上來說,「滑動平均」平均只是讓訓練過程更加平穩一些,它不是起到調節作用的原因,起作用的主要部分是「梯度」,也就是說,可以用梯度大小來調節學習率。
自適應學習率
為什麼用梯度大小可以來調節學習率呢?其實這個思想非常樸素。
極小值點和ode
話不多說,簡單起見,我們先從乙個一維例子出發:假設我們要求 l(θ) 的乙個極小值點,那麼我們引入乙個虛擬的時間引數 t,轉化為 ode:
不難判斷,l(θ) 的乙個極小值點就是這個方程的穩定的不動點,我們從任意的 θ0 出發,數值求解這個 ode,可以期望它最終會收斂於這個不動點,從而也就得到了乙個極小值點。
最簡單的尤拉解法,就是用
去近似,從而得到:
也就是:
這就是梯度下降法了,θt+γ 相當於 θn+1,而 θt 相當於 θn,也就是每步前進 γ 那麼多。
變學習率思想
問題是,γ 選多少為好呢?當然,從「用
去近似」這個角度來看,當然是 γ 越小越精確,但是 γ 越小,需要的迭代次數就越多,也就是說計算量就越大,所以越小越好是很理想,但是不現實。
所以,最恰當的方案是:每一步夠用就好。可是我們怎麼知道夠用了沒有?
因為我們是用
去近似的,那麼就必須分析近似程度:根據泰勒級數,我們有:
在我們這裡有,那麼我們有:
可以期望,當 γ 比較小的時候,誤差項,也就是說,在一定條件下,γ∣l′(θt)∣ 本身就是誤差項的度量,如果我們將 γ∣l′(θt)∣ 控制在一定的範圍內,那麼誤差也被控制住了。即:
其中 γ̃ 是乙個常數,甚至只需要簡單地 γ∣l′(θt)∣=γ̃(暫時忽略 l′(θt)=0 的可能性,先觀察整體的核心思想),也就是:
這樣我們就通過梯度來調節了學習率。
滑動平均處理
讀者可能會詬病,把 γ=γ̃/∣l′(θt)∣ 代入原來的迭代結果,不就是:
整個梯度你只用了它的符號資訊,這是不是太浪費了?過於平凡:也就是不管梯度大小如何,每次迭代 θ 都只是移動固定的長度。
注意,從解 ode 的角度看,其實這並沒有毛病,因為 ode 的解是一條軌跡 (t,θ(t)),上面這樣處理,雖然 θ 變得平凡了,但是 t 卻變得不平凡了,也就是相當於 t,θ 的地位交換了,因此還是合理的。
只不過,如果關心的是優化問題,也就是求 l(θ) 的極小值點的話,那麼上式確實有點平凡了,因為如果每次迭代 θ 都只是移動固定的長度,那就有點像網格搜尋了,太低效。
所以,為了改善這種不平凡的情況,又為了保留用梯度調節學習率的特徵,我們可以把梯度平均一下,結果就是:
這個 λ 是乙個接近於 1 但是小於 1 的常數,這樣的話 gt 在一定範圍內就比較穩定,同時在一定程度上保留了梯度 l′(θt) 本身的特性,所以用它來調節學習率算是乙個比較「機智」的做法。為了避免 t+γ̃,t+γ 引起記號上的不適應,統一用 n,n+1 來表示下標,得到:
這就是開頭說的 rmsprop 演算法了。
高維情形分析
上面的討論都是一維的情況,如果是多維情況,那怎麼推廣呢?
也許讀者覺得很簡單:把標量換成向量不就行了麼?並沒有這麼簡單,因為 (13) 推廣到高維,至少有兩種合理的選擇:
或:前者用梯度的總模長來累積,最終保持了學習率的標量性;後者將梯度的每個分量分別累積,這種情況下調節後的學習率就變成了乙個向量,相當於給每個引數都分配不同的學習率。要是從嚴格理論分析的角度來,其實第一種做法更加嚴密,但是從實驗效果來看,卻是第二種更為有效。
我們平時所說的 rmsprop 演算法,都是指後者 (15)。但是有很多喜歡純 sgd 煉丹的朋友會詬病這種向量化的學習率實際上改變了梯度的方向,導致梯度不准,最終效果不夠好。所以不喜歡向量化學習率的讀者,不妨試驗一下前者。
結論彙總
本文再次從 ode 的角度分析了優化演算法,這次是從誤差控制的角度給出了一種自適應學習率演算法(rmsprop)的理解。至於我們更常用的 adam,則是 rmsprop 與動量加速的結合,這裡就不贅述了。
將優化問題視為乙個常微分方程的求解問題,這其實就是將優化問題變成了乙個動力學問題,這樣可以讓我們從比較物理的視角去理解優化演算法(哪怕只是直觀而不嚴密的理解),甚至可以把一些 ode 的理論結果拿過來用,後面筆者會試圖再舉一些這樣的例子。
逆向動力學
ik controller 指令碼的幾個關鍵函式 start 函式獲取遊戲物件的 animator 元件,onanimator ik 函式 包含了所有和 ik 設定相關的 使用 animator 元件的 setlookatweight 函式和 setlookposition 函式 把玩家的視線方向設...
人類行為動力學
人類行為動力學 人類行為特性,關注人類日常的行為模式,力圖挖掘新的統計規律,並建立相應的動力學模型。1 屬於統計物理學中複雜系統 研究物件 人日常的行為模式 研究目標 力圖挖掘新的統計規律,並建立相應的動力學模型 研究方式 觀察 獲取和分析資料 挖掘規律 建模再現 1 探索人類非泊松行為特徵的動力學...
酶促反應動力學 酶促反應動力學都有什麼內容?
關於 酶促反應動力學都有什麼內容?是內科主治醫師考試會涉及的重要內容,為了幫助各位考生及時鞏固,醫學教育網為大家整理如下 一 底物濃度對反應速度的影響 公尺 曼氏方程式 s 底物濃度。v 反應速度。vmax 最大反應速度。m 等於酶促反應速度為最大反應速度一半時的底物濃度。二 影響酶促反應速度的因素...