結(jié)構(gòu)化機(jī)器學(xué)習(xí)項(xiàng)目
第二周
1.1進(jìn)行誤差分析
在誤差分析時(shí),有時(shí)導(dǎo)致誤差的原因會(huì)有很多種,這時(shí)你應(yīng)該統(tǒng)計(jì)不同錯(cuò)誤的錯(cuò)誤數(shù)量,得到導(dǎo)致錯(cuò)誤的原因(如圖片過于模糊,標(biāo)注有錯(cuò)等等)的具體比例之后,你就可以得到啟發(fā),去選擇出最有效的方向去做出改變。
1.2清楚標(biāo)注錯(cuò)誤的數(shù)據(jù)
1.標(biāo)注錯(cuò)誤分隨機(jī)錯(cuò)誤和系統(tǒng)錯(cuò)誤,隨機(jī)錯(cuò)誤或許不會(huì)影響系統(tǒng)的最終效果,但如果你犯了一直把白色的狗標(biāo)成貓的系統(tǒng)性錯(cuò)誤,影響將是非常大的。
2.標(biāo)注錯(cuò)誤的比率要看在總體中占有錯(cuò)誤的比率有多少,如果偏大,最好優(yōu)先解決它。
3.開發(fā)集和測(cè)試集必須來自同一分布,訓(xùn)練集可以來自稍微不同的分布,(這個(gè)應(yīng)用在系統(tǒng)移植上是否是個(gè)啟發(fā)呢?)。
1.3快速搭建你的系統(tǒng),然后進(jìn)行迭代
步驟:
1.確定你的系統(tǒng)所要達(dá)到的目標(biāo)
2.搭建一個(gè)機(jī)器系統(tǒng),找到訓(xùn)練集,開始訓(xùn)練
3.根據(jù)得到的訓(xùn)練效果,結(jié)合之前所說的偏差,方差分析方法,確定下一步改往哪個(gè)方向改(甚至可以幫助你改變思路,得到新的研究方向)
4.重新得到改進(jìn)后的效果,如此迭代,直到效果滿意。
1.4如何對(duì)你收集到的數(shù)據(jù)進(jìn)行劃分?
按老師的例子,你的訓(xùn)練集可以是爬蟲爬來的,即便跟的目標(biāo)對(duì)象的數(shù)據(jù)有所不同,也沒關(guān)系,這個(gè)數(shù)量可以很大。但你的開發(fā)集和測(cè)試集必須是來自目標(biāo)對(duì)象的,從目標(biāo)對(duì)象上取得的數(shù)據(jù)集來自這同一分布的就可以。這數(shù)量無需很大,足夠便可。下面1.5會(huì)講數(shù)據(jù)不匹配時(shí)應(yīng)該如何分析誤差和方差。
我覺得這用于對(duì)自己模型的交通標(biāo)志識(shí)別是一個(gè)很大的指導(dǎo)。
1.5數(shù)據(jù)不匹配時(shí)偏差和方差的分析
上面說過你的訓(xùn)練集(稱L1)和開發(fā)(稱L2),測(cè)試集不一定需要來自同一分布,這時(shí)候你分析偏差和方差的方法就要有所改變:
我們要建立一個(gè)訓(xùn)練-開發(fā)集(稱L3),它是在打散訓(xùn)練集之后從訓(xùn)練集取出的一部分。我們訓(xùn)練依舊訓(xùn)練舊有的訓(xùn)練集。
分析偏差的方法依舊:訓(xùn)練集誤差 — 貝葉斯誤差(人類水平誤差)
方差:訓(xùn)練-開發(fā)集誤差 — 訓(xùn)練集誤差
數(shù)據(jù)不匹配:開發(fā)集誤差 — 訓(xùn)練-開發(fā)集誤差 = x,如果x過大,說明就是數(shù)據(jù)不匹配的問題了。1.6節(jié)將講解這個(gè)問題的解決方法。
1.6數(shù)據(jù)不匹配問題的嘗試解決
首先你最好人工分析一下,訓(xùn)練集和開發(fā)集的具體誤差在什么地方,如開發(fā)集的太過模糊,或者噪聲很大?等等,之后你可以采用:
1.讓訓(xùn)練集更像開發(fā)集一點(diǎn),或者收集更類似你開發(fā)集的數(shù)據(jù),比如你可以刻意將訓(xùn)練集的圖片也變得模糊,你可以收集一些模糊的照片進(jìn)入訓(xùn)練集。。。等等方法。
2.你可以用人工合成數(shù)據(jù)的技術(shù)去合
成數(shù)據(jù)集,但你要注意,不要在總體數(shù)據(jù)的一個(gè)子集里折騰來折騰去,這樣往往會(huì)導(dǎo)致你的神經(jīng)網(wǎng)絡(luò)認(rèn)識(shí)的東西太少,還是過擬合了。
1.7遷移學(xué)習(xí)
你可以用一個(gè)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)(A)如貓的分類器,去應(yīng)用到其他鄰域,做一個(gè)類似的工作(B):如X射線照片的病灶識(shí)別,往往效果不錯(cuò),也能節(jié)省很多時(shí)間。但什么時(shí)候遷移學(xué)習(xí)是有效的呢?
1.輸入是類似的東西:你之前輸入是圖片,遷移之后的也應(yīng)該是圖片
2.A的任務(wù)比B更多,遷移的效果更好
3.A的底層次學(xué)習(xí)之后對(duì)B的學(xué)習(xí)是有幫助的,那么遷移學(xué)習(xí)也是有意義的。
比如說你沒法取得那么多的放射科X射線照片,去從頭到尾訓(xùn)練一個(gè)很大的神經(jīng)網(wǎng)絡(luò),你就可以用其他圖像識(shí)別但經(jīng)過了大量學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),它學(xué)過了很多關(guān)于圖像識(shí)別的底層次特征,你可能只需要更改最好一層并甲乙訓(xùn)練就可以達(dá)到預(yù)想的效果。高效,有力的解決方案。
1.8多任務(wù)學(xué)習(xí)
我們的ssd ,fast-rcnn都是多任務(wù)學(xué)習(xí),就是讓一個(gè)足夠大的神經(jīng)網(wǎng)絡(luò)同時(shí)做幾個(gè)很相似的任務(wù):讓一個(gè)神經(jīng)網(wǎng)絡(luò)同時(shí)識(shí)別車,交通標(biāo)志,行人,路障幾個(gè)任務(wù),因?yàn)槎际菍?duì)圖像的識(shí)別,所以神經(jīng)網(wǎng)路之前的學(xué)習(xí)對(duì)所有之后的任務(wù)都是有幫助的,它的效果往往比一個(gè)一個(gè)搭建網(wǎng)絡(luò)去發(fā)別識(shí)別幾個(gè)物體效果都要更好。
總結(jié):
1.這一組任務(wù)能夠公用底層次特征。
2.每個(gè)任務(wù)的數(shù)據(jù)量非常的接近,按老師的例子,100個(gè)任務(wù)就算每個(gè)只有1000個(gè)例子,前面的99個(gè)任務(wù)都會(huì)大大幫助之后一個(gè)例子的學(xué)習(xí),這就是一種互幫互助的過程。
3.你要有一個(gè)足夠大的神經(jīng)網(wǎng)絡(luò)去去完成所有任務(wù)。
1.9端到端的深度學(xué)習(xí)
就是跳過傳統(tǒng)學(xué)習(xí)的中間步驟,直學(xué)到從輸入(x)到輸出(y)的映射,但端對(duì)端必須有大量的數(shù)據(jù),否則效果會(huì)遠(yuǎn)遠(yuǎn)不如傳統(tǒng)學(xué)習(xí)方法。(當(dāng)然,你也可以試試一些適中的方法,減少一定的步驟再試試)。
從林元慶的例子,他的裁剪圖片之后進(jìn)行相似度判斷的方法就比直接輸入拍到圖片端對(duì)端要好。
而從語言翻譯的例子,現(xiàn)在已經(jīng)有了足夠的英文對(duì)法文 的直接映射,所以端對(duì)端效果會(huì)很好。
而骨骼判斷的例子中,也是同樣沒有足夠多的數(shù)據(jù),端對(duì)端也是不現(xiàn)實(shí)的
而我們做的無人小車系統(tǒng)而言,得到圖片(x)和此圖片該如何走(y)定義端對(duì)端完全是沒問題的,但明顯是采集的數(shù)據(jù)不足,導(dǎo)致了行車如此不穩(wěn)。并且也缺乏對(duì)稍微出錯(cuò)時(shí)該如何走的分支(y1)的映射,所以系統(tǒng)是不穩(wěn)定的.
2.0是否要用端對(duì)端學(xué)習(xí)
其實(shí)最主要的就是數(shù)據(jù)足不足夠,關(guān)于(x)直接到(y)的數(shù)據(jù)是不是足夠多讓網(wǎng)絡(luò)學(xué)到足夠復(fù)雜的函數(shù)。