1. 程式人生 > >吳恩達Coursera深度學習課程 deeplearning.ai (3-1) 機器學習(ML)策略(1)--課程筆記

吳恩達Coursera深度學習課程 deeplearning.ai (3-1) 機器學習(ML)策略(1)--課程筆記

1.1 為什麼是 ML 策略

實踐中優化深度學習模型的方法有好多種,應該如何抉擇?

image

1.2 正交化

正交化: 一個維度做且只做一件事,各個維度相互獨立,不影響其他維度做的事情。

比如電視條件:有調節高度的按鈕,寬度的按鈕,旋轉的按鈕,
色彩的按鈕,亮度的按鈕,每個按鈕負責一件事情,不會影響其他按鈕調節的維度,使分析更為簡單。

監督學習模型中:

  • 系統在訓練集上表現的好
    • 否則,使用更大的神經網路、更好的優化演算法
  • 系統在開發集上表現的好
    • 否則,使用正則化、更大的訓練集
  • 系統在測試集上表現的好
    • 否則,使用更大的開發集
  • 在真實的系統環境中表現的好
    • 否則,修改開發測試集、修改代價函式

1.3 單一數字評估指標

如果用多個指標去評估各個系統的表現,很難抉擇,因為各有利弊。

應該嘗試去設定一個合理的單一實數評估指標,所有系統都通過這一個指標來評估好壞,問題就會簡單的多,迭代速度也會加快。

例如:

  • 查準率(Precision):計算結果中 true 的個數除以計算結果的個數
  • 查全率(Recall): 計算結果中true的個數除以全集中真實true的個數

  • F1 Score:查準率和查全率的調和平均數

    F1_sorce=21precision+1recall
    選擇單一的F1作為評估指標表現更好。

1.4 滿足和優化指標

對於某一問題,如要求模型準確率儘可能的高,執行時間在100 ms以內。這裡以Accuracy為優化指標,以Running time為滿足指標,我們可以從中選出B是滿足條件的最好的分類器。

一般的,如果要考慮N個指標,則選擇一個指標為優化指標,其他N-1個指標都是滿足指標:

Nmetric:{1OptimizingmatircNmetirc1Satisificingmatric

1.5 訓練/開發/測試集劃分

  • 所選擇的開發集和測試集中的資料,要與未來想要或者能夠得到的資料類似,即模型資料和未來資料要具有相似性
  • 在選擇開發集和測試集時要使二者來自同一分佈,且從所有資料中隨機選取

1.6 開發集合測試集的大小

開發驗證集dev 和 單一評估指標一起確定了模型的訓練目標。

傳統劃分

  • 資料量小:100-10000
  • 70/30
  • 60/20/20

大資料劃分:

  • 資料量大:>1000000
  • 98/1/1
  • 99/0.5/0.5

測試集: 評測效能指標:10000或100000 足夠了
如果不需要評估效能指標,甚至可以沒有測試集(不推薦)

在沒有測試集時,只有train/dev 但是人們習慣說成train/test, 我們應該知道這裡的test其實指的是dev。

1.7 什麼時候該改變開發/測試集和指標

  • 如果評估指標無法正確評估演算法的排名(排名與真實場景不符),則需要重新定義一個新的評估指標。
  • 如果在訓練開發測試的過程中得到的模型效果比較好,但是在實際應用中自己所真正關心的問題效果卻不好的時候(資料與真實場景不符),就需要改變開發、測試集或者評估指標。

上面七個小節講的是單一實數評估指標和模型優化,這兩個正像是兩個正交化的維度,互相獨立。

1.8 為什麼是人的表現

我們習慣於將機器學習的表現與人類的表現作比較。

通常我們發現,機器學習的效果在初始訓練時提升很快,但是一旦超過了人類的效果,則上升變得緩慢,最終達到理論最優(不是實際最優),這個理論最優的誤差稱為貝葉斯誤差。

造成這種現象的原因可能有以下幾種:當比人類表現差時

  • 讓人們幫忙標記資料
  • 錯誤分析,比人差到哪裡了
  • 分析偏差和方差

1.9 可避免偏差

一般我們不用貝葉斯誤差去衡量偏差,而是用人類的表現去衡量。

  • 偏差:訓練集的錯誤
  • 可避免偏差:訓練集的錯誤與人類的錯誤的差
  • 方差: 開發驗證集的錯誤與訓練集錯誤的差

比較可避免偏差和方差,看改進哪個對模型進步更有意義。

1.10 理解人的表現

普通人和領域專家以及領域專家組對於一個問題的表現不同,如何定義人類的標準?一般看你的目的是什麼,如果想做到最好,那就用領域專家組的標準,如果只是為了發表論文或部署上線,使用專家的標準即可,主要看你的目的是什麼。

  • 對人類水平誤差有一個大概的估計,可以讓我們去估計貝葉斯誤差,這樣可以讓我們更快的做出決定:減少偏差還是減少方差。
  • 而這個決策技巧通常都很有效果,直到系統的效能開始超越人類,那麼我們對貝葉斯誤差的估計就不再準確了,再從減少偏差和減少方差方面提升系統性能就會比較困難了。

1.11 超過人的表現

在架構化資料的模型中,機器學習系統的表現很容易超過人類

  • 點選率預估
  • 推薦演算法
  • 物流預測
  • 銀行貸款審批

在自然感知的模型中,人類比較擅長,機器學習想要超過人類就比較困難,不過也有一些機器學習系統的表現已經超過了人類。

1.12 改善你的模型的表現

基本假設

  • 模型在訓練集上有很好的表現
  • 模型推廣到開發和測試集啥會給你也有很好的表現

減少可避免偏差

  • 訓練更大的模型
  • 訓練更長時間、訓練更好的優化演算法(Momentum、RMSprop、Adam)
  • 尋找更好的網路架構(RNN、CNN)、尋找更好的超引數

減少方差

  • 收集更多的資料
  • 正則化(L2、dropout、資料增強)
  • 尋找更好的網路架構(RNN、CNN)、尋找更好的超引數