《機器學習訓練秘籍》(Machine Learning Yearning)是人工智慧和深度學習大佬吳恩達新出的一本書,該書著重介紹如何讓機器學習算法能夠工作,以及如何構建機器學習項目。在本文中,我們從該書精選出了七條非常有用的建議。
人工智慧、機器學習和深度學習正在迅速發展,並改變了許多行業。吳恩達(Andrew Y. Ng)是該領域的領軍人物之一,他是 Coursrea 的共同創始人,百度公司人工智慧前負責人,也是 Google Brain 的前負責人。最近他正在寫一本書:《機器學習訓練秘籍》(Machine Learning Yearing,官網:http://www.mlyearning.org/, 你可以免費得到草稿副本),這本書將教會你如何構建機器學習項目。
吳恩達介紹道:
本書的重點不在於教授機器學習算法,而在於如何使機器學習算法發揮作用。一些技術人工智慧課程會給你一個錘子;這本書教你如何使用錘子。如何你渴望成為人工智慧的技術領導者並想學習如何為你的團隊準確找到方向,這本書將會有所幫助。
我們已經讀完了目前已更新的所有章節,並從中選出了七條最有意思、最有用的建議:
1. 優化和滿意度指標
你應該考慮使用多個評估指標,而不是使用單個公式或指標來評估算法。做到這一點的一種方法是通過「優化」和「滿意度」的指標。
Combining Multiple Evaluation Metrics
以上圖所示為例,我們可以首先定義可接受的運行時間,比如小於 100 毫秒,這可以視為我們的「滿意度」指標。你的分類器必須「足夠好」,因為要求它的運行時間小於 100 毫秒這個值,僅此而已。此處的準確度(Accuracy)是「優化」指標。它可以是評估算法的一種非常有效、簡單的方法。
2. 快速選擇開發 / 測試集——如有必要,不要害怕改變它們
在開始一個新項目時,吳恩達解釋說,他為了給團隊一個明確定位的目標,會試圖快速選擇開發 / 測試集。設定好初始的一周目標,最好的做法是,提出一些不完美的想法,然後迅速行動起來,而不是在這個階段考慮過多。
話雖如此,但如果你突然意識到,你選擇的初始開發 / 測試集不正確的話,不要害怕改變。之所以會選擇錯誤的開發 / 測試集,有三個可能的原因:
請記住,改變,並不是什麼大不了的事。只要這樣做,就可以讓你的團隊知道你的新方向。
3. 機器學習是一個迭代過程;不要期望它第一次就發揮作用
吳恩達表示,構建機器學習軟體有三種方法:
從一個想法開始;
用代碼實踐這個想法;
進行一個實驗,總結這個想法的效果。
Machine Learning Iterative Process
見上圖所示,當你繞著這個圈跑得越快,那麼你取得的進步就越快。這也是為什麼吳恩達強調事先選擇開發 / 測試集很重要的原因,因為它可以在迭代過程中節省寶貴的時間。對這個數據集進行性能測試可以讓你快速了解事情是否朝著正確方向發展。
4. 快速構建第一個系統,然後迭代
正如第三點所述,構建機器學習算法是一個迭代過程。吳恩達專門寫了一個章節,解釋快速構建第一個系統,然後從此開始的好處:「不要試圖去設計、構建完美的系統。相反,要快速構建並訓練一個基本的系統,而這也許只需短短幾天就完成了。就算這個基本的系統離你所能構建的『最佳』系統還很遠,但你要明白,研究基本系統的功能還是有很大價值的:你會很快發現線索,並找到如何將時間投入最有希望的方向。」
5. 並行地評估多個想法
當你的團隊在如何改進算法有很多想法時,你可以並行地、有效地評估這些想法。通過創建一個能夠檢測貓類圖片的算法,吳恩達解釋了他是如何創建一個表格,並在查看約 100 個錯誤分類的開發 / 測試集圖像時填寫表格,如下圖所示。
Evaluating Multiple Ideas Parallel
在這種表格中,包括對每張圖片的分析,失敗的原因,以及其他可能有助於未來反思的意見。完成之後,你可以看到哪些想法能夠消除更多的錯誤,因此應該進行哪些操作。
6. 考慮清理錯誤的開發 / 測試集是否值得
在你的錯誤分析過程中,你可能會注意到開發 / 測試集中的一些樣本被錯誤標記了。也就是圖像被人為錯誤標記了。如果你懷疑其中一小部分錯誤是由於此原因造成的,那麼就在表格中中添加一個額外的類別:
Evaluating Mislabeled Images
在完成這些操作之後,你就可以考慮,花時間來解決這些問題是否值得。吳恩達給出了兩種可能的情況,來判斷這些問題是否值得修正。
示例 1:
Overall accuracy on dev set.………………. 90% (10% overall error)
Errors due to mislabeled examples……. 0.6% (6% of dev set errors)
Errors due to other causes………………… 9.4% (94% of dev set errors)
「此處,相對於你所能改善的 9.4% 的錯誤而言,由於錯誤標記導致的 0.6% 可能遠遠沒有那麼重要。在開發集中,手動修復錯誤標記的圖像並沒有什麼害處,但這樣做並不重要:就算你不知道系統總體錯誤是 10% 還是 9.4%,可能都沒有什麼問題。」
示例 2:
Overall accuracy on dev set.………………. 98.0% (2.0% overall error)
Errors due to mislabeled examples……. 0.6%. (30% of dev set errors)
Errors due to other causes………………… 1.4% (70% of dev set errors)
「30% 的錯誤,是由於開發集圖像錯誤標記所致,這樣對準確度的估計會增加重大誤差。這情況下,很有必要改進開發集的標記質量。處理錯誤標記的樣本將有助於你查看分類器的錯誤是接近 1.4% 還是 2%,這是一個顯著的相對偏差。」
7. 將開發集分成單獨的子集
吳恩達解釋,如果你有一個大型的開發集,其中 20% 存在一個錯誤率,那麼將它們分成兩個單獨的子集是值得的:
「使用該算法對開發集 5000 個樣本中的 1000 個樣本進行了錯誤的分類。假設我們要手動檢查,對大約 100 個錯誤進行錯誤分析(10% 的錯誤)。你應該隨機選擇 10% 的開發集,並將它放置到我們稱為 Eyeball 的開發集中,提醒自己我們是用眼睛觀看的。(在有關語音識別的項目中,你會聽到音頻剪輯的說法,也許你可以稱之為 Ear 開發集)。因此,Eyeball 開發集有 500 個樣本,我們希望能夠對大約 100 個錯誤進行分類。」
開發集的第二個子集,稱為 Blackbox 開發集,將擁有剩下的 4500 個樣本。你可以使用 Blackbox 開發集通過測量錯誤率來自動評估分類器。當然,你還可以使用它來選擇算法或者調優超參數。但是,你應該避免用眼睛去觀看。我們使用「Blackbox」這個術語,是因為我們只會使用這些數據的子集來獲得「Blackbox」對分類器的評估。
P.S.吳恩達新書《機器學習訓練秘籍》目前已更新至第27章,AI前線公眾號對話框回復「吳恩達」可獲取1-27章完整PDF文件。
原文連結:
https://www.kdnuggets.com/2018/05/7-useful-suggestions-machine-learning-yearning.html
今日薦文點擊下方圖片即可閱讀
極客時間 《推薦系統 36 式》,36 講,深入淺出地為你搭建起整體的架構、算法等知識脈絡,並在這基礎上補充實踐案例與經驗,助力解決系統起步階段 80% 的問題。聽完這個專欄,可深知推薦系統的本質及運用策略。
可以說,若你是零基礎,那這個專欄很適合你,擁有 8 年資深算法經驗的刑無刀老師用通俗易懂、多舉例少談概念地方式幫你講清楚各個問題,直擊推薦系統本質。
訂閱有福利!訂閱後,可生成你的專屬海報,分享給身邊的小夥伴。每邀請一位好友購買,你可獲得 13 元,好友也將獲得 6 元的現金返現。多邀多得,上不封頂,立即提現(提現流程:極客時間公眾號 - 我的 - 現金獎勵提現)