迭代方法圖(圖1,見上一篇博客:降低訓練損失之迭代方法)包含一個標題爲“計算參數更新”的華而不實的綠框。現在,我們將用更實質的方法代替這種華而不實的算法。
假設我們有時間和計算資源來計算 w1 的所有可能值的損失。對於我們一直在研究的迴歸問題,所產生的損失與 w1 的圖形始終是凸形。換言之,圖形始終是碗狀圖,如下所示:
圖 2. 迴歸問題產生的損失與權重圖爲凸形。
凸形問題只有一個最低點;即只存在一個斜率正好爲 0 的位置。這個最小值就是損失函數收斂之處。
通過計算整個數據集中 w1 每個可能值的損失函數來找到收斂點這種方法效率太低。我們來研究一種更好的機制,這種機制在機器學習領域非常熱門,稱爲梯度下降法。
梯度下降法的第一個階段是爲 w1 選擇一個起始值(起點)。起點並不重要;因此很多算法就直接將 w1 設爲 0 或隨機選擇一個值。下圖顯示的是我們選擇了一個稍大於 0 的起點:
圖 3. 梯度下降法的起點。
然後,梯度下降法算法會計算損失曲線在起點處的梯度。簡而言之,梯度是偏導數的矢量;它可以讓您瞭解哪個方向距離目標“更近”或“更遠”。請注意,損失相對於單個權重的梯度(如圖 3 所示)就等於導數。
詳細瞭解偏導數和梯度。
請注意,梯度是一個矢量,因此具有以下兩個特徵:
- 方向
- 大小
梯度始終指向損失函數中增長最爲迅猛的方向。梯度下降法算法會沿着負梯度的方向走一步,以便儘快降低損失。
圖 4. 梯度下降法依賴於負梯度。
爲了確定損失函數曲線上的下一個點,梯度下降法算法會將梯度大小的一部分與起點相加,如下圖所示:
圖 5. 一個梯度步長將我們移動到損失曲線上的下一個點。
然後,梯度下降法會重複此過程,逐漸接近最低點。