第3次課結構化機器學習 - week1 機器學習策略(1)

1. 爲什麼是ML策略

需求

建了一個模型,但是離目標還差點,需要改進該模型,有如下一些思路:

  1. 收集更多的數據
  2. 收集一些反例
  3. 用梯度下降訓練更長的時間
  4. 用Adam優化算法
  5. 嘗試更大的網絡
  6. 嘗試小點的網絡
  7. 嘗試dropout
  8. 添加L2 正則項
  9. 網絡結構方面的優化
    1. 激活函數
    2. 隱藏層節點

但是嘗試一個idea可能要花費幾個月的時間,因此選擇就成了一個問題。

定義

分析機器學習問題的方法,通過這些方法可以朝着最有希望的方向走

2. 正交化

兩個例子

  1. 對於電視機來說,有很多按鈕來控制畫面,比如說旋轉、拉伸、平移等,如果電視只有混合的按鈕,旋轉一個這樣的按鈕,會同時進行不同比例的旋轉、拉伸、平移操作,那麼就很難把只是偏移的畫面調整到一個合適的位置
  2. 對於車來說,油門、剎車和方向盤,如果只有混合的裝置,操作它會同時改變車速和方向,那麼很難控制車的行爲
    • 所以需要把動作剝離開來,車速和方向單獨控制,就可以很容易控制車的行爲,稱之爲正交化

假設鏈

假設 如果不好採取的方法
訓練集的成本函數( human performance) 更大的網絡,Adam優化算法…
驗證集的成本函數 正則化,增大訓練集…
測試集的成本函數 可能過擬合,因此更大的驗證集
在真實環境中的表現 意味着驗證集分佈設置不正確,要麼成本函數測量的指標不對,因此改變驗證集或成本函數
  • early stoping,早期停止會影響對訓練集的訓練、同時改善驗證集的表現,類似於一個混合按鈕,同時改變多個表現

3. 單一數字評估指標

只用一個評價指標來衡量模型的好壞。

Presicion & Recall

  • Presicion:判斷是貓的圖片中真的是貓的比例
  • Recall:實際是貓的圖片中被檢測出來的比例

這兩個指標需要權衡折中(trade-off),因爲這兩個指標是相對的,兩個極端:把所有圖片都判定爲貓,那麼Recall爲100%,但是Presicion很低;只選擇可能性最大那張圖片是貓,那麼Presicion就很可能是100%,但是Recall就很低。

這就導致了有的模型Presicion好Recall不好,有的模型Presicion不好Recall好,有兩個指標的時候就不好比較哪個模型比較好。所以單個指標有利於量化模型的好壞,快速挑選好的模型。

F1 score

綜合考慮Presicion和Recall的指標,是Presicion和Recall的調和平均數(harmonic mean)
- 計算公式

F1=21P+1R
  • 課後筆記裏Recall的公式錯誤

4. 滿足和優化指標

已知2個評價指標準確度和運行速度,如何綜合得到一個指標?

  1. 線性加權組合:cost = accuracy-0.5*running_time
  2. 把指標分爲2類:滿足指標(satisfing metric),只需要滿足一定的條件就可以,例如運行速度小於100ms;優化指標(optimistizing metric),需要優化的指標,越大越好,例如準確度,即挑選一個作爲優化指標,其他的作爲滿足指標,也就滿足了3中的只有一個指標來評價模型的原則。按照這類方法得到的指標如下:
    maximize subject to accuracyrunningTime100ms

舉個例子

語音設備喚醒,比如說你好百度。

對於這種情況,我們更加關注準確度,也就是在要喚醒的時候能夠很大程度地喚醒設備。相對來說錯誤喚醒就不那麼重要了。所以我們的指標如下:

maximize subject toaccuracyfalse positive1 per day

5. 訓練、開發、測試集的劃分

訓練、開發、測試集的概念

  • 開發集(development set)有時也成爲保留交叉驗證集(hold out cross validation set,驗證集)。

有很多想法,用訓練集訓練不同的模型,再用開發集來評估不同的思路,然後選擇一個不斷迭代去改善開發集的性能,直到最後得到一個令人滿意的成本,最後再用測試集去評估。

確定了開發集和評價指標,就相當於確立了一個目標。訓練不同的模型去逼近這個目標。

訓練集用來訓練模型,開發集用來選擇模型種類結構和調試模型參數,測試集用來評估模型。

  • 開發集和測試集劃分的原則:分佈要一致

舉個例子

有不同國家的貓的圖片,例如美國、英國、其他歐洲國家、南美、印度、中國、其他亞洲國家、澳大利亞,選擇前4個或者隨機選4個作爲開發集,剩下4個作爲測試集。

  • 當然上面的做法不好,缺點就是開發集和測試集的分佈不一致,很容易導致調好的模型的測試集上表現不好。因此通常的做法是把8個國家的貓圖片混在一起,隨機選擇作爲開發集和測試集。

6. 開發集和測試集的大小

  • 傳統機器學習中,樣本數據少,比如100條或者1000條或者10000條,有這樣的經驗劃分
train set test set
70% 30%
train set development set test set
60% 20% 20%
  • 數據集變大了,如果有一百萬條樣本數據,那麼如下劃分
train set development set test set
98% 1% 1%

深度學習算法需要很多的數據才能訓練完成,而對於測試集來說,只需要能夠得到足夠置信度的評價指標就可以了,所佔比例可以小於30%。對於開發集來說,需要足夠大,來評估不同模型。

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

對於貓圖片的分類問題,算法A的誤差爲3%,算法B的誤差爲5%,但是算法A誤分的圖片中有很多色情圖片(porn),而算法B中沒有。從開發集和評價指標的角度來說選擇算法A,但是從客戶應用的角度來說選擇算法B,這時候就需要改變指標。

Error=1iw(i)i=1mdevw(i)I(y(i)predy(i))

w(i)={110if x(i) is nonpronif x(i) is porn
  • 如果模型算法的驗證集測試集的評價指標都不錯,但是應用的時候不好,就要考慮更換評價指標和驗證集、測試集

比如說貓圖片分類問題,如果我們用的圖片數據都是高質量的圖片,而用戶用的是低質量模糊奇怪的圖片,效果就不好,這種情況就需要更換驗證集和測試集。

8. 爲什麼是人的表現

和人比較的兩個原因:

  1. 機器學習領域的快速發展有了近似或者超過人的效果
  2. 機器學習在很多領域都可以替代人的作用,所以不可避免的要和人做比較

舉個例子

在算法模型數據的驅動下,效果越來越好,最終會超過人的表現,但是同時也有一個上限,叫做貝葉斯最優誤差(Bayes optimal error,Bayes error,best possible error),即理論上可能達到的最優誤差。

比如說在語音識別領域,有些音頻就是這麼嘈雜,以至於根本就不可能知道說的是什麼。

性能超過人的表現以後性能提升少的原因:

  1. 有些人的表現十分接近貝葉斯最優誤差,比如說十分擅長辨認圖像,聽聲音等
  2. 性能比人的表現差的時候,有很多工具可以提升,但是比人的表現好了以後,很多工具就不怎麼有效了

如果性能比人的表現要差,提升的工具有:

  1. 請專家標註數據,從而有更多的數據訓練模型
  2. 從人工誤差分析中,也就是把做錯的例子給專家看,找出分錯的原因,爲什麼人能做對,算法出錯
  3. 分析偏差和方差(bias/variance),偏差和方差在前面的視頻中有提到,分別指訓練集的性能和開發集的性能

    • 如果你的算法性能比人的表現要好,以上3種工具就很難見效了。

9. 可避免偏差

對於貓圖片分類問題,有如下兩個模型:

A情況 B情況
Human Performance 1% 7.5%
Training error 8% 8%
Dev error 10% 10%
  1. 對於A來說,訓練集的誤差和人的表現相比測試集和開發集的表現來說差很多,因此偏差(bias)很大,即訓練集的誤差很大,所以更關注於減少偏差的策略,比如訓練一個更大的網絡
  2. 如果貓的圖片模糊辨識不清,就會出現B的情況,測試集和開發集的表現相比訓練集和人的表現來說差很多,因此方差(variance)很大,即測試集的誤差很大,所以更關注於減少方差的策略,比如正則化,更多的訓練數據等

在貓圖片分類的問題中,可以假設人的表現就是貝葉斯最優誤差。

可避免偏差(avoidable bias)的定義

貝葉斯最優誤差和訓練集誤差的差值稱爲可避免偏差。

10. 理解人的表現

人類水平表現(human-level performance)的定義

舉個例子

通過醫學圖片判斷骨折
假設如下:

誤差
普通人 3%
普通醫生 1%
有經驗的醫生 0.7%
專家團隊 0.5%

這個例子中,0.5%就可以認爲是貝葉斯最優估計,而誤差一般達到1%就有應用的價值了。所以人類水平表現是一個目標,看你的應用需求。

11. 超過人的表現

舉個例子

A情況 B情況
Team of humans 0.5% 0.5%
One human 1% 1%
Training error 0.6% 0.3%
Dev error 0.8% 0.4%
  • 對於A情況,選擇專家團隊的誤差作爲人類水平表現,則可避免偏差爲0.1%,而方差爲0.25,因此選擇優化方差,比如正則化或者增加訓練數據
  • 對於B 情況,超過了專家團隊的誤差,因此不能估計貝葉斯最優誤差是多少,所以不好判斷是優化偏差還是優化方差

機器學習好過人類的領域

  1. 網絡廣告,估計某個用戶點擊廣告的可能性
  2. 產品推薦,推薦電影或數據之類的任務
  3. 物流預測,預測從A到B開車的時間
  4. 借貸證明,預測某人會不會償還貸款

深度學習,比如說自然語言處理、計算機視覺等自然感知方面,因爲人類比較擅長這些,所以超越人類比較困難,但是也有好過人類表現的
1. 語音識別
2. 圖像識別
3. 醫學方面,比如ECG、癌症判斷、放射科等

12. 改善模型的性能

目標

  1. 訓練集和人類水平表現接近或者超過,即可避免偏差低
  2. 開發集和和測試集的誤差低,方差要低

正交化方法

  1. 對於偏差,可以訓練更大的網絡或者訓練更久
  2. 對於方差,可以使用正則化或者手機更多的訓練數據

如何減少可避免偏差和方差

  1. 改善可避免偏差,即人類水平和訓練集誤差
    1. 訓練更大的網絡
    2. 訓練更久,使用優化方法,比如動量momuntom,RMProp,Adam
    3. 改變神經網絡結構或者超參數
  2. 改善方差,即開發集測試集和訓練集之間的差別
    1. 更多的數據
    2. 正則化方法,L2、Dropout,數據增強
    3. 改變神經網絡結構或者超參數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章