點擊上方“AI有道”,選擇“星標”公衆號
重磅乾貨,第一時間送達
深度學習中我們總結出 5 大技巧:
1. Adaptive Learning Rate
我們先從Adaptive Learning Rate 談起,我Gradient Decent 中我們已經討論了:
AdaGrad :
緊着AdaGrad的步伐,我們進一步看:
RMSProp
神經網絡訓練的時候,Error Surface 很有可能非常複雜
RMSProp其實和AdaGrad 是一樣的思路,但是具體求分母的時候,它考慮了歷史gradient和新的g的權重a 。
Momentum
如何找到最優的網絡參數呢?
optimize loss 的時候,很有可能就會遇到如下三大問題:
-
慢 very slow
-
局部最優 local minimal
-
鞍點 saddle point
我們可以考慮在物理世界的場景進行映射:小球從山上滑落,在局部最低的時候,他的動量讓它衝出局部。
我們複習一下梯度下降:Gradient的方向和Movement 的方向相反
當我們考慮運動的動量後:
-
運動不在是基於梯度,而是基於以前的運動
-
Movement not just based on gradient, but previous movement.
其中 movement = laststep of movement - present gradient
Momentum 雖然不能保證走出“困境”,但是這是一個巨大的進步
Adam 算法
Adam 算法是結合 RMSProp 和 Momentum, 來尋找最優解。看起來比較複雜,
實際上懂 RMSProp 和 Momentum後,也就很快理解了。
2. New activation function
深度學習中我們總結出5大技巧:本節我們就從新的激活函數Relu談起。
新的激活函數 new activation function
我們知道,激活函數在基於神經網絡的深度學習中將線性變換,轉換爲非線性變換。是神經網絡能夠學到東西的重要一環。常用的激活函數有sigma, tanh 等。
從辛頓大神在2012年imagenet 中的CNN網絡中引入relu,這個神奇的看上去是線性的激活函數進入我們的視野,以後扮演者非常重要的作用。
那爲什麼要引入relu,sigma、tanh 函數有什麼缺點呢?
最主要的問題在於deep learning 無法真正deep:
如圖所示,訓練上8層之後,正確率急速下降。 這是爲什麼呢?
主要原因在於梯度消失Vanishing Gradient Problem
如圖所示:傳統的激活函數,數據變化後,輸出的變化比輸入小,而且根據ChainRule, 層數越深,梯度值相乘的結果越小,小到接近於0的時候,就無法學習了。
所以,我們引入Relu,他的特點是:
1. 計算快速(導數是1)
2. 生物學原理(貌似是大腦回路,不太瞭解)
3. linear piece 可以模擬任何函數(在以後的深度學習理論會講)
4. 重點是:可以解決梯度消失的問題
Relu 可以簡化神經網絡:
雖然Relu看起來很好(有嚴格數學證明,以後會深入講),但是在小於0的時候導數爲0,對於參數學習是不利的:所以我們引入Relu的變種:leaky Relu, Parametirc Relu, 以後還會談到 Selu
本專欄圖片、公式很多來自臺灣大學李弘毅老師、斯坦福大學cs229、cs231n 、斯坦福大學cs224n課程。在這裏,感謝這些經典課程,向他們致敬!
作者簡介:武強 蘭州大學博士,谷歌全球開發專家Google Develop Expert(GDE Machine Learing 方向)
CSDN:https://me.csdn.net/dukuku5038
知乎:https://www.zhihu.com/people/Dr.Wu/activities
漫畫人工智能公衆號:DayuAI-Founder
系列筆記:
推薦閱讀
(點擊標題可跳轉閱讀)
最新 AI 乾貨,我在看