目錄鏈接:吳恩達(dá)Deep Learning學(xué)習(xí)筆記目錄
?1.機(jī)器學(xué)習(xí)策略一
?2.機(jī)器學(xué)習(xí)策略二
1. 機(jī)器學(xué)習(xí)策略一
??什么是機(jī)器學(xué)習(xí)策略?假設(shè)我們正在調(diào)試一個用于識別貓的分類器,此時其準(zhǔn)確率已經(jīng)達(dá)到了90%,但還不夠好。我們可能會有很多措施,如:
??①收集更多的數(shù)據(jù)
??②收集更多樣性的數(shù)據(jù)(如不同姿勢的貓)
??③讓梯度下降算法訓(xùn)練時間更長
??④嘗試更大(或更?。┑纳窠?jīng)網(wǎng)絡(luò)
??⑤嘗試dropout
??⑥添加L2正則
??⑦改變神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)(激活函數(shù)、隱藏層數(shù)、單元數(shù)等)
?? ......
?? 但是,如果你作出了錯誤的選擇,往錯誤的方向進(jìn)行,那么最后的結(jié)果就是浪費(fèi)時間。機(jī)器學(xué)習(xí)策略就是如何選擇正確的方法來改善神經(jīng)網(wǎng)絡(luò),并行之有效。
? 1.1 正交化
??此時,你需要清晰的明白,你所改變的一個參數(shù)(或方法)對于你的模型將有什么樣的影響,能夠達(dá)到什么樣的效果。如一輛汽車,方向盤調(diào)整方向,油門加速,剎車減速,各自達(dá)到一個效果,但三個操作會得到一個最終結(jié)果:在某個方向上速度為多少移動。假設(shè)現(xiàn)在有個控制器,將三個操作以不同的權(quán)重加和,雖然通過調(diào)整最終也能獲得一樣的結(jié)果,但過程比較復(fù)雜。所以設(shè)計正交化的參數(shù)(或方法)比較容易調(diào)試,也就是應(yīng)該按照獨(dú)立的步驟一步步進(jìn)行,而不是混合在一起進(jìn)行。
? 1.2 單一數(shù)值評估指標(biāo)
?? 如在分類識別任務(wù)中,查準(zhǔn)率和查全率往往是趨勢相反,如果同時用兩個指標(biāo)來考察兩個分類器的優(yōu)劣,很難決定哪一個分類器在這個任務(wù)上更好,因此需要一個單一的評估指標(biāo)來進(jìn)行比較,如F1 score。
? 1.3 滿足和優(yōu)化指標(biāo)
&emsp&emsp這一方法是指,分別定義需要滿足的指標(biāo)和需要去優(yōu)化的指標(biāo),比如貓分類器中,定義:
??需要滿足的指標(biāo):運(yùn)行時間小于100ms即滿足要求,
??需要優(yōu)化的指標(biāo):準(zhǔn)確率。
顯然,此時只要運(yùn)行時間小于100ms的分類器都可以進(jìn)入備選,最后只需要在這些備選中選出準(zhǔn)確率最高的分類器即可。更一般的,如果需要優(yōu)化的指標(biāo)有多個,此時需要定義一個為優(yōu)化指標(biāo),其他為滿足指標(biāo)進(jìn)行評估比較。
? 1.4 數(shù)據(jù)集劃分
??①訓(xùn)練集,驗(yàn)證集,測試集應(yīng)該是同分布的,否則將會導(dǎo)致訓(xùn)練出來的模型,在測試集上可能效果不好;至少驗(yàn)證集和測試集是同分布的。
??②在機(jī)器學(xué)習(xí)中,一般將訓(xùn)練集和測試集以7:3的比例劃分,或者按train : val :test = 6 : 2 : 2劃分。在機(jī)器學(xué)習(xí)早期這樣的劃分是合理的,特別是以前的數(shù)據(jù)集較小的情況下。但現(xiàn)在的機(jī)器學(xué)習(xí),數(shù)據(jù)集較大,如百萬級別,train : val :test = 98 : 1 : 1的劃分比例就夠了。
? 1.5 何時改變評估指標(biāo)
??假設(shè)有兩個分類器,A,B。A識別貓的錯誤率為3%,但會將一些和諧的圖片當(dāng)作貓推送給用戶;B識別貓的錯誤率為5%,但不會將和諧圖片當(dāng)作貓推送。如果采用錯誤率來對算法性能進(jìn)行排序,排序結(jié)果就是算法A更好,但實(shí)際上我們更傾向于算法B,此時我們需要改變評估指標(biāo)為:


? 1.6 人的表現(xiàn)和模型的表現(xiàn)
(1)為什么是人的表現(xiàn)?
? ? ①隨著機(jī)器學(xué)習(xí)的發(fā)展,有的模型的性能已經(jīng)能夠威脅人的表現(xiàn);②試圖讓機(jī)器做人類能做的事時,可以精心設(shè)計機(jī)器學(xué)習(xí)系統(tǒng)的工作流程,讓工作流程效率更高。
? ?對于機(jī)器學(xué)習(xí),開始往人類水平努力時,進(jìn)展是很快的,但當(dāng)這個算法的性能超過人后,提升就會變得很緩慢。我們希望算法性能能夠達(dá)到理論上限,但實(shí)際上其性能無法超過某個理論上限,這個上限稱為貝葉斯最優(yōu)錯誤率。為什么超過人類水平后,提升變慢?①人類水平已經(jīng)離上限較近,改善空間較小;②算法性能低于人類水平時,可以通過某些手段來改善,但超過人類水平,這些手段就沒那么好用了。比如在圖片識別中,人類水平很高,當(dāng)算法水平較低時,你可以:
? ?人為的對數(shù)據(jù)進(jìn)行標(biāo)記,然后喂給算法;
? ?分析人在識別圖片時,是如何識別正確的;
? ?進(jìn)行偏差和方差分析
(2)可避免偏差?
? ?將人類水平視作貝葉斯最優(yōu)錯誤率,訓(xùn)練集性能與人類水平之間的差別稱為可避免偏差。

(3)理解人類表現(xiàn)


? 1.7 模型改善
? ?①對于訓(xùn)練集擬合得很好,避免高偏差

2. 機(jī)器學(xué)習(xí)策略二
? 2.1 誤差分析

? ? 假設(shè)有一個模型用于識別貓和狗,識別錯誤率為10%,實(shí)驗(yàn)發(fā)現(xiàn)會將一些狗識別為貓,所以針對狗得識別對算法進(jìn)行優(yōu)化,這樣做值不值得呢?可以通過誤差分析來解答這個問題。取100個被識別錯誤的樣本,統(tǒng)計其中狗被識別錯誤的占比,假設(shè)我們能夠?qū)⑺惴▋?yōu)化到將所有狗都識別正確(性能上限),那么總錯誤率10% * 占比即本次算法優(yōu)化掉的錯誤率。例如,當(dāng)這100個樣本中僅有5%屬于狗被識別錯誤,那么優(yōu)化后,錯誤率僅由10%降低至9.5%,降低比例為10% * 5% = 0.5%,此時明顯花時間在優(yōu)化識別狗上是不合適的;當(dāng)100個樣本中有50%被識別錯誤時,則能將10%降低至5%,此時優(yōu)化算法識別狗的功能是極具意義的。

? 2.2 清除標(biāo)記錯誤數(shù)據(jù)
? ?Deep learning對于隨機(jī)性錯誤數(shù)據(jù)比較健壯(某個數(shù)據(jù)被不小心標(biāo)記錯了),但對于系統(tǒng)性錯誤會導(dǎo)致模型性能較低,如將所有白色的狗都標(biāo)記為了貓。如果是驗(yàn)證集和測試集中有標(biāo)簽錯誤,則應(yīng)在誤差分析表中增加一列分析被標(biāo)記錯誤的樣本占比。
? ?修正原則:①修正方法同時作用于驗(yàn)證集和測試集上;②對預(yù)測正確的例子也進(jìn)行標(biāo)記修正;③如果不同時對訓(xùn)練集進(jìn)行修正,可能導(dǎo)致三個數(shù)據(jù)集分布稍微有點(diǎn)差異(但算法通常比較健壯的話,可以忽視,增加泛化性)
? 2.3 數(shù)據(jù)劃分問題
? ?假設(shè)需要構(gòu)建一個模型用于識別APP上傳的圖片中的貓,在網(wǎng)頁上可以獲得大量的高清圖片數(shù)據(jù)(200,000),但在APP上傳得到的圖片數(shù)量較小(10,000),且模糊,那么,顯然僅用APP上傳的數(shù)據(jù)用于訓(xùn)練,數(shù)據(jù)量太小,我們該如何處理這個問題呢?
? ?①將兩個數(shù)據(jù)集混合后打亂,再劃分train-val-test,這樣能夠達(dá)到三個子集同分布。但存在一個較大的問題,如此劃分得到的val-test數(shù)據(jù)集很大一部分是網(wǎng)絡(luò)圖片,并不是我們想要關(guān)心的數(shù)據(jù)分布,實(shí)際上訓(xùn)練出來的模型更適合于網(wǎng)頁圖片,而不是APP圖片。

? 2.4 不同分布數(shù)據(jù)集的偏差和方差(數(shù)據(jù)不匹配問題)
? ?還是識別貓的圖片,貝葉斯最優(yōu)錯誤率認(rèn)為0%,train error 1%,val error 9%,如果是同分布的數(shù)據(jù),那么可以得出模型高方差過擬合的結(jié)論,但是,如果訓(xùn)練集和驗(yàn)證集不是同分布的,就無法得出這個結(jié)論,因?yàn)閷?dǎo)致這個高錯誤率的因素包含①模型只了解訓(xùn)練集,②數(shù)據(jù)集不是同分布,那么就很難知道這個高錯誤率有多少是由于這兩個原因造成的。
? ?那么,此時作偏差和方差分析,需要重新設(shè)定一個同分布的train-val,將原有的訓(xùn)練集劃分一部分出來作為驗(yàn)證集來對模型進(jìn)行評估,再來分析這個模型是否存在偏差或方差問題。通過對比同分布的新驗(yàn)證集和不同分布的原驗(yàn)證集的誤差來確定哪一個因素導(dǎo)致誤差升高(方差或非同分布)。


嘗試解決數(shù)據(jù)不匹配問題的方法
非系統(tǒng)性方法,不一定起用? ?①分析導(dǎo)致val-test與train差異的因素,如車載導(dǎo)航語音識別中,驗(yàn)證集可能噪音較多,含有街道號等;
? ?②使訓(xùn)練集更接近驗(yàn)證集(如人工合成模擬汽車環(huán)境中的語音,但可能會造成過擬合問題),或者收集更多類似驗(yàn)證集的數(shù)據(jù);
? 2.5 遷移學(xué)習(xí)
??從一個任務(wù)中學(xué)習(xí)得到的內(nèi)容應(yīng)用到另一個任務(wù)上去即為遷移學(xué)習(xí)。如將識別貓狗的網(wǎng)絡(luò)用于放射片識別,將輸出層去掉后替換成新的輸出層,并初始化最后一層的權(quán)重,重新訓(xùn)練,可以只更新最后幾層的參數(shù)(新數(shù)據(jù)量較少時),也可以全部更新。為什么這種遷移是有用的呢?因?yàn)橹坝?xùn)練出來的網(wǎng)絡(luò),學(xué)習(xí)到了一些關(guān)于圖片的結(jié)構(gòu)化信息,比如邊緣、點(diǎn)、線等,這相當(dāng)于一個預(yù)訓(xùn)練的過程。

? 2.6 多任務(wù)學(xué)習(xí)



? 2.7 end-to-end 學(xué)習(xí)
??如語音識別中,end-to-end學(xué)習(xí),①通過MFCC學(xué)習(xí)到人工設(shè)計的特征。②通過ML學(xué)習(xí)到發(fā)音,③再到單詞,④再到翻譯,這個過程是分階段進(jìn)行的。但這種方法需要大量的數(shù)據(jù)支持。

??如人臉識別,①在第一步選取人臉的時候可以有很多數(shù)據(jù),可以不用公司員工的照片數(shù)據(jù),②第二步,識別兩張照片是否是同一個人,也可以從其他渠道獲取。但如果要一步到位進(jìn)行人臉識別,那么僅僅只能采用公司內(nèi)員工人臉數(shù)據(jù),數(shù)據(jù)量較小。顯然end-to-end的方法更優(yōu)異。


end-to-end 學(xué)習(xí)的優(yōu)缺點(diǎn)
