張倫,劉大鵬
(貴州師范大學數學科學學院,貴陽550025)
數據增廣是深度學習分類任務中常用的方法之一,主要用于增加訓練數據集的樣本,讓數據集的樣本盡可能的多樣化,使得訓練的模型具有更強的泛化能力。
機器學習需要數據增廣。大量機器學習任務,如無人駕駛汽車的目標預測、人臉識別、行人檢測、醫學圖像的分類與識別等,都需要大量的訓練數據。數據增廣是解決訓練樣本不足的主流方法之一。數據增廣技術通過對訓練數據集做一系列的隨機改變,用來產生和原數據相似但又不相同的訓練數據,從而擴大訓練數據集的規模,增加數據集的多樣性。有研究表明[27],分類任務中數據增廣提高了模型分類的準確率和泛化性。
現在深度學習更需要數據增廣。深度學習是近十年來人工智能領域取得的重要突破。2012年,Krizhevsky等人[1]設計的AlexNet(8層)卷積神經網絡在ImageNet圖像競賽中取得冠軍[2]。GoogLeNet(22層)[3]和VGG-Net(19層)是2014年ImageNet競賽的雙雄,兩類模型的共同特點是網絡結構比以往的模型層數更多。在2015年ImageNet競賽上,MSRT何凱明團隊的深度殘差網絡(Residual Networks,ResNet)[4]大方異彩,殘差網絡結構更深(達50層),分類正確率更高。隨著卷積神經網絡的結構不斷加深,網絡的參數越來越多,在有限的訓練數據集下,容易發生過擬合現象,使圖像分類的正確率下降。除通過標注增加訓練數據外,提高圖像分類正確率的方法可主要分為兩種:一種是調整網絡的結構或者改進網絡對各層特征的處理能力,例如通過改變網絡中的激活數(ReLU)[5]、引入dropout層[6]等方法來提高模型的學習能力;另外一種是通過增廣方法產生大量新的訓練樣本。
本文將從模型的第一層數據增廣和模型的中間層數據增廣兩方面對現有工作進行綜述,提出開放問題、有價值的研究方向,并展望未來通過特征數據增廣更好地提升模型能力。
本文將神經網絡模型的輸入層數據(圖像、視頻、音頻、文本,等等)看作模型第一層特征,模型中間層數據(中間各層的輸出)看做模型中間層特征。
現有的主要研究集中在對模型的第一層特征進行增廣[7-14,26],少量的工作對模型的中間層特征進行增廣[18-21]。接下來將從模型第一層特征數據增廣和模型中間層特征數據增廣兩方面分別總結。
現有工作可以主要分為人工設計和主動學習兩類增廣方法。不同數據集有著不一樣的屬性,需要人工進行設計數據增廣方法。如:在訓練階段水平翻轉圖像是CIFAR-10上的有效數據增強方法,但不是MNIST上的有效增強方法。因而,研究人員為了減少數據增廣依賴于人工的部分,設計出網絡自主學習數據增廣方法成為一種不可缺少的需求。
下面從人工設計的增廣方法和自動學習的增廣方法兩方面介紹。
(1)人工設計的增廣方法
模型輸入層的增廣方法有很多,如基于顏色變換的增廣方法,即圖像亮度、飽和度、對比度變化等的增廣;基于隨機差值增廣方法,對圖像進行裁剪、縮放;基于仿射變換的增廣方法,尺度和長寬比增強變換,對圖像進行水平、垂直翻轉或者平移變換;基于高斯噪聲的增廣方法,對圖像引入高斯噪聲或者對圖片進行模糊處理;類別不平衡數據的增廣[7]。圖像識別的常用數據增廣方法是人工手動設計的,在不同數據集上應用的數據增廣技術是不一樣的,最佳的數據增廣策略是不同數據集特有的。例如在MNIST上大多數頂級模型使用彈性扭曲[8]、縮放[9]、平移[10]和旋轉[11]。在自然圖像數據集上,如CIFAR-10和ImageNet,隨機裁剪、圖像鏡像和色彩漂移、白化更為常見[12]。文獻[26]介紹了一種新的訓練卷積神經網絡(CNN)的數據增強方法——隨機消除。在訓練中,隨機消除隨機選擇圖像中的一個矩形區域,并用隨機值覆蓋其像素。在此過程中,生成了不同遮擋水平的訓練圖像,從而降低了過度擬合的風險,使模型對遮擋具有魯棒性,隨機消除參數是學習得到的,易于實現,并可以與大多數基于CNN的識別模型集成。雖然簡單,隨機消除是常用的數據處理技術(如隨機裁剪和翻轉)組合而成,提高了在目標檢測,圖像識別的準確性。隨機消除結合一般的操作方法對性能有所提高(如:翻轉、變換等)。由于這些方法需要人工經驗,不同數據集的數據增廣方法需要專業的研究人員進行判斷,增加了工作量,增加了成本,而且比較耗時,并且模型的性能提升的比較有限。
(2)自動學習的增廣方法
代替人工操作數據增廣,降低人工成本,研究人員尋找最佳數據自動增廣策略。谷歌大腦的研究者在arXiv上發表論文,提出一種自動搜索合適數據增強策略的方法AutoAugment[13],該方法創建一個數據增強策略的搜索空間,利用搜索算法選取適合的數據增強策略。此外,從一個數據集中學到的策略能夠很好地遷移到其他相似的數據集上。AutoAugment對性能提高貢獻是很大的,但是由于選擇參數多,造成的運算量大,且比較耗時,自動化搜索是對每一個小的代理任務進行單獨搜索,它的結果可能被轉移到一個更大的目標任務中,這個方法不是最優的。所以AutoAugment有兩大缺點:一是大規模的采用這樣的方法會增加訓練復雜度、加大計算成本;二是無法根據模型或數據集大小調整正則化強度。于是谷歌大腦團隊又提出了一種數據增強的方法——RandAugment,主要思想是隨機選擇變換,調整它們的大小。改進的關鍵問題是單獨搜索,所以研究人員的目標就是消除AutoAugment數據增強過程中對單獨搜索的需求。由于AutoAugment的參數多,研究團隊要大幅度減少數據增強的參數空間,為了減少參數空間和同時保持數據(圖像)的多樣性,故采用無參數過程替代了學習的策略和概率。RandAugment[14]更好完善了AutoAugment的耗時,單獨搜索的缺點,正確率也提升了。自動數據增廣方法代替了人工工作,而且提高了模型性能,具有很大的貢獻。但是由于AutoAugment、RandAugment對數據增廣方法的隨機性,所構成的增廣策略很多,比較耗時,這些工作是在數據空間中進行的研究。
有研究表明[15-16],在訓練的過程中數據流沿著網絡逐層傳播時,對模型的中層特征進行增廣比對輸入層特征增廣更有效。
部分研究工作[17-19]在特征空間中采用生成模型(通過算法找到樣本數據的概率分布)生成數據。這類方法優點是收斂速度快速,如當樣本數量較多時,能更快地收斂于真實模型,缺點是復雜,計算量大,在訓練過程中耗時,有時候原數據與生成的數據有較大差異,可信度并不是很高。
在實際應用中,適用于一個數據集上的增廣方法,換到另外一個數據集上,效果并不是很好[20-21,30-31],需要有專家必須參與。因此有研究工作[22,25,29]對具有通用性的增廣方法(有的作者并沒有意識到其工作也是一種增廣方法)進行了研究。
接下來從基于GAN的增廣方法、非通用性的一般增廣方法和有通用性的一般增廣方法三個方面介紹。
(1)基于GAN的增廣方法
很多時候研究人員在處理數據時,會遇到數據不足的情況,這時研究人員會考慮使用生成模型(通過算法找到樣本數據的概率分布)生成數據。GAN[17]提出了一個通過對抗過程估計生成模型的新框架,在新的框架中同時訓練兩個模型:一個用來捕獲數據分布的生成模型G,和一個用來估計樣本來自訓練數據而不是G概率的判別模型D,G的訓練過程是最大化D產生錯誤的概率。但是GAN不適合處理離散形式的數據,而且存在訓練不穩定、梯度消失、模式奔潰的問題。最終會導致結果缺少一些信息特征。VAE[18]原來生成模型的下界,難用傳統的梯度下降方法計算,所以選用了隨機梯度下降,提出了生成模型可以解決復雜的后驗分布計算難的問題。論文通過重參數技巧構建了隨機梯度的優化方式,將神經網絡與概率圖模型相結合,利用高斯分布讓后驗估計能夠產生有效的數據。生成隨機網絡(GSN)[19]由兩個條件概率分布參數化,是去躁自編碼器的推廣,除可見變量(通常表示為x)之外,在生成馬爾科夫鏈中還包括潛變量h。它提出之初被用于對觀察數據x的概率分布P(x)進行隱式建模。以上這幾種網絡都可以看著是特征空間的數據增廣,通過模型參數進行調整獲得新數據,但增加了計算量。
(2)非通用性的一般增廣方法
2016年在arXiv發表的論文[20]采用SMOTE:合成少數類過采樣技術,對少數類樣本進行分析并根據少數類樣本人工合成新樣本添加到數據集中;DBSMOTE:在SMOTE基礎上通過種子樣本與少數類樣本的中心距離,構造新樣本分布函數。在模型中間層對特征進行增廣,最后結果不是很理想,論文不好的原因是沒有考慮到增加特征空間的多樣性,用在不同數據集上的效果不佳。數據增廣是通過對訓練數據的變換來生成樣本的過程,文獻[30]提出在模型中間層用一種新的自動適應算法來挑選用于數據增廣的樣本變換。自動適應算法也只是在兩個數據集上做了實驗,只比隨機變換的方法好一點。為了更好地識別被遮擋和變形的物體,文獻[31]采用生成對抗網絡進行數據增廣的訓練方法,直接在特征空間對數據集進行遮擋和變形。卷積神經網絡下采樣操作過程不能保留輸入的全部特征,文獻[32]提出并行網格池(PGP)替代下采樣操作,PGP不丟棄任何特征,可以看著是特征空間數據增廣的補充。在研究特征空間中的數據增廣問題[21],提出了一種新的結構,即特征遷移網絡(FATTEN)。FATTEN中外觀參數和位姿參數是為了生成新的特征,兩個參數平衡訓練,對生成的特征是有益的。以上工作都是模型中間層的數據集增廣,一種增廣技術在不能在多個數據集上表現良好的性能,沒有考慮到數據集自身的特性(如:文獻[30]只是考慮遮擋和變形的情況,如果數據集沒有遮擋或者形變,這樣會降低模型分類正確率)。
(3)有通用性的一般增廣方法
增加數據集的多樣性,離不開數據增廣方法,而數據增廣方法的通用性具有重要的意義。考慮在數據中同一類別做數據增廣,文獻[28]提出了在特征空間中兩個同類數據集做內插的數據增廣技術(內插:在兩個類樣本之間生成新的樣本)。文獻[29]進一步在文獻[28]上提出了在特征空間中兩個同類數據集做外插的數據增廣技術(外插:在兩個類樣本之外生成新樣本)。在機器學習的模型中,如果模型的參數太多,而訓練樣本又太少,訓練出來的模型很容易產生過擬合的現象。如果模型過擬合,那么得到的模型幾乎不能用。訓練樣本少的問題可以使用數據增廣方法解決。Dropout[22-24]可以在模型訓練中防止過擬合,Dropout是指:在向前傳播的時候,讓某個神經元的激活值以一定的概率停止工作,這樣可以使模型的泛化增強。Dropout的工作可以看做是數據增廣,而且可以用在不同數據集上,具有通用性。但是Dropout一定概率丟棄特征,如果丟棄的是數據集主要特征,對于模型的貢獻將會降低。Disout[25]是一種通過研究特征圖擾動來增強深度神經網絡的泛化能力的方法,根據網絡中間層的Rademacher復雜度(ERC),確定給定深度神經網絡的泛化誤差上界,并將擾動引入特征圖,來降低網絡的Rademacher復雜度,從而提高其泛化能力。Disout保留了原有的主要特征進行訓練,在模型訓練過程中,這是一種數據增廣技術。在各種數據集上的性能取得了不錯的效果。數據增廣方法的局限性,一種增廣技術往往適合一種數據集的增廣,不能在多個數據集上通用。需要人工分析,人工操作,增加了人工成本。研究人員在尋找數據增廣技術的通用性而努力。
在神經網絡訓練的過程中,對數據量的需求很大,所以考慮對數據進行增廣,傳統的數據增廣需要人工經驗,這樣就增加了時間和成本,目前有相關工作選擇最佳的增廣方法應用于不同數據集。但是還有很多地方需要繼續研究:①在模型中間層尋找應用于不同數據集的最佳數據增廣方法,目前是研究的熱點;②對于模型中間層數據增廣,主要是增加特征空間的多樣性,增加的特征對于模型性能提升還需要進一步研究;③在模型中間層增廣方法結合強化學習,目前沒有人去做相關的工作,模型中間層數據增廣方法結合強化學習會對模型的分類有益。