深度學(xué)習(xí)的成功建立在大量的干凈數(shù)據(jù)和深度模型基礎(chǔ)上,但是在現(xiàn)實場景中數(shù)據(jù)和模型往往不會特別理想,比如數(shù)據(jù)里存在很多標簽噪音,或者考慮到模型的推理速度,神經(jīng)網(wǎng)絡(luò)的層數(shù)不夠深等。特別是對于業(yè)務(wù)場景,數(shù)據(jù)往往存在很多缺陷,因此讓模型能夠自適應(yīng)的從缺陷數(shù)據(jù)里學(xué)習(xí)是業(yè)務(wù)成功的保障。
近幾年,騰訊優(yōu)圖不斷迭代數(shù)據(jù)和模型缺陷情況下神經(jīng)網(wǎng)絡(luò)的有效訓(xùn)練方法,相關(guān)技術(shù)已經(jīng)在眾多業(yè)務(wù)場景上(行人重識別,內(nèi)容審核等)落地。本文是騰訊優(yōu)圖實驗室高級研究員Louis,在騰訊優(yōu)圖和騰訊云大學(xué)、AICUG、AI科技評論聯(lián)合主辦的「優(yōu)Tech沙龍」的分享整理。
定義帶噪學(xué)習(xí)目標
現(xiàn)實數(shù)據(jù)中存在的標簽噪音(label noise)根據(jù)Feature可以分成兩種:Feature independent noise和 Feature dependent noise。Feature independent noise是與特征無關(guān)的,比如將一只狗的圖片誤標記成汽車,狗和汽車沒有什么相似特征,所以屬于這類。Feature independent noise是與特征有關(guān)的,比如說狗和狼具有很多相似特征屬性,標注人員可能把狗誤標記成狼,那就屬于這類。其實現(xiàn)實場景更多存在都是feature dependent noise。
噪音普遍存在,所以我們需要訓(xùn)練神經(jīng)網(wǎng)絡(luò)進行帶噪學(xué)習(xí),并且要能實現(xiàn)比較好的性能。那么noise label learning的目標是,loss function,使得在noisy labels下訓(xùn)練得到的解,在性能上接近在clean labels下訓(xùn)練得到的解。
各有千秋:主要帶噪學(xué)習(xí)方法分析
關(guān)于帶噪學(xué)習(xí),近些年有一些重要論文。AAAI 2017年發(fā)表的這篇研究說明,MAE以均等分配的方式處理各個sample,而CE(cross entropy)會向識別困難的sample傾斜。因此,針對noisy labels,MAE比CE更加魯棒,不容易讓模型過擬合到label noise上。
當然,CE也有自身優(yōu)勢。2018年的這篇文章是接著前面一篇文章往下做的。這篇文章指出,MAE雖然比CE在noisy label更加魯棒,但是CE的準確度更高,擬合也更快。
那么,如何結(jié)合CE和MAE的優(yōu)勢呢?這篇文章提出這樣一個loss function,也就叫做GCE loss(Generalized Cross Entropy loss)。它如何結(jié)合二者的優(yōu)勢?這里q是一個0到1之間的超參數(shù),當q趨近于0的時候,這個Lq就退化成了一個CE loss,當 q趨近于1時,Lq就退化成了MAE loss。所以在真實場景中,只要對q進行調(diào)整,就會讓這個loss在一些noise label數(shù)據(jù)下有很好的表現(xiàn)。
還有的論文是基于信息論設(shè)計的loss function,Deterministic information loss。它的Motivation是想尋找一個信息測度(information measure)I。假設(shè)在I下任意存在兩個分類器f、f’,如果在噪音數(shù)據(jù)集下,通過I, f比f’表現(xiàn)得更好,那么在干凈數(shù)據(jù)集下,f比f’表現(xiàn)得也好,也就是說它在噪音數(shù)據(jù)集和干凈數(shù)據(jù)集上滿足一致性。如果在噪音數(shù)據(jù)集下它表現(xiàn)得好,那通過這個一致性,那么在干凈數(shù)據(jù)集下表現(xiàn)得也一定很好。
把時間往前推進一下,講一些目前正在審稿中的文章,關(guān)于Peer loss。我們構(gòu)造的時候它等于兩個loss的加權(quán),α是權(quán)重系數(shù),衡量l1和l2的大小關(guān)系,Xi和Y ?是樣本和對應(yīng)的label。
為什么peer loss可以很好地解決noisy labels問題?為了方便,這里先把l1、l2都定義成CE loss,那么在第一項,它表現(xiàn)的像positive learning,因為它就是一個傳統(tǒng)的CE function,而在第二項,它像 negative learning,也就是在標記錯的時候,比如把狗標成汽車,如果用positive learning進行學(xué)習(xí)的話那就出現(xiàn)問題了,它是隨機從一個label中進行抽取,希望讓模型學(xué)到它不是一個鳥,狗不是一個鳥,它的語義關(guān)系首先是成立的,是正確的,這樣一來,第二項對模型也能起到一個積極的導(dǎo)向作用。
更加有意思的是,單獨訓(xùn)練第一項和單獨訓(xùn)練第二項都不可能使模型達到理論上的最優(yōu),因為模型存在noisy labels。但是我們證明了它們兩項聯(lián)合訓(xùn)練,在統(tǒng)計上是可以讓模型達到最優(yōu)。
我們提出了一個主要定理,α是權(quán)重項,我們證明了存在一個最優(yōu)的α,用peer loss在noisy labels下進行優(yōu)化,它得出的神經(jīng)網(wǎng)絡(luò)的解等價于用l1在clean labels下進行優(yōu)化,可以把l1理解成CE loss。所以我們理論證明了peer loss的最優(yōu)性。
看一下peer loss在數(shù)據(jù)集下的表現(xiàn),這里使用的數(shù)據(jù)集是CIFAR-10,然后我們讓CIFAR-10數(shù)據(jù)集里面有40%的uniform noise或者說symmetric noise。圖中的藍色代表clean label分布,橘黃色代表noisy label分布。通過peer loss優(yōu)化后,神經(jīng)網(wǎng)絡(luò)可以把兩類比較完美地區(qū)分開,而且中間間隔很大,所以說證明了peer loss不僅在理論上成立,在實際上其實效果也不錯。
再看一下數(shù)值的實驗結(jié)果。我們在MNIST、Fashion MNIST、CIFAR-10上進行了實驗,可以看到MNIST和Fashion MNIST上,用peer loss優(yōu)化的結(jié)果超過了一些其他的結(jié)果,包括DMI的結(jié)果三四十個點,這是非常大的進步。在CIFAR-10上也超過將近5個點,四個多點左右這樣的一個結(jié)果。而且,我們發(fā)現(xiàn)peer loss尤其對Sparse,High這種noise type表現(xiàn)得特別明顯。
以上講的方法主要是設(shè)計loss function的思路,讓網(wǎng)絡(luò)能夠抵抗noisy labels。但其實還有很多其他方法,比如samples selection和label correction,這兩個方法是通過選擇樣本和對樣本進行糾正來進行帶噪學(xué)習(xí)訓(xùn)練。
這篇發(fā)表在2018年NeurlPS的文章是關(guān)于Co-teaching。它的基本假設(shè)是認為noisy labels的loss要比clean labels的要大,于是它并行地訓(xùn)練了兩個神經(jīng)網(wǎng)絡(luò)A和B,在每一個Mini-batch訓(xùn)練的過程中,每一個神經(jīng)網(wǎng)絡(luò)把它認為loss比較小的樣本,送給它其另外一個網(wǎng)絡(luò),這樣不斷進行迭代訓(xùn)練。
接下來介紹騰訊優(yōu)圖在2019年底發(fā)表的一篇文章,解決一類特殊的label noise。這類label noise不是人為標注產(chǎn)生的,而是在訓(xùn)練中產(chǎn)生的。比如說有這樣一批沒有標記的樣本,然后通過一個聚類算法得到inliers和outliers,outliers是聚類算法中認為這一點是孤立點或者是噪音點,它沒法歸到聚類算法的ID里面,就叫做outliers,inliers是聚類算法對這些樣本進行聚類后得到一個個id,但每一個id里面可能存在noise,比如說對于id1里面有一個三角,這個三角更應(yīng)該是id3里面的樣本。它是在模型的聚類過程中產(chǎn)生,所以說這是一類特殊的noise type。
騰訊優(yōu)圖提出了一個框架,叫Asymmetric Co-teaching。因為聚類中存在inlier和outliers,這兩個不同源,所以用非對稱的思想去解決noise label的問題。
具體來說,首先有很多 Target Data,經(jīng)過模型聚類得到Inliers和Outliers。然后通過k近鄰將outiers進行l(wèi)abel。下面一步是比較關(guān)鍵的,和Co-teaching一樣,我們也并行訓(xùn)練兩個神經(jīng)網(wǎng)絡(luò)C和M,但是我們往C和M送到的樣本是非同源的,一個Inlier一個outliers。然后C和M互相發(fā)送他們認為loss比較小的樣本進行迭代訓(xùn)練。每次訓(xùn)練之后,再進行聚類。不斷重復(fù)這種迭代過程,最后我們發(fā)現(xiàn)outliers越來越少,Inlier也是越來越多,Inlier每個ID的noise也是越來越少。
可以看一下Asymmetric Co-teaching的結(jié)果,我們主要是在行人重識別這個問題上衡量方法的有效性,也就是ReID?梢钥次覀冞@個clustering-based的方法在Market和Duke數(shù)據(jù)集中有不錯的表現(xiàn),比之前的一些方法也多了五六個點。
總結(jié)一下,關(guān)于noisy label learning前面主要介紹了六個方法,我把它們歸為了Feature independent noise和Feature dependent noise。但是值得注意的是,并不是一個方法去解決Feature independent noise就無法解決Feature dependent noise,只是說一個方法它更適用于解決哪個問題,然后標線框的這兩個是我們的工作。
多模型協(xié)作,提升網(wǎng)絡(luò)表達能力
關(guān)于協(xié)作學(xué)習(xí)其實學(xué)術(shù)界沒有統(tǒng)一的定義,一般來講只要是多個模型互相協(xié)作,去解決一個或者多個任務(wù),那就可以把這種學(xué)習(xí)范式叫做協(xié)作學(xué)習(xí)。
按照任務(wù)分,協(xié)作學(xué)習(xí)可以分成兩個:一個是解決多個任務(wù),有dual learning和cooperative learning;一個是多個模型一起協(xié)作解決一個任務(wù)。因為dual learning和cooperative learning主要是解決自然語言處理的問題,自然語言處理涉及到比如說中文翻譯成英文,英文翻譯成中文,這是多個任務(wù)。我們這里主要是講CV方面,所以說我們主要講解決一個任務(wù),接下來會介紹co-training、deep mutual learning、filter grafting和DGD這幾個工作。
關(guān)于 Co-training的這篇文章非常古老,是1998年的,但是它的引用量已經(jīng)好幾千,它其實是解決了半監(jiān)督的問題。
接下來介紹2018年的這篇文章,發(fā)表在CVPR,這篇叫做deep mutual learning。它的思想極其簡單,我們都知道蒸餾的時候teacher是fixed,然后對于學(xué)生進行監(jiān)督,這篇文章的思想就是在蒸餾的過程中老師并不保持fixed,也進行迭代的訓(xùn)練操作,也就是說老師教學(xué)生,學(xué)生也教老師。
時間再拉近一點,這是今年騰訊優(yōu)圖中稿CVPR2020年的一篇文章,叫做Filter Grafting。這篇文章的motivation是什么呢?我們知道訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)存在很多冗余或者說無效的filter,比如說l1 norm很低,那Pruning就是想把這些filter給移除掉來加速網(wǎng)絡(luò)的推理能力。那么我們想,如果我們不把這些無效的filter移除掉,而是通過其他網(wǎng)絡(luò)的幫助來激活這些無效的filter,讓它們重新變得有價值起來,那是不是可以進一步提高網(wǎng)絡(luò)的表達能力?
這篇文章有一個重要的發(fā)現(xiàn)是什么呢?我們發(fā)現(xiàn)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)如果在初始化的時候都采用隨機初始化,那么在訓(xùn)練完之后,無效filter的位置是統(tǒng)計無關(guān)的。所以我們可以并行訓(xùn)練多個網(wǎng)絡(luò),在訓(xùn)練的過程中,每個網(wǎng)絡(luò)接受上一個網(wǎng)絡(luò)的部分weight (我們將這種方式叫做grafting),因為每個網(wǎng)絡(luò)無效filter的位置是統(tǒng)計無關(guān)的。所以其他網(wǎng)絡(luò)有效filter的weight可以填補到自己網(wǎng)絡(luò)里的無效filter當中。多個網(wǎng)絡(luò)之間互相進行這種操作,結(jié)束訓(xùn)練之后每個神經(jīng)網(wǎng)絡(luò)都會有更好的特征表達,而且測試的時候準確率性能也會更好。
可以看一下這個結(jié)果,對于在CIFAR-10、CIFAR-100上進行的實驗,與mutual learning、傳統(tǒng)的distillation、還有RePr相比較,F(xiàn)ilter Grafting效果還是不錯的,對于一些大網(wǎng)絡(luò),特別是對于CIFAR-100有兩個點的提升。
Grafting是可以有效提高無效filter,但是可能有效filter的信息量會減少。我們在做grafting加權(quán)的時候,比如說M1和M2進行加權(quán),M1的layer1加到M2的layer1上面,雖然填補了M2中無效filter的空虛,但是M2有效filter可能也會受到影響。因為M1它本身也有無效filter,它直接加到M2上,M2的有效filter的信息量可能會減少,
這篇還在審稿中的文章是關(guān)于我們的新發(fā)現(xiàn),就是傳統(tǒng)的蒸餾可以解決有效filter信息量可能減少這個問題,這是這篇文章的貢獻。我們提出了DGD的training framework。
DGD在訓(xùn)練的過程中,并行訓(xùn)練多個teacher和多個student。多個teacher對student進行蒸餾,而student之間進行g(shù)rafting。最后訓(xùn)練的結(jié)果是每一個student的valid filter和invalid filter都會有信息量的提升。
看一下DGD framework的結(jié)果。我們對比了傳統(tǒng)的filter grafting,還有knowledge distillation,發(fā)現(xiàn)比grafting,distillation都有不錯的提升,比如在CIFAR-100上,各個網(wǎng)絡(luò)基本都會比baseline提升兩到三個點。
朝下一個難題前進,提升真實業(yè)務(wù)場景下的準確率
前面講的是noise label learning和collaborative leaning,那么基于這兩個可以做什么呢?
第一個是設(shè)計一些feature dependent noise的loss形式。 因為我認為現(xiàn)在對于noisy label learning領(lǐng)域,feature independent noise可能解決得差不多了,準確率都很高了,接下來一個主要的點就是設(shè)計一些loss方式來解決feature dependent問題。而且,這個問題是真實的業(yè)務(wù)場景、真實的數(shù)據(jù)集上的noise type形式。
第二個是,我們知道grafting的motivation是來自于pruning,那么我們是否可以用grafting的一些思想去指導(dǎo)神經(jīng)網(wǎng)絡(luò)來進行更有效的pruning,這是一些未來大家有興趣可以探索的一個點。
Q&A
Q: 您提到的那些噪聲是不是其實都是已知的,假設(shè)如果現(xiàn)在有一批數(shù)據(jù),標注是否正確其實我們無法知道,那這種情況有什么好的解決辦法嗎?
A:剛才我講的這些文章中很多是假設(shè)知道noise rate這個prior knowledge,但真實場景其實我們不知道noise rate是多大,我覺得一個好的解決方法是用一些design loss的方式,建議大家可以先用一些像peer loss或者DMI loss先進行一些嘗試,因為這些是更貼近實際的。
Q:在grafting的場景里面,如何去判斷有效或者無效的filter?
A:我們想解決的是減少無效filter,那么首先要定義什么是無效filter。傳統(tǒng)的定義方法是通過L1 Norm進行定義,其實我們覺得通過L1 Norm進行定義并不完美,不是L1 Norm比較小,filter就不好, L1 Norm比較大,filter信息量就很多。比如對于一個神經(jīng)網(wǎng)絡(luò)來說,如果一個filter如果都是全1的話,這是沒有任何信息量,因為它沒有diversity,但是L1 Norm也很大。所以這篇文章其實并不是通過L1 Norm的手段去定義無效filter,我們是通過信息量去定義哪些是無效的filter,哪些是無效的layer。
Q:Grafting和ensemble有什么區(qū)別?
A:Ensemble其實訓(xùn)練的是多個模型,測試的時候也是多個模型。但是grafting的優(yōu)勢是我們訓(xùn)練的就是多個模型,但是測試的時候只用一個模型。也就是說訓(xùn)練的時候這些模型進行g(shù)rafting,訓(xùn)練之后我們隨機抽取任何一個網(wǎng)絡(luò)進行測試都是有比較好的提升的。所以測試的時候只用一個模型,它比ensemble更加高效,inference time更少。