吳恩達機器學習訓練祕籍整理五十三到五十七章(八)元件分析
第五十三章:
根據元件進行誤差分析
假設你的系統由複雜的機器學習流水線所構建,並且你希望提高該系統的效能,那應該從流水線的哪一部分開始改進呢?你可以通過將誤差歸因於流水線的特定元件,來決定工作的優先順序。
在上圖的流水線中,第一部分是貓檢測器,它能夠檢測出貓,並將它們從影象裁剪出來;第二部分是貓的品種分類器,決定它是否是暹羅貓。通過按元件進行誤差分析,你可以嘗試將每一個演算法造成的誤差歸因於流水線的某個(有時是兩個)元件。
如果你對 100 個誤分類的開發集影象遍歷檢查,並發現 90 個誤差可歸因於貓探測器,並只有 10 個誤差可歸因於貓品種分類器。 那麼你可以有把握地得出結論,應該更加專注於改進貓探測器。
第五十四章:
誤差歸因至某個元件
假設貓咪檢測器標註的貓標註框不完全,分類器分類錯誤。我們如何判斷是檢測器的問題還是分類器的問題。
這裡有一個更正式的測試方法,可以讓你更明確地將誤差歸因於某一個元件:
-
用手動標記的邊界框替換貓檢測器的輸出。
-
通過貓品種分類器處理相應的裁剪影象。 如果貓品種分類器仍將其錯誤地分類,則將誤差歸因於貓品種分類器。 否則,將此誤差歸因於貓檢測器。
第五十五章:
誤差歸因的一般情況
假設在流水線中有三個步驟 A,B 和 C,其中 A 直接輸出到 B,B直接輸出到 C.
對於系統在開發集上存在的每個錯誤樣本:
-
嘗試人為修改 A 的輸出為 “完美” 輸出(例如,貓的 “完美” 邊界框),並在此輸出上執行流水線其餘的 B,C 部分。 如果演算法現在給出了正確的輸出,那麼這表明,只要 A 給出了更好的輸出,那麼整個演算法的輸出就是正確的;因此,你可以將此誤差歸因於元件 A. 否則,請繼續執行步驟 2.
-
嘗試人為修改 B 的輸出為 “完美” 輸出。如果演算法現在給出正確的輸出,則將誤差歸因於元件 B. 否則,繼續執行步驟 3.
-
將誤差歸因於元件 C.
第五十六章:
元件分析與人類水平對比
元件分析可以告訴我們哪個元件值得我們去盡力改進。
以自動駕駛為例,其中汽車檢測演算法輸出附近汽車的位置(也可能是速度),行人檢測演算法輸出附近行人的位置,這兩個輸出最終用於為當前車輛進行路徑規劃。
如果想要除錯該流水線,卻不希望嚴格遵循上一章中提到的過程,你可以非正式地詢問:
-
在檢測汽車時,汽車檢測元件與人類水平表現相差多少?
-
在檢測行人時,行人檢測元件與人類水平表現相差多少?
-
整個系統的效能與人類表現相差多少?在這裡,人類水平的表現假定:人類必須僅根據前兩個流水線元件的輸出(而不是訪問攝像機影象)來規劃汽車的路徑。換句話說,當人類只得到相同的輸入時,路徑規劃元件的效能與人類的效能相較如何?
如果我們發現其中的一個元件遠遠地小於人類水平,那麼我們就需要集中注意力改進這個元件。
第五十七章:
發現有缺陷的機器學習流水線
假設我們的機器學習流水線上面的組將效能都和人類水平相近,但是整體效能遠遠地低於人類水平,通常意味著設計缺陷需要重新設計流水線。
假設上圖路徑規劃流水線:
1.車輛檢測元件用來檢測車輛,和人類水平相當。
2.行人檢測組將用來檢測行人,和人類水平相當。
3.將兩者結合在一起組成路徑規劃和人類水平相差較大。
可以得出我們的流水線存在著設計缺陷。這時候我們要考慮除了早期的這兩個流水線元件還需要哪些資訊來作為汽車路徑規劃的輔助資訊。
假設我們將車道標記檢測加入進來重新設計一個機器學習的流水線。如下圖所示。有可能我們現在的流水線可以達到人類水平。如果沒有達到說明我們的流水線還存在著缺陷需要重新設計。
第五十八章:
機器學習訓練祕籍下載地址:https://accepteddoge.github.io/machine-learning-yearning-cn/