李宏毅機器學習筆記(3)—Gradient Descent

Gradient Descent 的技巧

下圖是對偏微分的書寫形式的補充說明,可以用倒三角來表示偏微分組成的向量,也就是梯度。所以下圖左側的式子可以寫成下圖右側的式子。這種使用某一字符代表向量的寫法可以大大簡化書寫,倒三角表示偏微分向量也能夠簡化書寫。
在這裏插入圖片描述

Tip 1: Tuning your learning rates

第一個技巧也就是改變 learning rates 的速率。可以預見的是過小的 learning rates 會讓參數收斂的十分緩慢,過大的 learning rates 會讓參數無法收斂或是說出現震盪現象。所以一個合理的想法就是我們應該去調整 learning rates。
以下圖片描述的想法是,一開始我們應該讓 learning rates 較大,爲了快速收斂,但一段時間後爲了不出現震盪,我們應該縮小 learning rates,所以就有了下圖的 η/sqr(t+1),其中 t 是指迭代的次數。
在這裏插入圖片描述
但是這僅僅是一種十分簡單粗暴的方法,肯定是不太能適用於一般情況。所以我們考慮給每個不同的參數不同的 learning rates 。
在下圖中可以看到,爲了讓learning rates 有合適的變化,我們採用了一種叫Adagrad 的方式,其中η是與時間有關的(公式在下圖上側),g 就是偏微分,而σ與前 t 個參數相關,是前 t 個參數的均值平方根,σ 的具體計算方法在下一頁PPT中給出。
在這裏插入圖片描述
下圖以每次迭代的w的值爲例,展示了具體如何計算 σ。
在這裏插入圖片描述
並且,式子中的sqr(t+1)可以消去,所以公式如下:
在這裏插入圖片描述
顯然,AdaGrad 的方法可以根據每個參數歷次的微分值來調整learning rates的大小,使得學習速率更加合理。
最後,爲何要這樣設置 learning rates的值呢?是根據下圖右上方的公式來的:最佳的步長是一次微分的絕對值除以二次微分的值,而二次微分的可以用一次微分的均值平方根來近似(根據下圖而做出的合理推測。二次微分的大小是一次微分的斜率,而一次微分的斜率可以用一次微分的大小來估計,至少在下圖中是這樣的)。
在這裏插入圖片描述

Tip 2: Stochastic Gradient Descent(隨機梯度下降)

下圖展示了一般梯度下降和隨機梯度下降的區別:
①一般的梯度下降,公式中包含了所有的 n 個訓練數據,所以在求一趟微分的時候使用了所有的數據;而隨機梯度下降,公式如下所示,它只是使用了n個訓練數據中的一個。
②這兩種公式的區別首先是速度,當一般方式使用完所有數據的時候,隨機下降的方式已將所有數據都用了一次,也就是已經遞歸了 n 次。也就是說,在一般方式觀察了n個數據並且遞歸了一次的時候,隨機方式就可以使用n個數據進行n次遞歸。
③根據下一張圖可以發現,隨機下降的方式收斂的方向不是特別穩定,但是即使是這種不太穩定的趨近方式,也可以很好地逼近最佳值(畢竟人家都迭代了20次了對吧),在同樣的時間內收斂的效果反而要優於一般的下降方式。
在這裏插入圖片描述
在這裏插入圖片描述

Tip 3: Feature Scaling(特徵縮放,特徵歸一化)

Feature Scaling 的方式可以顯著地提升收斂的效率(見下圖)。縮放後,可以讓每次迭代都向着圓心(最小值)前進,這是橢圓無法做到的(當然此處只考慮了二維的情況)。
在這裏插入圖片描述
下圖展示了 Feature Scaling 的方式:求出每一維變量的期望(下圖的 mean)和標準差(standard deviation),然後對 R 組數據的每一維變量都進行標準化(歸一化),這樣得到的每一維的變量都介於[0,1]。
在這裏插入圖片描述

發佈了14 篇原創文章 · 獲贊 0 · 訪問量 450
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章