深度學習領域的資料增強

AIBigbull2050發表於2020-03-13

什麼是資料增強

資料增強(Data Augmentation)是一種通過讓有限的資料產生更多的等價資料來人工擴充套件訓練資料集的技術。它是克服訓練資料不足的有效手段,目前在深度學習的各個領域中應用廣泛。但是由於生成的資料與真實資料之間的差異,也不可避免地帶來了噪聲問題。

為什麼需要資料增強

深度神經網路在許多工中表現良好,但這些網路通常需要大量資料才能避免過度擬合。遺憾的是,許多場景無法獲得大量資料,例如醫學影像分析。資料增強技術的存在是為了解決這個問題,這是針對有限資料問題的解決方案。資料增強一套技術,可提高訓練資料集的大小和質量,以便您可以使用它們來構建更好的深度學習模型。 在計算視覺領域,生成增強影像相對容易。即使引入噪聲或裁剪影像的一部分,模型仍可以對影像進行分類,資料增強有一系列簡單有效的方法可供選擇,有一些機器學習庫來進行計算視覺領域的資料增強,比如:imgaug (https://github.com/aleju/imgaug)它封裝了很多資料增強演算法,給開發者提供了方便。 但是在自然語言處理領域中,由於自然語言本身是離散的抽象符號,微小的變化就可能會導致含義的巨大偏差,所以資料增強演算法並不常用。很多自然語言處理任務在真正落地的時候,往往會遇到資料量不足的問題,自然語言的資料增強演算法值得我們深入研究。接下來我們先介紹計算視覺領域的資料增強方法,再介紹自然語言處理領域的資料增強演算法,希望能對大家有所啟發。

計算視覺資料增強

計算視覺領域的資料增強演算法大致可以分為兩類:第一類是基於基本影像處理技術的資料增強,第二個類別是基於深度學習的資料增強演算法。

下面先介紹基於基本影像處理技術的資料增強方法:

  • 幾何變換(Geometric Transformations):由於訓練集與測試集合中可能存在潛在的位置偏差,使得模型在測試集中很難達到訓練集中的效果,幾何變換可以有效地克服訓練資料中存在的位置偏差,而且易於實現,許多影像處理庫都包含這個功能。

  • 顏色變換(Color Space):圖片在輸入計算機之前,通常會被編碼為張量(高度×寬度×顏色通道),所以可以在色彩通道空間進行資料增強,比如將某種顏色通道關閉,或者改變亮度值。

  • 旋轉 | 反射變換(Rotation/Reflection):選擇一個角度,左右旋轉影像,可以改變影像內容朝向。關於旋轉角度需要慎重考慮,角度太大或者太小都不合適,適宜的角度是1度 到 20度。

  • 噪聲注入(Noise Injection):從高斯分佈中取樣出的隨機值矩陣加入到影像的RGB畫素中,通過向影像新增噪點可以幫助CNN學習更強大的功能。

  • 核心過濾器(Kernel Filters):核心濾鏡是在影像處理中一種非常流行的技術,比如銳化和模糊。將特定功能的核心濾鏡與影像進行卷積操作,就可以得到增強後的資料。直觀上,資料增強生成的影像可能會使得模型面對這種型別的影像具有更高的魯棒性。

  • 混合影像(Mix):通過平均影像畫素值將影像混合在一起是一種非常違反直覺的資料增強方法。對於人來說,混合影像生成的資料似乎沒有意義。雖然這種方法缺乏可解釋性,但是作為一種簡單有效的資料增強演算法,有一系列的工作進行相關的研究。Inoue在影像每個畫素點混合畫素值來混合影像,Summers和Dinneen又嘗試以非線性的方法來混合影像,Takahashi和Matsubara通過隨機影像裁剪和拼接來混合影像,以及後來的mixup方法均取得了不錯的成果。

  • 隨機擦除(Random Erasing):隨機擦除是Zhong等人開發的資料增強技術。他們受到Dropout機制的啟發,隨機選取圖片中的一部分,將這部分圖片刪除,這項技術可以提高模型在圖片被部分遮擋的情況下效能,除此之外還可以確保網路關注整個影像,而不只是其中的一部分。

  • 縮放變換(Zoom):影像按照一定的比例進行放大和縮小並不改變影像中的內容,可以增加模型的泛化效能。
  • 移動(Translation):向左,向右,向上或向下移動影像可以避免資料中的位置偏差,比如在人臉識別資料集合中,如果所有影像都居中,使用這種資料增強方法可以避免可能出現的位置偏差導致的錯誤。

  • 翻轉變換(Flipping):通常是關於水平或者豎直的軸進行影像翻轉操作,這種擴充是最容易實現的擴充,並且已經證明對ImageNet資料集有效。

  • 裁剪(Cropping):如果輸入資料集合的大小是變化的,裁剪可以作為資料預處理的一個手段,通過裁剪影像的中央色塊,可以得到新的資料。在實際使用過程之中,這些資料增強演算法不是隻使用一種,而是使用一套資料增強策略,在AutoAugment這篇文章中,作者嘗試讓模型自動選擇資料增強策略。

深度學習領域的資料增強

第二個類別是基於深度學習的資料增強演算法:

  • 特徵空間增強(Feature Space Augmentation):神經網路可以將影像這種高維向量對映為低維向量,之前討論的所有影像資料增強方法都應用於輸入空間中的影像。現在可以在特徵空間進行資料增強操作,例如:SMOTE演算法,它是一種流行的增強方法,通過將k個最近的鄰居合併以形成新例項來緩解類不平衡問題。

  • 對抗生成(Adversarial Training):對抗攻擊表明,影像表示的健壯性遠不及預期的健壯性,Moosavi-Dezfooli等人充分證明了這一點。對抗生成可以改善學習的決策邊界中的薄弱環節,提高模型的魯棒性。

  • 基於GAN的資料增強(GAN-based Data Augmentation):使用 GAN 生成模型來生成更多的資料,可用作解決類別不平衡問題的過取樣技術。

  • 神經風格轉換(Neural Style Transfer):通過神經網路風格遷移來生成不同風格的資料,防止模型過擬合。

如果想要閱讀更多的細節,請參考這篇文章:

https://link.springer.com/article/10.1186/s40537-019-0197-0

自然語言處理資料增強

自然語言處理領域,被驗證為有效的資料增強演算法相對要少很多,下面我們介紹幾種常見方法。

  • 同義詞詞典(Thesaurus):Zhang Xiang等人提出了Character-level Convolutional Networks for Text Classification,通過實驗,他們發現可以將單詞替換為它的同義詞進行資料增強,這種同義詞替換的方法可以在很短的時間內生成大量的資料。

  • 隨機插入(Randomly Insert):隨機選擇一個單詞,選擇它的一個同義詞,插入原句子中的隨機位置,舉一個例子:“我愛中國” —> “喜歡我愛中國”。

  • 隨機交換(Randomly Swap):隨機選擇一對單詞,交換位置。

  • 隨機刪除(Randomly Delete):隨機刪除句子中的單詞。

  • 語法樹結構替換:通過語法樹結構,精準地替換單詞。

  • 加噪(NoiseMix) (https://github.com/noisemix/noisemix):類似於影像領域的加噪,NoiseMix提供9種單詞級別和2種句子級別的擾動來生成更多的句子,例如:這是一本很棒的書,但是他們的運送太慢了。->這是本很棒的書,但是運送太慢了。

  • 情境增強(Contextual Augmentation):這種資料增強演算法是用於文字分類任務的獨立於域的資料擴充。通過用標籤條件的雙向語言模型預測的其他單詞替換單詞,可以增強監督資料集中的文字。

  • 生成對抗網路:利用生成對抗網路的方法來生成和原資料同分布的資料,來製造更多的資料。在自然語言處理領域,有很多關於生成對抗網路的工作:

    • Generating Text via Adversarial Training

    • GANS for Sequences of Discrete Elements with the Gumbel-softmax Distribution

    • SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient
  • 回譯技術(Back Translation):回譯技術是NLP在機器翻譯中經常使用的一個資料增強的方法。其本質就是快速產生一些翻譯結果達到增加資料的目的。回譯的方法可以增加文字資料的多樣性,相比替換詞來說,有時可以改變句法結構等,並保留語義資訊。但是,回譯的方法產生的資料嚴重依賴於翻譯的質量。
  • 擴句-縮句-句法:先將句子壓縮,得到句子的縮寫,然後再擴寫,通過這種方法生成的句子和原句子具有相似的結構,但是可能會帶來語義資訊的損失。
  • 無監督資料擴增(Unsupervised Data Augmentation):通常的資料增強演算法都是為有監督任務服務,這個方法是針對無監督學習任務進行資料增強的演算法,UDA方法生成無監督資料與原始無監督資料具備分佈的一致性,而以前的方法通常只是應用高斯噪聲和Dropout噪聲(無法保證一致性)。(https://arxiv.org/abs/1904.12848)

哈工大SCIR近年來在資料增強領域發表了若干論文,例如我中心主任劉挺教授在2017年ACL會議中提出一種簡單而新穎的方法來自動生成零指代消解的大規模偽資料[12]。侯宇泰等人於2018年COLING會議中提出了對話語義理解的序列到序列資料增強,相比之前的工作,在生成新語句時不考慮語句間關係,他們利用訓練資料中與一個語句具有相同語義的其他句子,提出了基於序列到序列生成的資料增強框架[13]。朱海潮等人提出一種資料增強演算法來提升模型判斷問題是否是可回答的問題的能力[14]。

此外,這個倉庫(https://github.com/quincyliang/nlp-data-augmentation)中介紹了一些自然語言處理中的資料增強技術。

總結

資料增強是增大資料規模,減輕模型過擬合的有效方法,但是,資料增強不能保證總是有利的。在資料非常有限的域中,這可能導致進一步過度擬合。因此,重要的是要考慮搜尋演算法來推導增強資料的最佳子集,以便訓練深度學習模型。

雖然相比於計算視覺,自然語言處理領域中的資料增強應用更少,難度也要更大,但是同時也意味著更大的機遇。

參考文獻

[1] Zhang, X., Zhao, J., & LeCun, Y. (2015). Character-level convolutional networks for text classification. In Advances in neural information processing systems (pp. 649-657).

[2] Shorten, C., & Khoshgoftaar, T. M. (2019). A survey on image data augmentation for deep learning. Journal of Big Data, 6(1), 60.

[3] Jung, A. (2015). Image augmentation for machine learning experiments.

[4] DeVries, T., & Taylor, G. W. (2017). Dataset augmentation in feature space. arXiv preprint arXiv:1702.05538.

[5] Xie, Q., Dai. Z., Hovy. E,. Luong. M., & Le. Q. (2019). Unsupervised Data Augmentation for Consistency Training. arXiv preprint arXiv:1904.12848.

[6] Chawla, N. V., Bowyer, K. W., Hall, L. O., & Kegelmeyer, W. P. (2002). SMOTE: synthetic minority over-sampling technique. Journal of artificial intelligence research, 16, 321-357.

[7] Berthelot, D., Carlini, N., Goodfellow, I., Papernot, N., Oliver, A., & Raffel, C. (2019). Mixmatch: A holistic approach to semi-supervised learning. arXiv preprint arXiv:1905.02249.

[8] Wei, J. W., & Zou, K. (2019). Eda: Easy data augmentation techniques for boosting performance on text classification tasks. arXiv preprint arXiv:1901.11196.

[9] Yu, L., Zhang, W., Wang, J., & Yu, Y. (2017, February). Seqgan: Sequence generative adversarial nets with policy gradient. In Thirty-First AAAI Conference on Artificial Intelligence.

[10] Kusner, M. J., & Hernández-Lobato, J. M. (2016). Gans for sequences of discrete elements with the gumbel-softmax distribution. arXiv preprint arXiv:1611.04051.

[11] Jing, Y., Yang, Y., Feng, Z., Ye, J., Yu, Y., & Song, M. (2019). Neural style transfer: A review. IEEE transactions on visualization and computer graphics.

[12] Liu, T., Cui, Y., Yin, Q., Zhang, W., Wang, S., & Hu, G. (2016). Generating and exploiting large-scale pseudo training data for zero pronoun resolution. arXiv preprint arXiv:1606.01603.

[13] Hou, Y., Liu, Y., Che, W., & Liu, T. (2018). Sequence-to-sequence data augmentation for dialogue language understanding. arXiv preprint arXiv:1807.01554.

[14] Zhu, H., Dong, L., Wei, F., Wang, W., Qin, B., & Liu, T. (2019). Learning to Ask Unanswerable Questions for Machine Reading Comprehension. arXiv preprint arXiv:1906.06045.

[15] Inoue, H. (2018). Data augmentation by pairing samples for images classification. arXiv preprint arXiv:1801.02929.

[16] Cubuk, E. D., Zoph, B., Mane, D., Vasudevan, V., & Le, Q. V. (2018). Autoaugment: Learning augmentation policies from data. arXiv preprint arXiv:1805.09501.

[17] Zhong, Z., Zheng, L., Kang, G., Li, S., & Yang, Y. (2017). Random erasing data augmentation. arXiv preprint arXiv:1708.04896.

[18] Summers, C., & Dinneen, M. J. (2019, January). Improved mixed-example data augmentation. In 2019 IEEE Winter Conference on Applications of Computer Vision (WACV) (pp. 1262-1270). IEEE.

[19] Takahashi, R., Matsubara, T., & Uehara, K. (2019). Data augmentation using random image cropping and patching for deep CNNs. IEEE Transactions on Circuits and Systems for Video Technology.

[20] Zhang, Y., Gan, Z., & Carin, L. (2016). Generating text via adversarial training. In NIPS workshop on Adversarial Training (Vol. 21).

相關文章