iT邦幫忙

2022 iThome 鐵人賽

DAY 14
5
AI & Data

OH~ AI 原來如此,互助就此開始!系列 第 14

Day 13. 深度學習模型 - 梯度下降改善

  • 分享至 

  • xImage
  •  

前面說過梯度下降是用來做最佳化,也就是調整參數的重要方法,今天的文章會附上了一段程式動畫來直觀看到梯度下降是怎麼調整預測,以及說明實際上學習的時候會遇到什麼問題和如何改善。

深度學習也是機器學習的一種,讓我們重新複習一下機器學習的三步驟:

  1. 決定模型:使用神經網路,有 w 和 b 參數。
  2. 算誤差(決定一個損失函數):
    • 回歸:通常用均方誤差(MSE)。
    • 分類:通常用對數損失函數或叫交叉熵(Cross-Entropy)
  3. 最小化損失函數(又叫最佳化,optimization):用反向傳播,也就是反向做梯度下降找出讓誤差最小的參數 w 和 b 的確切數值。

參數的初始值

在步驟1. 的部分,一開始參數 w 和 b 要用什麼數值呢?
也就是梯度下降時你的山坡起始點要從哪邊開始往下走。
因為從哪邊開始走沒考慮好會容易引起梯度消失,這邊學者做了很多研究,目前主要是配合激勵函數:

  • sigmoid,tanh 函數:使用 Xavier 初期值
  • ReLU 函數:使用 He 初期值

超參數(hyperparameter)

在步驟3. 的部分,梯度下降既然要下山,每次跨多大步也要設定,這個叫做學習率(learning rate)。

通常不是跨大步走的快就比較好,我們可以看看這張圖

步伐太小 步伐適中 步伐太太
https://ithelp.ithome.com.tw/upload/images/20220908/20150622792Kj2F8jZ.png https://ithelp.ithome.com.tw/upload/images/20220908/20150622EMeL1U7XHc.png https://ithelp.ithome.com.tw/upload/images/20220908/20150622iHYZ8Vb6Qv.png
學習率 = 0.02 學習率 = 0.1 學習率 = 0.99

步伐太小走到天荒地老,步伐太大一直走過頭。

像這種需要人決定的設定值,就叫做超參數
除了學習率,梯度下降也有幾個超參數要設定:

  • 訓練集要使用幾次(epoch)
    可以想成這本習題要讀完/複習幾次。
  • 每次參數更新用的資料量(batch size)
    這本習題一次要讀幾頁。
  • 參數更新的次數(iteration)
    這本習題讀幾次可以唸完整本。

1 epoch = iteration 次數 = 訓練集/batch size

舉例來說,訓練集有1000筆資料,batch size = 10,那麼 1次 epoch 會有 100次 iteration。也就是這本習題1000頁,一次只讀10頁要分100次唸完。

iteration 是由 batch size 決定的,所以 iteration 不用設定。
而正常學習的話 epoch 跑越多次 loss 會逐漸下降。多複習幾次學習成果越好的概念。

根據不同的 batch size 設定,有三種梯度下降法:

項目 batch mini-batch stochastic(簡稱SGD)
batch size 全部資料 資料的一部分 資料的一筆
安定性 安定 稍微安定 不安定
計算量

這邊用程式做了一段動畫,可以直觀看到梯度下降是怎麼改善預測,也能感受三種 batch size 的差異。假設訓練集有100筆:

batch(每次100筆) 訓練狀況
2 1
mini-batch(每次10筆) 訓練狀況
mini2 mini1
SGD(每次1筆) 訓練狀況
batch2 batch1

目前用 mini-batch 比較多。而 SGD 屬於 Online Learning 的一種,後面會介紹。

梯度下降的問題與改善

我們在下山的時候,有時候會碰到一個平地以為到山谷了,然後就停住的狀況。
這種會造成停留的地點就叫平穩點
以數學來說就是函數做微分求斜率結果為0的狀況。

以這張圖來說,在下山時有可能停在藍點(局部最優)或橘點(平穩點),但其實離真正的目的地(全局最優)還很遠。

https://ithelp.ithome.com.tw/upload/images/20220909/201506224pYt7EG8Oo.png

  • 平穩點(Stationary Point)
    該點切線斜率為0。

  • 局部最優解(Local Optimal Solution)
    某個範圍的最佳解

  • 全局最優解(Global optimal solution)
    函數的最佳解,真正的目標。

通常會考慮用變更學習率大小來解決陷入局部最優解的問題,比如說跨大步一點越過局部最優點,但是萬一因此也跨過全局最優解就不好了,所以在適當的時機把學習率調小也是很重要的。但是更糟糕的問題是陷在鞍點

  • 鞍點(Saddle point)
    平穩點的一種,長的就像馬鞍一樣,從某個方向來看是最低點,但是換個方向看其實是一個最高點。

  • 高原(Plateau)
    鞍點附近梯度接近0的平緩區域,一種陷在鞍點比較難脫離的情形。

鞍點 3D 圖 最低點方向 最高點方向
https://ithelp.ithome.com.tw/upload/images/20220909/20150622TbaL2oPRTt.png https://ithelp.ithome.com.tw/upload/images/20220909/20150622Tnm80xbTpD.png https://ithelp.ithome.com.tw/upload/images/20220909/20150622eM6ejSPsTX.png

鞍點對策

針對鞍點問題,最早是加上移動的慣性(Momentum),後來又加入了調整行進方向及加速,減速以達到脫離鞍點的目的。

這張圖應該是最能說明各種學習優化器(optimizer)的狀況。
下山走到了一個平穩的鞍點,然後透過慣性慢慢的在高原變更移動的方向往下一個方向移動。可以看到一般的梯度下降 SGD 就停在鞍點動彈不得。


—— 圖片出處:CS231n: Convolutional Neural Networks for Visual Recognition.

  • 慣性(Momentum),1990年
    針對動作的趨勢方向作加速。

  • Adagrad(Adaptive Gradient Algorithm),2011年
    根據各個參數自動做個別的學習率調整,但是會有學習率逐漸變小而消失的問題。

  • AdaDelta,2012年
    以Adagrad為基礎,主要是解決學習率消失的問題。

  • RMSprop(Root Mean Square Propagation),2012年
    Geoffrey Hinton 教授在線上課程 Coursera 提案的方法。
    也是為了解決學習率消失的問題。

  • Adam(Adaptive Moment Estimation),2015年,目前主流的演算法
    結合了 RMSprop 和 momentum 的優點。在大部分的場合都表現得很好。

其他還有 AdaBound(2019年)和 AMSBound 等優化器,但目前還是 Adam 比較常用。

補充資料

立即複習

  1. 如果激勵參數使用 ReLu,參數通常會用什麼初始值?
  2. 需要人決定的設定值叫做?
  3. 梯度下降一次跨多大步的設定叫做?
  4. 資料集500筆,batch-size = 50 的話,iteration 為多少?
  5. 資料集500筆,做 SGD 的話,iteration 為多少?
  6. 平穩點一定是區域最優解或全局最優解嗎?
  7. 目前主流的鞍點對策是使用什麼優化器?

參考資料


答案

  1. iteration = 10
  2. iteration = 500
  3. 不一定
  4. Adam

上一篇
Day 12. 深度學習模型 - 基本構成
下一篇
Day 14. 深度學習模型 - 學習的改善
系列文
OH~ AI 原來如此,互助就此開始!31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言