Gradient Descent (二)
我們做Gradient Descent 需要注意什麼呢?
-
Tuning your learning rates
η的大小控制不好,會造成很多問題:
如果η太小,我們w的移動速度太慢,而且會對資料量有一定要求
而如果太大了呢,w會一直在未走到最低點之前震盪,而無法走到最低點
甚至是這樣:
我們可以把引數的update和Loss值做一個曲線:
那有什麼辦法可以自動調節learning rate呢?
最基本的思路:learning rate隨著引數的update越來越小。
因為通常在開始的時候,我們設定的引數往往距離最低點比較遠,隨著update,距離最低點會越來越
近,也就更加“謹慎”一些
用一個簡單的式子可以表達成這樣:
也就是說,每個點都有一個不同的learning rate。
對求learning rate的方法中,一個比較簡單的就是Adagrad
什麼是Adagrad呢?
即learning rate等於它除以之前所有微分值的均方根
在我們之前的Gradient descent中,
而在Adagrad中:,其中
然後約分一下:
但是,如果仔細觀察這個式子,就會發現一些問題,在我們最開始的式子中,我們可以理解的:當斜率g越大時,w走一步跨的步子越大,但在我們剛剛得出的式子中,分子和分母中都存在g,是不是互相矛盾呢?
一種解釋是說Adagrad強調的是本次資料相對於其他資料的反差
-
Stochastic Gradient Descent
在原來的Gradient Descent中,我們是計算完所有的資料loss之後,update一次引數
而在Stochastic Gradient Descent中,我們計算每個資料的loss,每個都update一次引數
-
Feature Scaling
對, 如果x2比x1大很多,那就把x2的值縮小,讓x1和x2對y的影響相似
y
那具體怎麼做呢?
至於Gradient Descent的數學理論基礎,可以看一下泰勒公式......這個我們以後有空再說
PS:部落格中用到的圖片來著李老師的ppt