日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

1.7 开发集和测试集的大小-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授

發布時間:2025/4/5 pytorch 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1.7 开发集和测试集的大小-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

←上一篇↓↑下一篇→
1.6 開發集合測試集的大小回到目錄1.8 為什么是人的表現

什么時候改變開發和測試集評估指標 (When to change dev/test sets and metrics)

你已經學過如何設置開發集和評估指標,就像是把目標定在某個位置,讓你的團隊瞄準。但有時候在項目進行途中,你可能意識到,目標的位置放錯了。這種情況下,你應該移動你的目標。

我們來看一個例子,假設你在構建一個貓分類器,試圖找到很多貓的照片,向你的愛貓人士用戶展示,你決定使用的指標是分類錯誤率。所以算法 AAABBB 分別有3%錯誤率和5%錯誤率,所以算法 AAA 似乎做得更好。

但我們實際試一下這些算法,你觀察一下這些算法,算法 AAA 由于某些原因,把很多色情圖像分類成貓了。如果你部署算法 AAA ,那么用戶就會看到更多貓圖,因為它識別貓的錯誤率只有3%,但它同時也會給用戶推送一些色情圖像,這是你的公司完全不能接受的,你的用戶也完全不能接受。相比之下,算法 BBB 有5%的錯誤率,這樣分類器就得到較少的圖像,但它不會推送色情圖像。所以從你們公司的角度來看,以及從用戶接受的角度來看,算法 BBB 實際上是一個更好的算法,因為它不讓任何色情圖像通過。

那么在這個例子中,發生的事情就是,算法A在評估指標上做得更好,它的錯誤率達到3%,但實際上是個更糟糕的算法。在這種情況下,評估指標加上開發集它們都傾向于選擇算法 AAA ,因為它們會說,看算法A的錯誤率較低,這是你們自己定下來的指標評估出來的。但你和你的用戶更傾向于使用算法 BBB ,因為它不會將色情圖像分類為貓。所以當這種情況發生時,當你的評估指標無法正確衡量算法之間的優劣排序時,在這種情況下,原來的指標錯誤地預測算法A是更好的算法這就發出了信號,你應該改變評估指標了,或者要改變開發集或測試集。在這種情況下,你用的分類錯誤率指標可以寫成這樣:

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=1mdev??I{ypred(i)??=y(i)}

mdevm_{dev}mdev? 是你的開發集例子數,用 ypred(i)y_{pred}^{(i)}ypred(i)? 表示預測值,其值為0或1, III 這符號表示一個函數,統計出里面這個表達式為真的樣本數,所以這個公式就統計了分類錯誤的樣本。這個評估指標的問題在于,它對色情圖片和非色情圖片一視同仁,但你其實真的希望你的分類器不會錯誤標記色情圖像。比如說把一張色情圖片分類為貓,然后推送給不知情的用戶,他們看到色情圖片會非常不滿。

其中一個修改評估指標的方法是,這里( 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)} 之間)加個權重項,即:

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=1mdev??w(i)I{ypred(i)??=y(i)}

我們將這個稱為 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,這樣你賦予了色情圖片更大的權重,讓算法將色情圖分類為貓圖時,錯誤率這個項快速變大。這個例子里,你把色情圖片分類成貓這一錯誤的懲罰權重加大10倍。

如果你希望得到歸一化常數,在技術上,就是 w(i)w^{(i)}w(i) 對所有 iii 求和,這樣錯誤率仍然在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=1mdev??w(i)I{ypred(i)??=y(i)}

加權的細節并不重要,實際上要使用這種加權,你必須自己過一遍開發集和測試集,在開發集和測試集里,自己把色情圖片標記出來,這樣你才能使用這個加權函數。

但粗略的結論是,如果你的評估指標無法正確評估好算法的排名,那么就需要花時間定義一個新的評估指標。這是定義評估指標的其中一種可能方式(上述加權法)。評估指標的意義在于,準確告訴你已知兩個分類器,哪一個更適合你的應用。就這個視頻的內容而言,我們不需要太注重新錯誤率指標是怎么定義的,關鍵在于,如果你對舊的錯誤率指標不滿意,那就不要一直沿用你不滿意的錯誤率指標,而應該嘗試定義一個新的指標,能夠更加符合你的偏好,定義出實際更適合的算法。

你可能注意到了,到目前為止我們只討論了如何定義一個指標去評估分類器,也就是說,我們定義了一個評估指標幫助我們更好的把分類器排序,能夠區分出它們在識別色情圖片的不同水平,這實際上是一個正交化的例子。

我想你處理機器學習問題時,應該把它切分成獨立的步驟。一步是弄清楚如何定義一個指標來衡量你想做的事情的表現,然后我們可以分開考慮如何改善系統在這個指標上的表現。你們要把機器學習任務看成兩個獨立的步驟,用目標這個比喻,第一步就是設定目標。所以要定義你要瞄準的目標,這是完全獨立的一步,這是你可以調節的一個旋鈕。如何設立目標是一個完全獨立的問題,把它看成是一個單獨的旋鈕,可以調試算法表現的旋鈕,如何精確瞄準,如何命中目標,定義指標是第一步。

然后第二步要做別的事情,在逼近目標的時候,也許你的學習算法針對某個長這樣的成本函數優化, 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)) ,你要最小化訓練集上的損失。你可以做的其中一件事是,修改這個,為了引入這些權重,也許最后需要修改這個歸一化常數,即:

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=1m?w(i)L(y^?(i),y(i))

再次,如何定義 JJJ 并不重要,關鍵在于正交化的思路,把設立目標定為第一步,然后瞄準和射擊目標是獨立的第二步。換種說法,我鼓勵你們將定義指標看成一步,然后在定義了指標之后,你才能想如何優化系統來提高這個指標評分。比如改變你神經網絡要優化的成本函數 JJJ

在繼續之前,我們再講一個例子。假設你的兩個貓分類器 AAABBB ,分別有用開發集評估得到3%的錯誤率和5%的錯誤率。或者甚至用在網上下載的圖片構成的測試集上,這些是高質量,取景框很專業的圖像。但也許你在部署算法產品時,你發現算法 BBB 看起來表現更好,即使它在開發集上表現不錯,你發現你一直在用從網上下載的高質量圖片訓練,但當你部署到手機應用時,算法作用到用戶上傳的圖片時,那些圖片取景不專業,沒有把貓完整拍下來,或者貓的表情很古怪,也許圖像很模糊,當你實際測試算法時,你發現算法 BBB 表現其實更好。

這是另一個指標和開發集測試集出問題的例子,問題在于,你做評估用的是很漂亮的高分辨率的開發集和測試集,圖片取景很專業。但你的用戶真正關心的是,他們上傳的圖片能不能被正確識別。那些圖片可能是沒那么專業的照片,有點模糊,取景很業余。

所以方針是,如果你在指標上表現很好,在當前開發集或者開發集和測試集分布中表現很好,但你的實際應用程序,你真正關注的地方表現不好,那么就需要修改指標或者你的開發測試集。換句話說,如果你發現你的開發測試集都是這些高質量圖像,但在開發測試集上做的評估無法預測你的應用實際的表現。因為你的應用處理的是低質量圖像,那么就應該改變你的開發測試集,讓你的數據更能反映你實際需要處理好的數據。

但總體方針就是,如果你當前的指標和當前用來評估的數據和你真正關心必須做好的事情關系不大,那就應該更改你的指標或者你的開發測試集,讓它們能更夠好地反映你的算法需要處理好的數據。

有一個評估指標和開發集讓你可以更快做出決策,判斷算法 AAA 還是算法 BBB 更優,這真的可以加速你和你的團隊迭代的速度。所以我的建議是,即使你無法定義出一個很完美的評估指標和開發集,你直接快速設立出來,然后使用它們來驅動你們團隊的迭代速度。如果在這之后,你發現選的不好,你有更好的想法,那么完全可以馬上改。對于大多數團隊,我建議最好不要在沒有評估指標和開發集時跑太久,因為那樣可能會減慢你的團隊迭代和改善算法的速度。本視頻講的是什么時候需要改變你的評估指標和開發測試集,我希望這些方針能讓你的整個團隊設立一個明確的目標,一個你們可以高效迭代,改善性能的目標。

課程板書




←上一篇↓↑下一篇→
1.6 開發集合測試集的大小回到目錄1.8 為什么是人的表現

總結

以上是生活随笔為你收集整理的1.7 开发集和测试集的大小-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。