【NLP】哈工大|NLP数据增强方法?我有15种
十一假期過的太快了,不知道你們緩過來沒有,沒有的話今天我們就來一起讀一篇綜述緩緩,彌補假期沒學習的遺憾。
這篇40多頁的綜述出自哈工大車萬翔老師的團隊,一共總結了15種NLP可以用到的數據增強方法、優缺點,還有一些使用技巧,十分良心。下面就速讀一下,如果要使用的話還是建議參考原文以及其他文獻的應用細節。
論文:Data Augmentation Approaches in?Natural?Language?Processing:?A?Survey 地址:https://arxiv.org/abs/2110.01852數據增強方法
數據增強(Data Augmentation,簡稱DA),是指根據現有數據,合成新數據的一類方法。畢竟數據才是真正的效果天花板,有了更多數據后可以提升效果、增強模型泛化能力、提高魯棒性等。然而由于NLP任務天生的難度,類似CV的裁剪方法可能會改變語義,既要保證數據質量又要保證多樣性,使得大家在做數據增強時十分謹慎。
作者根據生成樣本的多樣性程度,將DA方法分為了以下三種:
Paraphrasing:對句子中的詞、短語、句子結構做一些更改,保留原始的語義
Noising:在保證label不變的同時,增加一些離散或連續的噪聲,對語義的影響不大
Sampling:旨在根據目前的數據分布選取新的樣本,會生成更多樣的數據
Paraphrasing
這類方法根據替換的成分不同,又可以分為詞、短語、句子級別。作者共總結了6種方法:
Thesaurus:利用詞典、知識圖譜等外部數據,隨機將非停用詞替換成同義詞或上位詞,如果增加多樣性的話還可以替換成相同詞性的其他詞
Semantic Embeddings:利用語義向量,將詞或短語替換成相近的(不一定是同義詞)。由于每個詞都有語義表示,可替換的范圍更大。而上一種方法只能替換圖譜里的
MLMs:利用BERT等模型,隨機mask掉一些成分后生成新的
Rules:利用一些規則,例如縮寫、動詞變位、否定等,對句子一些成分進行改寫,比如把 is not 變成 isn't
Machine Translation:分為兩種,Back-translation指把句子翻譯成其他語言再翻譯回來,Unidirectional Translation指在跨語言任務中,把句子翻譯成其他語言
Model Generation:利用Seq2Seq模型生成語義一致的句子
作者還貼心地整理了上述方法的優缺點。其中「歧義」主要是指有些多義詞在不同場景下意思不一樣,比如「我每天吃一個蘋果」,替換成「我每天吃一個iphone」就不合適了。
P.S. 作者寫的Strong application我沒有太懂,個人覺得可以理解為應用效果好,如果有不同解讀可以留言哈。
Noising
人在讀文本時對噪聲是免疫的,比如單詞亂序、錯別字等?;谶@個思想,可以給數據增加些噪聲來提升模型魯棒性。
作者給出了以上5種增加噪聲的方法:
Swapping:除了交換詞之外,在分類任務中也可以交換instance或者sentence
Deletion:可以根據tf-idf等詞的重要程度進行刪除
Insertion:可以把同義詞隨機插入句子中
Substitution:把一些詞隨機替換成其他詞(非同義),模擬misspelling的場景。為了避免改變label,可以使用label-independent的詞,或者利用訓練數據中的其他句子
Mixup:這個方法最近兩年比較火,把句子表示和標簽分別以一定權重融合,引入連續噪聲,可以生成不同label之間的數據,但可解釋性較差
總的來說,引入噪聲的DA方法使用簡單,但會對句子結構和語義造成影響,多樣性有限,主要還是提升魯棒性。
這里我私下多加幾個沒提到的,也是我們在做ConSERT
對抗樣本
Dropout:也是SimCSE用到的,還有R-drop,都是通過dropout來加入連續噪聲
Feature Cut-off:比如BERT的向量都是768維,可以隨機把一些維度置為0,這個效果也不錯
Sampling
Sampling是指從數據分布中采樣出新的樣本,不同于較通用的paraphrasing,采樣更依賴任務,需要在保證數據可靠性的同時增加更多多樣性,比前兩個數據增強方法更難。作者整理了4種方法:
Rules:用規則定義新的樣本和label,比如把句子中的主謂進行變換
Seq2Seq Models:根據輸入和label生成新的句子,比如在NLI任務中,有研究者先為每個label(entailment,contradiction,neutral)訓一個生成模型,再給定新的句子,生成對應label的。對比之下,paraphrasing主要是根據當前訓練樣本進行復述
Language Models:給定label,利用語言模型生成樣本,有點像前陣子看的谷歌UDG。有些研究會加個判別模型過濾
Self-training:先有監督訓練一個模型,再給無監督數據打一些標簽,有點蒸餾的感覺
作者依舊貼心地給出了4中方法的優點和局限:
使用技巧
方法選擇
作者給出了這些方法在6個維度的對比,大家可以更好地體會他們的區別和適用場景。其中Level表示DA方法會增強的部分:t=text, e=embedding, l=label,Granularity表示增強的粒度:w=word, p=phrase, s=sentence。
Method Stacking
實際應用時可以應用多種方法、或者一種方法的不同粒度。
作者推薦了兩款工具:
Easy?DA:?https://github.com/jasonwei20/eda_nlp Unsupervised DA:https://github.com/google-research/uda同時我搜索了一下github又發現了兩個寶藏:
英文:https://github.com/makcedward/nlpaug 中文:https://github.com/zhanlaoban/eda_nlp_for_ChineseOptimization
第一,在使用增強的數據時,如果數據質量不高,可以先讓模型在增強后的數據上pre-train,之后再用有標注數據訓練。如果要一起訓練,在增強數據量過大的情況下,可以對原始訓練數據過采樣
第二,在進行數據增強時注意這些超參數的調整:
第三,其實增強很多簡單數據的提升有限,可以注重困難樣本的生成。比如有研究加入對抗訓練、強化學習、在loss上下文章等。如果用生成方法做數據增強,也可以在生成模型上做功夫,提升數據多樣性。
第四,如果生成錯數據可能引入更多噪聲,可以增加其他模型對準確性進行過濾。
最后,作者列舉了其他研究的數據增強應用場景,大家在落地時可以借鑒:
總結
數據增強算是很接地氣的研究了,少樣本、領域遷移是每個NLPer都會遇到的問題,而在數據上做文章可能比其他模型改動的方法更為有效。同時從這篇綜述也可以看到,數據增強其實可以做得很fancy,還不影響線上速度,比如我之前就用T5和ELECTRA做過數據增強,都有一些效果,可謂低調而不失奢華,典雅而不失大氣,深度拿捏得穩穩的。
那今天就這樣,祝大家早日從假期綜合癥緩過來,高歌猛進沖刺完2021。
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載黃海廣老師《機器學習課程》視頻課黃海廣老師《機器學習課程》711頁完整版課件本站qq群554839127,加入微信群請掃碼:
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的【NLP】哈工大|NLP数据增强方法?我有15种的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搜狐视频开放平台的申请使用方法
- 下一篇: 如何用U盘之家U盘启动盘制作工具实现U盘