我們回憶深度學習“三闆斧”:
1. 選擇神經網絡
2. 定義神經網絡的好壞
3. 選擇最好的參數集合
其中步驟三,如何選擇神經網絡的好壞呢?
梯度下降是目前,最有效的方法之一。
方法:我們舉兩個參數的例子 θ1、θ2, 損失函數是L。那麼它的梯度是:
那我為了求得最小值,我們有:
參數不斷被梯度乘以學習率η 疊代
那麼上述公示公為什麼是減号,不是加号呢?
我們定義 θ 改變的方向是movement的方向, 而gradient的方向是等高線的法線方向
基礎的Gradient Decent已經介紹完了,接下來,我們一起探讨GD的使用技巧。
Learning rate學習率的設定
Learning Rate η 如果設定不好,Loss反而增大
自适應的學習率 adaptive learning rate
很多小夥伴在機器學習代碼中,學習率一般都是設定為一個固定的數值(需要不斷調參)。
根據學習經驗,一般的我們有如下結論:
1. 訓練剛開始的時候,學習率較大
2. 經過幾輪訓練後,結果慢慢接近的時候,需要調國小習率
Adagrad 的學習率是現有學習率 除以 導數的平方和的開根号
Stochastic Gradient Decent (SGD)
讓訓練更加快速
一般的GD方法是所有的訓練資料後,進行一次參數更新
SGD是一個樣本就可以更新參數
GD和SGD的對比效果:
特征裁剪 Feature Scaling
讓不同次元的資料,有相同的變化幅度
訓練的時候,哪一個好train,一目了然
歸一化方法:
總結: Gradient Decent 是機器學習、深度學習求解Optimal問題的“普世”方法,但是也會遇到很多問題,例如local minima 和 saddle point 的問題。 我們以後會展開讨論。