L02_機器學習任務攻略
阿新 • • 發佈:2022-03-26
目錄
Framework of ML
訓練模型的過程分為三個步驟:
- 寫出一個具有未知數的\(Function\),\(y=f_{\theta}(x)\),\(\theta\)表示模型中的所有的未知引數。
- 定義損失函式\(L(\theta)\),函式的輸入就是一組引數,用來判斷這一組引數的好壞。
- 進行最優化,尋找讓損失函式最小的引數\(\theta^{*}\)
怎樣將模型訓練的更好
情況一:在訓練資料集的Loss比較大
1. 模型過於簡單,相當於在大海撈針,但是針不在大海中。
解決方法
:增加模型的彈性。
-
增加輸入的\(Features\);
-
使用深度學習,使用更多的neurons和layers。
-
Optimization Issue,最優化做的不夠好,雖然存在最優的\(\theta^{*}\),但是設計的最優化方法並不能找到,相當於針在海里,但是無法找到。
解決方法
:使用更加強大的優化技術。
2. 怎麼判斷是哪一個問題呢?
通過比較不同的模型,來得知自己的model夠不夠大。
- 從一個彈性比較小的神經網路(或者其他模型)出發,因為這些模型比較容易進行最優化,一般不會出現失敗的情況。
- 然後設計一個更深的神經網路,如果更深的彈性更大的神經網路還沒有彈性較小的神經網路得到的Loss小,那就說明是Optimization Issue。
情況二:在訓練集的Loss較小,但是在測試集的比較大
Overfitting
舉例說明原因
舉一個比較極端的例子:
\[Training\quad data :{(x^{1},\hat{y}^{2}),(x^{1},\hat{y}^{2}),\cdots,(x^{N},\hat{y}^{N})}\\ f(x) = \begin{cases} \hat{y}^{i}\quad \quad &\exists = x \\ random & otherwise \end{cases} \] 這個函式在訓練集上的Loss為0,但是在測試集上的Loss比較大。
另一個比較可能的原因是訓練資料太少,出現了類似於插值函式中的龍格現象的問題。
解決方法:
-
對訓練資料集進行修改。
-
增加訓練資料的量;
-
進行
Data augmentation
,對原有的資料進行合理的修改;
-
-
對模型進行修改,選擇彈性較小的模型,給自己的模型進行限制(不能給出太大的限制)。
- 使用更少的引數,共享相同的引數
- 使用更少的features
- Early stopping
- Reguarization
- Dropout