在文章<深度模型訓(xùn)練方法>中提到,深度模型中擁有很多超參,模型的訓(xùn)練其實就是一個調(diào)超參的過程。而在調(diào)超參時,我們主要降低模型的Bias和Variance.
訓(xùn)練模型的一般性步驟
- Fit training set well on cost function
- train a bigger network
- switch to a better optimization algorithm, such as Adam
- train longer
- ...
- Fit dev set well on cost function
- train a bigger network
- regulariztion
- dropout
- get more data on training set
- ...
- Fit test set well on cost function
- go back to optimize the dev set
- get a bigger dev set
- ...
- Performs well in real world
- go back to change the dev set
- optimize the cost function
- ...
訓(xùn)練集上的優(yōu)化
訓(xùn)練模型時,我們一般需要有四個步驟,首先需要調(diào)整模型在訓(xùn)練集上的表現(xiàn),如果在訓(xùn)練集上表現(xiàn)不佳,說明出現(xiàn)了模型的“欠擬合”狀態(tài)。
原因可能有以下兩方面表現(xiàn):
- 模型的參數(shù)還沒有迭代徹底,此時可以多花點時間讓模型迭代,或者改用學(xué)習(xí)速度更快的optimization algorithm
- 另一種情況就是數(shù)據(jù)規(guī)律比較復(fù)雜,模型擁有的參數(shù)不足以刻畫數(shù)據(jù)中的規(guī)律,所以需要增強(qiáng)模型結(jié)構(gòu)。
驗證集上的優(yōu)化
如果模型在訓(xùn)練集上表現(xiàn)優(yōu)越,但在驗證集上欠佳,改善方式有以下:
- 模型過于復(fù)雜,隱藏層中的參數(shù)過大,導(dǎo)致非線性激勵函數(shù)輸出結(jié)果系數(shù)過高,從而出現(xiàn)過擬合狀態(tài),這時可以用regulariztion約束參數(shù)過大,從而避免過擬合現(xiàn)象
- 另一種避免過擬合方法是dropout,通過隨機(jī)排除隱藏層中的一些參數(shù),從而避免部分參數(shù)過于擬合某幾類數(shù)據(jù)特征,從而使模型更一般性地描述數(shù)據(jù)特征
- 應(yīng)用更大的網(wǎng)絡(luò)結(jié)構(gòu)有助于學(xué)習(xí)數(shù)據(jù)中的更一般性的規(guī)律特性,從而更好地表現(xiàn)在dev set上
- 最后,由于訓(xùn)練集數(shù)據(jù)質(zhì)量偏執(zhí),例如與驗證集規(guī)律存在差異等原因,此時可以增加更多的訓(xùn)練集,讓訓(xùn)練集中的數(shù)據(jù)擁有更普遍的規(guī)律性
測試集上的優(yōu)化
如果模型在驗證集上表現(xiàn)良好,但測試集上表現(xiàn)不佳:
- 調(diào)整驗證集數(shù)據(jù)分布,然后重新測試驗證集,對模型進(jìn)行調(diào)整
- 數(shù)據(jù)集分布沒有問題的話,可以嘗試使用更大的網(wǎng)絡(luò)結(jié)構(gòu)學(xué)習(xí)數(shù)據(jù)中更一般性的規(guī)律
實際應(yīng)用過程的優(yōu)化
模型在訓(xùn)練集,驗證集,測試集上表現(xiàn)都很好,但應(yīng)用時表現(xiàn)不佳:
- 根據(jù)實際應(yīng)用情況改變測試集數(shù)據(jù)分布,然后根據(jù)測試集調(diào)整模型
- 另一種情況就是刻畫模型的損失函數(shù)計算存在問題,重新計算模型的損失函數(shù),合理度量數(shù)據(jù)
提前結(jié)束模型的迭代
很多人為了增強(qiáng)模型在dev set上的表現(xiàn),提前結(jié)束模型的迭代訓(xùn)練,這么做的原因是為了避免模型過度訓(xùn)練而導(dǎo)致過擬合。
這種避免過擬合的方式不建議采用,因為這種方式也影響了模型在training set上的訓(xùn)練,即同時影響著訓(xùn)練集和驗證集上的模型性能表現(xiàn),其干擾性很強(qiáng),容易阻礙調(diào)整超參的整體流程。所以優(yōu)化模型在dev set上的表現(xiàn),最好采用前面提到的方式,避免提前結(jié)束模型訓(xùn)練。