最優化和深度學習的區別

2022-07-15 13:51:09 字數 1678 閱讀 9021

如今訓練神經網路最常見的方法是使用梯度下降或 adam 等變種。梯度下降是尋找函式極小值的迭代優化演算法。簡單的說,在最優化問題中,我們對某個度量 p 感興趣,想找到乙個在某些資料(或分布)d上最大化(或最小化)該度量的函式(或函式的引數)。這聽起來就像是機器學習或深度學習。我們有一些指標,例如準確率,甚至更好的精度/召回率或f1值;有乙個帶有可學習引數的模型(我們的網路);還有資料(訓練和測試集)。使用梯度下降,我們將「搜尋」或「優化」模型的引數,從而最終使訓練和測試集上的資料指標(準確率)最大化。

來自**《the general inefficiency of batch training for gradient descent learning》

最優化與深度學習之間至少存在兩個主要差異,這些差異對於在深度學習中獲得更好的結果很重要。

第乙個區別是度量/損失函式。在最優化中,我們有乙個單一的明確定義的度量,希望將其最小化(或最大化)。不幸的是,在深度學習中,我們經常使用無法或很難優化的度量。例如,在分類問題中,我們可能對模型的「準確率」或「f1值」感興趣。「準確率和f1值的問題是這些都不是可微函式,我們無法計算梯度,所以不能使用梯度下降。因此,我們使用諸如negative log-likelihood(或cross-entropy)之類的**度量/損失,希望最小化**函式將最大化我們的原始度量。這些**度量不一定不行,甚至可能有一些優勢,但是我們需要記住我們真正關心的東西,而不是**度量。」

確保我們關心原始度量的一種方法是使用early stopping。每個epoch,我們都會在某些驗證集上用原始度量(準確率或f1值)評估模型,並在開始過擬合時停止訓練。最好在每個epoch列印出準確率(或其它任意度量),方便更好的了解模型的效能。

第二個重要區別是資料。在最優化中,我們只關心現有資料。我們知道找到最大值是解決我們問題的最佳解決方案。在深度學習中,我們主要關心泛化,即我們沒有的資料。這意味著,即使我們找到了已有的資料(訓練集)的最大值(或最小值),我們仍然可能在還沒有的資料上得到較差的結果。將我們的資料分為不同的部分並將測試集視為「我們沒有的資料」非常重要。我們不能基於測試集做出任何決定。為了做出有關超引數,模型結構或 early stopping 標準的決策,我們可以使用驗證集,而不能使用測試集。

還沒完呢。我們通過梯度下降將引數推向「正確的」方向來訓練模型。但是什麼是「正確的」?對所有資料還是僅對我們的訓練集正確呢?例如,當我們選擇batch size時,這是相關的。有人可能會說,通過使用整個訓練資料(稱為「批梯度下降」),我們獲得了「真實」梯度。但這僅適用於我們擁有的資料。為了將模型推向「正確」方向,我們需要近似我們沒有的資料的梯度。這可以通過更小的 batch size 來實現(所謂的迷你批處理(mini-batch)或隨機(stochastic)梯度下降)。**《the general inefficiency of batch training for gradient descent learning》顯示,僅使用batch size 為1(也叫 on-line training)即可達到最佳結果。通過應用較小的batch size,將雜訊引入梯度,可以提高泛化能力減少過擬合。下表展示了在20多個資料集上進行「batch」與「on-line」訓練的效能。可以看出「on-line」 方式平均更好。

來自**《the general inefficiency of batch training for gradient descent learning》

儘管機器學習問題有時被稱為最優化問題。了解差異並加以解決很重要。

深度學習 最優化隨記

計算流程圖中的方向叫前向傳播。通過反向傳播來優化權重。batchsize批處理的大小一般是2的整數倍 32,64,128 64和128居多。乙個epoch值表示迭代一輪全部資料。一次迭代表示跑完乙個batchsize資料。圖中的loss出現上下浮動是非常正常的。通常情況下需要看第1萬次,2萬次,3萬...

深度學習 最優化的學習筆記

感謝蔡超老師的講授,給予了我很大的啟發 svm是我最初學習的分類器之一,svm線性分類器求解過程的推導還是十分優美的 使用了拉格朗日乘子法 具體的推導過程可以參考蔡超老師講授的ppt 這是因為在數值分析法求解的過程中,需要計算矩陣或者張量 在進行這個運算時,會涉及到所有的樣本值,而在目標檢測中,輸入...

深度學習入門課程學習筆記05 最優化問題

通過對之前課程的學習,我們已經能夠對於乙個輸入資料得出它的最終的乙個loss值,那麼下面就該咱們如何去找到乙個最優的引數矩陣,使得最終的loss值達到乙個最小的範圍。這就引入了咱們的最優化問題。下面咱們通過幾種解決方案來詳細討論如何處理這個最優化的問題 首先咱們就算不經過大腦思考也能得出一種方法,我...