1. 程式人生 > >吳恩達機器學習訓練祕籍整理十一到十九章(二)

吳恩達機器學習訓練祕籍整理十一到十九章(二)

第十一章:

如何修改開發集,測試集和度量指標

我們在開發一個新專案的時候,會盡快選好一個開發集和測試集。這樣可以幫助團隊制定一個明確的目標。

到後面我們會發現初始的開發集,測試集和度量指標設定與期待目標有一定的差距。這時候我們需要修改我們的開發集,測試集和度量指標。

在專案中改變開發集、測試集或者度量指標是很常見的。一個初始的開發集、測試集和度量指標能夠幫助團隊進行快速迭代,當你發現它們對團隊的導向不正確時,不要擔心,你只需要對其進行修改並確保團隊瞭解新的方向是什麼。

第十二章:

建立測試集和開發集小結

  • 選擇作為開發集和測試集的資料,應當與你預期在將來獲取並良好處理的資料有著相同的分佈,但不需要和訓練集資料的分佈一致。

  • 開發集和測試集的分佈應當儘可能一致。

  • 為你的團隊選擇一個單值評估指標進行優化。需要考慮多專案標時,不妨將它們整合到一個表示式裡(比如對多個誤差指標取平均),或者定義滿意度指標和優化指標。

  • 機器學習是一個高速迭代的過程:在最終令人滿意的方案出現前,你可能要嘗試很多想法。

  • 擁有開發集、測試集和單值評估指標可以幫你快速評估一個演算法,從而加速迭代過程。

  • 當你探索一個全新的應用時,儘可能在一週內建立你的開發集、測試集和指標,而在成熟的應用上則可以花費更長的時間。

  • 傳統的 70% / 30% 訓練集/測試集劃分對大規模資料並不適用,實際上開發集和測試集的比例會遠低於 30%。

  • 開發集的規模應當大到能夠檢測出演算法精度的細微改變,但也不用太大;測試集的規模應該大到能夠使你對系統的最終效能作出一個充分的估計。

  • 當開發集和評估指標不再能給團隊一個正確的導向時,就儘快修改它們:(i) 如果你在開發集上過擬合,則獲取更多的開發集資料。(ii) 如果開發集和測試集的資料分佈和實際關注的資料分佈不同,則獲取新的開發集和測試集。 (iii) 如果評估指標不能夠對最重要的任務目標進行度量,則需要修改評估指標。

第十三章:

快速構建並迭代你的第一個系統。我們通過構建的基礎系統來幫助我們找到下一步的研究方向。

第十四章:

誤差分析:根據開發集樣本評估想法

收集100個開發集中被誤分類的樣本,即造成系統誤差的樣本。人為的檢視這些樣本,並計算其中狗的比例。檢視誤分類的過程就叫做誤差分析。

誤差分析(Error Analysis) 指的是檢查演算法誤分類的開發集樣本的過程,以便你找到造成這些誤差的原因。這將幫助你確定專案優先順序,並且獲得關於新方向的靈感。

第十五章:

在誤差分析過程中並行評估多個想法。

誤差分析並不會產生一個明確的數學公式來告訴你什麼任務的優先順序最高。你還需要考慮在不同類別上的預期進展以及解決每個類別所需的工作量。

第十六章:

清洗誤標註的開發集和測試集樣本

第十七章:

將大型開發集拆分為兩個子集。

假設我們有5000張開發集,誤差為20%。那麼我們就會有1000張錯誤分類的圖片。由於資料量特別大,我們可以將1000張開發集分為兩部分,我們只觀察其中的一部分就可以。

Eyeball資料集:有500張開發集,其中有100個誤分類的開發集。

Blackball資料集:剩餘的4500張開發集。

將資料分類為Eyeball和Blackball的原因是,當你在 Eyeball 開發集中建立對樣本的直觀認識之後,則容易更快地過擬合。當你發現 Eyeball 開發集的效能比 Blackbox 開發集提升得更快,說明已經過擬合 Eyeball 開發集了。此時可能需要丟棄它並尋找一個新的 Eyeball 開發集,比如可以將更多 Blackbox 開發集中的樣本移到 Eyeball 開發集中,也可以獲取新的標註資料。

第十八章:

Eyeball和Blackball應該設為多大?

Eyeball 開發集應該大到能夠讓你對演算法主要的錯誤類別有所察覺。

一個有 1000-10000 個樣本的 Blackbox 開發集通常會為你提供足夠的資料去調超參和選擇模型,即使資料再多一些也無妨。而含有 100 個樣本的 Blackbox 開發集雖然比較小,但仍然有用。

Eyeball 開發集更加重要。如果你只有一個 Eyeball 開發集,你可以在這個開發集上進行誤差分析、模型選擇和超引數調整,缺點是過擬合開發集的風險更大。

第十九章:

基礎誤差分析小結

  • 當你開始一個新專案,尤其是在一個你不擅長領域時,很難正確猜測出最有前景的方向。

  • 所以,不要在一開始就試圖設計和構建一個完美的系統。相反,應儘可能快(可能在短短几天內)地構建和訓練一個基本系統。然後使用誤差分析去幫助你識別出最有前景的方向,並據此不斷迭代改進你的演算法。

  • 通過手動檢查約 100 個演算法錯誤分類的開發集樣本來執行誤差分析,並計算主要的錯誤類別。用這些資訊來確定優先修正哪種型別的錯誤。

  • 考慮將開發集分為人為檢查的 Eyeball 開發集和非人為檢查的 Blackbox 開發集。如果在 Eyeball 開發集上的效能比在 Blackbox 開發集上好很多,那麼你已經過擬合 Eyeball 開發集,並且應該考慮為其獲得更多的資料。

  • Eyeball 開發集應該足夠大,以便於演算法有足夠多的錯誤分類樣本供你分析。對很多應用來說,含有1000-10000個樣本的 Blackbox 開發集已足夠。

  • 如果你的開發集不夠大到可以按照這種方式進行拆分,那麼就使用 Eyeball 開發集來用於人工誤差分析、模型選擇和調超參。