機器學習之降低損失(Reducing Loss)

爲了訓練模型,我們需要一種可降低模型損失的好方法。迭代方法是一種廣泛用於降低損失的方法。
一、迭代方法:一種迭代試錯,優化模型的方法
機器學習算法用於訓練模型的迭代試錯(迭代方法)過程:


簡單來說,迭代方法就是將模型預測值與實際值之間的誤差值反饋給模型,讓模型不斷改進,誤差值會越來越小,即模型預測的會越來越精確。
在訓練機器學習模型時,首先對權重和偏差進行初始猜測,然後反覆調整這些猜測,直到獲得損失可能最低的權重和偏差爲止。

二、梯度下降法:一種快速找到損失函數收斂點的方法
迴歸問題所產生的損失與權重值的圖形(損失曲線)始終是凸形

凸形問題只有一個最低點;即只存在一個斜率正好爲 0 的位置。這個最小值就是損失函數收斂之處。
梯度下降法:
  1. 首先爲權重值(w1)選擇一個起始值(起點)。
起點並不重要;因此很多算法就直接將 w1設爲 0 或隨機選擇一個值。
  1. 然後,梯度下降法算法會計算損失曲線在起點處的梯度。
梯度是偏導數相對於所有自變量的矢量;它可以讓你瞭解哪個方向距離目標“更近”或“更遠”。損失相對於單個權重的梯度就等於導數。
  1. 梯度始終指向損失函數中增長最爲迅猛的方向。梯度下降法算法會沿着負梯度的方向走一步,以便儘快降低損失。(梯度下降法依賴於負梯度)
  2. 爲了確定損失函數曲線上的下一個點,梯度下降法算法會將梯度大小的一部分與起點相加,如下圖所示:

一個梯度步長將我們移動到損失曲線上的下一個點。
  1. 重複此過程,逐漸接近最低點。

三、學習速率:用來確定每一步的“步幅”
梯度下降法算法用梯度乘以一個稱爲學習速率(有時也稱爲步長)的標量,以確定下一個點的位置。例如,如果梯度大小爲 2.5,學習速率爲 0.01,則梯度下降法算法會選擇距離前一個點 0.025 的位置作爲下一個點。
超參數是機器學習算法中用於調整的旋鈕。大多數機器學習編程人員會花費相當多的時間來調整學習速率。
  • 如果選擇的學習速率過小,就會花費太長的學習時間,如下圖所示:


  • 相反,如果指定的學習速率過大,下一個點將永遠在 U 形曲線的底部隨意彈跳,很可能會越過最低點。如下圖所示:

  • 學習速率剛剛好。每個迴歸問題都存在一個金髮姑娘學習速率。“金髮姑娘”值與損失函數的平坦程度相關。如果知道損失函數的梯度較小,則可以放心地試着採用更大的學習速率,以補償較小的梯度並獲得更大的步長。



四、隨機梯度下降法(SGD)
三個概念:全批量梯度下降法、小批量隨機梯度下降法、隨機梯度下降法

在梯度下降法中,批量指的是用於在單次迭代中計算梯度的樣本總數。到目前爲止,我們一直假定批量是指整個數據集。如果數據集太大(即批量過於巨大),則單次迭代就可能要花費很長時間進行計算。SGD就是用來解決此問題的。

如果我們可以通過更少的計算量得出正確的平均梯度,會怎麼樣?通過從我們的數據集中隨機選擇樣本,我們可以通過小得多的數據集估算(儘管過程非常雜亂)出較大的平均值。 隨機梯度下降法 (SGD) 將這種想法運用到極致,它每次迭代只使用一個樣本(批量大小爲 1)。“隨機”表示構成各個批量的一個樣本都是隨機選擇的。

簡單來說,SGD就是從大的數據集中隨機選擇樣本來得到一個小得多的數據集,用它來估算出正確的平均梯度值。

小批量隨機梯度下降法(小批量 SGD)是介於全批量迭代與 SGD 之間的折衷方案。小批量通常包含 10-1000 個隨機選擇的樣本。小批量 SGD 可以減少 SGD 中的雜亂樣本數量,但仍然比全批量更高效。


神經網絡練習網站:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章