CNN做圖像分類,訓練集中的極少量樣本被貼上了錯誤的標籤,是否會嚴重污染訓練集?對訓練結果影響大嗎?
問題如上,我舉個具體而簡化的例子說明一下:
比如我利用CNN神經網路訓練模型用於識別貓和狗的圖像。我的訓練集是這樣:貓的圖片有100000張,對應標籤100000個,均標註為「貓」;狗的圖片有100000張,對應標籤99900個標註為「狗」,但有100個被錯誤標註為「貓」。以上訓練集訓練得到的結果怎樣?這100個錯誤標籤對訓練集的污染大嗎?是否會摧毀原本訓練效果極佳的模型?
可以看看這篇文章,應該會符合你的要求,CNN加入少量的隨機雜訊,是可以提高精度的。
http://bigml.cs.tsinghua.edu.cn/~lingxi/PDFs/Xie_CVPR16_DisturbLabel.pdf
In this paper, we present DisturbLabel,
we show that DisturbLabel prevents the
an extremely simple algorithm which randomly replaces a
part of labels as incorrect values in each iteration
network training from over-fitting by implicitly averaging
over exponentially many networks which are trained with
different label sets.
怕有的人誤解,注意,這裡的雜訊是隨機雜訊,每次都是不一樣的,但是如果雜訊固定,效果反而會下降,具體的話是今年IC LR的泛化性的那篇文章。
我的感覺也跟 @Hao Zhang 相反呢……不過只是感性認識,並沒有實驗支撐。
我覺得,如果模型的擬合能力不夠,那麼錯誤標籤影響不大。就像一個差生,他對教材內容的消化能力有限,即使教材裡面有幾處錯誤,他也不會覺得這裡有問題,並且你告訴他的標準答案他也會當成耳旁風忽略掉。
反過來,如果模型的擬合能力很強,那麼錯誤標籤就會造成過擬合。就像一個記憶力高超的學生,可以注意到教材中所有的細節,如果有些地方是錯的,他雖然會糾結一下,但最終也會原樣給你記住。
不會,答案很簡單:隨機梯度下降用的mini-batch計算的梯度,是為網路對於單個樣本點梯度在mini-batch里的平均。假設你有1%的樣本是mislabeled,那麼相當於你計算的梯度平均值里有1%的梯度計算錯誤,該錯誤會被另外99%正確的梯度值平均掉,其影響至多是減緩演算法訓練速度罷了。特別地,如果你用的優化演算法是RMSprop,那麼你計算的梯度在每次迭代時會被normalize,因此你每次迭代的步長從而也是有界的,此時理論上說就更不會出現1%的mislabled的樣本錯誤梯度的影響超過另外99%正確標註的樣本的情況出現。
污染肯定有,影響忽略不計
模型擬合高,影響就越大
模型擬合低,就別在意啦
這個答案不是絕對的, 取決於你的模型現在處於過擬合還是欠擬合階段.
當你的模型處在欠擬合時, 模型對數據中的一般規律尚為習得, 錯誤標籤的數據通常會影響模型的整體性能.
而當你的模型處在過擬合時, 模型對數據中的一般規律已經學的很好, 並且模型將訓練數據自身的一些性質錯誤的當作了一般規律. 這個時候錯誤標籤的數據有時能起到緩解過擬合的作用, 比如GoogleNet在訓練時候故意標錯一部分數據就是這個道理.
順便說一句, 在集成學習中, 做輸出標記進行擾動是增強個體學習器的一種手段, 而個體學習器性能越高, 間多樣性越大, 集成效果越好.
再順便說一句, 關於如何判斷模型處在過擬合還是欠擬合, 以及其他應用機器學習技術解決實際問題時的注意事項, 可以參考這篇文章:
當你在應用機器學習時你應該想什麼 - 知乎專欄參考文獻
[1]. Szegedy, Christian, et al. 「Going deeper with convolutions.」 Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2015.
[2]. Zhou, Zhi-Hua. Ensemble methods: foundations and algorithms. CRC press, 2012.
@Hao Zhang 的第三段好像不是很準確。 @王贇 Maigo 和 @月光寶盒娛樂頻道 的論述應該是對的,但是好像沒完全解答問題。
對問題本身的解答應該是,這種小的label的錯誤,會降低model的表現,但是不會「摧毀」model。而model表現的降低,應該和錯誤label的百分比基本成正比。參見rethink這篇的Fig1c就可以了
https://arxiv.org/pdf/1611.03530.pdf
看到 @Hao Zhang 的錯誤答案得到高票,而正確的答案 ( @魏天聞 和 @王贇 Maigo 的答案)卻很少人贊同,俺覺得需要幫他倆說幾句。
@魏天聞 和 @王贇 Maigo 的答案一個從優化的角度,一個從泛化的角度,分別回答了這個問題。因為這兩個角度是相互作用的,俺就把它們串起來說一下。
對應於乾淨數據和臟數據,假設優化函數分別為 和 。這裡目標函數取的是樣本的平均cross entropy, 是要學習的模型參數。假設臟數據中只有極少數樣本被標註錯了,而且這些被標錯的樣本是隨機分布的。下面俺就比劃一下幾種不同情況,不十分嚴謹,但大體上應該差不多。
- 假設模型的capacity 相對乾淨數據偏低。這時優化問題 f 的最優解無法把乾淨數據的正負樣本完美分割。而這時模型的capacity 相對於臟數據會更低(平均意義上),也就是模型相對於臟數據會進一步欠擬合,那麼優化問題 g 的最優解更無法把臟數據里的正負樣本按照其標註分開。但是因為污染的樣本極少,目標函數 f 和 g 很接近。同時因為模型本身欠擬合,兩個優化問題的最優解(甚至次優解)也會很接近。所以不論是用最優演算法還是梯度下降,兩者給出的解都會很類似。
- 假設模型的 capacity 相對於乾淨數據偏高,但相對於臟數據偏低。這時f 的最優解可以把乾淨數據的正負樣本完美分割,但g 的最優解無法將臟數據按其標籤完美分割。這時候 f 的最優解(因為可能過擬合)未必比 g 的最優解泛化能力更好。但如果用梯度下降演算法,同時通過觀測 validation set 控制訓練不過擬合,兩個優化問題的解還是會比較靠近。
- 假設模型的capcity 相對於臟數據過高,那麼相對於乾淨數據會更高。這個時候,兩個最優解都過擬合,都可以把對應的數據樣本按其標註完美分割。當然兩個最優解都不能泛化,而g的最優解會更糟糕,因為它的正負樣本分割邊界必須能把標錯的正樣本當作負樣本從正樣本的區域「圈」出來。這時俺估計兩個最優解相距會比較遠。但是如果是用梯度下降演算法又控制訓練及時停止不至於過擬合的話,停止訓練時得到的解大約還是差不多。當然如果不控制過擬合一直訓練下去,估計g 的訓練結果會導致測試誤差上升得更快。
俺竊以為深度模型都是 capacity 過高的。一般屬於情況 2 或 3。如果俺沒記錯,那篇ICRL rethinking generalization 的文章中報告說CNN 相對於 MNIST 數據集的情形是 3,不過俺猜在其他場合應該也會有2 的情況。(順便說一句,俺很喜歡 rethinking generalization 那文章。雖然有些達人詬病它太簡單了,俺覺得它的思想和指向還是很讓人迷醉,發人深省,夜不能寐。期待作者進一步結論。)總體來說,如果用BP,同時控制好不要過擬合,有點污染沒啥大關係。
另外幾個答案提到訓練時隨機擾動標籤的好處,那和題主說的不是一回事。至於 @Hao Zhang 的答案,俺完全不認同。
最近剛做了一個類似的實驗,得到的結論如下:
大學習率下,模型會首先學習有效樣本中的特徵信息,然後再學習到臟數據中的信息,並隨著臟數據的增加和迭代次數的增加在驗證集上,識別率出現斷崖式的下降
調小學習率的情況下,模型的學習會變得穩定許多且受到臟數據的影響明顯減少,也不容易出現斷崖式的下降,但是隨著臟數據的比例不斷的擴大,模型學習到的臟數據的信息也會對於模型的推廣能力造成不可忽視的影響。
因此在帶有臟數據的數據集上學習,建議使用較小的學習率,同時保證驗證集的準確性,當發現訓練集識別率不斷提高,但是在驗證集上反而下降時,此時就可以懷疑時學習到了臟數據的信息,及時停止訓練應該也可以得到不錯的效果
具體的實驗可以參考:
https://zhuanlan.zhihu.com/p/27602850
個人覺得這個問題包含兩個方面,第一是污染的訓練集能不能使模型收斂,能不能把模型訓練出來(暫不考慮性能問題);第二才是模型對測試集識別率的影響。關於欠擬合和過擬合的討論都是在默認模型收斂的基礎上討論的。至於模型能不能訓練成功,應該跟污染數據所佔的比例有關。假如模型成功訓練,loss很低,那麼這個模型相對於無污染訓練集的模型來講是過擬合的,效果肯定會差,因為加入的是錯誤的數據,學得了錯誤的特徵。加入的並不是隨機的雜訊,加入隨機的雜訊訓練出的模型泛化能力強是因為可以看作每次都在不同數據集上進了訓練,即增大了訓練樣本(跟dropout有點類似,dropout可以看作是融合了多個類似結構的網路)。(一些想法,不一定對
說的好像 給你看100隻貓你能全認出來一樣
個人覺得不會?可以看下iclr那篇rethinking generalization的文章
模型的複雜度其實後最後擬合的函數有關係
現在deep model都已經fit所有data不是困難
如果你的data有雜訊
你擬合出來的模型就會複雜
然後重新關注你fit到的數據集
同樣的fit但是模型複雜就會泛化下降
推薦一下北京大學大數據研究院朱占星老師的最近的論文,會講到這個問題
也做了非常有趣的一些實驗[大家等一下文章貌似咩出來暫時
隨機加雜訊可能不能用上面的來分析,不過上面有從優化角度來分析的感覺還不錯
不知道你的極少量怎麼定義的,如果很少,那幹嘛不把錯誤的挑出來。如果人工不可及,那就不會,就上樓上所說,可能會防止過擬合
我覺得不會,我們購買的語音識別的數據集只能保證錯誤率2%以下。2%比"極少數"要大很多吧。再說,很多標註本來就很模糊,很難判斷邊界。
取決於你這100個標記錯誤的原因。是長得太像貓才標記錯誤的還是人為故意的如果是第一種,影響不大,跟錯誤比例有關如果是第二種的話就得找解決的方法了
肯定會污染,只是影響大小的問題我覺得你可以凈化你的訓練集,用k-fold cross validation。如果你做了early stop,可以降低過擬合,把你訓練集里的錯誤找出來。
先說結論:按個人實際操作經驗來看,目前沒有發現很大的影響,而一個訓練效果較好的網路能夠剔除出標籤錯誤的數據。
再說過程:本人所用數據集為自己採集的,數據量很小(train+val差不多160,test 80),其中因為一些原因(前期界定不清,分類不夠準確)導致部分數據標籤不當(訓練數據與測試數據均有),但是經過調參與網路結構的改進,使網路的識別精度達到90%+的時候,輸出錯誤識別樣本,發現其中有一部分就是將錯誤標籤的個體識別為了其原本屬於的類別。
(模型在caffe下搭建,可視化藉助DIGITS實現)
用老闆的話說,我訓練的網路糾正了我前期分類出現的錯誤……
一般來說,小比例的錯誤訓練數據不影響訓練的最終模型,還可能對過擬合有矯正作用。而這個錯誤比例的限制則和模型結構、訓練方法等因素有關。
經驗性的回答:不會。
對dog來說,只有0.1%錯誤label,99.9%都是正確的,在學習過程佔了絕對的主導地位。並且, 之前的回答也提到過, 將少量正確的label改錯可以有一定的防止過擬合功能。
推薦閱讀:
※Tensorflow 的reduce_sum()函數到底是什麼意思,誰能解釋下?
※如何看待谷歌移動端深度學習框架 TensorFlow Lite 正式發布?可能會帶來什麼影響?
※有沒有基於移動端GPU的深度學習前饋網路框架?
※如何評價deep mind開源的sonnet?
TAG:深度學習DeepLearning | TensorFlow | 卷積神經網路CNN |