1. 程式人生 > >臺大李巨集毅--梯度下降Gradient Descent

臺大李巨集毅--梯度下降Gradient Descent

一:簡單梯度下降

1. 概述

預測模型為 y = b + w x c

p ,真實標籤為 y ^ n ,則損失函式loss function為
這裡寫圖片描述

我們目的是最小化 損失函式L(w,b),即找出最佳的 w , b

這裡寫圖片描述

處理方法 : 梯度下降法

2. 僅含一個引數的梯度下降

對某一個引數的偏導數,就是對損失函式在這個引數的方向的斜率

這裡寫圖片描述

即,就是
這裡寫圖片描述

這裡寫圖片描述

然後,不對向極點逼近

這裡寫圖片描述

3. 含多個引數的梯度下降

這裡寫圖片描述

我們可以多個引數 列在一起,變成一個列向量。
這裡寫圖片描述

同時,通過鏈式法則,直接可以求出每一個點的偏導數的值
這裡寫圖片描述

梯度下降可能會出現一些問題。
1. 我們下降到一個區域性最優值,但是不是全域性最優值。
2. 下降到下圖中第二種情況。這個地方的導數也是為0。但是也不在最優點,而且可能離最優點很遠
3. 下降到下圖中第一種情況。這個地方的導數約為0。而且離最優點更遠

以上三種情況,都會對結果產生影響。
但是,線上性迴歸中,不用考慮這種問題。因為,線性迴歸的loss fuanction 損失函式是 ( y ^ y ) 2 ,即是平方。所以是個凸函式,呈現一個碗狀。有且僅有一個最優值。上面三種情況不會出現。

這裡寫圖片描述

二: Tuning your learning rates 與 Adagrad演算法

1. 回顧

問題 最小化L , 求對應的引數
這裡寫圖片描述

方法:梯度下降,如下
這裡寫圖片描述

2. 使用可變 learning rates

這裡寫圖片描述
在多個變數情況下,我們畫不出左圖的情況,但是可以畫出右圖的情況。所以,編程式碼時,要畫出右圖,時時關注曲線變化,才能夠找到自己的learning rates是否設定的合理
如上圖所示,左右兩圖對照著看
1. 紅色表示learning rates 正好
2. 藍色表示learning rates 過小,可以到達谷底,但是速度太慢,如右圖
3. 綠色表示learning rates過大,先下降很快,但是最後卡在了一個地方,就是下降不下來
4. 黃色表示learning rates太大,直接飛出去了,損失函式不僅沒降下來,還增大了

發現,learning rates 的不同,直接影響了最終結果的好壞。因此有了,時時改變learning rates的想法。
基本想法:
learning rates 不能一成不變。根據引數的不同,給出不同的learning rates
1. 一開始, 離目的地遠,所以learning rates可以大一些。即,一次跨大步子大。
2. 幾個回合後,離得目的地近,調小learning rates,避免出現上圖中綠色線一樣,最終卡得不能走下去。
比如這裡寫圖片描述

3. Adagrad 演算法

普通梯度下降
這裡寫圖片描述

Adagrad 演算法
這裡寫圖片描述

其中:
這裡寫圖片描述
這裡寫圖片描述

這裡寫圖片描述
這裡寫圖片描述

所以,最終Adagad演算法核心為:
這裡寫圖片描述

三: Stochastic Gradient Descent 隨機梯度下降

Make the training faster
訓練速度明顯優於上面的梯度下降

原理: 一次僅僅處理一個數據,進行更新引數。等每個資料都處理了一遍,引數也就更新完了。
實驗表明,
1. 假如有20個數據,每次僅僅處理一次資料,處理20次 ——————隨機梯度下降
2. 直接20個數據一次處理完,僅處理一次——————————普通梯度下降
以上兩種情況,第一次的速度明顯優於第二次。

這裡寫圖片描述
這裡寫圖片描述

四: Feature Scaling 特徵標準化

比如:

這裡寫圖片描述

為什麼要將特徵標準化???

這裡寫圖片描述
如上圖所示,左圖特徵不在一個量級,右圖特徵在一個量級。那麼左圖等高線影象為不規則橢圓,右圖等高線影象接近與圓。
對二者都進行梯度下降。如圖所示,你會發現,
左圖梯度下降很曲折,走了很多彎路,且很容易到達區域性最優,且當learning rates取得不合適時,根本走不到谷底。
但是右圖就很容易達到最優值,達到谷底。

一種標準化的方法:

這裡寫圖片描述
對於每一個特徵:
這裡寫圖片描述
此時每一個維度 平均值都為0 。方差都為1。

四: 梯度下降數學解釋(梯度下降與泰勒級數)

一元泰勒級數

這裡寫圖片描述

多元泰勒級數(二元)

這裡寫圖片描述
僅僅保留一階導數叫做 梯度下降。
用二階導數 就是 Hessian矩陣。

多元泰勒級數與梯度下降

這裡寫圖片描述

那麼梯度下降,就是梯度方向一小步一小步向下走,走到最低端。如下圖。
這裡寫圖片描述

在二元泰勒級數上,我們去掉高階導數,僅僅留一階導數
這裡寫圖片描述
要找到最小的 ( θ 1 , θ 2 ) 最小化L
同時點 ( θ 1 , θ 2 ) 要在紅色小圓內,所以
這裡寫圖片描述


Δ θ 1 = θ 1 a
Δ θ 2 = θ 2 b

L ( θ ) s + u Δ θ 1 + v Δ θ 2 = s + ( u , v ) ( Δ θ 1 , Δ θ 2 )
其中s是常數,不變,那麼就是怎樣最小化 ( Δ θ 1 , Δ θ 2 ) 與(u,v)兩個向量的點積。
兩個向量的點積什麼時候最小?
u , v ) ( Δ θ 1 , Δ θ 2 ) = | u , v ) | ( Δ θ 1 , Δ θ 2 ) c o s ( θ )
則,兩個向量的模值最大,且方向相反(即180度)。此時兩個向量的點積最小。
( Δ θ 1 , Δ θ 2 ) c o s ( θ ) 方向必須在圓內,所以點最佳在圓上。
所以
這裡寫圖片描述


這裡寫圖片描述


這裡寫圖片描述
綜上:
這裡寫圖片描述