騰訊優(yōu)圖:自適應(yīng)缺陷數(shù)據(jù),業(yè)務(wù)場景下的神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法

深度學習的成功建立在大量的干凈數(shù)據(jù)和深度模型基礎(chǔ)上,但是在現(xiàn)實場景中數(shù)據(jù)和模型往往不會特別理想,比如數(shù)據(jù)里存在很多標簽噪音,或者考慮到模型的推理速度,神經(jīng)網(wǎng)絡(luò)的層數(shù)不夠深等。特別是對于業(yè)務(wù)場景,數(shù)據(jù)往往存在很多缺陷,因此讓模型能夠自適應(yīng)的從缺陷數(shù)據(jù)里學習是業(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)圖和騰訊云大學、AICUG、AI科技評論聯(lián)合主辦的「優(yōu)Tech沙龍」的分享整理。

定義帶噪學習目標

現(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ò)進行帶噪學習,并且要能實現(xiàn)比較好的性能。那么noise label learning的目標是,loss function,使得在noisy labels下訓(xùn)練得到的解,在性能上接近在clean labels下訓(xùn)練得到的解。

各有千秋:主要帶噪學習方法分析

關(guān)于帶噪學習,近些年有一些重要論文。AAAI 2017年發(fā)表的這篇研究(Robust Loss Functions under Label Noise for Deep Neural Networks, AAAI2017)說明,MAE以均等分配的方式處理各個sample,而CE(cross entropy)會向識別困難的sample傾斜。因此,針對noisy labels,MAE比CE更加魯棒,不容易讓模型過擬合到label noise上。

當然,CE也有自身優(yōu)勢。2018年的這篇文章(Generalized Cross Entropy Loss for Training Deep Neural Networks with Noisy Labels, NeurlPS 2018)是接著前面一篇文章往下做的。這篇文章指出,MAE雖然比CE在noisy label更加魯棒,但是CE的準確度更高,擬合也更快。

那么,如何結(jié)合CE和MAE的優(yōu)勢呢?這篇文章(Generalized Cross Entropy Loss for Training Deep Neural Networks with Noisy Labels, NeurlPS 2018 )提出這樣一個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進行學習的話那就出現(xiàn)問題了,它是隨機從一個label中進行抽取,希望讓模型學到它不是一個鳥,狗不是一個鳥,它的語義關(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,這兩個方法是通過選擇樣本和對樣本進行糾正來進行帶噪學習訓(xùn)練。

這篇發(fā)表在2018年NeurlPS的文章(Co-teaching: Robust Training of Deep Neural Networks with Extremely Noisy Labels, NeurlPS 2018)是關(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é)作學習其實學術(shù)界沒有統(tǒng)一的定義,一般來講只要是多個模型互相協(xié)作,去解決一個或者多個任務(wù),那就可以把這種學習范式叫做協(xié)作學習。

按照任務(wù)分,協(xié)作學習可以分成兩個:一個是解決多個任務(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的這篇文章(Combining labeled and unlabeled data with co-training, ACM 1998)非常古老,是1998年的,但是它的引用量已經(jīng)好幾千,它其實是解決了半監(jiān)督的問題。

接下來介紹2018年的這篇文章,發(fā)表在CVPR,這篇叫做deep mutual learning。它的思想極其簡單,我們都知道蒸餾的時候teacher是fixed,然后對于學生進行監(jiān)督,這篇文章的思想就是在蒸餾的過程中老師并不保持fixed,也進行迭代的訓(xùn)練操作,也就是說老師教學生,學生也教老師。

時間再拉近一點,這是今年騰訊優(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的信息量可能會減少,

這篇還在審稿中的文章(DGD: Densifying the Knowledge of Neural Networks with Filter Grafting and Knowledge Distillation (under review))是關(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更少。

極客網(wǎng)企業(yè)會員

免責聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關(guān)資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負任何法律責任。任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。

2020-04-30
騰訊優(yōu)圖:自適應(yīng)缺陷數(shù)據(jù),業(yè)務(wù)場景下的神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法
?深度學習的成功建立在大量的干凈數(shù)據(jù)和深度模型基礎(chǔ)上,但是在現(xiàn)實場景中數(shù)據(jù)和模型往往不會特別理想,比如數(shù)據(jù)里存在很多標簽噪音,或者考慮到模型的推理速度,神經(jīng)網(wǎng)絡(luò)的層數(shù)不夠深等。

長按掃碼 閱讀全文