機器學習與深度學習系列連載: 第二部分 深度學習(二)梯度下降
阿新 • • 發佈:2018-11-04
梯度下降 Gradient Decent
我們回憶深度學習“三板斧”,
- 選擇神經網路
- 定義神經網路的好壞
- 選擇最好的引數集合
其中步驟三,如何選擇神經網路的好壞呢?
梯度下降是目前,最有效的方法之一。
方法:我們舉兩個引數的例子
,
, 損失函式是L。那麼它的梯度是:
那我為了求得最小值,我們有:
引數不斷被梯度乘以學習率η 迭代
那麼上述公示公為什麼是減號,不是加號呢?
我們定義
改變的方向是movement的方向, 而gradient的方向是等高線的法線方向
基礎的Gradient Decent已經介紹完了,接下來,我們一起探討GD的使用技巧。
Learning rate學習率的設定
Learning Rate η 如果設定不好,Loss反而增大
自適應的學習率 adaptive learning rate
很多小夥伴在機器學習程式碼中,學習率一般都是設定為一個固定的數值(需要不斷調參)。
根據學習經驗,一般的我們有如下結論:
- 訓練剛開始的時候,學習率較大,
- 經過幾輪訓練後,結果慢慢接近的時候,需要調小學習率
Adagrad 的學習率是現有學習率 除以 導數的平方和的開根號
Stochastic Gradient Decent (SGD)
讓訓練更加快速
一般的GD方法是所有的訓練資料後,進行一次引數更新
SGD是一個樣本就可以更新引數,
GD和SGD的對比效果:
特徵裁剪 Feature Scaling
讓不同維度的資料,有相同的變化幅度
訓練的時候,哪一個好train,一目瞭然
歸一化方法:
總結: Gradient Decent 是機器學習、深度學習求解Optimal問題的“普世”方法,但是也會遇到很多問題,
例如local minima 和 saddle point 的問題。 我們以後會展開討論。
本專欄圖片、公式很多來自臺灣大學李弘毅老師、斯坦福大學cs229,斯坦福大學cs231n 、斯坦福大學cs224n課程。在這裡,感謝這些經典課程,向他們致敬!