一、機(jī)器學(xué)習(xí)策略的原因
????機(jī)器學(xué)習(xí)是無數(shù)重要應(yīng)用程序的基礎(chǔ)爹谭,包括網(wǎng)絡(luò)搜索枷邪,電子郵件反垃圾郵件,語音識別诺凡,產(chǎn)品推薦等东揣。我假設(shè)您或您的團(tuán)隊正在開發(fā)機(jī)器學(xué)習(xí)應(yīng)用程序,并且您希望快速取得進(jìn)展绑洛。這本書將幫助你這樣做救斑。
????示例:構(gòu)建貓圖片啟動說您正在建立一個為貓愛好者提供源源不斷的貓圖片的創(chuàng)業(yè)公司。
????您使用神經(jīng)網(wǎng)絡(luò)構(gòu)建計算機(jī)視覺系統(tǒng)真屯,用于檢測圖片中的貓脸候。
但悲慘的是,你的學(xué)習(xí)算法的準(zhǔn)確性還不夠好绑蔫。您正面臨著改善貓?zhí)綔y器的巨大壓力运沦。你是做什么?
您的團(tuán)隊有很多想法配深,例如:
?獲取更多數(shù)據(jù):收集更多貓的照片携添。
??收集更多樣化的培訓(xùn)集。例如篓叶,貓在異常位置的照片;貓有不尋常的顏色;用各種相機(jī)設(shè)置拍攝的照片; ...烈掠。
??通過運(yùn)行更多梯度下降迭代來更長時間地訓(xùn)練算法。?
?嘗試更大的神經(jīng)網(wǎng)絡(luò)缸托,具有更多層/隱藏單元/參數(shù)左敌。
?嘗試更小的神經(jīng)網(wǎng)絡(luò)。
??嘗試添加正則化(例如L2正則化)俐镐。
??更改神經(jīng)網(wǎng)絡(luò)架構(gòu)(激活功能矫限,隱藏單元數(shù)等)
?......
????????如果您在這些可能的方向中做出選擇,您將構(gòu)建領(lǐng)先的貓圖片平臺佩抹,并引領(lǐng)您的公司走向成功叼风。如果你選擇不好,你可能會浪費幾個月棍苹。你怎么辦无宿?
????????這本書將告訴你如何。大多數(shù)機(jī)器學(xué)習(xí)問題都會留下線索廊勃,告訴你嘗試什么是有用的懈贺,什么是沒用的嘗試经窖。學(xué)習(xí)閱讀這些線索將為您節(jié)省數(shù)月或數(shù)年的開發(fā)時間。
二梭灿、如何使用本書來幫助您的團(tuán)隊
????????完成本書后画侣,您將深入了解如何為機(jī)器學(xué)習(xí)項目設(shè)置技術(shù)方向。但是你的隊友可能不明白為什么你推薦一個特定的方向堡妒。也許您希望您的團(tuán)隊定義單一數(shù)字評估指標(biāo)配乱,但他們并不相信。你怎么說服他們皮迟?
????????這就是為什么我讓章節(jié)簡短:這樣你就可以將它們打印出來并讓你的隊友只閱讀你需要知道的1-2頁搬泥。優(yōu)先級的一些變化會對團(tuán)隊的工作效率產(chǎn)生巨大影響。通過幫助您的團(tuán)隊進(jìn)行一些此類更改伏尼,我希望您能成為團(tuán)隊的超級英雄忿檩!
三、先決條件和符號
????????如果您參加過機(jī)器學(xué)習(xí)課程爆阶,例如我在Coursera學(xué)習(xí)MOOC燥透,或者您有應(yīng)用監(jiān)督學(xué)習(xí)的經(jīng)驗,您將能夠理解本文辨图。
????????我假設(shè)您熟悉有監(jiān)督的學(xué)習(xí):使用標(biāo)記的訓(xùn)練樣例(x班套,y)學(xué)習(xí)從x到y(tǒng)映射的函數(shù)。監(jiān)督學(xué)習(xí)算法包括線性回歸故河,邏輯回歸和神經(jīng)網(wǎng)絡(luò)吱韭。機(jī)器學(xué)習(xí)有很多種形式,但今天機(jī)器學(xué)習(xí)的大部分實用價值來自于有監(jiān)督的學(xué)習(xí)鱼的。
????????我會經(jīng)常提到神經(jīng)網(wǎng)絡(luò)(也稱為“深度學(xué)習(xí)”)理盆。您只需要基本了解它們遵循本文的內(nèi)容。
????????如果您不熟悉這里提到的概念凑阶,請在Coursera上的機(jī)器學(xué)習(xí)課程中觀看前三周的視頻熏挎,網(wǎng)址為http://ml-class.org
四、規(guī)模推動機(jī)器學(xué)習(xí)進(jìn)步
????????許多深度學(xué)習(xí)(神經(jīng)網(wǎng)絡(luò))的想法已經(jīng)存在了幾十年晌砾。為什么這些想法現(xiàn)在起飛了?
????????最近取得進(jìn)展的兩個最大驅(qū)動因素是:
??????數(shù)據(jù)可用性烦磁。人們現(xiàn)在將更多時間花在數(shù)字設(shè)備(筆記本電腦养匈,移動設(shè)備)上。他們的數(shù)字活動產(chǎn)生了大量的數(shù)據(jù)都伪,我們可以提供給我們的學(xué)習(xí)算法呕乎。
??????計算規(guī)模。幾年前我們就開始能夠訓(xùn)練足夠大的神經(jīng)網(wǎng)絡(luò)陨晶,以利用我們現(xiàn)在擁有的龐大數(shù)據(jù)集猬仁。
????????詳細(xì)地說帝璧,即使你積累了更多的數(shù)據(jù),通常是較老的學(xué)習(xí)算法的性能湿刽,例如邏輯回歸的烁,“平穩(wěn)”。這意味著它的學(xué)習(xí)曲線“變平”诈闺,即使你給它更多的數(shù)據(jù)渴庆,算法也會停止改進(jìn):
????就好像舊的算法不知道如何處理我們現(xiàn)在擁有的所有數(shù)據(jù)。如果您在同一個監(jiān)督學(xué)習(xí)任務(wù)上訓(xùn)練一個小型神經(jīng)網(wǎng)絡(luò)(NN)雅镊,您可能會獲得稍微好一點的性能:
這里襟雷,“小型神經(jīng)網(wǎng)絡(luò)”是指僅具有少量隱藏單元/層/參數(shù)的神經(jīng)網(wǎng)絡(luò)。最后仁烹,如果你訓(xùn)練越來越大的神經(jīng)網(wǎng)絡(luò)耸弄,你可以獲得更好的性能。
????????當(dāng)您(i)訓(xùn)練一個非常大的神經(jīng)網(wǎng)絡(luò)時卓缰,您將獲得最佳性能计呈,以便您處于上方的綠色曲線上; (ii)擁有大量數(shù)據(jù)。
????????許多其他細(xì)節(jié)僚饭,如神經(jīng)網(wǎng)絡(luò)架構(gòu)也很重要震叮,這里有很多創(chuàng)新。但是鳍鸵,目前提高算法性能的一種更可靠的方法仍然是(i)訓(xùn)練更大的網(wǎng)絡(luò)和(ii)獲得更多數(shù)據(jù)
????如何完成(i)和(ii)的過程令人驚訝地復(fù)雜苇瓣。本書將詳細(xì)討論細(xì)節(jié)。我們將從對傳統(tǒng)學(xué)習(xí)算法和神經(jīng)網(wǎng)絡(luò)都有用的一般策略開始偿乖,并構(gòu)建最現(xiàn)代的構(gòu)建深度學(xué)習(xí)系統(tǒng)的策略击罪。
設(shè)置開發(fā)和測試集
五、您的開發(fā)和測試集
????????讓我們回到我們之前的貓圖片示例:您運(yùn)行移動應(yīng)用程序贪薪,用戶正在將許多不同內(nèi)容的圖片上傳到您的應(yīng)用程序媳禁。你想自動找到貓圖片。
????????您的團(tuán)隊通過從不同網(wǎng)站下載貓(正樣本)和非貓(負(fù)樣本)的圖片獲得大量訓(xùn)練集画切。他們將數(shù)據(jù)集70%/ 30%分成訓(xùn)練和測試集竣稽。使用這些數(shù)據(jù),他們構(gòu)建了一個可在訓(xùn)練和測試集上運(yùn)行良好的貓?zhí)綔y器霍弹。
? ? ? 但是當(dāng)您將此分類器部署到移動應(yīng)用程序中時毫别,您會發(fā)現(xiàn)性能非常差!
? ? ? 您發(fā)現(xiàn)用戶上傳的圖片與構(gòu)成您的訓(xùn)練集的網(wǎng)站圖片的外觀不同:用戶正在上傳使用手機(jī)拍攝的照片典格,這些照片往往分辨率較低岛宦,模糊不清,光線不足耍缴。由于您的訓(xùn)練/測試集是由網(wǎng)站圖像組成的砾肺,因此您的算法并不能很好地概括您所關(guān)注的實際分布:手機(jī)圖片挽霉。
????????在大數(shù)據(jù)的現(xiàn)代時代之前,機(jī)器學(xué)習(xí)中的常見規(guī)則是使用隨機(jī)的70%/ 30%分割來形成訓(xùn)練和測試集变汪。這種做法可行侠坎,但是在越來越多的應(yīng)用程序中,這是一個壞主意疫衩,其中培訓(xùn)分發(fā)(上面示例中的網(wǎng)站圖像)與您最終關(guān)注的分發(fā)(手機(jī)圖像)不同硅蹦。
????我們通常定義:
?訓(xùn)練集 - 您運(yùn)行學(xué)習(xí)算法。?
?開發(fā)(開發(fā))集 - 用于調(diào)整參數(shù)闷煤,選擇要素以及做出有關(guān)學(xué)習(xí)算法的其他決策童芹。有時也稱為保持交叉驗證集。
??測試集 - 用于評估算法的性能鲤拿,但不用于決定使用哪種學(xué)習(xí)算法或參數(shù)假褪。
????????一旦定義了開發(fā)集(開發(fā)集)和測試集,您的團(tuán)隊就會嘗試很多想法近顷,例如不同的學(xué)習(xí)算法參數(shù)生音,以查看最有效的方法。開發(fā)和測試集允許您的團(tuán)隊快速查看算法的運(yùn)行情況窒升。
????????換句話說缀遍,開發(fā)和測試集的目的是指導(dǎo)您的團(tuán)隊完成對機(jī)器學(xué)習(xí)系統(tǒng)所做的最重要的更改。
????????因此饱须,您應(yīng)該執(zhí)行以下操作:選擇開發(fā)和測試集以反映您希望將來獲得的數(shù)據(jù)域醇,并希望做得好。換句話說蓉媳,您的測試集不應(yīng)該只是可用數(shù)據(jù)的30%譬挚,特別是如果您希望未來的數(shù)據(jù)(手機(jī)圖像)與訓(xùn)練集(網(wǎng)站圖像)的性質(zhì)不同。
????????如果您尚未啟動移動應(yīng)用酪呻,則可能還沒有任何用戶减宣,因此可能無法獲得準(zhǔn)確反映您將來要做的事情的數(shù)據(jù)。但你可能仍然試圖近似模擬這種情況玩荠。例如漆腌,請您的朋友拍攝貓的手機(jī)照片并發(fā)送給您。啟動應(yīng)用程序后阶冈,您可以使用實際用戶數(shù)據(jù)更新您的開發(fā)/測試集屉凯。
????????如果您真的沒有任何方法可以獲得接近您期望獲得的數(shù)據(jù),也許您可??以從使用網(wǎng)站圖像開始眼溶。但是你應(yīng)該意識到這種風(fēng)險會導(dǎo)致系統(tǒng)不能很好地概括(和預(yù)期不一致)。
????????它需要判斷決定對開發(fā)集和測試集的投資程度晓勇。但是堂飞,不要假設(shè)您的培訓(xùn)分布與您的測試分發(fā)相同灌旧。
????????嘗試選擇反映您最終想要表現(xiàn)的內(nèi)容的測試示例,而不是您碰巧用于培訓(xùn)的任何數(shù)據(jù)绰筛。
六枢泰、您的開發(fā)和測試集應(yīng)該來自相同的樣本集分配
????????根據(jù)您最大的市場,您的貓應(yīng)用程序圖像數(shù)據(jù)分為四個區(qū)域:(i)美國铝噩,(ii)中國衡蚂,(iii)印度,以及(iv)其他骏庸。組成開發(fā)集合測試集毛甲,比如我們把美國和印度放在開發(fā)集中;中國和其他國家在測試集。換句話說具被,我們可以隨機(jī)將其中的兩個分配給開發(fā)集玻募,另外兩個分配給測試集,對嗎一姿?
????????定義開發(fā)和測試集后七咧,您的團(tuán)隊將專注于提高開發(fā)集性能。因此叮叹,開發(fā)集應(yīng)該反映出你想要最大限度地改進(jìn)的任務(wù):要在所有四個地理位置上做得好,而不僅僅是兩個蛉顽。
????????第二個具有不同分配的開發(fā)集和測試集導(dǎo)致的問題:您的團(tuán)隊有可能構(gòu)建在開發(fā)集上運(yùn)行良好的東西蝗砾,但卻發(fā)現(xiàn)它在測試集上表現(xiàn)不佳。我看到這個結(jié)果非常沮喪和浪費精力蜂林。避免讓這件事發(fā)生在你身上遥诉。
????????例如,假設(shè)您的團(tuán)隊開發(fā)了一個在開發(fā)集上運(yùn)行良好但在測試集上運(yùn)行不好的系統(tǒng)噪叙。如果您的開發(fā)集和測試集樣本數(shù)據(jù)來自同一區(qū)域的樣本數(shù)據(jù)矮锈,那么您可以非常清楚地確定出現(xiàn)了什么問題:您已經(jīng)過度設(shè)置了開發(fā)集。顯而易見的解決方法是獲得更多開發(fā)集數(shù)據(jù)睁蕾。
????但是如果開發(fā)集和測試集樣本數(shù)據(jù)來自不同的區(qū)域苞笨,那么你的選擇就不那么明確了。有些事情可能會出錯:
????1.你的算法對開發(fā)集過度擬合了子眶。?
????2.測試集比開發(fā)集更難瀑凝。因此,您的算法可能會像預(yù)期的那樣做得很好臭杰,并且不可能進(jìn)一步顯著改進(jìn)粤咪。
? ? 3.測試集不一定比開發(fā)集更難,但也不一樣渴杆。那么在開發(fā)集(dev set)上運(yùn)行良好的方法在測試集(test set)上效果不佳。在這種情況下,您為改善開發(fā)集性能所做的大量工作可能會浪費精力南誊。
????????研究機(jī)器學(xué)習(xí)應(yīng)用程序已經(jīng)足夠困難了抄囚。具有不匹配的開發(fā)集和測試集怠苔,對是改進(jìn)開發(fā)集性能還是改善測試集的性能帶來了額外的不確定性。由于開發(fā)集(dev set)和測試集不匹配攒驰,因此很難弄清楚什么是有效的,哪些無效,從而使得優(yōu)先處理工作變得更加困難
????????如果您正在處理第三種情況的問題很洋,他們的創(chuàng)建者可能已指定來自不同樣本區(qū)域的開發(fā)集和測試集锁孟。與開發(fā)集和測試集來自樣相同本區(qū)域的情況相比孕暇,運(yùn)氣而非技能會對算法性能產(chǎn)生更大的影響派草。開發(fā)學(xué)習(xí)算法是一個重要的研究問題簸州,這些算法在一個樣本區(qū)域訓(xùn)練并且很好地對另一個樣本區(qū)域的概括。但是矢洲,如果您的目標(biāo)是在特定的機(jī)器學(xué)習(xí)應(yīng)用程序上取得進(jìn)展而不是進(jìn)行研究進(jìn)展,我建議您嘗試選擇從樣本區(qū)域中提取的開發(fā)和測試集盖桥。這將使您的團(tuán)隊更有效率。
七、開發(fā)/測試集需要多大齿税?
????????發(fā)集應(yīng)足夠大溜在,以檢測您正在嘗試的算法之間的差異仆葡。例如把篓,如果分類器A的準(zhǔn)確度為90.0%,分類器B的準(zhǔn)確度為90.1%疗锐,那么100個示例的開發(fā)設(shè)置將無法檢測到這0.1%的差異。與我見過的其他機(jī)器學(xué)習(xí)問題相比,100個示例開發(fā)設(shè)置很小关划。大小從1,000到10,000的開發(fā)示例很常見。有10,000個例子脱货,你很有可能發(fā)現(xiàn)0.1%的改善。
????????對于成熟和重要的應(yīng)用程序 - 例如,廣告凤价,網(wǎng)絡(luò)搜索和產(chǎn)品推薦 - 我也看到團(tuán)隊的對提高0.01%正確率又很大的積極性剩燥,因為它對公司的利潤有直接影響口注。在這種情況下,開發(fā)設(shè)置可能遠(yuǎn)大于10,000,以便檢測甚至更小的改進(jìn)。
????????測試集的大小如何摩窃?它應(yīng)該足夠大,以便對系統(tǒng)的整體性能給予高度信任。一種流行的啟發(fā)式方法是將30%的數(shù)據(jù)用于測試集姻僧。當(dāng)你有一些適當(dāng)數(shù)據(jù)量的例子時撇贺,這很好用 - 例如100到10,000個例子。但是在大數(shù)據(jù)時代冰抢,我們現(xiàn)在有機(jī)器學(xué)習(xí)問題松嘶,有時超過十億個例子,分配給開發(fā)/測試集的數(shù)據(jù)的比例一直在縮小挎扰,但是開發(fā)集測試集的數(shù)據(jù)量也是一直在成長翠订。除了評估算法性能所需的開發(fā)/測試集之外斜筐,不需要過多的開發(fā)/測試集。
八、為您的團(tuán)隊建立單數(shù)評估指標(biāo)以進(jìn)行優(yōu)化
????????分類準(zhǔn)確性是單數(shù)評估度量的一個示例:您在開發(fā)集(或測試集)上運(yùn)行分類器溪食,并返回一個單獨的數(shù)字登疗,表示它正確分類的示例的分?jǐn)?shù)续捂。根據(jù)該值度量,如果分類器A獲得97%的準(zhǔn)確度州袒,并且分類器B獲得90%的準(zhǔn)確度毕籽,則我們判斷分類器A是優(yōu)越的。
????????相比之下才写,Precision和Recall不是單數(shù)評估指標(biāo):它為評估您的分類器提供了兩個3數(shù)字岖沛。擁有多個數(shù)字評估指標(biāo)會使比較算法變得更加困難配椭。假設(shè)您的算法執(zhí)行如下:
(有關(guān)準(zhǔn)確率(Accuracy),精確率(Precision),召回率(Recall)和F1-Measure。https://www.cnblogs.com/sddai/p/5696870.html)
????????在這里旺入,兩個分類器都沒有明顯的優(yōu)勢急膀,所以它不會立即引導(dǎo)你選擇一個。
????????在開發(fā)過程中,您的團(tuán)隊將嘗試大量有關(guān)算法架構(gòu),模型參數(shù)杖刷,功能選擇等的想法励饵。擁有單數(shù)評估指標(biāo)(如準(zhǔn)確性)允許您根據(jù)其在此指標(biāo)上的表現(xiàn)對所有模型進(jìn)行排序,以及快速決定什么是最好的滑燃。
????????如果你真的關(guān)心Precision和Recall役听,我建議使用一種標(biāo)準(zhǔn)方法將它們組合成一個數(shù)字例如,可以采用精確度和召回率的平均值表窘,最終得到一個數(shù)字典予。或者乐严,您可以計算“F1score”瘤袖,這是一種計算平均值的修改方式,并且比簡單地采用均值更好昂验。
????????當(dāng)您在大量分類器中進(jìn)行選擇時捂敌,使用單數(shù)評估指標(biāo)可以加快您做出決策的能力艾扮。它在所有這些中給出了明確的偏好排名,因此明確了進(jìn)展的方向占婉。
????????作為最后一個例子泡嘴,假設(shè)您在四個主要市場中分別跟蹤貓分類器的準(zhǔn)確性:(i)美國,(ii)中國逆济,(iii)印度酌予,以及(iv)其他。這給出了四個指標(biāo)奖慌。通過獲取這四個數(shù)字的平均值或加權(quán)平均值抛虫,您最終得到一個數(shù)字指標(biāo)。采用平均或加權(quán)平均值是將多個指標(biāo)合并為一個的最常見方法之一升薯。
九莱褒、優(yōu)化和滿足指標(biāo)
????????這是組合多個評估指標(biāo)的另一種方法。
????????假設(shè)您關(guān)心學(xué)習(xí)算法的準(zhǔn)確性和運(yùn)行時間涎劈。您需要從以下三個分類器中進(jìn)行選擇:
????????通過將準(zhǔn)確性和運(yùn)行時間放入單個公式來推導(dǎo)單個度量似乎不自然广凸,例如:
????????????????????????????Accuracy - 0.5 * RunningTime
????????以下是您可以做的事情:首先,定義什么是“可接受的”運(yùn)行時間蛛枚。讓我們說任何在100毫秒運(yùn)行的東西都是可以接受的谅海。然后,根據(jù)您的分類器滿足運(yùn)行時間標(biāo)準(zhǔn)蹦浦,最大限度地提高準(zhǔn)確性扭吁。在這里,運(yùn)行時間是一個“令人滿意的指標(biāo)” - 您的分類器必須在此指標(biāo)上“足夠好”盲镶,因為它應(yīng)該最多需要100毫秒侥袜。準(zhǔn)確性是“優(yōu)化指標(biāo)”。
????????如果您正在處理N個不同的標(biāo)準(zhǔn)溉贿,例如模型的二進(jìn)制文件大蟹惆伞(這對于移動應(yīng)用程序很重要,因為用戶不想下載大型應(yīng)用程序)宇色,運(yùn)行時間和準(zhǔn)確性九杂,您可以考慮設(shè)置N-1標(biāo)準(zhǔn)為“令人滿意”的指標(biāo)。即宣蠕,你只需要它們滿足一定的價值例隆。然后將最后一個定義為“優(yōu)化”度量。例如抢蚀,為二進(jìn)制文件大小和運(yùn)行時間可接受的值設(shè)置閾值镀层,并嘗試在給定這些約束的情況下優(yōu)化準(zhǔn)確性。
????????作為最后一個示例皿曲,假設(shè)您正在構(gòu)建一個硬件設(shè)備鹿响,該設(shè)備使用麥克風(fēng)來監(jiān)聽用戶說出特定的“喚醒詞”羡微,然后喚醒系統(tǒng)。
????????例子包括Amazon Echo收聽“Alexa”; Apple Siri正在收聽“Hey Siri”; Android正在收聽“Okay Google”;和百度應(yīng)用程序聽“你好百度惶我÷杈螅”你關(guān)心的是誤報率 - 系統(tǒng)醒來的頻率,即使沒有人說出喚醒詞 - 以及假陰性率 - 它經(jīng)常無法喚醒當(dāng)有人說出喚醒詞绸贡。該系統(tǒng)性能的一個合理目標(biāo)是最小化假陰性率(優(yōu)化度量)盯蝴,每24小時操作(滿足度量)不超過一個誤報。
????????一旦您的團(tuán)隊與評估指標(biāo)保持一致以進(jìn)行優(yōu)化听怕,他們就能夠更快地取得進(jìn)展捧挺。
十、具有開發(fā)集和度量標(biāo)準(zhǔn)可加快迭代速度
????????事先很難知道哪種方法最適合新問題尿瞭。即使是經(jīng)驗豐富的機(jī)器學(xué)習(xí)研究人員闽烙,在發(fā)現(xiàn)令人滿意的事情之前,通常會嘗試許多想法声搁。在構(gòu)建機(jī)器學(xué)習(xí)系統(tǒng)時黑竞,我經(jīng)常會:
????????1.首先了解如何構(gòu)建系統(tǒng)。
????????2.在代碼中實現(xiàn)這個想法疏旨。
?????????3.進(jìn)行一項實驗很魂,告訴我這個想法有多好。 (通常我的前幾個想法不起作用i芾浴)基于這些學(xué)習(xí)遏匆,回過頭來產(chǎn)生更多的想法,并繼續(xù)迭代谁榜。
????????這是一個迭代過程幅聘。圍繞這個循環(huán)越快,你進(jìn)步的速度就越快窃植。這就是為什么擁有開發(fā)/測試集和度量標(biāo)準(zhǔn)很重要的原因:每次嘗試一個想法時帝蒿,在開發(fā)集上測量你的想法的性能可以讓你快速決定你是否朝著正確的方向前進(jìn)。
????????相反撕瞧,假設(shè)您沒有特定的開發(fā)集和指標(biāo)陵叽。因此狞尔,每當(dāng)您的團(tuán)隊開發(fā)新的貓分類器時丛版,您必須將其合并到您的應(yīng)用程序中,并使用該應(yīng)用程序幾個小時偏序,以了解新分類器是否是一項改進(jìn)页畦。這將非常慢!此外研儒,如果您的團(tuán)隊將分類器的準(zhǔn)確度從95.0%提高到95.1%豫缨,您可能無法檢測到使用該應(yīng)用程序的效率提高了0.1%独令。然而,通過逐漸累積數(shù)十個0.1%的改進(jìn)好芭,您的系統(tǒng)將取得很多進(jìn)展燃箭。擁有開發(fā)集和指標(biāo)可以讓您快速檢測哪些想法成功地為您提供了小的(或大的)改進(jìn),因此可以讓您快速決定要改進(jìn)哪些想法以及丟棄哪些想法舍败。
十一招狸、何時更改開發(fā)/測試集和指標(biāo)
????????在開始新項目時,我嘗試快速選擇開發(fā)/測試集邻薯,因為這為團(tuán)隊提供了明確定義的目標(biāo)裙戏。
????????我通常會要求我的團(tuán)隊在不到一周的時間內(nèi)提出初始開發(fā)集/測試集和初始指標(biāo) - 很少。最好是想出一些不完美的東西并快速前進(jìn)厕诡,而不是過度思考累榜。但這一周的時間表不適用于成熟的應(yīng)用程序。例如灵嫌,反垃圾郵件是一種成熟的深度學(xué)習(xí)應(yīng)用程序壹罚。我已經(jīng)看到在已經(jīng)成熟的系統(tǒng)上工作的團(tuán)隊花費數(shù)月時間來獲得更好的開發(fā)/測試集。
????????如果您后來意識到您的初始開發(fā)集/測試集或度量標(biāo)準(zhǔn)錯過了標(biāo)記醒第,則無論如何都要快速更改它們渔嚷。例如,如果您的開發(fā)集+指標(biāo)將分類器A排在分類器B之上形病,但您的團(tuán)隊認(rèn)為分類器B實際上對您的產(chǎn)品更優(yōu)越,那么這可能表示您需要更改您的開發(fā)/測試集或評估指標(biāo)途乃。
????????設(shè)置開發(fā)集/度量標(biāo)準(zhǔn),錯誤地將分類器A的評級排名設(shè)置較高有三個主要可能原因:
1.您需要做的實際分配與開發(fā)/測試集不同试读。
????????假設(shè)您的初始開發(fā)集(dev set)/測試集(test set)主要是成年貓的照片钩骇。您運(yùn)行您的檢測貓的應(yīng)用程序银亲,并發(fā)現(xiàn)用戶正在上傳的小貓圖像比預(yù)期要多。因此请梢,開發(fā)集(dev set)/測試集(test set)的樣本分布對實際樣本分布沒有很好的代表性。 在這種情況下够坐,請更新您的開發(fā)集(dev set)/測試集(test set)以使其更具代表性。
2.您的算法對DEV集過度擬合庶香。
????????在開發(fā)集上重復(fù)評估的處理會導(dǎo)致您的算法“過度擬合”到開發(fā)集。 完成開發(fā)后奢赂,您將在測試集上評估您的系統(tǒng)。 如果您發(fā)現(xiàn)您的算法在開發(fā)集(dev set)上的性能遠(yuǎn)遠(yuǎn)優(yōu)于在測試集性能,則表明您的算法已經(jīng)對開發(fā)集(dev set)過度擬合了毕箍。 在這種情況下,獲得一個新開發(fā)集(dev set)牺堰。
????????如果您需要跟蹤團(tuán)隊的進(jìn)度,您還可以在測試集上定期評估您的系統(tǒng) - 例如每周一次或每月一次 筏养。 但是渐溶,不要根據(jù)測試集做出有關(guān)算法的任何決定,包括是否回滾到前一周的系統(tǒng)。 如果你這樣做依啰,你將開始過度擬合測試集(test set),并且不再指望它對你的系統(tǒng)性能進(jìn)行完全無偏見的評估(如果你發(fā)表研究論文坏瞄,或者你可能需要使用這個指標(biāo) 做出重要的商品決定)。
3.該指標(biāo)衡量的是項目需要優(yōu)化的內(nèi)容。
????????假設(shè)對于您的cat檢測應(yīng)用程序爬范,您的度量標(biāo)準(zhǔn)是分類準(zhǔn)確性。 該度量標(biāo)準(zhǔn)將分類器A排序優(yōu)于分類器B.但是假設(shè)您嘗試了兩種算法枝嘶,并且發(fā)現(xiàn)分類器A允許偶爾的色情圖像通過镀裤。 即使分類器A更準(zhǔn)確骆莹,偶爾的色情圖片留下的壞印象也意味著它的表現(xiàn)是不可接受的毁习。 你該做什么盏道?
????????在這里猜嘱,對于您的產(chǎn)品,度量標(biāo)準(zhǔn)未能確定算法B比算法A更好的事實论皆。 因此,您無法再信任該指標(biāo)來選擇最佳算法悯周。 是時候改變評估指標(biāo)了粒督。 例如,您可以更改指標(biāo)禽翼,嚴(yán)重懲罰通過色情圖片屠橄。 我強(qiáng)烈建議選擇一個新指標(biāo)并使用新指標(biāo)明確定義團(tuán)隊的新目標(biāo)族跛,而不是在沒有可信指標(biāo)的情況下繼續(xù)進(jìn)行太長時間并且還原為在分類器之間手動選擇。
????????在項目期間,更改開發(fā)集(dev set)/測試集(test set)或評估指標(biāo)(metrics)是很常見的。 擁有初始開發(fā)集(dev set)/測試集(test set)或評估指標(biāo)(metrics)可幫助您快速迭代。 如果您發(fā)現(xiàn)開發(fā)集(dev set)/測試集(test set)或評估指標(biāo)(metrics)不再幫助您的團(tuán)隊指定正確的方向佩脊,那就沒什么大不了的豹缀! 只需更改它們丈积,確保您的團(tuán)隊了解新方向晶密。
12.小貼士:建立發(fā)展和測試集
?????????從樣本分布中選擇開發(fā)集(dev set)/測試集(test set)元扔,該樣本分布反映了您希望將來獲得的數(shù)據(jù)祟滴,并希望做得好。?這可能與您的訓(xùn)練數(shù)據(jù)分布不同。
?????????盡可能在同樣的樣本內(nèi)分布中選擇開發(fā)集(dev set)和測試集(test set)公给。
??????????為您的團(tuán)隊選擇一個單一的評估指標(biāo)進(jìn)行優(yōu)化倦沧。?如果您關(guān)注多個目標(biāo)告希,請考慮將它們合并到一個公式中(例如平均多個錯誤指標(biāo))或定義滿意度和優(yōu)化指標(biāo)。
?????????機(jī)器學(xué)習(xí)是一個高度迭代的過程:在找到一個你滿意的想法之前础嫡,你可能要嘗試許多想法榴鼎。
?????????擁有開發(fā)集(dev set)和測試集(test set)單個的評估指標(biāo)可幫助您快速評估算法并鸵,從而更快地迭代。
?????????在開始使用全新的應(yīng)用程序時滤祖,請嘗試快速建立開發(fā)集(dev set)和測試集(test set)和評估指標(biāo)筷狼,比如說不到一周。 在成熟的應(yīng)用程序上花費更長時間可能是可以的匠童。
?????????70%/ 30%的開發(fā)集(dev set)和測試集(test set)不適用于您擁有大量數(shù)據(jù)的問題; 開發(fā)集(dev set)和測試集(test set)可以遠(yuǎn)低于數(shù)據(jù)的30%埂材。
?????????您的開發(fā)集應(yīng)該足夠大,在準(zhǔn)確性情況下俏让,以檢測算法的有意義變化楞遏,但不一定要大得多。 您的測試集應(yīng)該足夠大首昔,以便您對系統(tǒng)的最終性能有一個可靠的估計寡喝。
?????????如果您的開發(fā)集(dev set)和評估指標(biāo)不再為您的團(tuán)隊指定正確的方向,請快速更改它們:(i)如果您過度擬合了開發(fā)集(dev set)勒奇,請獲取更多開發(fā)集(dev set)數(shù)據(jù)预鬓。 (ii)如果您關(guān)心的實際樣本分布與開發(fā)集(dev set)和測試集(test set)樣本分布不同,請獲取新的開發(fā)集(dev set)和測試集(test set)數(shù)據(jù)赊颠。 (iii)如果您的評估指標(biāo)不再衡量對您最重要的指標(biāo)格二,請更改評估指標(biāo)劈彪。
????????????????????????????????????????????????????????????基本錯誤分析
13.快速構(gòu)建您的第一個系統(tǒng),然后迭代.
? ??????您想構(gòu)建一個新的電子郵件反垃圾郵件系統(tǒng)顶猜。 您的團(tuán)隊有幾個想法:
?????????收集大量垃圾郵件培訓(xùn)沧奴。 例如,設(shè)置一個“蜜罐”:故意向已知的垃圾郵件發(fā)送者發(fā)送虛假的電子郵件地址长窄,以便您可以自動收獲他們發(fā)送到這些地址的垃圾郵件滔吠。
?????????開發(fā)用于理解電子郵件文本內(nèi)容的功能。
?????????開發(fā)用于理解電子郵件信封/標(biāo)題功能的功能挠日,以顯示消息所經(jīng)歷的Internet服務(wù)器集疮绷。
????????? 和更多。
????????即使我在反垃圾郵件方面做了大量工作嚣潜,我仍然很難選擇其中一個方向冬骚。 如果您不是應(yīng)用領(lǐng)域的專家,那就更難了懂算。
????????因此只冻,不要試圖設(shè)計和構(gòu)建完美的系統(tǒng)。 相反犯犁,可以在短短幾天內(nèi)快速構(gòu)建和培訓(xùn)基本系統(tǒng)属愤。 即使基本系統(tǒng)遠(yuǎn)離您可以構(gòu)建“的最佳”的5個系統(tǒng)女器,檢查基本系統(tǒng)如何運(yùn)作也很有價值:您將很快找到線索酸役,向您展示投入時間的最有希望的方向。 接下來的幾章將向您展示如何閱讀這些線索驾胆。
14.錯誤分析:查看開發(fā)設(shè)置示例以評估想法
????????當(dāng)你玩你的貓應(yīng)用程序時涣澡,你會注意到幾個例子,它會誤認(rèn)為貓的狗丧诺。有些狗看起來像貓入桂!
????????團(tuán)隊成員建議合并第三方軟件,使系統(tǒng)在狗圖像上做得更好驳阎。這些變化需要一個月的時間抗愁,團(tuán)隊成員也很熱情。你應(yīng)該讓他們繼續(xù)嗎呵晚?
????????在為這項任務(wù)投入一個月之前蜘腌,我建議您首先估計它??實際上會提高系統(tǒng)準(zhǔn)確性的程度。然后你可以更合理地決定這是否值得花數(shù)月的開發(fā)時間饵隙,或者利用同樣的時間撮珠,你能否在其他任務(wù)發(fā)揮更大的效益。
????????詳細(xì)說明金矛,這是你可以做的:
????????1.收集系統(tǒng)錯誤分類的100個開發(fā)示例示例芯急。即勺届,您的系統(tǒng)出錯的示例。
????????2.手動查看這些示例娶耍,并計算它們中的哪一部分是狗圖像免姿。
????????查看錯誤分類示例的過程稱為錯誤分析。在這個例子中榕酒,如果您發(fā)現(xiàn)只有5%的錯誤分類圖像是狗养泡,無論您在狗圖像上提高多少算法的性能,您都不會擺脫超過5%的錯誤奈应。換句話說澜掩,5%是擬議項目可以提供多少幫助的“上限”(意味著最大可能數(shù)量)。因此杖挣,如果您的整個系統(tǒng)目前90%準(zhǔn)確率(10%錯誤率)肩榕,這種改進(jìn)可能最多導(dǎo)致90.5%的準(zhǔn)確率(或9.5%的誤差率,誤差比原始10%誤差少0.5%)惩妇。
????????相反株汉,如果你發(fā)現(xiàn)50%的錯誤都是狗,那么你可以更加確信對項目會產(chǎn)生很大的影響歌殃。 它可以將準(zhǔn)確度從90%提高到95%(誤差相對減少50%乔妈,從10%降低到5%)。
????????這種簡單的錯誤分析計數(shù)程序為您提供了一種快速估算將第三方軟件納入狗圖像的可能價值的方法氓皱。 它為決定是否進(jìn)行此項投資提供了定量依據(jù)路召。
????????錯誤分析通常可以幫助您弄清楚不同方向的前景波材。 我見過很多工程師都不愿意進(jìn)行錯誤分析股淡。 只是跳進(jìn)去實施一些想法通常會感覺更令人興奮,而不是質(zhì)疑這個想法是否值得投入時間廷区。這是一個常見的錯誤:這可能會導(dǎo)致你的團(tuán)隊花一個月的時間才意識到它后來導(dǎo)致了一點點效益唯灵。
? ? ?????手動檢查100個示例并不需要很長時間。 即使你每張圖片需要一分鐘隙轻,你也可以在兩小時內(nèi)完成埠帕。 這兩個小時可以為你節(jié)省一個月的精力。
? ? ? ? ?錯誤分析是指檢查錯誤的您的分類算法開發(fā)集(dev set)錯誤的過程玖绿,以便您可以了解錯誤的根本原因敛瓷。 這可以幫助您確定項目的優(yōu)先級 - 如本例所示 - 并啟發(fā)新的方向,我們將在下面討論镰矿。 接下來的幾章還將介紹進(jìn)行錯誤分析的最佳實踐琐驴。
15.在錯誤分析期間并行評估多個想法
????????您的團(tuán)隊有幾個改進(jìn)貓?zhí)綔y器的想法:
?????????修復(fù)算法將狗識別為貓的問題。
?????????修復(fù)算法識別貓(獅子,黑豹等)作為家貓(寵物)的問題绝淡。
?????????提高系統(tǒng)在模糊圖像上的性能宙刘。
?????????......
????????您可以并行地有效地評估所有這些想法。 我通常會在查看~100個錯誤分類開發(fā)集(dev set)圖像時牢酵,創(chuàng)建一個電子表格并填寫它悬包。 我還記下了可能有助于我記住具體例子的評論。 為了說明這個過程馍乙,讓我們看一下你可能用一個小的開發(fā)集(dev set)開發(fā)的四個例子生成的電子表格:
????????上面的第三個image同時檢查了Great Cat和Blurry列布近。 此外,因為一個示例可能與多個類別相關(guān)聯(lián)丝格,所以底部的百分比可能不等于100%撑瞧。
????????雖然您可能首先制定類別(狗,大貓显蝌,模糊)预伺,然后手動對示例進(jìn)行分類,在實踐中曼尊,一旦您開始查看示例酬诀,您可能會受到啟發(fā),提出新的錯誤類別骆撇。 例如瞒御,假設(shè)你經(jīng)歷了十幾張圖片,并意識到Instagram過濾后的圖片會出現(xiàn)很多錯誤神郊。 您可以返回并在電子表格中添加新的“Instagram”列肴裙。 手動查看算法錯誤分類。并詢問您作為人類如何/是否可以正確標(biāo)記圖片的示例屿岂,通常會激發(fā)您提出新的錯誤類別和解決方案践宴。
????????最有用的錯誤類別是您有改進(jìn)意見的錯誤類別鲸匿。 例如爷怀,如果您想要“撤消”Instagram過濾器并恢復(fù)原始圖像,那么Instagram類別將最有助于添加带欢。 但是运授,您不必僅限于您知道如何改進(jìn)的錯誤類別; 這個過程的目標(biāo)是建立你對最有希望關(guān)注的領(lǐng)域的直覺。
????????錯誤分析是一個迭代過程乔煞。 如果您沒有考慮類別吁朦,請不要擔(dān)心。在查看幾個圖像之后渡贾,您可能會想出一些關(guān)于錯誤類別的想法逗宜。在手動對某些圖像進(jìn)行分類后,您可能會想到新的類別并重新檢查 根據(jù)新類別的圖像,等等纺讲。
????????假設(shè)您完成了對100個錯誤分類的開發(fā)集進(jìn)行錯誤分析并獲得以下內(nèi)容:
????????您現(xiàn)在知道擂仍,處理Dog錯誤的項目可以最多消除8%的錯誤。 處理Great Cat或Blurry圖像錯誤有助于消除更多錯誤熬甚。 因此逢渔,您可以選擇后兩個類別中的一個來關(guān)注。 如果您的團(tuán)隊有足夠的人員同時追求多個方向乡括,您也可以讓一些工程師與Great Cats和其他人一起工作來處理模糊圖像肃廓。
????????錯誤分析不會產(chǎn)生嚴(yán)格的數(shù)學(xué)公式,告訴您最高優(yōu)先級的任務(wù)應(yīng)該是什么诲泌。 您還必須考慮到您希望在不同類別上取得多少進(jìn)展以及解決每個類別所需的工作量盲赊。
16.清理開發(fā)集和測試集中錯誤標(biāo)記的樣本
????????在錯誤分析過程中帚称,您可能會注意到開發(fā)集中的一些示例被錯誤標(biāo)記览徒。當(dāng)我在這里說“錯誤標(biāo)記”時,我的意思是即使在算法遇到它之前爬坑,圖片也已經(jīng)被人類貼標(biāo)機(jī)貼錯了標(biāo)簽呻澜。 即递礼,示例(x,y)中的類標(biāo)簽具有y的值不正確羹幸。 例如脊髓,也許一些不是貓的圖片被錯誤標(biāo)記僅僅因為包含貓,反之亦然栅受。 如果您懷疑錯誤標(biāo)記圖像的分?jǐn)?shù)很重要将硝,請?zhí)砑右粋€類別以跟蹤錯誤標(biāo)記的示例部分:
????????你應(yīng)該更正開發(fā)套裝中的標(biāo)簽嗎? 請記住屏镊,開發(fā)集(dev set)的目標(biāo)是幫助您快速評估算法依疼,以便您可以判斷算法A和算法B哪個更好。 如果設(shè)置錯誤標(biāo)記的開發(fā)集(dev set)阻礙了您做出這些判斷的能力而芥,那么值得花些時間來修復(fù)開發(fā)集(dev set)的錯誤標(biāo)簽律罢。
? ??????例如,假設(shè)您的分類器的性能是:
?????????開發(fā)集(dev set)的總體準(zhǔn)確度.................. 90%(總體錯誤率為10%)
?????????錯誤標(biāo)記的例子導(dǎo)致的錯誤....... 0.6%(開發(fā)集的錯誤率6%)
?????????由于其他原因?qū)е碌腻e誤..................... 9.4%(設(shè)置錯誤的94%)
????????在這里棍丐,由于錯誤標(biāo)記導(dǎo)致的0.6%不準(zhǔn)確性可能不夠顯著误辑,相對于您可能改進(jìn)的9.4%的錯誤。 手動修復(fù)設(shè)備中錯誤標(biāo)記的圖像沒有什么害處歌逢,但這樣做并不重要:可能沒問題巾钉,您的系統(tǒng)是否有10%或9.4%的總體錯誤。
????????假設(shè)您不斷改進(jìn)cat分類器并達(dá)到以下性能:
?????????開發(fā)集的總體準(zhǔn)確度.................. 98.0%(總體錯誤率2.0%)
?????????錯誤標(biāo)記的例子導(dǎo)致的錯誤.......0.6%秘案。 (開發(fā)集錯誤的30%砰苍。)
?????????由于其他原因?qū)е碌腻e誤..................... 1.4%(開發(fā)集錯誤的70%)
????????開發(fā)集中潦匈,30%的錯誤是由于錯誤標(biāo)記的圖像造成的,這會對您的準(zhǔn)確度估計值產(chǎn)生重大誤差赚导。 現(xiàn)在值得提高開發(fā)集標(biāo)簽的質(zhì)量历等。處理錯誤標(biāo)記的示例將幫助您確定分類器的誤差接近1.4%或2% - 顯著的相對差異。
????????開始容忍一些錯誤標(biāo)記的開發(fā)/測試集示例并不常見辟癌,只是稍后在系統(tǒng)改進(jìn)時改變主意寒屯,以便錯誤標(biāo)記的示例的比例相對于總錯誤集增加。
????????最后一章解釋了如何通過算法改進(jìn)來改進(jìn)Dog黍少,Great Cat和Blurry等錯誤類別寡夹。 您已經(jīng)在本章中了解到,您可以通過改進(jìn)數(shù)據(jù)的標(biāo)簽來處理錯誤標(biāo)記的類別厂置。
????????無論您對開發(fā)集標(biāo)簽應(yīng)用什么處理過程菩掏,請記住,將其同樣應(yīng)用于測試集標(biāo)簽昵济,以便保證您的開發(fā)和測試集是從同一樣本分布中提取的智绸。將您的開發(fā)集和測試集放在一起處理,可以防止我們在第6章討論的問題 访忿,您的團(tuán)隊僅僅優(yōu)化開發(fā)集性能瞧栗,導(dǎo)致稍后實現(xiàn)基于不同測試集的不同標(biāo)準(zhǔn)。
????????如果您決定提高標(biāo)簽質(zhì)量海铆,請考慮仔細(xì)檢查系統(tǒng)錯誤分類的示例標(biāo)簽以及正確分類的示例標(biāo)簽迹恐。 在一個例子中,原始標(biāo)簽和學(xué)習(xí)算法都可能是錯誤的卧斟。 如果僅修復(fù)系統(tǒng)錯誤分類的示例標(biāo)簽殴边,則可能會在評估中引入偏差。 如果您有1,000個開發(fā)集示例珍语,并且如果您的分類器具有98.0%的準(zhǔn)確度锤岸,則更容易檢查錯誤分類的20個示例,而不是檢查所有正確分類的980個示例板乙。 因為在實踐中更容易檢查錯誤分類的示例是偷,所以偏差會蔓延到某些開發(fā)集中。 如果您只對開發(fā)產(chǎn)品或應(yīng)用程序感興趣亡驰,這種偏見是可以接受的晓猛,但如果您計劃在學(xué)術(shù)研究論文中使用結(jié)果或需要完全無偏見的測試集準(zhǔn)確度測量,那么這將是一個問題凡辱。
17.如果您有一個大型開發(fā)集,一分為二栗恩,只查看一個
????????假設(shè)您有一個包含5,000個示例的大型開發(fā)集(dev set)透乾,其中您的錯誤率為20%。因此,您的算法錯誤地分類了1,000個開發(fā)集圖像乳乌。 手動檢查1,000張圖像需要很長時間捧韵,因此我們可能決定在錯誤分析中不使用所有圖像。
????????在這種情況下汉操,我會明確地將開發(fā)集拆分為兩個子集再来,其中一個是您看到的,另一個是您不看的磷瘤。 您將更快速地過度配合您手動查看的部分芒篷。 您可以使用未手動查看的部分來調(diào)整參數(shù)。
????????讓我們繼續(xù)上面的例子采缚,其中算法錯誤地分類了5,000個開發(fā)示例中的1,000個针炉。 假設(shè)我們想要手動檢查大約100個錯誤以進(jìn)行錯誤分析(10%的錯誤)。 你應(yīng)該隨機(jī)選擇開發(fā)集中的10%并將其放入我們稱之為Eyeball dev set文件扳抽,以提醒自己我們正用眼睛看著它篡帕。 (對于有關(guān)語音識別的項目,您可能會在其中收聽音頻剪輯贸呢,或許您會將此設(shè)置稱為Ear dev set)镰烧。 因此,Eyeball dev set有500個例子楞陷,我們希望我們的算法可以錯誤地分類出100個拌滋。
? ??????開發(fā)集的第二個子集,稱為Blackbox開發(fā)集猜谚,將包含剩余的4500個示例败砂。 您可以使用Blackbox dev set通過測量錯誤率來自動評估分類器。 您還可以使用它來選擇算法或調(diào)整超參數(shù)魏铅。 但是昌犹,你應(yīng)該避免用眼睛看它。 我們使用術(shù)語“Blackbox”览芳,因為我們只使用這個數(shù)據(jù)子集來獲得分類器的“Blackbox”評估斜姥。
????????為什么我們明確地將開發(fā)集分為Eyeball和Blackbox開發(fā)集? 由于您將獲得關(guān)于Eyeball開發(fā)集中的示例的直覺沧竟,您將開始更快地過度擬合Eyeball開發(fā)集铸敏。 如果你看到Eyeball開發(fā)集的性能提升比Blackbox開發(fā)集的性能提升得快得多,你就會過度使用Eyeball開發(fā)集悟泵。在這種情況下杈笔,你可能需要丟棄它,并從Blackbox dev set找到一個新的樣本放在Eyeball開發(fā)集或者通過獲取新的標(biāo)記數(shù)據(jù)糕非。
????????將您的開發(fā)集明確拆分為Eyeball和Blackbox開發(fā)集蒙具,可讓您了解手動錯誤分析過程球榆,何時導(dǎo)致您過度擬合Eyeball集。
18.Eyeball和Blackbox開發(fā)集應(yīng)該有多大禁筏?
??????? 您的Eyeball開發(fā)集應(yīng)該足夠大持钉,以便您了解算法的主要錯誤類別。如果你正在做一項人類做得好的任務(wù)(比如識別圖像中的貓)篱昔,這里有一些簡單的指導(dǎo)方針:
? ???????一個開發(fā)集中每强,你的分類器犯10個錯誤將一般認(rèn)為是非常小的。只有10個錯誤州刽,很難準(zhǔn)確估計不同錯誤類別產(chǎn)生的影響空执。但是如果你的數(shù)據(jù)非常少而且把更多的數(shù)據(jù)添加到Eyeball集,那么它總比沒有好怀伦,并且有助于項目優(yōu)先排序脆烟。
?????????如果你的分類器在Eyeball集中犯了大約20個錯誤,你就會開始大致了解主要的錯誤來源房待。
?????????有大約50個錯誤邢羔,你會很好地理解主要的錯誤來源。
?????????如果出現(xiàn)大約100個錯誤桑孩,您將非常了解錯誤的主要來源拜鹤。我看到人們手動分析更多的錯誤 - 有時甚至多達(dá)500個。只要你有足夠的數(shù)據(jù)流椒,就沒有任何害處敏簿。
????????假設(shè)您的分類器的錯誤率為5%。為了確保在Eyeball集中有大約100個錯誤標(biāo)記的例子宣虾,Eyeball開發(fā)套裝必須有大約2,000個例子(因為0.05 * 2,000 = 100)惯裕。分類器的錯誤率越低,您的Eyeball集需要越大绣硝,以便分析足夠大的錯誤集蜻势。
????????如果你正在處理甚至人類都做不好的任務(wù),那么檢查一個Eyeball集的練習(xí)將沒有那么有用鹉胖,因為很難弄清楚為什么算法沒有正確地對一個例子進(jìn)行分類握玛。在這種情況下,您可能會省略設(shè)置Eyeball開發(fā)甫菠。我們將在后面的章節(jié)中討論這些問題的指導(dǎo)原則挠铲。
????????Blackbox dev設(shè)置如何?我們之前曾說過大約1,000-10,000個示例的開發(fā)常見寂诱。為了優(yōu)化該語句拂苹,Blackbox dev設(shè)置1,000-10,000個示例通常會為您提供足夠的數(shù)據(jù)來調(diào)整超參數(shù)并在模型中進(jìn)行選擇,盡管獲得更多數(shù)據(jù)幾乎沒有什么害處刹衫。 Blackbox dev設(shè)置為100醋寝,雖然很小但仍然有用搞挣。
????????如果你有一個小的開發(fā)集带迟,那么你可能沒有足夠的數(shù)據(jù)可以分成Eyeball和Blackbox開發(fā)集音羞,并且保證這些開發(fā)集都足夠大,可以滿足他們的目的仓犬。相反嗅绰,您的整個開發(fā)集可能必須用作Eyeball集 - 即,您將手動檢查所有開發(fā)集數(shù)據(jù)搀继。
????????在Eyeball集和Blackbox集之間窘面,我認(rèn)為Eyeball集更重要(假設(shè)您正在解決人類可以很好地解決的問題,并且檢查示例可以幫助您獲得洞察力)叽躯。如果您只設(shè)置了Eyeball集财边,則可以在該組上執(zhí)行錯誤分析,模型選擇和超參數(shù)調(diào)整点骑。僅設(shè)置Eyeball集的缺點是過度擬合開發(fā)集的風(fēng)險更大酣难。
????????如果您有足夠的數(shù)據(jù)訪問權(quán)限,那么Eyeball開發(fā)集的大小主要取決于您有多少時間手動分析黑滴。 例如憨募,我很少見到有人手動分析超過1,000個錯誤。
19.小貼士:基本的錯誤分析
?????????當(dāng)您開始一個新項目時袁辈,特別是如果它不是您擅長的區(qū)域菜谣,很難正確地猜出最有希望的方向。
?????????所以不要試圖設(shè)計和構(gòu)建完美的系統(tǒng)晚缩。 而是盡可能快地建立和訓(xùn)練基本系統(tǒng) - 也許在幾天之內(nèi)尾膊。 然后使用錯誤分析來幫助您識別最有希望的方向,并從那里迭代地改進(jìn)您的算法荞彼。
?????????通過手動檢查100 dev set樣本進(jìn)行錯誤分析冈敛,算法錯誤分類并計算主要錯誤類別。 使用此信息可以確定要修復(fù)的錯誤類型的優(yōu)先級卿泽。
?????????考慮將開發(fā)集拆分為您將手動檢查的Eyeball開發(fā)集和Blackbox開發(fā)套件莺债,您將不用手動檢查。 如果Eyeball開發(fā)集的性能遠(yuǎn)遠(yuǎn)優(yōu)于Blackbox開發(fā)集签夭,那么你已經(jīng)過度擬合了Eyeball集齐邦,應(yīng)考慮為其獲取更多數(shù)據(jù)。
?????????Eyeball開發(fā)設(shè)置應(yīng)該足夠大第租,以便您的算法錯誤分類足夠的示例供您分析措拇。 對于許多應(yīng)用程序,Blackbox dev設(shè)置為1,000-10,000個就足夠了慎宾。
?????????如果您的開發(fā)集不夠大丐吓,無法通過這種方式進(jìn)行拆分浅悉,只需使用Eyeball集進(jìn)行手動錯誤分析,模型選擇和超參數(shù)調(diào)整券犁。
20.偏見和方差:兩大來源錯誤
????????假設(shè)您訓(xùn)練的開發(fā)集和測試集都來自同一個樣本區(qū)域术健。 那么你應(yīng)該總是嘗試獲得更多的訓(xùn)練數(shù)據(jù),因為這只會提高性能粘衬,對吧荞估?
????????即使擁有更多數(shù)據(jù)也不會有什么不好的,但不幸的是稚新,它并不總是像您希望的那樣有用勘伺。 獲取更多數(shù)據(jù)可能是浪費時間。 那么褂删,您如何決定何時添加數(shù)據(jù)飞醉,何時不用呢?
????????機(jī)器學(xué)習(xí)中存在兩個主要的誤差來源:偏差和方差屯阀。 了解它們將幫助您確定是否添加數(shù)據(jù)缅帘,以及其他提高性能的策略,是否能充分利用時間蹲盘。
????????假設(shè)您希望構(gòu)建一個誤差為5%的貓識別器股毫。 現(xiàn)在,您的訓(xùn)練集的錯誤率為15%召衔,您的開發(fā)集的錯誤率為16%铃诬。 在這種情況下,添加訓(xùn)練數(shù)據(jù)可能無濟(jì)于事苍凛。 您應(yīng)該專注于其他更改趣席。 實際上,在訓(xùn)練集中添加更多示例只會使您的算法更難以在訓(xùn)練集上取得好成績醇蝴。 (我們將在后面的章節(jié)解釋原因宣肚。)
????????如果訓(xùn)練集上的錯誤率為15%(或準(zhǔn)確度為85%),但目標(biāo)誤差為5%(準(zhǔn)確率為95%)悠栓,那么要解決的第一個問題是提高算法在訓(xùn)練集上的性能霉涨。 您的開發(fā)/測試集性能通常比訓(xùn)練集性能差。 因此惭适,如果您在算法所見的示例上獲得85%的準(zhǔn)確率笙瑟,那么您在算法甚至沒有看到的示例上無法獲得95%的準(zhǔn)確率。
????????假設(shè)如上所述癞志,您的算法在開發(fā)集上有16%的誤差(84%準(zhǔn)確度)往枷。 我們將16%的錯誤分解為兩個組件:
?????????首先,算法在訓(xùn)練集上的錯誤率。 在這個例子中错洁,它是15%秉宿。 我們非正式地將此視為算法的偏見。
?????????其次屯碴,算法在開發(fā)(或測試)集上比訓(xùn)練集更糟糕描睦。在這個例子中,它在開發(fā)集上比訓(xùn)練集差1%窿锉。 我們非正式地將此視為算法的方差酌摇。
????????對學(xué)習(xí)算法的一些更改可以解決錯誤偏差的第一個組成部分膝舅,并提高其在訓(xùn)練集上的性能嗡载。 一些更改解決了第二個組件 - 方差 - 并幫助它從訓(xùn)練集到開發(fā)/測試集更好地概括。 要選擇最有希望的變化仍稀,理解2這兩個錯誤組成部分中哪一個更難以解決是非常有用的洼滚。
? ??????培養(yǎng)關(guān)于偏差和方差的良好直覺將幫助您為算法選擇有效的變化。
21.偏差和方差的例子
????????考慮我們的貓分類任務(wù)技潘。 “理想”分類器(例如人類)可能在此任務(wù)中實現(xiàn)近乎完美的性能遥巴。
????????假設(shè)您的算法執(zhí)行如下:
?????????訓(xùn)練集誤差= 1%
?????????開發(fā)集錯誤= 11%
????????它有什么問題?應(yīng)用前一章的定義享幽,我們估計偏差為1%铲掐,方差為10%(= 11%-1%)。因此值桩,它具有很大的差異摆霉。分類器具有非常低的訓(xùn) 練錯誤,分類器無法概括為開發(fā)集奔坟。這也稱為過度擬合携栋。
????????現(xiàn)在考慮一下:
?????????訓(xùn)練集誤差= 15%
?????????開發(fā)集錯誤= 16%
????????我們估計偏差為15%,方差為1%咳秉。這個分類器對訓(xùn)練集的擬合很差婉支,誤差為15%,但它在開發(fā)集上的誤差幾乎不高于訓(xùn)練誤差澜建。因此向挖,該分類器具有高偏差,但方差低炕舵。我們說這個算法是不合適的何之。
????????現(xiàn)在,考慮一下:
?????????訓(xùn)練集誤差= 15%
?????????開發(fā)集錯誤= 30%
????????我們估計偏差為15%幕侠,方差為15%帝美。該分類器具有高偏差和高方差:它在訓(xùn)練集上表現(xiàn)不佳,因此具有高偏差,并且其在開發(fā)集上的性能更差悼潭,因此它也具有高方差庇忌。該由于分類器的原因,過度擬合/欠配合術(shù)語很難應(yīng)用于此同時過度擬合和欠擬合舰褪。
????????最后皆疹,考慮一下:
?????????訓(xùn)練集誤差= 0.5%
?????????開發(fā)集錯誤= 1%
????????該分類器表現(xiàn)良好,因為它具有低偏差和低方差占拍。 祝賀實現(xiàn)這個偉大的表現(xiàn)略就!
22.比較最佳錯誤率
????????在我們的貓識別示例中,“理想”錯誤率 - 即“最佳”分類器可實現(xiàn)的錯誤率 - 幾乎為0%晃酒。 看著圖片的人幾乎可以一直識別它是否包含一只貓; 因此表牢,我們可以希望一臺能做得同樣的機(jī)器。
????????其他問題更難贝次。 例如崔兴,假設(shè)您正在構(gòu)建一個語音識別系統(tǒng),并發(fā)現(xiàn)14%的音頻片段具有如此多的背景噪音或者是如此難以理解蛔翅,即使是人類也無法識別所說的內(nèi)容敲茄。 在這種情況下,即使是最“最佳”的語音識別系統(tǒng)也可能有大約14%的誤差山析。
? ??????假設(shè)在這個語音識別問題上堰燎,您的算法實現(xiàn)了:
?????????訓(xùn)練集誤差= 15%
?????????開發(fā)集錯誤= 30%
????????訓(xùn)練集的性能已經(jīng)接近14%的最佳錯誤率。 因此笋轨,在偏差方面訓(xùn)算法練集性能方面沒有太大的改進(jìn)空間秆剪。但是,該算法并沒有很好地推廣到開發(fā)集; 因此翩腐,由于方差導(dǎo)致的誤差存在鸟款,該算法還有很大改進(jìn)空間。
????????這個例子類似于前一章的第三個例子茂卦,它的訓(xùn)練誤差為15%何什,dev誤差為30%。 如果最佳錯誤率為0%等龙,那么15%的訓(xùn)練誤差留下了很大的改進(jìn)空間处渣。 這表明減少偏差可能是富有成效的。 但如果最佳錯誤率為14%蛛砰,則相同的訓(xùn)練集性能告訴我們罐栈,分類器的偏差幾乎沒有改進(jìn)的余地。
????????對于最佳錯誤率遠(yuǎn)為零的問題泥畅,這里是算法錯誤的更詳細(xì)分類荠诬。 繼續(xù)上面的語音識別示例,30%的總設(shè)置錯誤可以分解如下(類似的分析可以應(yīng)用于測試集錯誤):
?????????最佳錯誤率(“不可避免的偏差”):14%。 假設(shè)我們決定柑贞,即使世界上最好的語音系統(tǒng)方椎,我們?nèi)詴馐?4%的錯誤。 我們可以將此視為學(xué)習(xí)算法偏差的“不可避免”部分钧嘶。
?????????可避免的偏見:1%棠众。這是根據(jù)訓(xùn)練誤差和訓(xùn)練誤差之間的差異來計算的最優(yōu)錯誤率
?????????方差:15%。 dev集錯誤率和訓(xùn)練集錯誤率之間的區(qū)別有决。
????????為了將其與我們之前的定義聯(lián)系起來闸拿,偏差和可避免偏差的關(guān)系如下:
????????偏差=最佳錯誤率(“不可避免的偏差”)+可避免的偏差
“? ? ? ?可避免的偏差”反映了您的算法在訓(xùn)練集上執(zhí)行的程度而不是“最佳分類器”。
? ? ? ? 方差的概念與以前一樣书幕。從理論上講新荤,我們總能減少通過大規(guī)模訓(xùn)練集的訓(xùn)練,方差幾乎為零按咒。因此迟隅,所有方差都是“可以避免的”
擁有足夠大的數(shù)據(jù)集,所以沒有“不可避免的差異”這樣的東西励七。
????????再考慮一個例子,最佳錯誤率為14%奔缠,我們有:
?????????訓(xùn)練集誤差= 15%
?????????開發(fā)集錯誤= 16%
????????在前一章中我們稱之為高偏差分類器掠抬,現(xiàn)在我們可以這么說可避免偏差的誤差為1%,方差誤差約為1%校哎。因此两波,算法已經(jīng)做得很好,幾乎沒有改進(jìn)的余地闷哆。它比最佳值差2%錯誤率腰奋。
????????我們從這些例子中看到,了解最佳錯誤率有助于指導(dǎo)我們的下一步抱怔。在統(tǒng)計中劣坊,最佳錯誤率也稱為貝葉斯錯誤率或貝葉斯率。
????????我們?nèi)绾沃雷罴彦e誤率是多少屈留?對于人類相當(dāng)不錯的任務(wù)在識別圖片或抄錄音頻片段時局冰,您可以要求人提供然后標(biāo)簽測量人體標(biāo)簽相對于訓(xùn)練集的準(zhǔn)確性。這個將給出最佳錯誤率的估計灌危。如果你正在解決一個問題康二,甚至人類很難解決(例如,預(yù)測要推薦的電影或向用戶展示的廣告)勇蝙,很難估計最佳錯誤率沫勿。在“與人類績效比較”一節(jié)(第33至35章) ),我將更詳細(xì)地討論將學(xué)習(xí)算法的性能與人類水平進(jìn)行比較的過程性能。
????????在最后幾章中产雹,您學(xué)習(xí)了如何估計可避免/不可避免的偏差和通過觀察訓(xùn)練和開發(fā)設(shè)置錯誤率來實現(xiàn)差異烫罩。 下一章將討論如何使用此類分析中的見解來優(yōu)先考慮減少偏差的技術(shù)與減少差異的技術(shù)。 根據(jù)項目當(dāng)前問題是高(可避免)偏差還是高差異洽故,您應(yīng)該應(yīng)用非常不同的技術(shù)贝攒。 繼續(xù)閱讀!
23.解決偏見和差異
????????這是解決偏差和方差問題的最簡單公式时甚。
?????????如果您具有較高的可避免偏差隘弊,請增加模型的大小(例如荒适,通過添加圖層/神經(jīng)元來增加神經(jīng)網(wǎng)絡(luò)的大欣嫖酢)。
?????????如果您的方差很大刀诬,請將數(shù)據(jù)添加到訓(xùn)練集咽扇。
????????如果您能夠無限制地增加神經(jīng)網(wǎng)絡(luò)大小并增加訓(xùn)練數(shù)據(jù),則可以在許多學(xué)習(xí)問題上做得很好陕壹。
????????實際上质欲,增加模型的大小最終會導(dǎo)致計算問題,因為訓(xùn)練非常大的模型很慢糠馆。 您也可能無法獲得更多的培訓(xùn)數(shù)據(jù)嘶伟。 (即使在互聯(lián)網(wǎng)上,只有有限數(shù)量的貓圖片S致怠)
????????不同的模型體系結(jié)構(gòu)(例如九昧,不同的神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu))將針對您的問題具有不同的偏差/方差。 最近的許多深度學(xué)習(xí)研究已經(jīng)開發(fā)出許多創(chuàng)新的模型架構(gòu)毕匀。 因此铸鹰,如果您使用神經(jīng)網(wǎng)絡(luò),學(xué)術(shù)文獻(xiàn)可以成為靈感的重要來源皂岔。 github上還有很多很棒的開源實現(xiàn)蹋笼。 但是,嘗試新架構(gòu)的結(jié)果比增加模型大小和添加數(shù)據(jù)的簡單公式更難以預(yù)測凤薛。
????????增加模型尺寸通常會減少偏差姓建,但也可能會增加方差和過度擬合的風(fēng)險。 但是缤苫,這種過度擬合問題通常僅在您不使用正則化時出現(xiàn)速兔。 如果您包含精心設(shè)計的正則化方法,那么通郴盍幔可以安全地增加模型的大小而不會增加過度擬合涣狗。
????????假設(shè)您正在應(yīng)用具有L2正則化谍婉,其中正則化參數(shù)在開發(fā)集上表現(xiàn)最佳。 如果您增加模型大小镀钓,通常您的性能將保持不變或改善; 它不太可能顯著惡化穗熬。避免使用更大模型的唯一原因是計算成本增加。
24.偏差與差異權(quán)衡
????????你可能聽說過“偏差與方差權(quán)衡”丁溅。你可以對大多數(shù)學(xué)習(xí)算法做出的改變唤蔗,有一些可以減少偏差,但代價是增加方差窟赏,反之亦然妓柜。 這在偏差和方差之間產(chǎn)生了“折衷”。
????????例如涯穷,在神經(jīng)網(wǎng)絡(luò)中增加模型棍掐、添加神經(jīng)元/層的大小,或添加輸入特征 - 通常會減少偏差拷况,但可能會增加方差作煌。 或者,添加正則化通常會增加偏差但會減少方差赚瘦。
????????在現(xiàn)代粟誓,我們經(jīng)常可以訪問大量數(shù)據(jù)蚤告,并且可以使用非常大的神經(jīng)網(wǎng)絡(luò)(深度學(xué)習(xí))努酸。 因此,有較少的權(quán)衡杜恰,現(xiàn)在有更多的選擇來減少偏差而不會損害方差,反之亦然仍源。
????????例如心褐,您通常可以增加神經(jīng)網(wǎng)絡(luò)大小并調(diào)整正則化方法以減少偏差而不會顯著增加方差笼踩。 通過添加訓(xùn)練數(shù)據(jù)逗爹,您通常還可以在不影響偏差的情況下減少方差。
????????如果選擇適合您任務(wù)的模型體系結(jié)構(gòu)嚎于,則還可以同時減少偏差和方差掘而。 選擇這樣的架構(gòu)可能很困難。
????????在接下來的幾章中于购,我們將討論用于解決偏差和方差的其他特定技術(shù)袍睡。
25.減少可避免偏差的技術(shù)
????????如果您的學(xué)習(xí)算法存在高度可避免的偏差,您可以嘗試以下方法技巧:
?????????增加模型大欣呱(例如神經(jīng)元/層數(shù)):這種技術(shù)可以減少偏差斑胜,因為它可以讓您更好地適應(yīng)訓(xùn)練集控淡。如果您發(fā)現(xiàn)這會增加方差,則使用正則化止潘,這通常會消除方差的增加掺炭。
?????????根據(jù)錯誤分析的見解修改輸入特征:假設(shè)您的錯誤分析激發(fā)您創(chuàng)建其他功能,幫助算法消除特定類別的錯誤凭戴。 (我們將在下一章進(jìn)一步討論這個問題涧狮。)這些新功能可能有助于偏見和差異。理論上么夫,添加更多功能可能會增加差異;但如果你發(fā)現(xiàn)這種情況者冤,那就使用正則化,這通常會消除方差的增加魏割。
?????????減少或消除正則化(L2正則化譬嚣,L1正則化,丟失):這將減少可避免的偏差钞它,但會增加差異拜银。
?????????修改模型體系結(jié)構(gòu)(例如神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu))以使其更多適合您的問題:這種技術(shù)可以影響偏差和方差。
????????一種無用的方法:
?????????添加更多培訓(xùn)數(shù)據(jù):此技術(shù)有助于解決方差問題遭垛,但通常也是如此對偏差沒有顯著影響尼桶。
26.訓(xùn)練集的誤差分析
????????您的算法必須在訓(xùn)練集上運(yùn)行良好艰亮,才能期望它在開發(fā)/測試集上表現(xiàn)良好份氧。
????????除了前面描述的用于解決高偏差的技術(shù)之外图焰,我有時還會根據(jù)類似于Eyeball開發(fā)集的錯誤分析的方法對訓(xùn)練數(shù)據(jù)進(jìn)行錯誤分析甥啄。 如果您的算法具有高偏差荣回,即如果它不能很好地擬合訓(xùn)練集泡仗,則這可能很有用伏尼。
????????例如咆蒿,假設(shè)您正在為應(yīng)用程序構(gòu)建語音識別系統(tǒng)久窟,并從志愿者那里收集了一組音頻剪輯秩冈。 如果您的系統(tǒng)在訓(xùn)練集上表現(xiàn)不佳,您可能會考慮收聽一組約100個算法斥扛,這些算法很難理解訓(xùn)練集錯誤的主要類別入问。 與dev set error analysis類似,您可以計算不同類別的錯誤:
????????在此示例中稀颁,您可能會發(fā)現(xiàn)您的算法在使用具有大量背景噪音的訓(xùn)練示例時會遇到特別困難芬失。 因此,您可以專注于允許其更好地適應(yīng)具有背景噪聲的訓(xùn)練示例的技術(shù)匾灶。
????????在給定與學(xué)習(xí)算法相同的輸入音頻的情況下棱烂,您還可以仔細(xì)檢查一個人是否可以轉(zhuǎn)錄這些音頻片段。 如果有太多的背景噪音粘昨,任何人都無法弄清楚所說的內(nèi)容垢啼,那么期望任何算法正確識別這些話語可能是不合理的窜锯。 我們將在后面的部分討論將算法與人類級別性能進(jìn)行比較的好處。
27.減少方差的技術(shù)
????????如果您的學(xué)習(xí)算法存在高方差芭析,您可以嘗試以下方法技巧:
?????????添加更多訓(xùn)練數(shù)據(jù):這是解決方差的最簡單锚扎,最可靠的方法,只要您可以訪問更多的數(shù)據(jù)和足夠的計算能力來處理數(shù)據(jù)馁启。
?????????添加正則化(L2正則化驾孔,L1正則化,丟失):此技術(shù)可減少方差但增加偏差惯疙。
?????????減少輸入要素數(shù)量/類型的特征選擇:此技術(shù)可能有助于解決方差問題翠勉,但也可能會增加偏差。稍微減少功能的數(shù)量(比如從1000個功能到900個)不太可能對偏差產(chǎn)生巨大影響霉颠。只要你沒有排除太多有用的功能对碌,減少它(例如從1000個功能減少到100個減少10倍)就更有可能產(chǎn)生重大影響。在現(xiàn)代深度學(xué)習(xí)中蒿偎,當(dāng)數(shù)據(jù)充足時朽们,已經(jīng)從特征選擇中轉(zhuǎn)移,現(xiàn)在我們更有可能將所有特征賦予算法诉位,并讓算法根據(jù)數(shù)據(jù)選擇使用哪些特征骑脱。 。但是當(dāng)您的訓(xùn)練集很小時苍糠,功能選擇可能非常有用叁丧。
?????????減小模型大小(例如神經(jīng)元/層數(shù)):謹(jǐn)慎使用岳瞭。該技術(shù)可以減少方差拥娄,同時可能增加偏差。但是瞳筏,我不推薦這種技術(shù)來解決方差条舔。添加正則化通常會提供更好的分類性能。減小模型尺寸的優(yōu)勢在于降低了計算成本乏矾,從而加快了訓(xùn)練模型的速度。如果加速模型訓(xùn)練是有用的迁杨,那么一定要考慮減小模型大小钻心。但是如果你的目標(biāo)是減少方差,并且你不關(guān)心計算成本铅协,那么考慮添加正則化捷沸。
????????以下是關(guān)于解決偏見的前一章重復(fù)的另外兩種策略:
?????????根據(jù)錯誤分析的見解修改輸入功能:假設(shè)您的錯誤分析激發(fā)您創(chuàng)建其他功能,幫助算法消除特定類別的錯誤狐史。這些新功能可能有助于偏見和差異痒给。
?????????理論上说墨,添加更多功能可以增加方差; 但如果你發(fā)現(xiàn)這種情況,那就使用正則化苍柏,這通常會消除方差的增加尼斧。
?????????修改模型體系結(jié)構(gòu)(例如神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)),使其更適合您的問題:此技術(shù)可以影響偏差和方差试吁。