2.1 进行误差分析-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
| 1.13 總結 | 回到目錄 | 2.2 清除標注錯誤的數據 |
進行誤差分析 (Carrying out error analysis)
你好,歡迎回來,如果你希望讓學習算法能夠勝任人類能做的任務,但你的學習算法還沒有達到人類的表現,那么人工檢查一下你的算法犯的錯誤也許可以讓你了解接下來應該做什么。這個過程稱為錯誤分析,我們從一個例子開始講吧。
假設你正在調試貓分類器,然后你取得了90%準確率,相當于10%錯誤,,在你的開發集上做到這樣,這離你希望的目標還有很遠。也許你的隊員看了一下算法分類出錯的例子,注意到算法將一些狗分類為貓,你看看這兩只狗,它們看起來是有點像貓,至少乍一看是。所以也許你的隊友給你一個建議,如何針對狗的圖片優化算法。試想一下,你可以針對狗,收集更多的狗圖,或者設計一些只處理狗的算法功能之類的,為了讓你的貓分類器在狗圖上做的更好,讓算法不再將狗分類成貓。所以問題在于,你是不是應該去開始做一個項目專門處理狗?這項目可能需要花費幾個月的時間才能讓算法在狗圖片上犯更少的錯誤,這樣做值得嗎?或者與其花幾個月做這個項目,有可能最后發現這樣一點用都沒有。這里有個錯誤分析流程,可以讓你很快知道這個方向是否值得努力。
這是我建議你做的,首先,收集一下,比如說100個錯誤標記的開發集樣本,然后手動檢查,一次只看一個,看看你的開發集里有多少錯誤標記的樣本是狗。現在,假設事實上,你的100個錯誤標記樣本中只有5%是狗,就是說在100個錯誤標記的開發集樣本中,有5個是狗。這意味著100個樣本,在典型的100個出錯樣本中,即使你完全解決了狗的問題,你也只能修正這100個錯誤中的5個。或者換句話說,如果只有5%的錯誤是狗圖片,那么如果你在狗的問題上花了很多時間,那么你最多只能希望你的錯誤率從10%下降到9.5%,對吧?錯誤率相對下降了5%(總體下降了0.5%,100的錯誤樣本,錯誤率為10%,則樣本為1000),那就是10%下降到9.5%。你就可以確定這樣花時間不好,或者也許應該花時間,但至少這個分析給出了一個上限。如果你繼續處理狗的問題,能夠改善算法性能的上限,對吧?在機器學習中,有時我們稱之為性能上限,就意味著,最好能到哪里,完全解決狗的問題可以對你有多少幫助。
但現在,假設發生了另一件事,假設我們觀察一下這100個錯誤標記的開發集樣本,你發現實際有50張圖都是狗,所以有50%都是狗的照片,現在花時間去解決狗的問題可能效果就很好。這種情況下,如果你真的解決了狗的問題,那么你的錯誤率可能就從10%下降到5%了。然后你可能覺得讓錯誤率減半的方向值得一試,可以集中精力減少錯誤標記的狗圖的問題。
我知道在機器學習中,有時候我們很鄙視手工操作,或者使用了太多人為數值。但如果你要搭建應用系統,那這個簡單的人工統計步驟,錯誤分析,可以節省大量時間,可以迅速決定什么是最重要的,或者最有希望的方向。實際上,如果你觀察100個錯誤標記的開發集樣本,也許只需要5到10分鐘的時間,親自看看這100個樣本,并親自統計一下有多少是狗。根據結果,看看有沒有占到5%、50%或者其他東西。這個在5到10分鐘之內就能給你估計這個方向有多少價值,并且可以幫助你做出更好的決定,是不是把未來幾個月的時間投入到解決錯誤標記的狗圖這個問題。
在本幻燈片中,我們要描述一下如何使用錯誤分析來評估某個想法,這個樣本里狗的問題是否值得解決。有時你在做錯誤分析時,也可以同時并行評估幾個想法,比如,你有幾個改善貓檢測器的想法,也許你可以改善針對狗圖的性能,或者有時候要注意,那些貓科動物,如獅子,豹,獵豹等等,它們經常被分類成小貓或者家貓,所以你也許可以想辦法解決這個錯誤。或者也許你發現有些圖像是模糊的,如果你能設計出一些系統,能夠更好地處理模糊圖像。也許你有些想法,知道大概怎么處理這些問題,要進行錯誤分析來評估這三個想法。
我會做的是建立這樣一個表格,我通常用電子表格來做,但普通文本文件也可以。在最左邊,人工過一遍你想分析的圖像集,所以圖像可能是從1到100,如果你觀察100張圖的話。電子表格的一列就對應你要評估的想法,所以狗的問題,貓科動物的問題,模糊圖像的問題,我通常也在電子表格中留下空位來寫評論。所以記住,在錯誤分析過程中,你就看看算法識別錯誤的開發集樣本,如果你發現第一張識別錯誤的圖片是狗圖,那么我就在那里打個勾,為了幫我自己記住這些圖片,有時我會在評論里注釋,也許這是一張比特犬的圖。如果第二張照片很模糊,也記一下。如果第三張是在下雨天動物園里的獅子,被識別成貓了,這是大型貓科動物,還有圖片模糊,在評論部分寫動物園下雨天,是雨天讓圖像模糊的之類的。最后,這組圖像過了一遍之后,我可以統計這些算法(錯誤)的百分比,或者這里每個錯誤類型的百分比,有多少是狗,大貓或模糊這些錯誤類型。所以也許你檢查的圖像中8%是狗,可能43%屬于大貓,61%屬于模糊。這意味著掃過每一列,并統計那一列有多少百分比圖像打了勾。
在這個步驟做到一半時,有時你可能會發現其他錯誤類型,比如說你可能發現有Instagram濾鏡,那些花哨的圖像濾鏡,干擾了你的分類器。在這種情況下,實際上可以在錯誤分析途中,增加這樣一列,比如多色濾鏡 Instagram濾鏡和Snapchat濾鏡,然后再過一遍,也統計一下那些問題,并確定這個新的錯誤類型占了多少百分比,這個分析步驟的結果可以給出一個估計,是否值得去處理每個不同的錯誤類型。
例如,在這個樣本中,有很多錯誤來自模糊圖片,也有很多錯誤類型是大貓圖片。所以這個分析的結果不是說你一定要處理模糊圖片,這個分析沒有給你一個嚴格的數學公式,告訴你應該做什么,但它能讓你對應該選擇那些手段有個概念。它也告訴你,比如說不管你對狗圖片或者Instagram圖片處理得有多好,在這些例子中,你最多只能取得8%或者12%的性能提升。而在大貓圖片這一類型,你可以做得更好。或者模糊圖像,這些類型有改進的潛力。這些類型里,性能提高的上限空間要大得多。所以取決于你有多少改善性能的想法,比如改善大貓圖片或者模糊圖片的表現。也許你可以選擇其中兩個,或者你的團隊成員足夠多,也許你把團隊可以分成兩個團隊,其中一個想辦法改善大貓的識別,另一個團隊想辦法改善模糊圖片的識別。但這個快速統計的步驟,你可以經常做,最多需要幾小時,就可以真正幫你選出高優先級任務,并了解每種手段對性能有多大提升空間。
所以總結一下,進行錯誤分析,你應該找一組錯誤樣本,可能在你的開發集里或者測試集里,觀察錯誤標記的樣本,看看假陽性(false positives)和假陰性(false negatives),統計屬于不同錯誤類型的錯誤數量。在這個過程中,你可能會得到啟發,歸納出新的錯誤類型,就像我們看到的那樣。如果你過了一遍錯誤樣本,然后說,天,有這么多Instagram濾鏡或Snapchat濾鏡,這些濾鏡干擾了我的分類器,你就可以在途中新建一個錯誤類型。總之,通過統計不同錯誤標記類型占總數的百分比,可以幫你發現哪些問題需要優先解決,或者給你構思新優化方向的靈感。在做錯誤分析的時候,有時你會注意到開發集里有些樣本被錯誤標記了,這時應該怎么做呢?我們下一個視頻來討論。
課程板書
| 1.13 總結 | 回到目錄 | 2.2 清除標注錯誤的數據 |
總結
以上是生活随笔為你收集整理的2.1 进行误差分析-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.13 总结-深度学习第三课《结构化机
- 下一篇: 2.2 清除标注错误的数据-深度学习第三