李弘毅老師機器學習2021心得-4,強化Optimization的方式

--

Optimization

為什麼我們優化會遇到問題呢,不是就gradient descent慢慢地滑下去就好了? 那是因為我們在往下滑的過程會卡住,卡在critival point(gradient 為0,所以不會在下降了),也就是下面兩個點。兩者的差距為saddle point還有方向可以往下滑,但是local minima就沒方向可以再往下滑了。

https://cdn-images-1.medium.com/max/800/1*J02CseWBF5cO-B-NrSpmWA.png

所以我們要知道我們到底卡在哪裡呢?

這就要用到數學相關的東西,Tayler Series Approximation

https://cdn-images-1.medium.com/max/800/1*wAZ_abney_REMNl6JROCVA.png

我在微積分學過這個東西,但從來沒看過這樣的形式,但其實這只是用線性代數來表示,gradient就類似微積分的一次微分,Hession就類似微積分的二次微分,所以這邊就只是到2次微分的泰勒展開式。

有關於泰勒展開式可以看這篇文章: 1 泰勒展開:多項式逼近函數

有關Gradient and Hession可以看這篇文章: 矩陣導數

至於泰勒展開式與Hession有關的文章有這篇: 答張盛東──關於 Hessian 矩陣與多變量函數的泰勒展開式

回到我們主題來,所以我們可以透過這個function來看critical point附近是大還是小。例如,我們透過這個近似function知道critical point附近都是大於critical point的值,我們就知道他是local minima。

https://cdn-images-1.medium.com/max/800/1*cSbCzCa4g2kka0SX9sME6w.png

因為在critical point,所以gradient = 0,所以影響我們的只有Hession。我們透過設定變數v,把紅色這項簡化為這樣。

https://cdn-images-1.medium.com/max/800/1*4fuM23nJYTS9QL6brHYmzw.png

紅色框框簡化

所以我們現在是要把所有可能的v都帶入嗎,算算看critical point附近所有點的值嗎? 一定不可能,這時候線性代數拯救了我們,我們可以透過確認Hession 的 eigen value 來得知是哪個點,如上圖所示。

有關eighen value的教學同樣可以看老師的線性代數: Linear Algebra Lecture 25: Eigenvalues and Eigenvector

Saddle point繼續更新

當我們知道此點是saddle point時,我們知道這個還有救,但我們以前都是更具gradient point的方向來繼續更新,現在gradient point等於0,我們要透過哪一個來幫我們繼續在saddle point update參數呢? 透過Hession可以幫助我們在Saddle point上面繼續更新。

https://cdn-images-1.medium.com/max/800/1*P-wR1AHK-lC2OHOd8ZttUQ.png

我們可以先把原本的v假設成eigen vector,把它乘開來,就變成右上了的形式,又此時剛來eighen value等於負,那個紅色那項就會變成負的。簡單說,就是先找saddle point的負值eigen value,再找他的eigen vector,沿者此vector update,就可以了。

Saddle point vs Local Minima

最常問的是,請問哪一個比較常出現呢? 一個點或許在低維度看起來是local minima,但在高維度其實是saddle point,而我們在訓練的時候,參數都是幾千萬以上,所以維度幾千萬以上,這樣是不是有超級多路走呢?

https://cdn-images-1.medium.com/max/800/1*B1mj3Az6lQmFu7GtcP-I0Q.png

2維 and 三維

經驗上是對的,基本上都是saddle point。

--

--

Kola (Yan-Hao Wang)
Kola (Yan-Hao Wang)

Written by Kola (Yan-Hao Wang)

在系統軟體跟資安領域學習的學生

No responses yet