嗨,歡迎回來.
如果您要您的學習演算法 像人類工作一般
而如果您的學習算法 還沒達到人類的表現
那手工檢查您的演算法 犯的錯誤
可以讓您洞察 下一步要怎麼做
這個步驟稱為誤差分析
讓我們先從一個例子開始
假設您做一個貓的分類器 正確率為 90%
或者說 10% 的錯誤率 在您的開發集上
假設說這比您想要的還差
也許您的一位隊員看到一些 演算法誤判的例子
而注意到它 誤判了一些狗成為貓
如果您看這兩隻狗 也許看起來有點像貓
至少乍看之下
或許您的團隊建議您
如何讓演算法更好 特別對於狗的辨識, 對吧?
您可以想像重點放在於 或許收集更多的狗的照片
或許針對狗設計一些特徵 或者其他
為了讓您的貓咪分類器 比較能辨識狗
然後停止把狗當成貓
問題是 您應不應該這樣做
開一個專案聚焦在狗的問題上嗎?
這或許會是很多個月的工作 為了要讓您的演算法
在狗的照片上犯比較少的錯誤
這樣的努力值得嗎?
好了, 與其花了幾個月做這個
只在最終發現 這個沒有幫助
這裡有錯誤分析流程 讓您很快的知道
是否值得您去花更多功夫
我這樣建議您
首先，先拿 100 個標錯的開發集例子 然後手工一一檢驗
一次數一個 看有多少這些標錯
的例子在開發集上 實際上是狗的照片
假設實際上
在 100 個標錯的開發集中 有 5% 是狗的照片
也就是 100 個其中 5 個
標錯的開發集中是狗的照片 這個意思是這 100 個例子
典型的 標錯的 100 個例子 即使您
完全解決狗的問題 您只會讓 100 個中間的 5 個更正確
換句話說, 您的錯誤中只有 5% 是狗的照片, 也就是
您期望最佳的狀況下, 如果您花很多的時間 在狗的問題上
您的錯誤或許 從 10% 錯誤率
降到 9.5% 錯誤, 對吧?
所以這個 5% 相對減少的誤差 從 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%
相對於您可以在大貓的照片或者
模糊的照片上得到 更多的改進效能
也就是有一些上限對於 您可以改進的效能
是比較高的
因此, 取決於你有多少想法對於 處理大貓的問題來提高性能
或者模糊的照片
或許您會選擇其中之一 或者您團隊有足夠的人力
或許您可以有兩個不同的團隊
一個團隊處理 大貓的錯誤
另一個團隊處理 改進模糊照片的錯誤
但這個快速計算的流程 通常您只要最多
花幾個小時
可以幫助您做 最佳的優先順序決策
瞭解這些不同的方式 值不值得做
總結一下, 使用誤差分析 您要找一組
誤標的例子在 您的開發集上
看看這些誤標的例子是 偽陽性或者偽陰性
只要計算有多少錯誤歸類於不同的
種類
進行中, 您或許激發 產生一些新的錯誤類別
像我們看到的
如果您一一檢查這些例子 哇, 有很多 Instagram
濾鏡, 或者 Snapchat 濾鏡 來搞亂您的分類器
在過程裡 您可以建立一個新的類別
用這樣子來計算 有多少的例子被
不同方式誤標 通常會幫助您決定優順序
或者給您新方向的靈感
在您進行誤差分析的時候
有時候您發現有一些 您開發集的例子原本就誤標了
您要怎麼辦?
我們到下一個影片來談論這個問題