吴恩达深度学习笔记9-Course3-Week2【机器学习策略(ML Strategy)2】
機器學習策略(ML Strategy)2
一、誤差分析(Error Analysis)
1、進行誤差分析(Carrying out error analysis)
當訓練完模型后,可以得到該模型的誤差。接著我們要不斷的對模型進行優化,減少誤差。誤差分析就是為了指導模型往能最大化減少誤差的方向調整。
誤差分析就是對由不同錯誤分類類型引起的錯誤占總錯誤的比例進行排序,優先優化占比高的錯誤類型。
以識別貓為例,預測失敗可能有很多種類型,如:把狗錯識別為貓、把老虎錯分成貓、圖片模糊、濾鏡等。我們可以逐一檢查誤檢的樣本,統計出各種錯誤的類型比例,這樣我們可以辨別出某些不值得優化的類型,然后把精力投入到比例較高的錯誤類型的優化。
2、清除標記錯誤的數據(Cleaning up incorrectly labeled data)
我們的數據集中可能有一些樣本被錯誤的標記,是否應該更正標記。通常如果錯誤標記是隨機產生的而不是有規律的,可以不更正。因為深度學習算法對隨機的錯誤有較強的魯棒性(robusteness)。
我們可以在誤差分析中加入錯誤標記這種錯分類型,統計出它的占比。如果占比較大則考慮修改,較小可以不修正。如果真的需要修正,對整個數據集進行檢查并修正明顯是不明智的,所以正常只對錯分的數據中的錯誤標記的樣本進行修正。訓練開發和測試集都需要進行修正,保證它們是同一的分布。
3、快速搭建系統并迭代(Build your first system quickly, then iterate)
搭建深度學習模型時,應該快速搭建出第一個簡單的模型,然后通過偏差、方差和誤差分析來驅動模型的優化。這樣可以防止一開始就訓練一個很復雜的模型結果卻不好,浪費大量的時間。但如果有很多經驗和參考時,搭建第一個模型時可以適當的復雜一點。
二、數據集的數據不匹配(Mismatched training and dev/test set)
1、在不同分布的數據上訓練和測試(Training and testing on different distributions)
因為需求的數據量非常大,所以我們有時候使用的訓練集、開發集和測試集來自不同的分布,這就是數據不匹配。這種情款其實很常遇到,因為對于某領域通常有一個很大的通用數據庫,但我們要開發一個相對更細分的領域時我們的數據通常較少。例如語音識別相對于手機語音喚醒功能。
以大量的高質量和少量的低質量圖片的數據集為例,對數據集分配有兩種選擇。
option 1:相對差,不采用
將兩組數據合并到一起,隨機選取樣本分配到訓練、開發、測試集中。
好處:三個集合中的數據均來自于同一分布;
壞處:我們目標是優化低質量圖片的開發集數據,但是經過調整后開發集的數據大部分來自訓練集高質量圖片,這樣優化目標就不準確了。
option 2:相對好,采用
訓練集全部是高質量圖片,也可以有低質量圖片。開發和測試集都是低質量圖片。
好處:優化目標準確;
壞處:訓練集和開發、測試集來自不同的分布。
2、不匹配數據分布的偏差和方差(Bias and Variance with mismatched data distributions)
如果訓練集和開發、測試集來自不同分布,當對算法進行評估發現開發集效果不好時,我們不能很好的區分這是由于高方差還是數據不匹配引起的。
分析方法:設置訓練開發集
訓練開發集(Training-dev set):和訓練集同一分布,但不用來訓練,其實就是從原本的訓練集分一部分出來。
可避免偏差(avoidable bias):訓練集和人類水平之差
方差(variance):訓練開發集和訓練集之差
數據不匹配(data mismrtch):開發集和訓練開發集之差
3、解決數據不匹配(Addressing data mismatch)
- 進行誤差分析找出訓練集和開發、測試集的不同之處。
- 使訓練集數據和開發、測試集的數據更相似。或者尋找和訓練集和開發、測試集的數據相似的數據加入訓練集
人工數據合成(Artificial data synthesis): 改變訓練集數據使它和開發、測試集的數據更相似。例如使用通用的語音數據庫來開發車輛語音識別系統時,可以把汽車的噪音和通用的語音數據庫的數據進行人工合成作為訓練集。
三、遷移學習(Transfer learning)
遷移學習就是把任務A(數據量大)中學到的知識應用到另一個獨立的任務B(數據量少)。因為任務B的數據量少,訓練模型時不能得到很好的效果,這時可以利用任務A已經學習到的一些通用的特征來使我們的模型有更好的表現。
預訓練權重(pre-training weights):在通用數據庫訓練出來的權重。
微調權重(fine tuning weights):對預訓練的權重進行微調(改變最后某幾層的權重),用它來初始化自己的模型。
為什么有效:
以圖像識別為例,在通用的大型數據庫中訓練分類器,往往網絡的前幾層模型能很好的學習到圖像的一些基本特征,如: 邊緣檢測等。因為這些低層次的特征可以泛化到任務,所以它能讓我們的模型表現得更好。
遷移學習有意義的條件:
- 任務A和任務B有著相似的輸入,如都是圖片;
- 任務A擁有的數據遠遠大于任務B(任務B的樣本比A的樣本對于我們模型的優化更有價值)。
- 任務A的低層特征學習對任務B有一定的幫助。
四、多任務學習(Multi-task learning)
多任務學習:
多個任務并行學習,如在一張圖片中同時檢測出多個目標。
在神經網絡中,把最后一層的神經元個數設為多任務的個數。樣本的標簽也應與此匹配。
cost function :類似于邏輯回歸
i 表示第幾個樣本,j 表示第幾個神經元即第幾個任務
softmax和多任務學習的區別:
softmax是假定圖片中只有一個目標,但這個目標可能屬于不同的類別,選擇概率最高的那一類作為預測的結果。而多任務學習是假定圖片中有多個目標,預測輸出每個目標的概率。
遷移學習有意義的條件:
- 多任務之間在低層網絡可以共用一些低級特征。
- 每個任務的數據具有相似性(similiar),這樣使得與單任務相比有更大的數據集,使得低級特征的提取更加準確。
- 搭建的神經網絡要足夠大,這樣才可以同時學習多個任務。
五、端到端深度學習(End-to-end deep learning)
1、端到端的深度學習定義
通過縮減人工預處理和后續處理,盡可能使模型從原始輸入到最終輸出,給模型更多可以根據數據自動調節的空間,增加模型的整體契合度。
以語音翻譯為例:
傳統機器學習:語音>>發音>>詞>>句
端到端:語音>>句子
因為現在有大量的語音譯為文本的數據,所以可以使用端到端。
2、端到端的深度學習使用規則(Whether to use end-to-end deep learning)
根據優缺點來決定:
- 優點:
端到端學習可以直接讓數據自己決定要學習什么特征,而不是學習人為選擇特征,可能能學得更多更準確。
減少人工設計的組件(components)的需要。 - 缺點:
需要大量的數據,才能學習到足夠的東西。
排除了可能有用的手工設計組件,使學習更慢。
當有大量的端到端的數據時可以使用端到端的深度學習,如上例的語音識別。
當端到端的數據不多,而人工設計組件的數據多時不用端到端的深度學習,如下例,人臉識別。
圖片>>人臉檢測(人臉區域提取)>>人臉識別(與數據庫匹配)
從有大量背景的圖片到人臉區域的數據和從人臉區域到人名的數據很多,但是直接從有大量背景的圖片到人名的數據相對小得多。而且這類數據不好獲取或成本太高。所以不選擇端到端的深度學習。
另一個例子:從骨骼圖預測年齡
總結
以上是生活随笔為你收集整理的吴恩达深度学习笔记9-Course3-Week2【机器学习策略(ML Strategy)2】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring的任务调度@Schedule
- 下一篇: 吴恩达深度学习笔记11-Course4-