吴恩达《构建机器学习项目》精炼笔记(1)-- 机器学习策略(上)
AI有道
不可錯過的AI技術公眾號
關注
重要通知
本公眾號原名“紅色石頭的機器學習之路”已經改名為“AI有道”,請大家留意并繼續關注本公眾號!謝謝!
1
Why ML Strategy
當我們最初得到一個深度神經網絡模型時,我們可能希望從很多方面來對它進行優化,例如:
Collect more data
Collect more diverse training set
Train algorithm longer with gradient descent
Try Adam instead of gradient descent
Try bigger network
Try smaller network
Try dropout
Add L2 regularization
Network architecture: Activation functions, #hidden units…
可選擇的方法很多,也很復雜、繁瑣。盲目選擇、嘗試不僅耗費時間而且可能收效甚微。因此,使用快速、有效的策略來優化機器學習模型是非常必要的。
2
Orthogonalization
機器學習中有許多參數、超參數需要調試。通過每次只調試一個參數,保持其它參數不變,而得到的模型某一性能改變是一種最常用的調參策略,我們稱之為正交化方法(Orthogonalization)。
Orthogonalization的核心在于每次調試一個參數只會影響模型的某一個性能。例如老式電視機旋鈕,每個旋鈕就對應一個功能,調整旋鈕會調整對應的功能,而不會影響其它功能。也就是說彼此旋鈕之間是互不影響的,是正交的,這也是Orthogonalization名稱的由來。這種方法能夠讓我們更快更有效地進行機器學習模型的調試和優化。
對應到機器學習監督式學習模型中,可以大致分成四個獨立的“功能”,每個“功能”對應一些可調節的唯一的旋鈕。四個“功能”如下:
Fit training set well on cost function
Fit dev set well on cost function
Fit test set well on cost function
Performs well in real world
其中,第一條優化訓練集可以通過使用更復雜NN,使用Adam等優化算法來實現;第二條優化驗證集可以通過正則化,采用更多訓練樣本來實現;第三條優化測試集可以通過使用更多的驗證集樣本來實現;第四條提升實際應用模型可以通過更換驗證集,使用新的cost function來實現。概括來說,每一種“功能”對應不同的調節方法。而這些調節方法(旋鈕)只會對應一個“功能”,是正交的。
順便提一下,early stopping在模型功能調試中并不推薦使用。因為early stopping在提升驗證集性能的同時降低了訓練集的性能。也就是說early stopping同時影響兩個“功能”,不具有獨立性、正交性。
3
Single Number Evaluation Metric
構建、優化機器學習模型時,單值評價指標非常必要。有了量化的單值評價指標后,我們就能根據這一指標比較不同超參數對應的模型的優劣,從而選擇最優的那個模型。
舉個例子,比如有A和B兩個模型,它們的準確率(Precision)和召回率(Recall)分別如下:
如果只看Precision的話,B模型更好。如果只看Recall的話,A模型更好。實際應用中,我們通常使用單值評價指標F1 Score來評價模型的好壞。F1 Score綜合了Precision和Recall的大小,計算方法如下:
然后得到了A和B模型各自的F1 Score:
從F1 Score來看,A模型比B模型更好一些。通過引入單值評價指標F1 Score,很方便對不同模型進行比較。
除了F1 Score之外,我們還可以使用平均值作為單值評價指標來對模型進行評估。如下圖所示,A, B, C, D, E, F六個模型對不同國家樣本的錯誤率不同,可以計算其平均性能,然后選擇平均錯誤率最小的那個模型(C模型)。
4
Satisficing and Optimizing Metic
有時候,要把所有的性能指標都綜合在一起,構成單值評價指標是比較困難的。解決辦法是,我們可以把某些性能作為優化指標(Optimizing metic),尋求最優化值;而某些性能作為滿意指標(Satisficing metic),只要滿足閾值就行了。
舉個貓類識別的例子,有A,B,C三個模型,各個模型的Accuracy和Running time如下表中所示:
Accuracy和Running time這兩個性能不太合適綜合成單值評價指標。因此,我們可以將Accuracy作為優化指標(Optimizing metic),將Running time作為滿意指標(Satisficing metic)。也就是說,給Running time設定一個閾值,在其滿足閾值的情況下,選擇Accuracy最大的模型。如果設定Running time必須在100ms以內,那么很明顯,模型C不滿足閾值條件,首先剔除;模型B相比較模型A而言,Accuracy更高,性能更好。
概括來說,性能指標(Optimizing metic)是需要優化的,越優越好;而滿意指標(Satisficing metic)只要滿足設定的閾值就好了。
5
Train/Dev/Test Distributions
Train/dev/test sets如何設置對機器學習的模型訓練非常重要,合理設置能夠大大提高模型訓練效率和模型質量。
原則上應該盡量保證dev sets和test sets來源于同一分布且都反映了實際樣本的情況。如果dev sets和test sets不來自同一分布,那么我們從dev sets上選擇的“最佳”模型往往不能夠在test sets上表現得很好。這就好比我們在dev sets上找到最接近一個靶的靶心的箭,但是我們test sets提供的靶心卻遠遠偏離dev sets上的靶心,結果這支肯定無法射中test sets上的靶心位置。
6
Size of The Dev and Test Sets
在之前的課程中我們已經介紹過,當樣本數量不多(小于一萬)的時候,通常將Train/dev/test sets的比例設為60%/20%/20%,在沒有dev sets的情況下,Train/test sets的比例設為70%/30%。當樣本數量很大(百萬級別)的時候,通常將相應的比例設為98%/1%/1%或者99%/1%。
對于dev sets數量的設置,應該遵循的準則是通過dev sets能夠檢測不同算法或模型的區別,以便選擇出更好的模型。
對于test sets數量的設置,應該遵循的準則是通過test sets能夠反映出模型在實際中的表現。
實際應用中,可能只有train/dev sets,而沒有test sets。這種情況也是允許的,只要算法模型沒有對dev sets過擬合。但是,條件允許的話,最好是有test sets,實現無偏估計。
7
When to Change Dev/Test Sets and Metrics
算法模型的評價標準有時候需要根據實際情況進行動態調整,目的是讓算法模型在實際應用中有更好的效果。
舉個貓類識別的例子。初始的評價標準是錯誤率,算法A錯誤率為3%,算法B錯誤率為5%。顯然,A更好一些。但是,實際使用時發現算法A會通過一些色情圖片,但是B沒有出現這種情況。從用戶的角度來說,他們可能更傾向選擇B模型,雖然B的錯誤率高一些。這時候,我們就需要改變之前單純只是使用錯誤率作為評價標準,而考慮新的情況進行改變。例如增加色情圖片的權重,增加其代價。
原來的cost function:
更改評價標準后的cost function:
概括來說,機器學習可分為兩個過程:
Define a metric to evaluate classifiers
How to do well on this metric
也就是說,第一步是找靶心,第二步是通過訓練,射中靶心。但是在訓練的過程中可能會根據實際情況改變算法模型的評價標準,進行動態調整。
另外一個需要動態改變評價標準的情況是dev/test sets與實際使用的樣本分布不一致。比如貓類識別樣本圖像分辨率差異。
8
Why Human-level Performance
機器學習模型的表現通常會跟人類水平表現作比較,如下圖所示:
圖中,橫坐標是訓練時間,縱坐標是準確性。機器學習模型經過訓練會不斷接近human-level performance甚至超過它。但是,超過human-level performance之后,準確性會上升得比較緩慢,最終不斷接近理想的最優情況,我們稱之為bayes optimal error。理論上任何模型都不能超過它,bayes optimal error代表了最佳表現。
實際上,human-level performance在某些方面有不俗的表現。例如圖像識別、語音識別等領域,人類是很擅長的。所以,讓機器學習模型性能不斷接近human-level performance非常必要也做出很多努力:
Get labeled data from humans.
Gain insight from manual error analysis: Why did a person get this right?
Better analysis of bias/variance.
9
Avoidable Bias
實際應用中,要看human-level error,training error和dev error的相對值。例如貓類識別的例子中,如果human-level error為1%,training error為8%,dev error為10%。由于training error與human-level error相差7%,dev error與training error只相差2%,所以目標是盡量在訓練過程中減小training error,即減小偏差bias。如果圖片很模糊,肉眼也看不太清,human-level error提高到7.5%。這時,由于training error與human-level error只相差0.5%,dev error與training error只相差2%,所以目標是盡量在訓練過程中減小dev error,即方差variance。這是相對而言的。
對于物體識別這類CV問題,human-level error是很低的,很接近理想情況下的bayes optimal error。因此,上面例子中的1%和7.5%都可以近似看成是兩種情況下對應的bayes optimal error。實際應用中,我們一般會用human-level error代表bayes optimal error。
通常,我們把training error與human-level error之間的差值稱為偏差(bias),也稱作avoidable bias;把dev error與training error之間的差值稱為方差(variance)。根據bias和variance值的相對大小,可以知道算法模型是否發生了欠擬合或者過擬合。
10
Understanding Human-level Performance
我們說過human-level performance能夠代表bayes optimal error。但是,human-level performance如何定義呢?舉個醫學圖像識別的例子,不同人群的error有所不同:
Typical human : 3% error
Typical doctor : 1% error
Experienced doctor : 0.7% error
Team of experienced doctors : 0.5% error
不同人群他們的錯誤率不同。一般來說,我們將表現最好的那一組,即Team of experienced doctors作為human-level performance。那么,這個例子中,human-level error就為0.5%。但是實際應用中,不同人可能選擇的human-level performance基準是不同的,這會帶來一些影響。
假如該模型training error為0.7%,dev error為0.8。如果選擇Team of experienced doctors,即human-level error為0.5%,則bias比variance更加突出。如果選擇Experienced doctor,即human-level error為0.7%,則variance更加突出。也就是說,選擇什么樣的human-level error,有時候會影響bias和variance值的相對變化。當然這種情況一般只會在模型表現很好,接近bayes optimal error的時候出現。越接近bayes optimal error,模型越難繼續優化,因為這時候的human-level performance可能是比較模糊難以準確定義的。
11
Surpassing Human-level Performance
對于自然感知類問題,例如視覺、聽覺等,機器學習的表現不及人類。但是在很多其它方面,機器學習模型的表現已經超過人類了,包括:
Online advertising
Product recommendations
Logistics(predicting transit time)
Loan approvals
實際上,機器學習模型超過human-level performance是比較困難的。但是只要提供足夠多的樣本數據,訓練復雜的神經網絡,模型預測準確性會大大提高,很有可能接近甚至超過human-level performance。值得一提的是當算法模型的表現超過human-level performance時,很難再通過人的直覺來解決如何繼續提高算法模型性能的問題。
12
Improving Your Model Performance
提高機器學習模型性能主要要解決兩個問題:avoidable bias和variance。我們之前介紹過,training error與human-level error之間的差值反映的是avoidable bias,dev error與training error之間的差值反映的是variance。
解決avoidable bias的常用方法包括:
Train bigger model
Train longer/better optimization algorithms: momentum, RMSprop, Adam
NN architecture/hyperparameters search
解決variance的常用方法包括:
More data
Regularization: L2, dropout, data augmentation
NN architecture/hyperparameters search
喜歡就請贊賞或轉發分享一下吧
往 期 推 薦
【1】吳恩達《優化深度神經網絡》精煉筆記(1)-- 深度學習的實用層面
【2】干貨|機器學習基石精選文章鏈接
【3】機器學習中的維度災難
長按二維碼掃描關注
AI有道
ID:redstonewill
紅色石頭
個人微信 : WillowRedstone
新浪微博:@RedstoneWill
總結
以上是生活随笔為你收集整理的吴恩达《构建机器学习项目》精炼笔记(1)-- 机器学习策略(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超实用编程技术指南!为什么你还学不会一门
- 下一篇: 云计算开发学习笔记:Python3迭代器