是你的數據還不夠強!谷歌大腦「數據增強」開源,大神QuocLe出品

十三 發自 凹非寺
量子位 報道 | 公眾號 QbitAI

你的數據還不夠強。

玩深度學習的人都知道,AI算法大部分是數據驅動。數據的質量一定程度上決定了模型的好壞。

這就有了深度學習天生的一個短板:數據不夠多、不夠好

數據增強就是解決這一問題的有效辦法。

谷歌大腦去年提出了自動數據增強方法(AutoAugment),確實對圖像分類和目標檢測等任務帶來了益處。

但缺點也是明顯的:

1、大規模採用這樣的方法會增加訓練複雜性、加大計算成本;

2、無法根據模型或數據集大小調整正則化強度。

於是乎,谷歌大腦團隊又提出了一種數據增強的方法——RandAugment

是你的數據還不夠強!谷歌大腦「數據增強」開源,大神QuocLe出品

這個方法有多好?

是你的數據還不夠強!谷歌大腦「數據增強」開源,大神QuocLe出品

谷歌大腦高級研究科學家Barret Zoph表示:

RandAugment是一種新的數據增強方法,比AutoAugment簡單又好用。

主要思想是隨機選擇變換,調整它們的大小。

最後的實驗結果表明:

1、在ImageNet數據集上,實現了85.0%的準確率,比以前的水平提高了0.6%,比基線增強了1.0%。

2、在目標檢測方面,RandAugment能比基線增強方法提高1.0-1.3%。

值得一提的是,這項研究的通訊作者是谷歌AutoML幕後英雄的Quoc Viet Le大神。

是你的數據還不夠強!谷歌大腦「數據增強」開源,大神QuocLe出品

△Quoc Viet Le

這麼好的技術當然開源了代碼:
https://github.com/tensorflow/tpu/blob/master/models/official/efficientnet/autoaugment.py

RandAugment是怎麼做到的?

正如剛才說到的,單獨搜索是問題的關鍵點。

所以研究人員的目標就是消除數據增強過程中對單獨搜索的需求

再考慮到以往數據增強方法都包含30多個參數,團隊也將關注點轉移到了如何大幅減少數據增強的參數空間

為了減少參數空間的同時保持數據(圖像)的多樣性,研究人員用無參數過程替代了學習的策略和概率。

這些策略和概率適用於每次變換(transformation),該過程始終選擇均勻概率為1/k的變換。

也就是說,給定訓練圖像的N個變換,RandAugment就能表示KN個潛在策略。

最後,需要考慮到的一組參數是每個增強失真(augmentation distortion)的大小。

研究人員採用線性標度來表示每個轉換的強度。簡單來說,就是每次變換都在0到10的整數範圍內,其中,10表示給定變換的最大範圍。

為了進一步縮小參數空間,團隊觀察到每個轉換的學習幅度(learned magnitude)在訓練期間遵循類似的表:

是你的數據還不夠強!谷歌大腦「數據增強」開源,大神QuocLe出品

是你的數據還不夠強!谷歌大腦「數據增強」開源,大神QuocLe出品

並假設一個單一的全局失真M(global distortion M)可能就足以對所有轉換進行參數化。

這樣,生成的算法便包含兩個參數N和M,還可以用兩行Python代碼簡單表示:

是你的數據還不夠強!谷歌大腦「數據增強」開源,大神QuocLe出品

△基於numpy的RandAugment Python代碼

因為這兩個參數都是可人為解釋的,所以N和M的值越大,正則化強度就越大。

可以使用標準方法高效地進行超參數優化,但是考慮到極小的搜索空間,研究人員發現樸素網格搜索(naive grid search)是非常有效的。

實驗結果

在實驗部分,主要圍繞圖像分類目標檢測展開。

研究人員較為關注的數據集包括:CIFAR-10、CIFAR-100、SVHN、ImageNet以及COCO。

這樣就可以與之前的工作做比較,證明RandAugment在數據增強方面的優勢。

數據增強的一個前提是構建一個小的代理任務(proxy task),這個任務可以反映一個較大的任務。

研究人員挑戰了這樣一個假設:

用小型proxy task來描述問題適合於學習數據的增強。

特別地,從兩個獨立的維度來探討這個問題,這兩個維度通常被限制為實現小型proxy task:模型大小和數據集大小。

為了探究這一假設,研究人員系統地測量了數據增強策略對CIFAR-10的影響。結果如下圖所示:

是你的數據還不夠強!谷歌大腦「數據增強」開源,大神QuocLe出品

△最優增強量取決於模型和訓練集的大小。

其中:

圖(a)表示Wide-ResNet-28-2,Wide-ResNet-28-7和Wide-ResNet-28-10在各種失真幅度(distortion magnitude)下的精度。

圖(b)表示在7種Wide-ResNet-28架構中,隨著變寬參數(k)的變化,所產生的最佳失真幅度。

圖(c)表示Wide-ResNet-28-10的三種訓練集大小(1K,4K和10K)在各種失真幅度上的準確性。

圖(d)在8個訓練集大小上的最佳失真幅度。

是你的數據還不夠強!谷歌大腦「數據增強」開源,大神QuocLe出品

△在CIFAR-10、CIFAR-100、SVHN(core set)和SVHN上的測試精度(%)。

其中,baseline是默認的數據增強方法。

PBA:Population Based Augmentation;
Fast AA:Fast AutoAugment;
AA:AutoAugment;
RA:RandAugment。

但值得注意點的是,改進CIFAR-10和SVHN模型的數據增強方法並不總是適用於ImageNet等大規模任務。

同樣地,AutoAugment在ImageNet上的性能提升也不如其他任務。

下表比較了在ImageNet上RandAugment和其他增強方法的性能。

是你的數據還不夠強!谷歌大腦「數據增強」開源,大神QuocLe出品

△ImageNet結果。

在最小的模型(ResNet-50)上,RandAugment的性能與AutoAugment和Fast AutoAugment相似,但在較大的模型上,RandAugment的性能顯著優於其他方法,比基線提高了1.3%。

為了進一步測試這種方法的通用性,研究人接下來在COCO數據集上進行了大規模目標檢測的相關任務。

是你的數據還不夠強!谷歌大腦「數據增強」開源,大神QuocLe出品

△目標檢測結果。

COCO目標檢測任務的平均精度均值(Mean average precision,mAP)。數值越高,結果越好。

下一步工作

我們知道數據增強可以提高預測性能,例如圖像分割,3-D感知,語音識別或音頻識別。

研究人員表示,未來的工作將研究這種方法將如何應用於其他機器學習領域。

特別是希望更好地瞭解數據集或任務是否/何時可能需要單獨的搜索階段才能獲得最佳性能。

最後,研究人員還拋出了一個懸而未決的問題:

如何針對給定的任務定製一組轉換,進一步提高給定模型的預測性能。

對此,你又什麼想法?

傳送門

論文地址:
https://arxiv.org/pdf/1909.13719.pdf

GitHub地址:
https://github.com/tensorflow/tpu/blob/master/models/official/efficientnet/autoaugment.py

— 完 —

量子位 QbitAI · 頭條號簽約

關注我們,第一時間獲知前沿科技動態


分享到:


相關文章: