本文作為自己學習李宏毅老師2021春機器學習課程所做筆記,記錄自己身為入門階段小白的學習理解,如果錯漏、建議,還請各位博友不吝指教,感謝!!

如何更好的訓練我們的模型呢?我們可以通過觀察訓練集上的loss,來決定下一步采取什么措施來優化我們的訓練過程。
訓練集上的Loss很大
在這種情況下,可能的原因有Model bias和Optimization兩種。
Model Bias
在上一節中提到,model bias是指使用的model太簡單而存在不能很好的表示真實情況的限制。

如上圖所示,使用圖形來理解model bias在訓練模型中的情況的話就是:假設空間(hypothesis space)中並沒有包含可以獲得最小loss的那個模型(橙色的\(f^*(x)\))。
解決的方法:重新設計更加復雜、靈活的模型,例如添加特征,增加神經元的個數,增加layers的個數等。
Optimization lssue
當然,訓練集上的Loss很大,也可能是優化環節出了問題,即我們選擇的優化策略不能獲得最優解,如下圖所示。

也就是,假設空間(hypothesis space)中含有Loss最小的\(f^*(x)\),但是優化策略並不能將參數\(\theta\)優化至對應的\(\theta^*\)。
至於如何來區分到底是Model bias,還是Optimization lusse問題,我們可以在訓練集上對不同模型Loss曲線做對比來判斷,如下圖所示:

如果20-layer 的模型已經取得了不錯的效果,而56-layer 的模型的效果反而降低了,那說明就是我們選擇的優化策略有問題。
解決方法:選擇更合適的優化策略(有待補充……)
訓練集上的Loss很小
如果在訓練集上的Loss很小,在測試集上的Loss反而變大,那很大可能出現了overfitting(過擬合)或mismatch問題。
Overfitting
過擬合是指學習時選擇的模型所包含的參數過多,以致出現這一模型對已知數據(訓練集)預測得很好,但對未知數據(測試集)預測得很差得現象。

如上圖所示,我們使用很靈活(復雜度高)的模型在訓練集上進行訓練,往往能對訓練集擬合的很好,但是對測試集的擬合效果很差。
出現過擬合得原因可能有如下幾種:
- 選擇的模型復雜度過高
- 訓練數據少
- 訓練數據中存在噪聲
解決過擬合的方法:
- 選擇復雜度小(未知參數少)的模型
- 減少特征個數
- Early stopping
- 正則化(Regularization)
- Dropout
- 使用更多的訓練數據
Mismatch
當訓練集上的Loss很小,而測試集上的Loss很大的另一個情況是Mismatch。出現Mismatch 的原因是訓練集數據和測試集數據的分布不同,如下圖所示:

由上邊的筆記中,可以看出在Model Bias和Overfitting,我們都需要對模型進行修改或重新選擇,而常用的模型選擇方法由正則化和交叉驗證。
正則化
待補充……
交叉驗證
交叉驗證的基本思想是:重復地使用數據。
簡單交叉驗證
首先隨機地將已知數據分為兩部分,一部分作為訓練集,另一部分作為測試集(例如:70%的數據為訓練集,30%的數據為測試集);然后用訓練集在各種條件下(例如,不同的參數個數)訓練模型,從而得到不同的模型;在測試集上評價各個模型的測試誤差,選出測試誤差最小的模型。
S折交叉驗證
應用最多的是S折交叉驗證(S-fold cross validation),方法如下:
首先隨機的將已知數據切分為S個互不相交、大小相同的子集;然后利用S-1個子集的數據訓練模型,利用余下的子集測試模型;將這一過程對可能的S種選擇重復進行;最后選出S次評測中平均測試誤差最小的模型。

留一交叉驗證
S折交叉驗證的特殊情況時S=N,稱為留一交叉驗證(leave-one-out cross validation),往往在數據缺乏的情況下使用。這里,N是給定數據集的容量。
參考資料:
- 《統計學習方法(第2版)》 李航
- 《神經網絡與深度學習》 邱錫鵬