深度學習領域的數據增強

2021-02-08 機器學習算法與自然語言處理

作者:哈工大SCIR 張寧


什麼是數據增強

數據增強(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):這種數據增強算法是用於文本分類任務的獨立於域的數據擴充。通過用標籤條件的雙向語言模型預測的其他單詞替換單詞,可以增強監督數據集中的文本。

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

回譯技術(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).


本期責任編輯:張偉男

本期編輯:顧宇軒


下載1:四件套

在機器學習算法與自然語言處理公眾號後臺回復「四件套」

即可獲取學習TensorFlow,Pytorch,機器學習,深度學習四件套!


下載2:倉庫地址共享

在機器學習算法與自然語言處理公眾號後臺回復「代碼」

即可獲取195篇NAACL+295篇ACL2019有代碼開源的論文。開源地址如下:https://github.com/yizhen20133868/NLP-Conferences-Code


重磅!機器學習算法與自然語言處理交流群已正式成立

群內有大量資源,歡迎大家進群學習!


額外贈送福利資源!深度學習與神經網絡,pytorch官方中文教程,利用Python進行數據分析,機器學習學習筆記,pandas官方文檔中文版,effective java(中文版)等20項福利資源

獲取方式:進入群後點開群公告即可領取下載連結

注意:請大家添加時修改備註為 [學校/公司 + 姓名 + 方向]

例如 —— 哈工大+張三+對話系統。

號主,微商請自覺繞道。謝謝!


推薦閱讀:

Tensorflow 的 NCE-Loss 的實現和 word2vec

多模態深度學習綜述:網絡結構設計和模態融合方法匯總

awesome-adversarial-machine-learning資源列表

相關焦點

  • 深度學習中常用的圖像數據增強方法-純乾貨
    微信公眾號:OpenCV學堂關注獲取更多計算機視覺與深度學習知識;覺得文章對你有用
  • 深度學習多去數據集、資料庫、機器學習等領域涉獵下
    是一家搭建基於海量數據的實時在線開放社區平臺,通過社區自主研發的100+在線深度學習模型庫和70+在線機器學習模型庫,服務數千企業和1000萬技術人員。服務前沿科技與前沿場景。積累與開放億級數據是我們的願景。藉助海量數據,分享未來價值!如何上手在線深度學習?數據太大?
  • 深度學習領域有哪些瓶頸
    Reddit網友評論道,以Yuille教授的背景,他比別人更清楚在深度學習在計算機視覺領域現狀如何,為什麼出現瓶頸。深度學習的三大瓶頸Yuille指出,深度學習雖然優於其他技術,但它不是通用的,經過數年的發展,它的瓶頸已經凸顯出來,主要有三個:需要大量標註數據深度學習能夠實現的前提是大量經過標註的數據,這使得計算機視覺領域的研究人員傾向於在數據資源豐富的領域搞研究,而不是去重要的領域搞研究。
  • 深度學習領域有哪些瓶頸?
    Reddit網友評論道,以Yuille教授的背景,他比別人更清楚在深度學習在計算機視覺領域現狀如何,為什麼出現瓶頸。深度學習的三大瓶頸Yuille指出,深度學習雖然優於其他技術,但它不是通用的,經過數年的發展,它的瓶頸已經凸顯出來,主要有三個:需要大量標註數據深度學習能夠實現的前提是大量經過標註的數據,這使得計算機視覺領域的研究人員傾向於在數據資源豐富的領域搞研究,而不是去重要的領域搞研究。
  • 深度學習必備---用Keras和直方圖均衡化---數據增強
    可能你會說:這還不簡單,遷移學習啊 soga,小夥子可以啊,不過今天我們不講它(因為我還沒實踐過)在這篇文章中,我們將討論並解決此問題:接下來我會從這四方面來討論解決數據不足的問題1.圖像增強:它是啥(四聲)?它為什麼如此重要?深度神經網絡,尤其是卷積神經網絡(CNN),尤其擅長圖像分類任務。
  • TensorFlow:深度學習領域的工業標準
    機器學習和深度學習是公認的未來方向,在這個領域裡,開源項目 TensorFlow 正在像大數據領域的 Hadoop 一樣,逐漸成為 AI 領域的工業標準。當年阿爾法狗一戰成名,擊敗李世石,後來化身 Master,敗盡天下英雄,一眾圍棋頂尖高手束手無策,阿爾法狗頗有一點獨孤求敗的意思,而阿爾法狗的算法訓練就是由 TensorFlow 完成的。
  • 一文全覽深度學習在計算機視覺領域的應用
    已經是很熱的深度學習,大家都看到不少精彩的故事,我就不一一重複。簡單的回顧的話,2006年Geoffrey Hinton的論文點燃了「這把火」,現在已經有不少人開始潑「冷水」了,主要是AI泡沫太大,而且深度學習不是包治百病的藥方。計算機視覺不是深度學習最早看到突破的領域,真正讓大家大吃一驚的顛覆傳統方法的應用領域是語音識別,做出來的公司是微軟,而不是當時如日中天的谷歌。
  • 深度學習:從入門到精通 | 第1章:深度學習簡介
    深度學習作為機器學習的一個分支領域,近幾年受到了越來越多的關注,本章將以平白生動的語言,幫助對於深度學習既好奇又恐懼的讀者,揭開深度學習的神秘面紗,讓讀者對於深度學習的定義、發展歷程、實踐應用有一個初步而清晰的理解。首先,本章廓清了深度學習與人工智慧、機器學習以及回歸分析之間的區別與聯繫。什麼是機器學習?什麼又是深度學習?
  • ​Nature:數據驅動地球系統科學的深度學習與過程理解
    2019年,德國馬克斯普朗克研究所、美國勞倫斯伯克利實驗室等機構的研究者,合作發表於 Nature, 題為
  • 【深度學習】深度學習經典數據集匯總
    深度學習筆記很多朋友在學習了神經網絡和深度學習之後,早已迫不及待要開始動手實戰了。第一個遇到的問題通常就是數據。作為個人學習和實驗來說,很難獲得像工業界那樣較高質量的貼近實際應用的大量數據集,這時候一些公開數據集往往就成了大家通往AI路上的反覆摩擦的對象。
  • 深度學習在計算機視覺領域應用一覽(附連結)
    這是一份深度學習在計算機視覺領域的超全應用預覽~簡單回顧的話,2006年Geoffrey Hinton的論文點燃了「這把火」,現在已經有不少人開始潑「冷水」了,主要是AI泡沫太大,而且深度學習不是包治百病的藥方。
  • 深度學習在計算機視覺領域(包括圖像,視頻,3-D點雲,深度圖)的應用一覽
    已經是很熱的深度學習,大家都看到不少精彩的故事,我就不一一重複。簡單的回顧的話,2006年Geoffrey Hinton的論文點燃了「這把火」,現在已經有不少人開始潑「冷水」了,主要是AI泡沫太大,而且深度學習不是包治百病的藥方。計算機視覺不是深度學習最早看到突破的領域,真正讓大家大吃一驚的顛覆傳統方法的應用領域是語音識別,做出來的公司是微軟,而不是當時如日中天的谷歌。
  • 深度學習算法與架構回顧
    【導讀】深度學習正在發展,來自美國AJAY SHRESTHA等學者撰寫了深度學習算法與架構回顧綜述論文,包括深度學習算法類型與訓練方法,值得閱讀
  • Nature(2019)-地球系統科學領域的深度學習及其理解
    在這裡,主要目的並不是改進經典的機器學習算法,我們主張這些背景線索應該成為深度學習一部分(一種可以自動提取時空特徵的方法)來更深地獲取地球科學領域難題的過程理解,提升季節預報或者多時間尺度長距空間相關模擬的可預報能力,譬如,下一步將建立混合模型方法,將物理過程模式與數據驅動型機器學習的通用性耦合起來。
  • 人工智慧技術的細分領域有哪些?|深度學習|語音識別|智慧機器人...
    人工智慧技術的細分領域有哪些?  人工智慧技術應用的細分領域:深度學習、計算機視覺、智慧機器人、虛擬個人助理、自然語言處理—語音識別、自然語言處理—通用、實時語音翻譯、情境感知計算、手勢控制、視覺內容自動識別、推薦引擎等。
  • PyTorch深度學習技術生態
    地址:https://github.com/rusty1s/pytorch_geometricPyTorch3D是一款基於PyTorch將深度學習與3D進行結合的研究框架。3D數據比2D圖像更為複雜,在處理諸如Mesh R-CNN和C3DPO之類的項目時,需要用3D數據進行表示,在批處理和速度方面的諸多挑戰。
  • 打開人工智慧黑箱:看最新16篇可解釋深度學習文章,帶您了解增強AI透明性
    而可解釋性AI在關於人類的很多應用方面是必需的,如醫療診斷、教育學習、政府決策等等。最近,關於深度學習的可解釋性,學者們做了大量的研究工作,專知整理關於深度學習可解釋性的最新一些文章,希望能給讀者提供一些參考和幫助。
  • 探討人工智慧、深度學習、大數據等術語的定義
    個人計算機已經不再酷了,所有都是與「雲」、「大數據」以及「深度學習」有關的東西。這些新術語讓你困惑了?我們也是,那麼讓我們一起去重新定義這些術語,並看看他們對投資者又意味著什麼。「The cloud(雲計算)」——在這裡,這個概念並不是指購買應用然後將其安裝至你的計算機上,而是根據你的需求租賃應用並使用網際網路訪問它們。就是這樣,這就是「雲計算」。
  • 不同的領域、框架,這是一份超全的深度學習模型GitHub集合
    項目地址:https://modelzoo.co/深度學習近來是機器學習最流行的子領域,因為針對高維數據擁有強大的建模能力,它在很多不同的任務與領域都綻放了奪目的光彩,例如計算機視覺、自然語言處理與智能體學習等。深度學習模型是一種表示學習方法,即根據模型學習表示的本身,而不僅僅如同傳統機器學習那樣將表示映射到輸出。
  • 重溫深度學習領域經典大作
    深度學習已經改變了有關計算機學科的所有研究方向,現在的論文層出不窮,可是再也沒有2015年那段時間的驚豔,多的只是一群附庸之輩,我們回頭看一看深度學習驚豔了時光的論文吧……走起!這份閱讀列表的組織原則是這樣的:從全局到枝幹:從綜述類、全局性的文章到細分領域的具體論文。