谷歌大腦開源「數(shù)據(jù)增強(qiáng)」新招數(shù):ImageNet準(zhǔn)確率達(dá)85%
本文經(jīng)AI新媒體量子位(公眾號ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。
你的數(shù)據(jù)還不夠強(qiáng)。
玩深度學(xué)習(xí)的人都知道,AI算法大部分是數(shù)據(jù)驅(qū)動。數(shù)據(jù)的質(zhì)量一定程度上決定了模型的好壞。
這就有了深度學(xué)習(xí)天生的一個短板:數(shù)據(jù)不夠多、不夠好。
而數(shù)據(jù)增強(qiáng)就是解決這一問題的有效辦法。
谷歌大腦去年提出了自動數(shù)據(jù)增強(qiáng)方法(AutoAugment),確實對圖像分類和目標(biāo)檢測等任務(wù)帶來了益處。
但缺點也是明顯的:
1、大規(guī)模采用這樣的方法會增加訓(xùn)練復(fù)雜性、加大計算成本;
2、無法根據(jù)模型或數(shù)據(jù)集大小調(diào)整正則化強(qiáng)度。
于是乎,谷歌大腦團(tuán)隊又提出了一種數(shù)據(jù)增強(qiáng)的方法——RandAugment。
這個方法有多好?
谷歌大腦高級研究科學(xué)家Barret Zoph表示:
RandAugment是一種新的數(shù)據(jù)增強(qiáng)方法,比AutoAugment簡單又好用。
主要思想是隨機(jī)選擇變換,調(diào)整它們的大小。
最后的實驗結(jié)果表明:
1、在ImageNet數(shù)據(jù)集上,實現(xiàn)了85.0%的準(zhǔn)確率,比以前的水平提高了0.6%,比基線增強(qiáng)了1.0%。
2、在目標(biāo)檢測方面,RandAugment能比基線增強(qiáng)方法提高1.0-1.3%。
值得一提的是,這項研究的通訊作者是谷歌AutoML幕后英雄的Quoc Viet Le大神。
這么好的技術(shù)當(dāng)然開源了代碼:
https://github.com/tensorflow/tpu/blob/master/models/official/efficientnet/autoaugment.py
RandAugment是怎么做到的?
正如剛才說到的,單獨搜索是問題的關(guān)鍵點。
所以研究人員的目標(biāo)就是消除數(shù)據(jù)增強(qiáng)過程中對單獨搜索的需求。
再考慮到以往數(shù)據(jù)增強(qiáng)方法都包含30多個參數(shù),團(tuán)隊也將關(guān)注點轉(zhuǎn)移到了如何大幅減少數(shù)據(jù)增強(qiáng)的參數(shù)空間。
為了減少參數(shù)空間的同時保持?jǐn)?shù)據(jù)(圖像)的多樣性,研究人員用無參數(shù)過程替代了學(xué)習(xí)的策略和概率。
這些策略和概率適用于每次變換(transformation),該過程始終選擇均勻概率為1/k的變換。
也就是說,給定訓(xùn)練圖像的N個變換,RandAugment就能表示KN個潛在策略。
最后,需要考慮到的一組參數(shù)是每個增強(qiáng)失真(augmentation distortion)的大小。
研究人員采用線性標(biāo)度來表示每個轉(zhuǎn)換的強(qiáng)度。簡單來說,就是每次變換都在0到10的整數(shù)范圍內(nèi),其中,10表示給定變換的最大范圍。
為了進(jìn)一步縮小參數(shù)空間,團(tuán)隊觀察到每個轉(zhuǎn)換的學(xué)習(xí)幅度(learned magnitude)在訓(xùn)練期間遵循類似的表:
并假設(shè)一個單一的全局失真M(global distortion M)可能就足以對所有轉(zhuǎn)換進(jìn)行參數(shù)化。
這樣,生成的算法便包含兩個參數(shù)N和M,還可以用兩行Python代碼簡單表示:
因為這兩個參數(shù)都是可人為解釋的,所以N和M的值越大,正則化強(qiáng)度就越大。
可以使用標(biāo)準(zhǔn)方法高效地進(jìn)行超參數(shù)優(yōu)化,但是考慮到極小的搜索空間,研究人員發(fā)現(xiàn)樸素網(wǎng)格搜索(naive grid search)是非常有效的。
實驗結(jié)果
在實驗部分,主要圍繞圖像分類和目標(biāo)檢測展開。
研究人員較為關(guān)注的數(shù)據(jù)集包括:CIFAR-10、CIFAR-100、SVHN、ImageNet以及COCO。
這樣就可以與之前的工作做比較,證明RandAugment在數(shù)據(jù)增強(qiáng)方面的優(yōu)勢。
數(shù)據(jù)增強(qiáng)的一個前提是構(gòu)建一個小的代理任務(wù)(proxy task),這個任務(wù)可以反映一個較大的任務(wù)。
研究人員挑戰(zhàn)了這樣一個假設(shè):
用小型proxy task來描述問題適合于學(xué)習(xí)數(shù)據(jù)的增強(qiáng)。
特別地,從兩個獨立的維度來探討這個問題,這兩個維度通常被限制為實現(xiàn)小型proxy task:模型大小和數(shù)據(jù)集大小。
為了探究這一假設(shè),研究人員系統(tǒng)地測量了數(shù)據(jù)增強(qiáng)策略對CIFAR-10的影響。結(jié)果如下圖所示:
其中:
圖(a)表示W(wǎng)ide-ResNet-28-2,Wide-ResNet-28-7和Wide-ResNet-28-10在各種失真幅度(distortion magnitude)下的精度。
圖(b)表示在7種Wide-ResNet-28架構(gòu)中,隨著變寬參數(shù)(k)的變化,所產(chǎn)生的最佳失真幅度。
圖(c)表示W(wǎng)ide-ResNet-28-10的三種訓(xùn)練集大?。?K,4K和10K)在各種失真幅度上的準(zhǔn)確性。
圖(d)在8個訓(xùn)練集大小上的最佳失真幅度。
其中,baseline是默認(rèn)的數(shù)據(jù)增強(qiáng)方法。
PBA:Population Based Augmentation;
Fast AA:Fast AutoAugment;
AA:AutoAugment;
RA:RandAugment。
但值得注意點的是,改進(jìn)CIFAR-10和SVHN模型的數(shù)據(jù)增強(qiáng)方法并不總是適用于ImageNet等大規(guī)模任務(wù)。
同樣地,AutoAugment在ImageNet上的性能提升也不如其他任務(wù)。
下表比較了在ImageNet上RandAugment和其他增強(qiáng)方法的性能。
在最小的模型(ResNet-50)上,RandAugment的性能與AutoAugment和Fast AutoAugment相似,但在較大的模型上,RandAugment的性能顯著優(yōu)于其他方法,比基線提高了1.3%。
為了進(jìn)一步測試這種方法的通用性,研究人接下來在COCO數(shù)據(jù)集上進(jìn)行了大規(guī)模目標(biāo)檢測的相關(guān)任務(wù)。
COCO目標(biāo)檢測任務(wù)的平均精度均值(Mean average precision,mAP)。數(shù)值越高,結(jié)果越好。
下一步工作
我們知道數(shù)據(jù)增強(qiáng)可以提高預(yù)測性能,例如圖像分割,3-D感知,語音識別或音頻識別。
研究人員表示,未來的工作將研究這種方法將如何應(yīng)用于其他機(jī)器學(xué)習(xí)領(lǐng)域。
特別是希望更好地了解數(shù)據(jù)集或任務(wù)是否/何時可能需要單獨的搜索階段才能獲得最佳性能。
最后,研究人員還拋出了一個懸而未決的問題:
如何針對給定的任務(wù)定制一組轉(zhuǎn)換,進(jìn)一步提高給定模型的預(yù)測性能。
對此,你又什么想法?
傳送門
論文地址:
https://arxiv.org/pdf/1909.13719.pdf
GitHub地址:
https://github.com/tensorflow/tpu/blob/master/models/official/efficientnet/autoaugment.py