《MACHINE LEARNING YEARNING》

Andrew Ng
目錄

  1. 為什么需要機(jī)器學(xué)習(xí)策略
  2. 如何使用這本書來(lái)幫助你的團(tuán)隊(duì)
  3. 預(yù)備知識(shí)和符號(hào)約定
  4. 規(guī)模促進(jìn)了機(jī)器學(xué)習(xí)的發(fā)展
  5. 你的開發(fā)集和測(cè)試集
  6. 你的開發(fā)集和測(cè)試機(jī)應(yīng)該來(lái)自同一分布
  7. 開發(fā)集和測(cè)試集多大合適
  8. 為你的團(tuán)隊(duì)進(jìn)行算法優(yōu)化建立一個(gè)單一數(shù)字的評(píng)估指標(biāo)
  9. 優(yōu)化指標(biāo)和滿足指標(biāo)
  10. 有一個(gè)開發(fā)集和評(píng)估指標(biāo)來(lái)加速迭代
  11. When to change dev/test sets and metrics 何時(shí)更改開發(fā)/測(cè)試集和評(píng)估指標(biāo)
  12. Takeaways: Setting up development and test sets 小結(jié):建立開發(fā)集和測(cè)試集
  13. Build your first system quickly, then iterate
  14. Error analysis: Look at dev set examples to evaluate ideas 錯(cuò)誤分析:查看開發(fā)集樣本來(lái)評(píng)估idea
  15. Evaluate multiple ideas in parallel during error analysis 錯(cuò)誤分析時(shí)并行評(píng)估多個(gè)想法
  16. If you have a large dev set, split it into two subsets, only one of which you look at
  17. How big should the Eyeball and Blackbox dev sets be?
  18. Takeaways: Basic error analysis
  19. Bias and Variance: The two big sources of error
  20. Examples of Bias and Variance
  21. Comparing to the optimal error rate
  22. Addressing Bias and Variance
  23. Bias vs. Variance tradeoff
  24. Techniques for reducing avoidable bias
  25. Techniques for reducing Variance
  26. Error analysis on the training set
  27. Diagnosing bias and variance: Learning curves
  28. Plotting training error
  29. Interpreting learning curves: High bias
  30. Interpreting learning curves: Other cases
  31. Plotting learning curves
  32. Why we compare to human-level performance
  33. How to define human-level performance
  34. Surpassing human-level performance
  35. Why train and test on different distributions
  36. Whether to use all your data
  37. Whether to include inconsistent data
  38. Weighting data
  39. Generalizing from the training set to the dev set
  40. Addressing Bias and Variance
  41. Addressing data mismatch
  42. Artificial data synthesis
  43. The Optimization Verification test
  44. General form of Optimization Verification test
  45. Reinforcement learning example
  46. The rise of end-to-end learning
  47. More end-to-end learning examples
  48. Pros and cons of end-to-end learning
  49. Learned sub-components
  50. Directly learning rich outputs
  51. Error Analysis by Parts
  52. Beyond supervised learning: What’s next?
  53. Building a superhero team - Get your teammates to read this
  54. Big picture
  55. Credits

  1. 為什么需要機(jī)器學(xué)習(xí)策略

機(jī)器學(xué)習(xí)是很多重要應(yīng)用的基礎(chǔ)欧漱,例如網(wǎng)頁(yè)搜索储矩,反垃圾郵件丰涉,語(yǔ)音識(shí)別等颜价。如果你或你的團(tuán)隊(duì)正在開發(fā)一個(gè)有關(guān)機(jī)器學(xué)習(xí)的應(yīng)用,并且你想要獲得快速地進(jìn)步晒来。這本書將會(huì)幫助到你钞诡。示例:建立一個(gè)識(shí)別含有貓的圖片的創(chuàng)業(yè)公司,也就是說你建立了一個(gè)創(chuàng)業(yè)公司湃崩,為貓愛好者提供無(wú)盡的貓的圖片荧降。你打算使用一個(gè)神經(jīng)網(wǎng)絡(luò)建立一個(gè)計(jì)算機(jī)視覺系統(tǒng)來(lái)檢測(cè)圖片中的貓。


但悲催的是攒读,你的學(xué)習(xí)算法的準(zhǔn)確率目前并不夠好朵诫。所以你面臨巨大的壓力來(lái)改善你的算法。你該做些什么呢薄扁?你的團(tuán)隊(duì)有很多idea剪返,比如:

  • 獲取更多數(shù)據(jù):收集更多關(guān)于貓的圖片
  • 收集更多樣化的訓(xùn)練集。例如:貓?jiān)诓煌恢玫膱D片邓梅;不同著色的貓随夸;不同相機(jī)(設(shè)置)拍攝的圖片
  • 通過運(yùn)行更多的梯度下降迭代次數(shù),來(lái)增長(zhǎng)訓(xùn)練算法的時(shí)間
  • 嘗試更大的網(wǎng)絡(luò)震放,具有更多的層,更多的隱藏單元及參數(shù)
  • 嘗試更小的網(wǎng)絡(luò)
  • 嘗試添加正則化(例如L2正則化)
  • 改變神經(jīng)網(wǎng)絡(luò)的架構(gòu)(激活函數(shù)驼修,隱藏單元的數(shù)量等)
    ……
    在這些可能的方案中殿遂,如果你選擇的好,那么你將建立一個(gè)領(lǐng)先的關(guān)于貓的圖片的平臺(tái)乙各,并帶領(lǐng)你的公司走向成功墨礁;如果你的選擇很糟糕,那么你可能白白浪費(fèi)幾個(gè)月的時(shí)間耳峦。你會(huì)選擇怎么進(jìn)行恩静?這本書將會(huì)告訴你怎么去做。大部分機(jī)器學(xué)習(xí)問題都會(huì)留下一些線索,這些線索會(huì)告訴你什么是有用的嘗試驶乾,什么是沒用的邑飒。學(xué)會(huì)閱讀理解這些線索能夠節(jié)省你數(shù)月或上年的開發(fā)時(shí)間

2. 如何使用這本書來(lái)幫助你的團(tuán)隊(duì)

在讀完這本書后,你將對(duì)如何制定機(jī)器學(xué)習(xí)項(xiàng)目中的技術(shù)方向有一個(gè)深入的了解级乐。
但是你的隊(duì)友可能并不理解你為什么建議某一個(gè)特定的方向疙咸。或許你希望你的團(tuán)隊(duì)定義一個(gè)單一數(shù)字的評(píng)估指標(biāo)风科,但他們卻并不信服撒轮。你如何說服他們?

這就是為什么我把章節(jié)設(shè)置的這么短:這樣你可以打印出來(lái)并給你的隊(duì)友看僅僅你想要讓他們知道的那1~2頁(yè)贼穆。面對(duì)幾個(gè)不同的選擇题山,在優(yōu)先次序上的一些改變可能會(huì)對(duì)你團(tuán)隊(duì)生產(chǎn)力產(chǎn)生巨大的影響。通過幫助您的團(tuán)隊(duì)做出這樣一些改變故痊,我希望你能夠變成你們團(tuán)隊(duì)的超級(jí)英雄顶瞳!

5.你的開發(fā)集和測(cè)試集

讓我們回到之前關(guān)于貓的圖片的例子:你制作了一個(gè)移動(dòng)APP,用戶可以上傳很多不同事物的圖片到你的app上崖蜜,你想要自動(dòng)發(fā)現(xiàn)關(guān)于貓的圖片浊仆。你的團(tuán)隊(duì)從不同的網(wǎng)站下載大量貓(正樣本,positive examples)和非貓(負(fù)樣本豫领,negative example)的圖片抡柿,從而獲得了一個(gè)很大的數(shù)據(jù)集。他們將這些數(shù)據(jù)按 70%:30%分為訓(xùn)練集和測(cè)試集等恐。利用這些數(shù)據(jù)洲劣,他們構(gòu)建了一個(gè)貓的檢測(cè)算法,它在訓(xùn)練集和測(cè)試集上表現(xiàn)都很好课蔬。但是當(dāng)你把這個(gè)分類器部署倒移動(dòng)APP上時(shí)囱稽,你發(fā)現(xiàn)它的表現(xiàn)非常糟糕!

發(fā)生了什么二跋?
你發(fā)現(xiàn)用戶上傳的圖片和你從網(wǎng)站下載的作為訓(xùn)練集的圖片有些不同:用戶使用手機(jī)拍攝的圖片分辨率更低战惊,模糊,且照明效果較差扎即。由于你的訓(xùn)練集和測(cè)試機(jī)數(shù)據(jù)都來(lái)自于網(wǎng)站圖片吞获,你的算法沒有在你所關(guān)心的智能手機(jī)圖片的實(shí)際分布上一般化得很好。大數(shù)據(jù)時(shí)代之前谚鄙,在機(jī)器學(xué)習(xí)中人們常使用隨機(jī)的70%:30%分割訓(xùn)練集和測(cè)試集各拷。這種做法能夠work,但是在越來(lái)越多的應(yīng)用(在這些應(yīng)用中闷营,訓(xùn)練集的分布(在我們的例子中的網(wǎng)站圖像)不同于你最終關(guān)心的分布(手機(jī)拍攝的圖像))中是個(gè)壞主意烤黍。
我們通常定義:

  • 訓(xùn)練集(Training set)——你運(yùn)行你的算法在這上面。
  • 開發(fā)集(Dev/development set)——這部分?jǐn)?shù)據(jù)用來(lái)調(diào)參,選擇特征速蕊,以及對(duì)學(xué)習(xí)算法做出其他決定嫂丙。有時(shí)也被稱為留出交叉驗(yàn)證機(jī)(hold-out cross validation set)
  • 測(cè)試集(Test set)——這部分?jǐn)?shù)據(jù)用來(lái)評(píng)估算法的性能,但不要依靠這部分?jǐn)?shù)據(jù)對(duì)使用的學(xué)習(xí)和參數(shù)做出任何決定互例。

一旦你定義一個(gè)開發(fā)集(Dev/development set)和測(cè)試集(Test set)奢入,你的團(tuán)隊(duì)將嘗試各種idea(例如不同的學(xué)習(xí)算法參數(shù)),看哪一種最好媳叨。開發(fā)集和測(cè)試集能夠使你的團(tuán)隊(duì)快速看到你的算法做得有多好腥光。換句話說,開發(fā)集和測(cè)試集的目的是指導(dǎo)你的團(tuán)隊(duì)對(duì)機(jī)器學(xué)習(xí)系統(tǒng)做出最重要的改變糊秆。

所以你應(yīng)該做到:
選擇開發(fā)集和測(cè)試集武福,以反映你期望在未來(lái)獲得的數(shù)據(jù),并希望在上面做得很好痘番。換句話說捉片,你的測(cè)試集不應(yīng)該只是可用數(shù)據(jù)的30%這么簡(jiǎn)單,特別是當(dāng)你期望得到的數(shù)據(jù)(移動(dòng)app的圖像)和你的訓(xùn)練數(shù)據(jù)(網(wǎng)頁(yè)圖像)在性質(zhì)上不太一樣時(shí)汞舱。如果你尚未發(fā)布你的app伍纫,也就意味著還沒有任何用戶,因此可能無(wú)法獲得你未來(lái)想要做得很好的數(shù)據(jù)昂芜。但是你仍然可以嘗試去接近這一點(diǎn)莹规。例如,請(qǐng)你的朋友拍一些手機(jī)照片并發(fā)給你泌神。一旦你的app啟動(dòng)后良漱,你可以使用用戶的實(shí)際數(shù)據(jù)更新你的開發(fā)/測(cè)試集。如果你真的沒有任何方法獲取接近你期望的數(shù)據(jù)欢际,也許你可以使用網(wǎng)站圖片作為開始母市。但是你應(yīng)該清醒地意識(shí)到這種做法可能導(dǎo)致你的系統(tǒng)不能泛化的很好。有時(shí)可能我們需要決定投資多少去獲取好的開發(fā)集和測(cè)試集损趋。切記不要假定你的訓(xùn)練集分布和測(cè)試集分布必須是一樣的患久。嘗試去挑選能反映你最終想要表現(xiàn)很好的數(shù)據(jù)作為測(cè)試樣本,而不是你遇到的任何數(shù)據(jù)浑槽。

6.你的開發(fā)集和測(cè)試機(jī)應(yīng)該來(lái)自同一分布

根據(jù)你的市場(chǎng)蒋失,您將你的貓app的圖片數(shù)據(jù)分為四個(gè)區(qū)域:美國(guó)、中國(guó)括荡、印度和其他地區(qū)。要生成一個(gè)開發(fā)集和一個(gè)測(cè)試集溉旋,我們隨機(jī)地分配兩個(gè)地區(qū)的數(shù)據(jù)到開發(fā)集畸冲,另外兩個(gè)到測(cè)試集,對(duì)嗎?比如來(lái)自美國(guó)和印度的數(shù)據(jù)在開發(fā)集邑闲,中國(guó)和其他地區(qū)的在測(cè)試集算行。一旦你這樣定義了開發(fā)集和測(cè)試集,你的團(tuán)隊(duì)將專注于提高開發(fā)集的表現(xiàn)性能苫耸。因此州邢,開發(fā)集應(yīng)該反映你真正想要提高性能的任務(wù):在四個(gè)地區(qū)做得都好,而不只是兩個(gè)褪子。

開發(fā)集和測(cè)試集數(shù)據(jù)的分布不同導(dǎo)致的第二個(gè)問題是:你的團(tuán)隊(duì)可能會(huì)做出一些工作量淌,在開發(fā)集上表現(xiàn)很好,在測(cè)試集卻表現(xiàn)很差嫌褪。我曾經(jīng)在很多挫折和白費(fèi)的努力中看到過這一結(jié)果呀枢。要避免這種情況發(fā)生在你身上。例如笼痛,假設(shè)你的團(tuán)隊(duì)開發(fā)的系統(tǒng)在開發(fā)集上表現(xiàn)很好裙秋,在測(cè)試集上卻很糟糕。如果你的開發(fā)集和測(cè)試集來(lái)自同一分布缨伊,那么你會(huì)有一個(gè)非常明確的診斷:你的算法在開發(fā)集上過擬合了摘刑。顯而易見的方法是去獲得更多的開發(fā)集數(shù)據(jù)。

但如果你的開發(fā)集和測(cè)試集來(lái)自不同的分布刻坊,那么你的選擇就不太清楚了枷恕。可能會(huì)出現(xiàn)以下幾種錯(cuò)誤:

  • 你的算法在開發(fā)集上過擬合了紧唱。
  • 測(cè)試集比開發(fā)集更難以識(shí)別活尊。所以你的算法可能做的和預(yù)期的效果一樣好了,因此也就沒有可能做出進(jìn)一步的顯著改進(jìn)了漏益。
  • 測(cè)試集不一定是比開發(fā)集更難蛹锰,只是它們來(lái)自不同的分布。所以在開發(fā)集上表現(xiàn)很好的算法并不能在測(cè)試集上表現(xiàn)良好绰疤。這種情況下铜犬,你之前做的很多提高開發(fā)集表現(xiàn)性能的努力都白費(fèi)了。

機(jī)器學(xué)習(xí)應(yīng)用方面的工作已經(jīng)很困難了轻庆。具有不匹配的開發(fā)集和測(cè)試集引入了額外的關(guān)于是否改進(jìn)開發(fā)集分布或提高測(cè)試集表現(xiàn)性能的不確定性癣猾。這使得更難找出什么work和什么不work,因此更難以確定不錯(cuò)選擇之間的優(yōu)先級(jí)余爆。如果你面對(duì)的是第三方基準(zhǔn)測(cè)試(benchmark)的問題纷宇,它們的創(chuàng)造者可能已經(jīng)指定了開發(fā)集和測(cè)試集來(lái)自不同的分布。這種情況下蛾方,運(yùn)氣像捶,而非技能上陕,將會(huì)對(duì)你的性能產(chǎn)生更大的影響。當(dāng)然拓春,開發(fā)那些能夠在一個(gè)分布上訓(xùn)練并能很好地推廣(generalize)到另一個(gè)分布的學(xué)習(xí)算法是一個(gè)很重要的研究方向释簿。但如果你的目標(biāo)是開發(fā)能夠在特定機(jī)器學(xué)習(xí)應(yīng)用中得到不錯(cuò)效果的系統(tǒng)的話,我建議你選擇開發(fā)集和測(cè)試集服從同一分布硼莽。這將使您的團(tuán)隊(duì)更有效率庶溶。

7. 開發(fā)集和測(cè)試集多大合適?

開發(fā)集應(yīng)該足夠大懂鸵,大到能檢測(cè)出你嘗試的不同算法之間的差異偏螺。例如,如果一個(gè)分類器A具有90.0%的準(zhǔn)去率而分類器B具有90.1%的準(zhǔn)確率矾瑰,則只具有100個(gè)示例的開發(fā)集不能夠檢測(cè)出這0.1%的差異砖茸。與我看到的其他機(jī)器學(xué)習(xí)問題相比,100個(gè)樣本的開發(fā)集很小殴穴。常見的開發(fā)集樣本規(guī)模一般在1000到10000之間凉夯。在10000個(gè)樣本的情況下,你將有更大的可能性檢測(cè)到0.1%的性能提升采幌。對(duì)于一些成熟和重要的應(yīng)用程序(例如廣告劲够,網(wǎng)頁(yè)搜索和產(chǎn)品推薦等),我也會(huì)看到一些團(tuán)隊(duì)在為甚至0.01%的性能提升而努力奮斗休傍,因?yàn)樗鼘?duì)公司的利潤(rùn)有直接影響征绎。在這種情況下,開發(fā)集的數(shù)據(jù)量可以遠(yuǎn)大于10000磨取,以便檢測(cè)更小的改進(jìn)人柿。

那關(guān)于測(cè)試集的數(shù)據(jù)規(guī)模呢?它應(yīng)該足夠大忙厌,大到能對(duì)你的系統(tǒng)整體性能評(píng)估擁有一個(gè)很高的自信度凫岖。一個(gè)流行的啟發(fā)式方法(heuristic)是將30%的數(shù)據(jù)用于測(cè)試。在你擁有一個(gè)中等數(shù)據(jù)量(100到10000個(gè)樣本)的情況下逢净,它work的很好哥放。但是在大數(shù)據(jù)時(shí)代(現(xiàn)在我們面對(duì)的機(jī)器學(xué)習(xí)問題可能會(huì)有超過數(shù)10億的樣本),分配給開發(fā)/測(cè)試集的數(shù)據(jù)比例一直在減小爹土,但是開發(fā)/測(cè)試集樣本的絕對(duì)數(shù)量是在增長(zhǎng)甥雕。在給開發(fā)/測(cè)試集分配數(shù)據(jù)時(shí),沒必要過多地超出其評(píng)估算法性能所需要的數(shù)據(jù)量胀茵。

8. 為你的團(tuán)隊(duì)進(jìn)行算法優(yōu)化建立一個(gè)單一數(shù)字的評(píng)估指標(biāo)

分類準(zhǔn)確率是單一數(shù)字評(píng)估指標(biāo)的示例:你在開發(fā)集(或測(cè)試集)上運(yùn)行運(yùn)行一個(gè)分類器社露,然后得到一個(gè)正確分類的樣本比例這樣一個(gè)數(shù)字。根據(jù)給指標(biāo),如果分類器A獲得97%的準(zhǔn)確率莫鸭,分類器B獲得90%的準(zhǔn)確率俯萌,則我們認(rèn)為分類器A更好立肘。相比之下,查準(zhǔn)率(Precision)和查全率(Recall)就不是一個(gè)單一數(shù)字的評(píng)估指標(biāo):它給出了兩個(gè)數(shù)字來(lái)評(píng)估你的分類器性能喇喉。具有多個(gè)數(shù)字 的評(píng)估指標(biāo)使得比較算法更為困難。假設(shè)你的算法表現(xiàn)如下:

這里,兩個(gè)分類器都沒有顯而易見地比另一個(gè)更優(yōu)越挨务,所以它不能馬上引導(dǎo)你選擇其中一個(gè)。
在開發(fā)期間玉组,你的團(tuán)隊(duì)會(huì)嘗試各種關(guān)于算法體系結(jié)構(gòu)谎柄,模型參數(shù),特征選擇等方面的許多idea惯雳。使用單一數(shù)字的評(píng)估指標(biāo)(single-number evaluation metric)(如精度)朝巫,你可以根據(jù)其在這個(gè)指標(biāo)上的效果快速對(duì)所有模型進(jìn)行排序,從而快速?zèng)Q定哪一個(gè)work的最好石景。如果你真的同時(shí)關(guān)心查準(zhǔn)率(Precision)和查全率(Recall)劈猿,我建議你使用一種方法將它們組合為單一的數(shù)字。例如潮孽,可以取Precision和Recall的平均值揪荣,最終得到單個(gè)數(shù)字⊥罚或者仗颈,你可以計(jì)算“F1度量(F1 score)”,它是一種基于其平均值的改善的方法椎例,比簡(jiǎn)單地取平均值效果要好挨决。

當(dāng)你面臨在一大堆分類器中做出選擇時(shí),使用單一數(shù)字的評(píng)估指標(biāo)可以加快你做出決策订歪。它可以給出所有嘗試的idea的明確的優(yōu)先排名脖祈,從而給出一個(gè)清晰的前進(jìn)方向。作為最后一個(gè)例子陌粹,假如你分別得到了你的貓分類器在四個(gè)主要市場(chǎng)(美國(guó)撒犀,中國(guó),印度和其他地區(qū))的準(zhǔn)確率掏秩。這里提供了四個(gè)指標(biāo)或舞。通過對(duì)這四個(gè)數(shù)據(jù)進(jìn)行平均或加權(quán)平均,你將得到單個(gè)數(shù)字度量蒙幻。取平均值或加權(quán)平均值是將多個(gè)指標(biāo)合并為一個(gè)的最常見的方法之一映凳。

9. 優(yōu)化指標(biāo)和滿足指標(biāo)

這是組合多個(gè)評(píng)估指標(biāo)的另一種方法。
假設(shè)你同時(shí)關(guān)心算法的準(zhǔn)確率和運(yùn)行時(shí)間邮破。你需要在下面三個(gè)分類器中進(jìn)行選擇:

這里如果將準(zhǔn)確率和運(yùn)行時(shí)間組合為單個(gè)評(píng)估指標(biāo)會(huì)看起來(lái)不太自然(例如:Accuracy?0.5?RunningTime)诈豌。

這里你可以這樣處理:首先仆救,定義一個(gè)“可接受”的運(yùn)行時(shí)間。例如我們說任何運(yùn)行時(shí)間在100ms以內(nèi)的算法都是可接受的矫渔。這里彤蔽,運(yùn)行時(shí)間就是一個(gè)“滿足的度量(satisficing metric)”——你的算法只需要在這個(gè)指標(biāo)上表現(xiàn)地“足夠好(good enough)”就行,在這個(gè)意義上它應(yīng)該滿足最多100ms庙洼。準(zhǔn)確率是一個(gè)“優(yōu)化度量(optimizing metric)”顿痪。

如果你正在權(quán)衡N個(gè)不同的標(biāo)準(zhǔn),例如模型的二進(jìn)制文件大杏凸弧(這對(duì)于移動(dòng)app很重要蚁袭,因?yàn)橛脩舨幌胍螺d很大的程序),運(yùn)行時(shí)間和準(zhǔn)確率等石咬。你可以考慮設(shè)置其中N-1個(gè)標(biāo)準(zhǔn)為“滿意(satisficing)”指標(biāo)揩悄,也就是說你只需要他們滿足特定的值即可。然后將最后一個(gè)定義為“優(yōu)化(optimizing)”指標(biāo)鬼悠。例如删性,為二進(jìn)制文件大小和運(yùn)行時(shí)間設(shè)定可接受的閾值,并嘗試在這些約束條件下不斷優(yōu)化準(zhǔn)確率焕窝。

作為最后一個(gè)例子镇匀,假定你正在構(gòu)建一個(gè)硬件設(shè)備,該設(shè)備使用麥克風(fēng)監(jiān)聽用戶說出的某個(gè)特定的“喚醒語(yǔ)(wakeword)”袜啃,從而喚醒系統(tǒng)汗侵。例如:Amazon Echo監(jiān)聽“Alexa”;蘋果Siri監(jiān)聽“Hey Siri”群发;Android監(jiān)聽“Okay Google”晰韵;或百度app監(jiān)聽“你好百度”。你同時(shí)關(guān)心假正例的比率(the false positive rate, 即當(dāng)沒有人說喚醒語(yǔ)時(shí)系統(tǒng)喚醒的頻率)和假反例的比率(the false negative rate, 即當(dāng)有人說出喚醒語(yǔ)時(shí)系統(tǒng)沒有喚醒的頻率)熟妓。對(duì)這個(gè)系統(tǒng)表現(xiàn)性能的一個(gè)合理的目標(biāo)是最小化假反例的比率(優(yōu)化指標(biāo)雪猪,optimizing metric),同時(shí)滿足每24小時(shí)操作出現(xiàn)不超過一個(gè)假正例即可(滿足指標(biāo),satisficing metric)起愈。一旦你的團(tuán)隊(duì)對(duì)評(píng)估指標(biāo)進(jìn)行優(yōu)化只恨,他們將能夠更快地取得進(jìn)步。

10. 有一個(gè)開發(fā)集和評(píng)估指標(biāo)來(lái)加速迭代

對(duì)于一個(gè)新問題抬虽,很難事先知道什么方法是最合適的官觅。即使經(jīng)驗(yàn)豐富的機(jī)器學(xué)習(xí)研究者在發(fā)現(xiàn)滿意的方法之前也會(huì)嘗試各種各樣的idea。在構(gòu)建機(jī)器學(xué)習(xí)系統(tǒng)時(shí)阐污,我經(jīng)常會(huì):

  • 首先想出一些構(gòu)建系統(tǒng)的想法(idea)
  • 在代碼(code)中實(shí)現(xiàn)這些idea
  • 進(jìn)行實(shí)驗(yàn)(experiment)休涤,通過實(shí)驗(yàn)判斷我的想法 work的怎么樣。(通常我的前幾個(gè)想法都不是很work!)基于這些知識(shí)功氨,再生成更多的idea序苏,并不斷迭代。

這是一個(gè)不斷迭代的過程捷凄。你循環(huán)得越快忱详,你的進(jìn)展也就越快。這就是 開發(fā)/測(cè)試集 和評(píng)估指標(biāo)非常重要的原因:每次你嘗試一個(gè)新的想法時(shí)跺涤,在開發(fā)集上測(cè)試其表現(xiàn)性能踱阿,這將使你快速判斷你是否在朝著正確的方向前進(jìn)。相反钦铁,如果你沒有特定的開發(fā)集和評(píng)估指標(biāo)。那么每次你的團(tuán)隊(duì)開發(fā)出一個(gè)新的貓分類器時(shí)才漆,你必須把它移植到你的應(yīng)用程序牛曹,并親身體驗(yàn)幾個(gè)小時(shí)來(lái)感受一下這個(gè)新的分類器性能是否有提升。這將是極其極其慢的醇滥!并且黎比,如果你的團(tuán)隊(duì)將分類器的準(zhǔn)確率從95.0%提升到95.1%,你可能無(wú)法通過親身體驗(yàn)來(lái)感受到這0.1%的改進(jìn)鸳玩。而通過這些0.1%的不斷改進(jìn)阅虫,你的系統(tǒng)將取得很大的進(jìn)步。有一個(gè)開發(fā)集和評(píng)估指標(biāo)不跟,你可以很快地檢測(cè)出哪些想法給你的系統(tǒng)帶來(lái)了型堑邸(或大)的改進(jìn),然后你就清楚地知道了哪些想法可以進(jìn)一步改善窝革,而哪些需要被舍棄购城。

11. 何時(shí)更改開發(fā)/測(cè)試集和評(píng)估指標(biāo)

當(dāng)開始一個(gè)新項(xiàng)目時(shí),我一般會(huì)試圖快速選擇一個(gè)開發(fā)/測(cè)試集 虐译,因?yàn)檫@可以給團(tuán)隊(duì)制定一個(gè)明確的目標(biāo)瘪板。我通常會(huì)要求我的團(tuán)隊(duì)在不到一周之內(nèi)想出一個(gè)初始的開發(fā)/測(cè)試集和評(píng)估指標(biāo)。提出一個(gè)不太完美的方案并迅速行動(dòng)起來(lái)往往比過分考慮這些會(huì)更好漆诽。但是“一周”這個(gè)時(shí)間表并不適用于成熟的應(yīng)用侮攀。例如,反垃圾郵件是一個(gè)成熟的深度學(xué)習(xí)應(yīng)用厢拭。我曾經(jīng)見過那些開發(fā)已經(jīng)成熟的系統(tǒng)的團(tuán)隊(duì)可能會(huì)花費(fèi)數(shù)月時(shí)間來(lái)獲得更好的開發(fā)/測(cè)試集兰英。

如果你后來(lái)發(fā)現(xiàn)你初始的開發(fā)/測(cè)試集或評(píng)估指標(biāo)與你的目標(biāo)并不完全一致,那么通過一切手段快速更改它們供鸠。例如箭昵,如果在你的開發(fā)集和評(píng)估指標(biāo)上分類器A比分離器B表現(xiàn)好,但你的團(tuán)隊(duì)認(rèn)為實(shí)際應(yīng)用中分類器B更適合您的產(chǎn)品回季,這可能是一個(gè)你需要更改開發(fā)/測(cè)試集或評(píng)估指標(biāo)的跡象家制。有三個(gè)主要原因可能會(huì)造成開發(fā)集/評(píng)估指標(biāo)不正確地把分類器A排得更高:

  • 你需要做得好的實(shí)際數(shù)據(jù)分布和開發(fā)/測(cè)試集是不同的正林。
    假設(shè)你的初始開發(fā)/測(cè)試集主要是一些成年貓的照片。你查看貓app的后臺(tái)颤殴,發(fā)現(xiàn)用戶上傳了比預(yù)期多很多的幼貓的照片觅廓。所以,開發(fā)/測(cè)試集的數(shù)據(jù)分布并不能代表你需要做好的實(shí)際的數(shù)據(jù)分布涵但。這種情況下杈绸,更新你的開發(fā)/測(cè)試集,使其更具代表性矮瘟。

  • 你已經(jīng)過擬合了開發(fā)集瞳脓。
    在開發(fā)集上重復(fù)地評(píng)估不同方法的過程可能導(dǎo)致你的算法逐漸對(duì)開發(fā)集“過擬合(overfit)”。當(dāng)你做完開發(fā)后澈侠,你將在測(cè)試集上評(píng)估你的算法劫侧。如果你發(fā)現(xiàn)算法在開發(fā)集上的表現(xiàn)遠(yuǎn)好于在測(cè)試集上的表現(xiàn),這可能是你已經(jīng)過擬合開發(fā)集的跡象哨啃。這種情況下烧栋,你需要更新你的開發(fā)集了。
    如果你需要跟蹤團(tuán)隊(duì)的進(jìn)度拳球,你也可以用測(cè)試集定期評(píng)估你的系統(tǒng)——每月或每周一次审姓。但不要使用測(cè)試集來(lái)做出關(guān)于改進(jìn)算法的任何決定,包括是否回退到上一周的系統(tǒng)祝峻。如果這樣做了魔吐,你將開始過度擬合測(cè)試集,并且不可能再依靠它來(lái)給出系統(tǒng)性能的完全無(wú)偏估計(jì)(unbiased estimate)(你可能會(huì)在發(fā)表論文或做出重要商業(yè)決策是使用這個(gè)估計(jì))莱找。

  • 評(píng)估指標(biāo)正在衡量的并不是項(xiàng)目所需要優(yōu)化的東西画畅。
    假設(shè)對(duì)于你的貓app,你的評(píng)估指標(biāo)是分類準(zhǔn)確率宋距。該指標(biāo)現(xiàn)在把分類器A排在分類器B前面轴踱。但是假如你嘗試了這兩種算法,發(fā)現(xiàn)分類器A會(huì)偶爾允許色情圖片通過谚赎。那么即使分類器A準(zhǔn)確率更高淫僻,色情圖片所帶來(lái)的壞影響也意味著其表現(xiàn)是不被接受的。你需要做什么呢壶唤?
    這里雳灵,評(píng)估指標(biāo)不能辨別出對(duì)產(chǎn)品而言算法B比算法A更好這一事實(shí)。所以闸盔,你不能再相信該指標(biāo)能挑選出最佳算法∶跽蓿現(xiàn)在時(shí)改變?cè)u(píng)估指標(biāo)的時(shí)候了。例如,你可以改變?cè)u(píng)估指標(biāo)躲撰,嚴(yán)重懲罰色情圖片分類錯(cuò)誤针贬。我強(qiáng)烈建議你選擇一個(gè)新的評(píng)估指標(biāo),以此來(lái)為你的團(tuán)隊(duì)明確定義一個(gè)新的目標(biāo)拢蛋,而非在不信任的評(píng)估指標(biāo)下一直前行桦他,并恢復(fù)到手工選擇分類器。

在項(xiàng)目中改變開發(fā)/測(cè)試集和評(píng)估指標(biāo)是很常見的谆棱。擁有一個(gè)初始的開發(fā)/測(cè)試集和評(píng)估指標(biāo)能幫助你快速迭代快压。如果你發(fā)現(xiàn) 開發(fā)/測(cè)試集和評(píng)估指標(biāo) 不再使你的團(tuán)隊(duì)在正確方向上前進(jìn),這不是什么大問題垃瞧!只需要改變它們蔫劣,并確保你的團(tuán)隊(duì)知道新的方向。

12. 小結(jié):建立開發(fā)集和測(cè)試集

  • 從分布中選擇開發(fā)集和測(cè)試集个从,以反映你期望在未來(lái)獲得的數(shù)據(jù)脉幢,并希望在上面做得很好。這可能和你的訓(xùn)練數(shù)據(jù)分布不同信姓。
  • 如果可能的話,選擇來(lái)自同一分布的開發(fā)集和測(cè)試集绸罗。
  • 為你的團(tuán)隊(duì)選擇單一數(shù)字的評(píng)估指標(biāo)進(jìn)行優(yōu)化意推。如果你關(guān)心多個(gè)目標(biāo),請(qǐng)考慮把它們合并到一個(gè)公式中(例如平均多個(gè)錯(cuò)誤指標(biāo))珊蟀,或設(shè)定滿足指標(biāo)和優(yōu)化指標(biāo)菊值。
  • 機(jī)器學(xué)習(xí)是一個(gè)高度迭代的過程:在發(fā)現(xiàn)你滿意的方法之前你可能需要嘗試很多的idea。
  • 具有開發(fā)/測(cè)試集和單一數(shù)字評(píng)估指標(biāo)可以幫助你快速評(píng)估算法育灸,因此迭代地更快腻窒。
  • 當(dāng)開始一個(gè)全新的應(yīng)用時(shí),嘗試快速建立開發(fā)/測(cè)試集和評(píng)估指標(biāo)磅崭,最好在一周之內(nèi)儿子。當(dāng)然,在成熟的應(yīng)用程序上花費(fèi)更長(zhǎng)的時(shí)間也是ok的砸喻。
  • 依據(jù)70%:30%的比例劃分訓(xùn)練/測(cè)試集這一經(jīng)驗(yàn)性的方法不太適用于你擁有大量數(shù)據(jù)的情況柔逼;開發(fā)/測(cè)試集可以占有遠(yuǎn)小于30%的數(shù)據(jù)量。
  • 你的開發(fā)集數(shù)據(jù)量應(yīng)足夠大割岛,大到能檢測(cè)出你的算法準(zhǔn)確性上的有意義的改變愉适,但沒必要更大。你的測(cè)試集應(yīng)該足夠大癣漆,大到能對(duì)你的系統(tǒng)整體性能評(píng)估擁有一個(gè)很高的自信度维咸。
  • 如果你的開發(fā)集和評(píng)估指標(biāo)不再使你的團(tuán)隊(duì)在正確方向上前進(jìn),快速改變它:(i)如果你過擬合了開發(fā)集,去獲得更多的開發(fā)集數(shù)據(jù)癌蓖。(ii)如果你所關(guān)心的實(shí)際分布和 開發(fā)/測(cè)試集 的分布不同瞬哼,那么得到新的開發(fā)/測(cè)試集 數(shù)據(jù)。(iii)如果你的評(píng)估指標(biāo)不再能衡量對(duì)你來(lái)說最重要的東西费坊,請(qǐng)改變?cè)u(píng)估指標(biāo)倒槐。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市附井,隨后出現(xiàn)的幾起案子讨越,更是在濱河造成了極大的恐慌,老刑警劉巖永毅,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件把跨,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡沼死,警方通過查閱死者的電腦和手機(jī)着逐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)意蛀,“玉大人耸别,你說我怎么就攤上這事∠卦浚” “怎么了秀姐?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)若贮。 經(jīng)常有香客問我省有,道長(zhǎng),這世上最難降的妖魔是什么谴麦? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任蠢沿,我火速辦了婚禮,結(jié)果婚禮上匾效,老公的妹妹穿的比我還像新娘舷蟀。我一直安慰自己,他們只是感情好面哼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布雪侥。 她就那樣靜靜地躺著,像睡著了一般精绎。 火紅的嫁衣襯著肌膚如雪速缨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天代乃,我揣著相機(jī)與錄音旬牲,去河邊找鬼仿粹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛原茅,可吹牛的內(nèi)容都是我干的吭历。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼擂橘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼晌区!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起通贞,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤朗若,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后昌罩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哭懈,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年茎用,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了遣总。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡轨功,死狀恐怖旭斥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情古涧,我是刑警寧澤垂券,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站蒿褂,受9級(jí)特大地震影響圆米,放射性物質(zhì)發(fā)生泄漏卒暂。R本人自食惡果不足惜啄栓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望也祠。 院中可真熱鬧昙楚,春花似錦、人聲如沸诈嘿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)奖亚。三九已至淳梦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間昔字,已是汗流浹背爆袍。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工首繁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人陨囊。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓弦疮,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蜘醋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胁塞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容