機器學習系列25:隨機梯度下降算法

  • 2019 年 10 月 7 日
  • 筆記

如今機器學習的數據集動則幾千萬或上億,如果運用我們之前學過的 Batch 梯度下降算法,就會發現效率很低,因為在梯度下降時,每次循環都要對所有的數據進行求和,這會浪費大量的時間。有沒有更好的方法去處理大數據呢?答案是有的。我們在處理大數據時,會選擇隨機梯度下降算法(Stochastic gradient descent)

下面是隨機梯度下降算法的代價函數:

之後是隨機梯度下降算法:

首先需要隨機打亂所有的數據集,然後就到了算法的核心,這個算法有兩層循環,外循環通常來說有 1-10 次,具體次數視問題而定;內循環遍歷所有的數據集一次,相比 Batch 梯度下降算法 ,它不需要每次循環都遍歷一遍數據集

我們可以把 Batch 梯度下降算法隨機梯度下降算法運行過程畫在一張圖上:

紅色的路線為 Batch 梯度下降算法的收斂路線粉色為隨機梯度下降算法的收斂路線。可以看到,隨機梯度下降算法不一定每次都會進行收斂,但總體會朝着收斂的方向進行,最終收斂到全局最小處。