機器學習入門03 - 降低損失 (Reducing Loss)


原文鏈接:https://developers.google.com/machine-learning/crash-course/reducing-loss/

為了訓練模型,需要一種可降低模型損失的好方法。迭代方法是一種廣泛用於降低損失的方法,而且使用起來簡單有效。

1- 迭代方法

用於訓練模型的迭代試錯過程(迭代方法):

迭代策略可以很好地擴展到大型數據集,因此在機器學習中的應用非常普遍。

模型”部分將一個或多個特征作為輸入,然后返回一個預測作為輸出。

計算損失”部分是模型將要使用的損失函數,機器學習系統在“計算參數更新”部分檢查損失函數的值。

現在,假設這個神秘的綠色框會產生新值,然后機器學習系統將根據所有標簽重新評估所有特征,為損失函數生成一個新值,而該值又產生新的參數值。

這種學習過程會持續迭代,直到該算法發現損失可能最低的模型參數。

通常可以不斷迭代,直到總體損失不再變化或至少變化極其緩慢為止。這時候,可以說該模型已收斂

要點:

在訓練機器學習模型時,首先對權重和偏差進行初始猜測,然后反復調整這些猜測,直到獲得損失可能最低的權重和偏差為止。

 

2- 梯度下降法

回歸問題所產生的損失與權重值的圖形始終是凸形。換言之,圖形始終是碗狀圖。

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

通過計算整個數據集中每個權重值的損失函數來找到收斂點這種方法效率太低,通過梯度下降法可以高效地找到收斂點。

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

起點並不重要;因此很多算法就直接將權重值設為 0 或隨機選擇一個值。

下圖顯示選擇了一個稍大於 0 的起點: 

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

請注意,梯度是一個矢量,因此具有以下兩個特征:方向和大小。

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

為了確定損失函數曲線上的下一個點,梯度下降法算法會將梯度大小的一部分與起點相加( 一個梯度步長將我們移動到損失曲線上的下一個點):

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

 

3- 學習速率

 梯度下降法算法用梯度乘以一個稱為學習速率(有時也稱為步長)的標量,以確定下一個點的位置。

例如,如果梯度大小為 2.5,學習速率為 0.01,則梯度下降法算法會選擇距離前一個點 0.025 的位置作為下一個點。

超參數是編程人員在機器學習算法中用於調整的旋鈕。

大多數機器學習編程人員會花費相當多的時間來調整學習速率。如果選擇的學習速率過小,就會花費太長的學習時間:

相反,如果指定的學習速率過大,下一個點將永遠在 U 形曲線的底部隨意彈跳:

每個回歸問題都存在一個“恰好合適”學習速率,這個值與損失函數的平坦程度相關。

如果知道損失函數的梯度較小,則可以放心地試着采用更大的學習速率,以補償較小的梯度並獲得更大的步長。

 

4- 優化學習速率

在實踐中,成功的模型訓練並不意味着要找到“完美”(或接近完美)的學習速率。

目標是找到一個足夠高的學習速率,該速率要能夠使梯度下降過程高效收斂,但又不會高到使該過程永遠無法收斂。

 

5- 隨機梯度下降法

在梯度下降法中,批量指的是用於在單次迭代中計算梯度的樣本總數。如果是超大批量,則單次迭代就可能要花費很長時間進行計算。
包含隨機抽樣樣本的大型數據集可能包含冗余數據。實際上,批量大小越大,出現冗余的可能性就越高。一些冗余可能有助於消除雜亂的梯度,但超大批量所具備的預測價值往往並不比大型批量高。

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

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

6- 理解

問題

基於大型數據集執行梯度下降法時,以下哪個批量大小可能比較高效?

  • 小批量或甚至包含一個樣本的批量 (SGD)。
  • 全批量。

解答

  • 正確。在小批量或甚至包含一個樣本的批量上執行梯度下降法通常比全批量更高效。畢竟,計算一個樣本的梯度要比計算數百萬個樣本的梯度成本低的多。為確保獲得良好的代表性樣本,該算法在每次迭代時都會抽取另一個隨機小批量數據(或包含一個樣本的批量數據)。
  • 對全批量計算梯度這一做法的效率並不高。也就是說,與非常大的全批量相比,對較小的批量計算梯度通常高效得多(並且准確度無異)。

7- 關鍵詞

收斂 (convergence)
通俗來說,收斂通常是指在訓練期間達到的一種狀態,即經過一定次數的迭代之后,訓練損失和驗證損失在每次迭代中的變化都非常小或根本沒有變化。
也就是說,如果采用當前數據進行額外的訓練將無法改進模型,模型即達到收斂狀態。
在深度學習中,損失值有時會在最終下降之前的多次迭代中保持不變或幾乎保持不變,暫時形成收斂的假象。

損失 (Loss)
一種衡量指標,用於衡量模型的預測偏離其標簽的程度。
或者更悲觀地說是衡量模型有多差。要確定此值,模型必須定義損失函數。
例如,線性回歸模型通常將均方誤差用作損失函數,而邏輯回歸模型則使用對數損失函數。

訓練 (training)
確定構成模型的理想參數的過程。

梯度下降法 (gradient descent)
一種通過計算並且減小梯度將損失降至最低的技術,它以訓練數據為條件,來計算損失相對於模型參數的梯度。
通俗來說,梯度下降法以迭代方式調整參數,逐漸找到權重和偏差的最佳組合,從而將損失降至最低。

步 (step)
對一個批次的向前和向后評估。

超參數 (hyperparameter)
在模型訓練的連續過程中,您調節的“旋鈕”。
例如,學習速率就是一種超參數。
與參數相對。

學習速率 (learning rate)
在訓練模型時用於梯度下降的一個標量。
在每次迭代期間,梯度下降法都會將學習速率與梯度相乘。得出的乘積稱為梯度步長。
學習速率是一個重要的超參數。

步長 (step size)
與學習速率的含義相同。

批次 (batch) ,批量
模型訓練的一次迭代(即一次梯度更新)中使用的樣本集。
另請參閱批次大小。

批次大小 (batch size),批量大小
一個批次中的樣本數。
例如,SGD 的批次大小為 1,而小批次的大小通常介於 10 到 1000 之間。
批次大小在訓練和推斷期間通常是固定的;不過,TensorFlow 允許使用動態批次大小。

小批次 (mini-batch),小批量
從整批樣本內隨機選擇並在訓練或推斷過程的一次迭代中一起運行的一小部分樣本。
小批次的批次大小通常介於 10 到 1000 之間。
與基於完整的訓練數據計算損失相比,基於小批次數據計算損失要高效得多。

隨機梯度下降法 (SGD, stochastic gradient descent)
批次大小為 1 的一種梯度下降法。
換句話說,SGD 依賴於從數據集中隨機均勻選擇的單個樣本來計算每步的梯度估算值。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM