[ML筆記] Regression part 3 - Gradient Descent


ML Lecture 3: Gradient Descent


本篇為台大電機系李宏毅老師 Machine Learning (2016) 課程筆記
上課影片:
https://www.youtube.com/watch?v=yKKNr-QKz2Q
課程網 (投影片出處):
http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML16.html



螢幕快照 2017-06-16 下午2.07.34.png
Loss function L 是一個 function 的 function
目的是要找一組參數 讓這個 Loss function 越小越好
做法是隨機選一組 起始的值,扣掉 learning rate 乘上對 的偏微分,就可以得到下一組
螢幕快照 2017-06-16 下午2.12.36.png
Tip 1 : 要小心調整 Learning Rate
螢幕快照 2017-06-16 下午2.13.46.png
Learning Rate 剛剛好:紅色的箭頭,太大:黃色、綠色箭頭,太小:藍色箭頭
Learning Rate 設定的策略
一開始先跨大步一點,後面跨小步一點
螢幕快照 2017-06-16 下午2.17.20.png
更細節的作法 “因材施教”,針對每個不同的參數,都給他不同的 Learning Rate


Adagrad (更新 learning rate 的策略)


每一個參數的 Learning Rate 都分開來考慮


螢幕快照 2017-06-16 下午2.19.21.png
螢幕快照 2017-06-16 下午2.23.30.png


假設 w 是某一個參數,t 是時間
gt 是偏微分的值
t: Time Dependent  的 Learning Rate
t: 是過去所有微分的值的 rms (root-mean-square)

螢幕快照 2017-06-16 下午2.26.06.png
使用 Adagrad 的參數 update 的速度,整理而言是越來越慢的


螢幕快照 2017-06-16 下午3.42.56.png
Gradiant Descent 的參數更新,要看微分的值,越大  update 越快
在 Adagrad 的公式裡面,分子紅色部分是微分越大,參數 update 的步伐越大
但是分母藍色部分的效果,影響當微分越大,參數  update 步伐越小,跟分子的影響衝突
螢幕快照 2017-06-16 下午4.04.53.png
直觀的解釋就是 Adagrad 分母這一項可以用來看單點反差的效果
假設有個參數,他算到其中一個點算出來特別大
或是算到某一次出現特別小的值
adagrad 利用過去 gradiant 的平均來看反差的效果
螢幕快照 2017-06-16 下午4.08.45.png
假設我們要在二次函數當中,找到最低點
那踏出去的步伐,最理想的一步到位是 (x0 + b/2a)
螢幕快照 2017-06-16 下午4.11.11.png
c 點離最低點比較近,微分值比較大
a 點離最低點比較遠,微分值比較小
當我們同時考慮好幾個參數時,就不能單看一次微分值的大小,還必須考慮其他的參數變化情形
所以最好的考量要把二次微分考慮進來,放在分母做平均
螢幕快照 2017-06-16 下午4.14.12.png
螢幕快照 2017-06-16 下午4.14.43.png
所以在 adagrad 當中,分母的那一項就是在不多做二次微分的情形下,想辦法模擬二次為分結果的情形
螢幕快照 2017-06-16 下午4.16.15.png


Tip 2 : Stochastic Gradient Descent
讓 training 加快
螢幕快照 2017-06-16 下午4.19.10.png
一般的 Gradient Descent : 看到目前為止的 sample 做 Loss 加總與平均,計算 update 參數的方向結果
Stochastic 的想法:隨機取一個  sample 出來算 Loss
update 參數的時候,只考慮那一個 sample 的情形,就直接  update 一次參數!
螢幕快照 2017-06-16 下午4.21.41.png
這樣做法可以很快速的更新參數,快速地找到更新參數的方向
Tip 3 : Feature Scaling
螢幕快照 2017-06-16 下午4.35.00.png
使用情境:假設我們的 model 有兩個 feature: x1 , x2  若這兩個  feature 的分布很不一樣
那我們要透過 scaling 讓他們兩個分布一致


螢幕快照 2017-06-16 下午4.36.33.png
為何要做 Feature Scaling 讓參數的影響一致呢?
如上例
w1 對於 Loss 的影響比較小 input 的值只有 1,2,3, ...
w2 對於 Loss 的影響比較大 input 的值動輒 100, 200, …


所以沒有 scaling 之前,他們的關係圖是個橢圓形
但是 after scaling 後,他們的影響關係是個正圓形,這樣的話不管在區域的哪一個點,就會像圓心走,所以做完 feature scaling 後再做 gradient descent 會比較有效率!
螢幕快照 2017-06-16 下午4.59.57.png做法: 每個 data 扣掉平均 / 標準差
Gradient Descent Theory
螢幕快照 2017-06-16 下午5.01.42.png  
問題:每次更新參數後,得到的 Loss 值也會跟著下降?
NO! 不正確,更新參數後,Loss 不見得會下降!


warning of math!
螢幕快照 2017-06-16 下午5.03.40.png
對於每一個參數 theta 畫一個範圍,找出範圍內的最小值,更新中心點參數,再畫一個區域繼續做下去,直到參數無法再更新為止
那要怎麼在紅色的圈圈區域中,找出一個可以讓 Loss 最小的參數呢?
螢幕快照 2017-06-16 下午5.03.45.png
這個問題要使用泰勒展開式來看
螢幕快照 2017-06-16 下午5.03.50.png
隨著考慮進來的式子越複雜,就越接近橙色這條線,本例中的 Model 考慮的次數越高越複雜,就能模擬越接近 sin function 的形狀
螢幕快照 2017-06-16 下午5.03.55.png
泰勒展開式: for 多參數的情形
螢幕快照 2017-06-16 下午5.04.00.png
紅色圈圈內的式子,可以簡化成最下面那行
螢幕快照 2017-06-16 下午5.04.04.png
在紅色圈圈內找最小的 L
螢幕快照 2017-06-16 下午5.04.12.png
s 不用管
螢幕快照 2017-06-16 下午5.04.18.png


Gradient Descent 的限制
會卡在 Local Minima 或是 saddle point

留言

這個網誌中的熱門文章

[筆記] CRLF跟LF之區別 --- 隱形的 bug

[ML筆記] Batch Normalization

[筆記] 統計實習(1) SAS 基礎用法 (匯入資料並另存SAS新檔,SUBSTR,計算總和與平均,BMI)

[ML筆記] Ensemble - Bagging, Boosting & Stacking