超參數、驗證集和K-折交叉驗證

  • 本文首發自公衆號:RAIS

​前言

本系列文章爲 《Deep Learning》 讀書筆記,可以參看原書一起閱讀,效果更佳。

超參數

  • 參數:網絡模型在訓練過程中不斷學習自動調節的變量,比如網絡的權重和偏差;
  • 超參數:控制模型、算法的參數,是架構層面的參數,一般不是通過算法學習出來的,比如學習率、迭代次數、激活函數和層數等。

與超參數對比的概念是參數,我們平時訓練網絡所說的調參,指的是調節 超參數。超參數的確定方法一般是憑藉經驗,或者類似問題的參數遷移。

問題來了,爲啥超參數不通過學習確定?這是因爲這個參數不那麼好優化,並且稍不留神通過學習方法去優化就可能導致過擬合。你可能認爲模擬人的調參過程,進行超參數的調節不就好了,當然這是可以的,超參數也不是完全不可以用程序優化的,但是現有的理論還不成熟,還沒有理論去有效的指導實踐,這還是一個新興領域,因此還有許多工作要做,很多情況下是憑經驗,憑直覺進行優化的,算法表現並不好。

我們知道,更高次的多項式和權重衰減參數設定 λ=0 總是能更好的擬合,會過擬合,對於這個問題,我們會考慮用驗證集的方法,驗證集在我們前文《人工智能二分類問題》中提到過。

驗證集

驗證集是用來訓練超參數的,是用來給網絡提供反饋的。我們用訓練集去訓練一個網絡模型,訓練出的參數固定下來,然後將驗證集的數據應用到這個模型上,會得到偏差,我們根據這個偏差,調整超參數,然後重新去訓練網絡,重複迭代一定的次數,會調節出一個超參數還不錯的網絡,基於這個超參數訓練出的模型,可以最終到測試集合上驗證,最終確定在測試集上表現如何。下面舉個例子:

訓練和驗證損失

這是之前在《人工智能二分類問題》中的一張圖,我們看到驗證損失在迭代 4 次之後大幅上升,這就是由於我們訓練次數迭代過多導致的,迭代次數這個超參數設置的不合理,因此我們更改迭代次數爲 4 次。這就是根據驗證集調節超參數的一個例子。

數據量小,訓練集:驗證集:測試集=6:2:2,數據量足夠大,訓練集:驗證集:測試集=98:1:1。這算是一個經驗值吧。

K-折交叉驗證

我們在之前的 《預測房價》 問題中有提到過交叉驗證這個方法,這個方法用於解決的問題就是數據量太小的問題,而導致的對網絡測試誤差估計不準的問題,K-折交叉驗證 是其中最常見的。

K-折交叉驗證

從上圖中,我們可以清楚的看到K-折交叉驗證的方法具體是怎麼做的。由於數據量不夠大,因此我們把數據分爲 K 份,循環 K 次,每次分別選取其中的一份作爲測試集,這樣根據我們訓練出的網絡,我們可以分別求出每一次的測試誤差,用這 K 個測試誤差求其平均值,我們就估計其爲這個網絡的測試誤差。

總結

我們本篇文章介紹了參數和超參數的區別,調參指的是調節超參數,並且介紹了在數據量較小的情況下如何如何去估計測試誤差。

RAIS

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