達叔的正交化(第三課3.2)

搭建機器學習系統的挑戰之一就是可以嘗試和改變的東西太多太多了,如有那麼多的參數可以調整。達叔注意到那些效率很高的機器學習專家有個特點,他們思路清晰對於調整什麼來達到某個效果,他們非常清楚,這個步驟就稱之爲正交化。(就像一臺老式電視的很多按鈕一樣,通過調整某一個旋鈕來達到自己想要的某種效果)

要搭建一個監督學習系統,通常需要調整旋鈕來確保四件事情。首先,應該確保系統在訓練集上得到的結果不錯,所以訓練集上的表現必須通過某種評估達到接受的程度(對於某種評估甚至達到人類水平的表現);然後再訓練集上表現不錯時,就希望系統在驗證集有好的表現;然後,也希望在測試集上有好的表現;最後,希望系統在現實的實際使用中表現令人滿意。

第一種,如果不能很好的擬合訓練集,調試的辦法有:

  1. 訓練更大的網絡;
  2. 或者是切換到更好的優化算法,如Adam優化算法等
  3. 達叔說在本週及下週一講(等我get到後補上)

第二種,如果發現算法對驗證集的擬合效果很差,調試的辦法有:

  1. 可以嘗試正則化以使系統滿足第二個條件;
  2. 可以增大訓練集,這也是一種調整方法,可以使學習算法更好的歸納開發集的規律;

補充1:

達叔在可避免偏差(Avoidable bias)這一節中再次提到了前兩種情況發生時的解決辦法:

如果說模型的training error和bayes error相差相差較大,表明模型的效果不好,解決辦法有:先聚焦在減小training error上,如用更大的網絡結構,跑久一點梯度下降

如果說模型的training error與bayes error(或者可以近似爲人類誤差human error)相差很小,但是training error和val error相差很大,表明方差很大,可以考慮減小方差,具體的方法有:正則化、更大的網絡結構、更多的訓練數據;

可避免偏差:把bayes error和training error之間的差距稱爲可避免偏差(Avoidable bias);

補充2:

達叔在第12節改善模型表現這一節中,提出了一個提高算法性能的指導方針,首先提出之前先做兩個基本假設:①在正常情況下,模型能夠在訓練集上表現很好,即可避免偏差很小;②訓練表現很好的模型,在驗證集和測試集上也可以取得很好的效果,即方差很小。

第一,可避免偏差(bayes error和training error之間的差距)。可以嘗試的辦法有:訓練更大的model、訓練更久、用更好的優化算法(如:momentum、RMSprop、Adam等)、尋找更好的新的神經網絡結構、更好的超參數(包括改變激活激活函數、改變層數、隱藏層單元數、)

第二,方差(training error和val error之間的差距)。可以嘗試的方法有:收集更多的數據(可以更好地推廣到系統看不到的驗證集數據)、正則化(如l2、Dropout、data augmentation)、超參數搜索等。


第三種,如果在測試集上的效果不好,調試的方法有:

  1. 需要更大的驗證集,因爲在驗證集上效果不錯,但是在測試集上不好,可能是對驗證集過擬合了,所以需要退回一步用更大的驗證集 

第四種,如果在測試集上做的很好,但是在現實使用中效果卻一般,解決的辦法有:

  1. 返回去改變驗證集或者cost function,因爲如果根據某個成本函數,系統在測試集上做的很好,但無法反映算法在現實中的表現,意味着驗證集分佈設置不正確或者是成本函數測量的指標不對。 

具體的細節,達叔會在後面的幾節課裏面進行詳細的介紹。

補充:達叔提到,他一般不會使用earlystopping,以爲這會同時改變在訓練集和驗證集上的效果,也就是earlystopping沒有那麼好的正交化效果。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章