AI: 機器學習的模型是如何訓練的?(在試錯中學習)

先提一個名詞:損失(Loss)

損失是一個數值 表示對於單個樣本而言模型預測的準確程度。

如果模型的預測完全準確,則損失爲零,否則損失會較大。

訓練模型的目標是從所有樣本中找到一組平均損失“較小”的權重和偏差。

在這裏插入圖片描述
如圖 紅色箭頭表示損失,藍線表示預測。明顯左側模型的損失較大;右側模型的損失較小

要確定loss,模型必須定義損失函數 loss function。例如,線性迴歸模型通常將均方誤差用作損失函數,而邏輯迴歸模型則使用對數損失函數。

如何訓練模型:訓練的一般過程

機器學習中訓練模型Traning 表示通過有標籤樣本來學習(確定)所有權重Weights和偏差Bias的理想值。

機器學習算法在訓練過程中,做的就是:檢查多個樣本並嘗試找出可最大限度地減少損失的模型;目標就是將損失(Loss)最小化在這裏插入圖片描述
上圖就是一般模型訓練的一般過程(試錯過程),其中

  • “模型: 將一個或多個特徵作爲輸入,然後返回一個預測 (y’) 作爲輸出。爲了進行簡化,不妨考慮一種採用一個特徵並返回一個預測的模型,如下公式(其中b爲 bias,w爲weight)
    在這裏插入圖片描述
  • 計算損失:通過損失函數,計算該次參數(bias、weight)下的loss。
  • 計算參數更新:檢測損失函數的值,併爲參數如bias、weight生成新值,以降低損失爲最小。
    例如:使用梯度下降法,因爲通過計算整個數據集中w每個可能值的損失函數來找到收斂點這種方法效率太低。所以通過梯度能找到損失更小的方向,並迭代。

梯度下降法(Gradient Descent)

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

在這裏插入圖片描述
通過計算整個數據集中 每個可能值的損失函數來找到收斂點這種方法效率太低。我們來研究一種更好的機制,這種機制在機器學習領域非常熱門,稱爲梯度下降法。

梯度下降法的第一個階段是爲 選擇一個起始值(起點)。起點並不重要;因此很多算法就直接將 設爲 0 或隨機選擇一個值。下圖顯示的是我們選擇了一個稍大於 0 的起點:

在這裏插入圖片描述

然後,梯度下降法算法會計算損失曲線在起點處的梯度。簡而言之,梯度是偏導數的矢量;它可以讓您瞭解哪個方向距離目標“更近”或“更遠”。請注意,損失相對於單個權重的梯度(如圖 所示)就等於導數。

請注意,梯度是一個矢量,因此具有以下兩個特徵:

  • 方向
  • 大小

梯度始終指向損失函數中增長最爲迅猛的方向。梯度下降法算法會沿着負梯度的方向走一步,以便儘快降低損失
爲了確定損失函數曲線上的下一個點,梯度下降法算法會將梯度大小的一部分與起點相加
在這裏插入圖片描述

然後,梯度下降法會重複此過程,逐漸接近最低點。(找到了方向)

  • 隨機梯度下降法SGD:解決數據過大,既一個Batch過大問題,每次迭代只是用一個樣本(Batch爲1),隨機表示各個batch的一個樣本都是隨機選擇。

學習速率(learning rate)

梯度矢量具有方向和大小。梯度下降法算法用梯度乘以一個稱爲學習速率(有時也稱爲步長)的標量,以確定下一個點的位置。這是超參數,用來調整AI算法速率

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

超參數是編程人員在機器學習算法中用於調整的旋鈕。大多數機器學習編程人員會花費相當多的時間來調整學習速率。如果您選擇的學習速率過小,就會花費太長的學習時間:

在這裏插入圖片描述

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