谷歌機器學習課程筆記(4)——降低損失

weixin_34377065發表於2018-10-19

一、迭代方法

為了訓練模型,需要一種可降低模型損失的好方法。迭代方法是一種廣泛用於降低損失的方法,而且使用起來簡單有效。迭代策略在機器學習中的應用非常普遍,這主要是因為它們可以很好地擴充套件到大型資料集。

下圖顯示了機器學習演算法用於訓練模型的迭代試錯過程:

10841302-c24737854f00be50.png

“模型”部分將一個或多個特徵作為輸入,然後返回一個預測 (y') 作為輸出。

圖中的“計算損失”部分是模型將要使用的損失函式。

機器學習系統就是在圖中的“計算引數更新”部分根據所有標籤評估所有特徵,為損失函式生成一個新值,而該值又產生新的引數值。這種學習過程會持續迭代,直到該演算法發現損失可能最低的模型引數。通常需要不斷迭代直到總體損失不再變化或至少變化極其緩慢為止。這時候,可以說該模型已收斂

二、梯度下降法

現在,將詳細說明“計算引數更新”部分的演算法。

假設我們有時間和計算資源來計算 w1 的所有可能值的損失。對於我們一直在研究的迴歸問題,所產生的損失與 w1 的圖形始終是凸形。

凸形問題只有一個最低點;即只存在一個斜率正好為 0 的位置。這個最小值就是損失函式收斂之處。

通過計算整個資料集中 w1每個可能值的損失函式來找到收斂點這種方法效率太低。我們來研究一種更好的機制,這種機制在機器學習領域非常熱門,稱為梯度下降法

梯度下降法的第一個階段是為 w1選擇一個起始值(起點)。

然後,梯度下降法演算法會計算損失曲線在起點處的梯度。簡而言之,梯度是偏導數的向量;它可以讓您瞭解哪個方向距離目標“更近”或“更遠”。

梯度始終指向損失函式中增長最為迅猛的方向。梯度下降法演算法會沿著負梯度的方向走一步,以便儘快降低損失。

為了確定損失函式曲線上的下一個點,梯度下降法演算法會將梯度大小的一部分與起點相加。

然後,梯度下降法會重複此過程,逐漸接近最低點。

三、學習速率

正如之前所述,梯度向量具有方向和大小。梯度下降法演算法用梯度乘以一個稱為學習速率(有時也稱為步長)的標量,以確定下一個點的位置。

超引數是程式設計人員在機器學習演算法中用於調整的旋鈕,在梯度下降法中,學習速率就是一個超引數。大多數機器學習程式設計人員會花費相當多的時間來調整學習速率。

如果學習速率過小,就會花費太長的學習時間。

相反,如果學習速率過大,下一個點將永遠在左右彈跳而無法到達最低點。

每個迴歸問題都存在一個正好合適的學習速率。這個值與損失函式的平坦程度相關。如果損失函式的梯度較小,則可以採用更大的學習速率,以補償較小的梯度並獲得更大的步長。

四、隨機梯度下降法

在梯度下降法中,批量指的是用於在單次迭代中計算梯度的樣本總數。一個批量可能相當巨大。如果是超大批量,則單次迭代就可能要花費很長時間進行計算。

通過從資料集中隨機選擇樣本,可以從小得多的資料集估算(儘管過程非常雜亂)出較大批量的平均值。隨機梯度下降法(SGD) 將這種想法運用到極致,它每次迭代只使用一個樣本(批量大小為 1)。如果進行足夠的迭代,SGD 也可以發揮作用,但過程會非常雜亂。“隨機”這一術語表示構成各個批量的一個樣本都是隨機選擇的。

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

相關文章