昨天說在做深度學習的時候,我們可能會卡在Local minimum、saddle point、甚至是plateau,所以接下來我要介紹一個heuristic的方法,來解決這些問題。
它的原理是,在真實世界中,如果下圖是一個山坡,當你把一個球丟下去,我們知道它滾到plateau的地方,因為有慣性,所以它不會停下來,而就算是走到上坡的地方,只要這個坡沒有很陡,因為慣性它可能還是可以翻過這個山坡,那它就可以找到比這個local minimum還要好的地方。
當我們加上Momentum的時候,我們每一次移動的方向我們不只考慮Gradient,還考慮了前一個時間點移動的方向 ,下圖中綠色的虛線就代表慣性的方向。
下圖中就算到了Local minimum還是會藉由慣性繼續往右走,而只要Momentum比gradient強,就會繼續往右走,所以有可能會藉著慣性而跳出Local minimum找到更好的結果。
Adam結合了RMSProp跟Momentum的優點,是很常用的優化器(optimizer), 就是momentum(前一個時間點的movement), 就是昨天提到RMSProp裡面的 ,其中它考慮了RMSProp跟Momentum裡面都沒有的偏差修正(bias-correction)去更新參數。