1.7 开发集和测试集的大小-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
| 1.6 開發(fā)集合測(cè)試集的大小 | 回到目錄 | 1.8 為什么是人的表現(xiàn) |
什么時(shí)候改變開發(fā)和測(cè)試集評(píng)估指標(biāo) (When to change dev/test sets and metrics)
你已經(jīng)學(xué)過如何設(shè)置開發(fā)集和評(píng)估指標(biāo),就像是把目標(biāo)定在某個(gè)位置,讓你的團(tuán)隊(duì)瞄準(zhǔn)。但有時(shí)候在項(xiàng)目進(jìn)行途中,你可能意識(shí)到,目標(biāo)的位置放錯(cuò)了。這種情況下,你應(yīng)該移動(dòng)你的目標(biāo)。
我們來看一個(gè)例子,假設(shè)你在構(gòu)建一個(gè)貓分類器,試圖找到很多貓的照片,向你的愛貓人士用戶展示,你決定使用的指標(biāo)是分類錯(cuò)誤率。所以算法 AAA 和 BBB 分別有3%錯(cuò)誤率和5%錯(cuò)誤率,所以算法 AAA 似乎做得更好。
但我們實(shí)際試一下這些算法,你觀察一下這些算法,算法 AAA 由于某些原因,把很多色情圖像分類成貓了。如果你部署算法 AAA ,那么用戶就會(huì)看到更多貓圖,因?yàn)樗R(shí)別貓的錯(cuò)誤率只有3%,但它同時(shí)也會(huì)給用戶推送一些色情圖像,這是你的公司完全不能接受的,你的用戶也完全不能接受。相比之下,算法 BBB 有5%的錯(cuò)誤率,這樣分類器就得到較少的圖像,但它不會(huì)推送色情圖像。所以從你們公司的角度來看,以及從用戶接受的角度來看,算法 BBB 實(shí)際上是一個(gè)更好的算法,因?yàn)樗蛔屓魏紊閳D像通過。
那么在這個(gè)例子中,發(fā)生的事情就是,算法A在評(píng)估指標(biāo)上做得更好,它的錯(cuò)誤率達(dá)到3%,但實(shí)際上是個(gè)更糟糕的算法。在這種情況下,評(píng)估指標(biāo)加上開發(fā)集它們都傾向于選擇算法 AAA ,因?yàn)樗鼈儠?huì)說,看算法A的錯(cuò)誤率較低,這是你們自己定下來的指標(biāo)評(píng)估出來的。但你和你的用戶更傾向于使用算法 BBB ,因?yàn)樗粫?huì)將色情圖像分類為貓。所以當(dāng)這種情況發(fā)生時(shí),當(dāng)你的評(píng)估指標(biāo)無法正確衡量算法之間的優(yōu)劣排序時(shí),在這種情況下,原來的指標(biāo)錯(cuò)誤地預(yù)測(cè)算法A是更好的算法這就發(fā)出了信號(hào),你應(yīng)該改變?cè)u(píng)估指標(biāo)了,或者要改變開發(fā)集或測(cè)試集。在這種情況下,你用的分類錯(cuò)誤率指標(biāo)可以寫成這樣:
Error=1mdev∑i=1mdevI{ypred(i)≠y(i)}Error=\frac1{m_{dev}}\sum_{i=1}^{m_{dev}}I\{y_{pred}^{(i)}\ne y^{(i)}\}Error=mdev?1?i=1∑mdev??I{ypred(i)??=y(i)}
mdevm_{dev}mdev? 是你的開發(fā)集例子數(shù),用 ypred(i)y_{pred}^{(i)}ypred(i)? 表示預(yù)測(cè)值,其值為0或1, III 這符號(hào)表示一個(gè)函數(shù),統(tǒng)計(jì)出里面這個(gè)表達(dá)式為真的樣本數(shù),所以這個(gè)公式就統(tǒng)計(jì)了分類錯(cuò)誤的樣本。這個(gè)評(píng)估指標(biāo)的問題在于,它對(duì)色情圖片和非色情圖片一視同仁,但你其實(shí)真的希望你的分類器不會(huì)錯(cuò)誤標(biāo)記色情圖像。比如說把一張色情圖片分類為貓,然后推送給不知情的用戶,他們看到色情圖片會(huì)非常不滿。
其中一個(gè)修改評(píng)估指標(biāo)的方法是,這里( 1mdev\frac1{m_{dev}}mdev?1? 與 ∑i=1mdevI{ypred(i)≠y(i)}\sum_{i=1}^{m_{dev}}I\{y_{pred}^{(i)}\ne y^{(i)}\}∑i=1mdev??I{ypred(i)??=y(i)} 之間)加個(gè)權(quán)重項(xiàng),即:
Error=1mdev∑i=1mdevw(i)I{ypred(i)≠y(i)}Error=\frac1{m_{dev}}\sum_{i=1}^{m_{dev}}w^{(i)}I\{y_{pred}^{(i)}\ne y^{(i)}\}Error=mdev?1?i=1∑mdev??w(i)I{ypred(i)??=y(i)}
我們將這個(gè)稱為 w(i)w^{(i)}w(i) ,其中如果圖片 x(i)x^{(i)}x(i) 不是色情圖片,則 w(i)=1w^{(i)}=1w(i)=1 。如果 x(i)x^{(i)}x(i) 是色情圖片, w(i)w^{(i)}w(i) 可能就是10甚至100,這樣你賦予了色情圖片更大的權(quán)重,讓算法將色情圖分類為貓圖時(shí),錯(cuò)誤率這個(gè)項(xiàng)快速變大。這個(gè)例子里,你把色情圖片分類成貓這一錯(cuò)誤的懲罰權(quán)重加大10倍。
如果你希望得到歸一化常數(shù),在技術(shù)上,就是 w(i)w^{(i)}w(i) 對(duì)所有 iii 求和,這樣錯(cuò)誤率仍然在0和1之間,即:
Error=1∑w(i)∑i=1mdevw(i)I{ypred(i)≠y(i)}Error=\frac1{\sum w^{(i)}}\sum_{i=1}^{m_{dev}}w^{(i)}I\{y_{pred}^{(i)}\ne y^{(i)}\}Error=∑w(i)1?i=1∑mdev??w(i)I{ypred(i)??=y(i)}
加權(quán)的細(xì)節(jié)并不重要,實(shí)際上要使用這種加權(quán),你必須自己過一遍開發(fā)集和測(cè)試集,在開發(fā)集和測(cè)試集里,自己把色情圖片標(biāo)記出來,這樣你才能使用這個(gè)加權(quán)函數(shù)。
但粗略的結(jié)論是,如果你的評(píng)估指標(biāo)無法正確評(píng)估好算法的排名,那么就需要花時(shí)間定義一個(gè)新的評(píng)估指標(biāo)。這是定義評(píng)估指標(biāo)的其中一種可能方式(上述加權(quán)法)。評(píng)估指標(biāo)的意義在于,準(zhǔn)確告訴你已知兩個(gè)分類器,哪一個(gè)更適合你的應(yīng)用。就這個(gè)視頻的內(nèi)容而言,我們不需要太注重新錯(cuò)誤率指標(biāo)是怎么定義的,關(guān)鍵在于,如果你對(duì)舊的錯(cuò)誤率指標(biāo)不滿意,那就不要一直沿用你不滿意的錯(cuò)誤率指標(biāo),而應(yīng)該嘗試定義一個(gè)新的指標(biāo),能夠更加符合你的偏好,定義出實(shí)際更適合的算法。
你可能注意到了,到目前為止我們只討論了如何定義一個(gè)指標(biāo)去評(píng)估分類器,也就是說,我們定義了一個(gè)評(píng)估指標(biāo)幫助我們更好的把分類器排序,能夠區(qū)分出它們?cè)谧R(shí)別色情圖片的不同水平,這實(shí)際上是一個(gè)正交化的例子。
我想你處理機(jī)器學(xué)習(xí)問題時(shí),應(yīng)該把它切分成獨(dú)立的步驟。一步是弄清楚如何定義一個(gè)指標(biāo)來衡量你想做的事情的表現(xiàn),然后我們可以分開考慮如何改善系統(tǒng)在這個(gè)指標(biāo)上的表現(xiàn)。你們要把機(jī)器學(xué)習(xí)任務(wù)看成兩個(gè)獨(dú)立的步驟,用目標(biāo)這個(gè)比喻,第一步就是設(shè)定目標(biāo)。所以要定義你要瞄準(zhǔn)的目標(biāo),這是完全獨(dú)立的一步,這是你可以調(diào)節(jié)的一個(gè)旋鈕。如何設(shè)立目標(biāo)是一個(gè)完全獨(dú)立的問題,把它看成是一個(gè)單獨(dú)的旋鈕,可以調(diào)試算法表現(xiàn)的旋鈕,如何精確瞄準(zhǔn),如何命中目標(biāo),定義指標(biāo)是第一步。
然后第二步要做別的事情,在逼近目標(biāo)的時(shí)候,也許你的學(xué)習(xí)算法針對(duì)某個(gè)長(zhǎng)這樣的成本函數(shù)優(yōu)化, J=1m∑i=1mL(y^(i),y(i))J=\frac1m\sum_{i=1}^mL(\hat{y}^{(i)},y^{(i)})J=m1?∑i=1m?L(y^?(i),y(i)) ,你要最小化訓(xùn)練集上的損失。你可以做的其中一件事是,修改這個(gè),為了引入這些權(quán)重,也許最后需要修改這個(gè)歸一化常數(shù),即:
J=1∑w(i)∑i=1mw(i)L(y^(i),y(i))J=\frac1{\sum w^{(i)}}\sum_{i=1}^mw^{(i)}L(\hat{y}^{(i)},y^{(i)})J=∑w(i)1?i=1∑m?w(i)L(y^?(i),y(i))
再次,如何定義 JJJ 并不重要,關(guān)鍵在于正交化的思路,把設(shè)立目標(biāo)定為第一步,然后瞄準(zhǔn)和射擊目標(biāo)是獨(dú)立的第二步。換種說法,我鼓勵(lì)你們將定義指標(biāo)看成一步,然后在定義了指標(biāo)之后,你才能想如何優(yōu)化系統(tǒng)來提高這個(gè)指標(biāo)評(píng)分。比如改變你神經(jīng)網(wǎng)絡(luò)要優(yōu)化的成本函數(shù) JJJ 。
在繼續(xù)之前,我們?cè)僦v一個(gè)例子。假設(shè)你的兩個(gè)貓分類器 AAA 和 BBB ,分別有用開發(fā)集評(píng)估得到3%的錯(cuò)誤率和5%的錯(cuò)誤率?;蛘呱踔劣迷诰W(wǎng)上下載的圖片構(gòu)成的測(cè)試集上,這些是高質(zhì)量,取景框很專業(yè)的圖像。但也許你在部署算法產(chǎn)品時(shí),你發(fā)現(xiàn)算法 BBB 看起來表現(xiàn)更好,即使它在開發(fā)集上表現(xiàn)不錯(cuò),你發(fā)現(xiàn)你一直在用從網(wǎng)上下載的高質(zhì)量圖片訓(xùn)練,但當(dāng)你部署到手機(jī)應(yīng)用時(shí),算法作用到用戶上傳的圖片時(shí),那些圖片取景不專業(yè),沒有把貓完整拍下來,或者貓的表情很古怪,也許圖像很模糊,當(dāng)你實(shí)際測(cè)試算法時(shí),你發(fā)現(xiàn)算法 BBB 表現(xiàn)其實(shí)更好。
這是另一個(gè)指標(biāo)和開發(fā)集測(cè)試集出問題的例子,問題在于,你做評(píng)估用的是很漂亮的高分辨率的開發(fā)集和測(cè)試集,圖片取景很專業(yè)。但你的用戶真正關(guān)心的是,他們上傳的圖片能不能被正確識(shí)別。那些圖片可能是沒那么專業(yè)的照片,有點(diǎn)模糊,取景很業(yè)余。
所以方針是,如果你在指標(biāo)上表現(xiàn)很好,在當(dāng)前開發(fā)集或者開發(fā)集和測(cè)試集分布中表現(xiàn)很好,但你的實(shí)際應(yīng)用程序,你真正關(guān)注的地方表現(xiàn)不好,那么就需要修改指標(biāo)或者你的開發(fā)測(cè)試集。換句話說,如果你發(fā)現(xiàn)你的開發(fā)測(cè)試集都是這些高質(zhì)量圖像,但在開發(fā)測(cè)試集上做的評(píng)估無法預(yù)測(cè)你的應(yīng)用實(shí)際的表現(xiàn)。因?yàn)槟愕膽?yīng)用處理的是低質(zhì)量圖像,那么就應(yīng)該改變你的開發(fā)測(cè)試集,讓你的數(shù)據(jù)更能反映你實(shí)際需要處理好的數(shù)據(jù)。
但總體方針就是,如果你當(dāng)前的指標(biāo)和當(dāng)前用來評(píng)估的數(shù)據(jù)和你真正關(guān)心必須做好的事情關(guān)系不大,那就應(yīng)該更改你的指標(biāo)或者你的開發(fā)測(cè)試集,讓它們能更夠好地反映你的算法需要處理好的數(shù)據(jù)。
有一個(gè)評(píng)估指標(biāo)和開發(fā)集讓你可以更快做出決策,判斷算法 AAA 還是算法 BBB 更優(yōu),這真的可以加速你和你的團(tuán)隊(duì)迭代的速度。所以我的建議是,即使你無法定義出一個(gè)很完美的評(píng)估指標(biāo)和開發(fā)集,你直接快速設(shè)立出來,然后使用它們來驅(qū)動(dòng)你們團(tuán)隊(duì)的迭代速度。如果在這之后,你發(fā)現(xiàn)選的不好,你有更好的想法,那么完全可以馬上改。對(duì)于大多數(shù)團(tuán)隊(duì),我建議最好不要在沒有評(píng)估指標(biāo)和開發(fā)集時(shí)跑太久,因?yàn)槟菢涌赡軙?huì)減慢你的團(tuán)隊(duì)迭代和改善算法的速度。本視頻講的是什么時(shí)候需要改變你的評(píng)估指標(biāo)和開發(fā)測(cè)試集,我希望這些方針能讓你的整個(gè)團(tuán)隊(duì)設(shè)立一個(gè)明確的目標(biāo),一個(gè)你們可以高效迭代,改善性能的目標(biāo)。
課程板書
| 1.6 開發(fā)集合測(cè)試集的大小 | 回到目錄 | 1.8 為什么是人的表現(xiàn) |
總結(jié)
以上是生活随笔為你收集整理的1.7 开发集和测试集的大小-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.6 开发集和测试集的大小-深度学习第
- 下一篇: 1.8 为什么是人的表现-深度学习第三课