文章目錄
聲明
本文參考念師
前言
本文將會學習機器學習中的一些通用理論和策略,從而高效優化你的機器學習系統。
包含如下內容:
- 機器學習策略
- 正交化指標
- 評估指標和優化指標
- 開發集、測試集、驗證集
- 模型表現和人的表現
- 如何進行誤差分析
- 遷移學習
- 多任務學習
- 端對端學習
機器學習策略
what
如何選擇恰當的方式進行更有效的調優
正交化指標
what
明確每一步調參的目的,思路清晰明瞭。
舉個例子,給老式電視機調整時,有多個調整的按鈕,每個按鈕調優功能明確,比如一個是調清晰度,一個是調黑白,一個是調高寬。調整不同的按鈕,就可以讓電視清晰。這個過程就是正交化。
how
階段 | 目的 | 手段 |
---|---|---|
1 | 訓練集上得到不錯的結果 | 更大的網絡,adam優化算法等 |
2 | 驗證集上得到不錯的結果 | 正則化,更多的訓練數據 |
3 | 測試集上得到不錯的結果 | 擴大驗證集 |
4 | 真實應用中得到不錯的結果 | 調整驗證集或者是代價函數等 |
評估指標和優化指標
評估指標
綜合各個評估的結果。如下式:
優化指標
在滿足指標的前提下,進行評估,得到優化指標。
開發集、測試集、驗證集
how
- 在訓練集中訓練多個模型
- 在驗證集中進行驗證,找出相對較好的模型
- 滿足需求的前提下提交測試機進行測試
other
- 驗證集和測試機應該來源於同一分佈,且與真實需求一致
- 三者規模比例分佈
應用環境:識別貓的分類器爲例,得到兩個分類器A和B,分類器A的錯誤率爲3%,分類器B的錯誤率爲5%,從數值上來看分類器A的性能更好,但是實驗發現分類器A更容易把一些色情圖片識別成爲貓從而推薦給用戶。因此我們無法評估那個模型更優。
解決:調整評估指標或開發驗證集,給誤判圖片(色情圖片)以權重值,則誤差會變大。
模型表現和人的表現
what
如下如所示:第一根是貝葉斯誤差,第二根是機器水平,第三根是人類水平,無論是機器學習還是人類水平,永遠都無法超過貝葉斯誤差。但可以將此做對比和驗證。
other
how
- 降低訓練集誤差,使其逼近人類水平-降低模型偏差
更大的規模、更長時間的訓練、更好的優化算法、網絡結構的調整、超參數的優化
- 降低驗證集誤差與訓練集誤差的差距-降低模型方差
更多的數據、正則化、網絡結構調整、超參數優化
深度學習
擅長海量結構數據相關的分析,比如:
- 在線廣告預測
- 產品推薦
- 物流運輸規劃
- 借貸還款
如何進行誤差分析
how
planA
situation:貓的分類器,加入有大量狗的圖片被錯誤的識別成了貓。
解決:在驗證集中隨機找出若個分類錯誤的case,統計這其中狗錯誤識別爲貓所佔的比例,假設其中只有5個是由狗錯誤識別爲貓,那麼可以判斷出針對進行優化後貓分類器的識別率至多能提升5%,那麼就可以決定是否有必要針對這一問題進行優化。
planB
一次評估多個可能的原因,並在表格中進行統計分析
other
situation:訓練集、驗證集、測試集來源不同。貓分類問題中貝葉斯最優誤差爲0%,訓練集誤差爲1%,驗證集誤差爲10%,
- 驗證集的數據沒有經過訓練–方差導致。
- 訓練集和驗證集分佈來源不一樣–驗證集的數據相比訓練集而言更加難以分辨導致。
針對第二種,先得找出具體原因,就需要額外添加一組數據集,可以稱之爲訓練-驗證集,這組數據集的特點是和訓練集來源於同一分佈,但是不會在訓練過程中使用,我們可以根據訓練集、訓練-驗證集、驗證集來進行誤差定位了。
- 當訓練集表現不好時,說明是由於偏差導致的
- 當訓練集表現優秀,但是訓練-驗證集表現不好時,說明是由於方差導致的
- 當訓練-驗證集表現優秀,但是驗證集表現不好時,說明是由於驗證集(真實場景)和訓練集之間數據不匹配導致的
遷移學習
what
從一個領域中學習到的內容可以將其微調後利用到另一個獨立的任務中
how
重新初始化最後一層輸出層的參數,其他層的參數直接保持之前訓練號的模型的值進行訓練
feature
串行
多任務學習
what
構建一個神經網絡,在輸出層同時完成多個任務,損失函數根據多個任務綜合進行分析
feature
並行
端對端學習
what
直接向網絡中傳入數據和標定數據來訓練網絡
feature
- 忽略人爲拆分的多個步驟
- 需要更爲大量的數據樣本進行訓練