機器之心發布
作者:李漁
樣本少、分布不均衡,如何讓訓練的模型性能更優越?文本增強技術算得上一個不錯的辦法。本文介紹了熵簡科技聯合創始人李漁的一篇關於自然語言處理領域中文本增強技術的論文,重點探討了近兩年來常用的五類文本增強技術路徑以及對應的代表性技術。
目 錄
1 為什麼要了解文本增強技術
2. 典型技術方案
2.1. 回譯(Back translation)
2.2. 隨機詞替換
2.3. 非核心詞替換
2.4. 基於上下文信息的文本增強
2.5. 基於語言生成模型的文本增強
3. 新方向展望
4. 在金融領域任務的實踐16
4.1. 金融領域的 NLP 任務為什麼需要文本增強技術
4.2. 案例背景及實驗條件
4.2.1. 案例背景和數據集特點
4.2.2. 算法模型
4.3. 實驗結果及分析
4.3.1. 回譯
4.3.2. EDA
4.3.3. 基於 TF-IDF 的文本增強
4.3.4. 三類方法的對比
4.3.4. 小結
5. 總結
參考文獻
摘 要
文章系統性地回顧了自然語言處理領域中的文本增強技術在近幾年的發展情況,重點列舉和討論了 18 年、19 年中人們常用的五類文本增強技術路徑以及對應的代表性技術。接下來,文章以金融領域的自然語言處理任務入手,多維度地分析幾類通用文本數據增強技術在實際業務問題上的重要價值。文章的結論是,文本增強技術是一類低成本的數據槓桿,可以在不引入新數據下,有效撬動模型性能。
1 為什麼要了解文本增強技術
本文摘自熵簡科技 NLP 團隊的內部技術沙龍,文章系統性地回顧了自然語言處理領域中的文本增強技術在近幾年的發展情況,重點列舉和討論了 18 年、19 年中人們常用的五類文本增強技術路徑以及對應的代表性技術,希望對於大家的日常研究工作有所啟發。在第 4 節中,我們以金融資管領域的實際應用場景入手,多維度地分析了幾類通用的文本數據增強技術在實際產品研發中的作用。
在開始介紹具體方法之前,先簡單列舉一下目前自然語言處理任務中運用文本增強技術的常見場景:
(1) 少樣本場景
在少樣本場景下,能夠搜集到的樣本數目不滿足模型訓練的需求,導致模型處於欠擬合的狀態。自然而然,在現有數據基礎上,運用文本增強技術來擴充樣本集,是一件又快又省,性價比很高的事。很多研究也已經表明,這種方法可以明顯提高模型的性能 [1-3];
(2) 分類任務中樣本分布不均衡的場景
除了一些基準 benchmark,真實場景中大部分文本分類任務中的各類別樣本數目都是不均衡的,很多時候樣本數最多類別的數目可能比最少的類別高兩個數量級。這會帶來很多問題,比如模型對於小樣本類別往往處於欠擬合狀態,在實際預測時,幾乎不會對這一類別給予太高的概率。
自然,面對這樣的問題,一種常見的處理方式是針對小樣本類別,運用數據增強技術進行樣本擴充,從而降低樣本間的不均衡性,提高模型的泛化能力。這種方法也在實際中被多次證明了其有效性 [2,4];
當然,對於樣本不均衡問題,已經有很多解決方法,大家可以參考這篇 google 引用數快 1 萬的論文 [5] 及其引文。
(3) 半監督訓練場景
至少從 19 年 NLP 方向 google 出品的半監督學習算法 UDA 可以看出 [6],文本數據增強技術可以用在無標籤樣本上,以構造出半監督訓練所需的樣本對,以此讓模型從無標籤的數據中獲取到優化所需的梯度。關於半監督學習的具體進展,後面如果有時間,可以單開一篇文章介紹。
(4) 提高模型的魯棒性
數據增強技術在不嚴謹的情況下可以分為兩類,一類是在保持語義不變的情況下,變換文本的表達形式,例如接下來提到的回譯、文本複述等;另一類是,按照某種策略對原文進行局部調整,例如後面提到同義詞替換,隨機刪除等等。不論是哪種方法,都可以認為是提高了模型的魯棒性,使得模型更關注文本的語義信息,並對文本的局部噪聲不再敏感。舉個例子,「文本數據強增技術幫助可以模型對於噪聲局部不再感敏」,如果你依然能夠看明白這句話的意思,說明你對於文本局部噪聲也是不敏感的。
基於這種考慮,無論是少樣本場景還是大語料場景,文本增強技術都有助於提高模型的魯棒性,提高其泛化能力。關於這一點,深度學習領域著名的花書 [7] 的 7.4 節表達了類似的觀點。
從上面的介紹可以看出來,文本數據增強技術在自然語言處理中屬於基礎性技術,具有廣闊的應用場景,因此有必要對其進行系統性的討論。
2. 典型技術方案
2.1. 回譯(Back translation)
得益於近幾年文本翻譯領域的顯著進展、各種先進翻譯模型的開源(包括百度、google 等翻譯工具的接口開放),基於回譯(back translation)方法的文本數據增強成為了質量高又幾乎無技術門檻的通用文本增強技術。回譯方法的基本流程很簡單,利用翻譯模型將語種 1 的原始文本翻譯為語種 2 的文本表達,基於語種 2 的表達再翻譯為語種 3 的文本表達,最後再直接從語種 3 的形式翻譯回語種 1 的文本表達,此文本即是原始文本增強後的文本。當然,很多時候只採用一種中間語種也可以實現很好的增強效果。
我們利用 google 翻譯舉個例子:
原始文本為:文本數據增強技術在自然語言處理中屬於基礎性技術;翻譯為日語:テキストデータ拡張技術は、自然言語処理の基本的な技術です;日語再翻譯為英語:Text data extension technology is a basic technology of natural language processing;英語再翻譯回中文:文本數據擴展技術是自然語言處理的基本技術;可以看出來,由於 google 翻譯足夠優秀,增強前後的文本在語義上基本保持一致。因此,對於回譯這一增強技術,翻譯模型的好壞決定了數據增強的最終效果。
其中還有一些細節值得說一下:
第一,如果採用翻譯模型,可以採用 random sample 或 beam search 等策略實現成倍數的數據擴充。如果採用 google 等翻譯工具,通過更換中間語種,也可以實現 N 倍的數據擴充。
第二,目前翻譯模型對長文本輸入的支持較弱,因此在實際中,一般會將文本按照「。」等標點符號拆分為一條條句子,然後分別進行回譯操作,最後再組裝為新的文本。
說了這麼多,我們看一下回譯技術在近幾年研究報導中的實際應用情況。
據我們所知,早期人們主要將回譯技術用於神經網絡翻譯模型(NMT)的性能提升 [8,9],通過回譯可以將單語語料(monolingual data)構造成雙語語料,從而幫助模型提升性能。實驗證明,回譯可以幫助 NMT 模型帶來平均 1.7 BLEU 的性能提升,幫助 facebook 的團隊在 WMT'14 English-German 測試集上實現了當時的 SOTA 性能,更多的細節大家可以移步文獻 [9],裡面有詳細討論。
到了 2018 年,CMU 和 google brain 的團隊將回譯技術獨立出來作為一個專門的數據增強技術用來優化問答模型的性能 [10]。他們同時訓練了兩個 NMT 模型,分別是 English to French 和 French to English,用來實現回譯,如下圖所示:
最終的實驗證明,回譯技術幫助他們的模型帶了至少一個百分點的性能提升,如下圖紅框所示。我們知道,對於問答系統而言,能夠有一個百分點的提升,也是很不錯的工作。
同時,他們詳細研究了不同增強倍數以及不同採樣比例下,回譯對於模型提升的大小,如下圖所示:
對比圖中的兩個紅框部分,研究人員發現,在最佳情況下,回譯帶來的性能提升與在模型中加入 self-attention 組件帶來的提升幾乎相當。這似乎表明,挖掘數據多維度的信息和優化模型架構具有同等的重要性。
時間到了 2019 年下半年,google 團隊提出了一種可用於 NLP 任務的半監督學習算法(UDA)[6],前面已經提到過了。這篇文章本身並不複雜,主要是實驗證明了 回譯 等文本增強技術可以用於半監督學習,而且結果看起來很驚人,他們僅用了 20 條樣本作為標籤數據,就在 IMDb 數據集上實現了接近 SOTA 的性能。當然,我們覺得這裡面至少有一半的原因是算法採用的 BERT 模型原本就已經在大規模預料上學習過。關於 UDA 更具體的分析,感興趣的同學可以移步文獻 [6],這裡就不再詳細展開。
最後,再從機器學習本身來討論一下回譯技術:
第一,回譯技術的有效性本質上來源於遷移學習。通過文本增強的過程,回譯技術將翻譯模型學到的關於詞義、語法、句法等知識轉移到了新生成的樣本上,從而為當前的自然語言處理任務引入了新的信息和知識來源;
第二,回譯技術產生的新樣本如果有益,隱含著這樣一個先驗,即模型對於具有不同語言表達形式但同樣語義的輸入文本,應該具有不變性,或者應該具有相近的輸出。那麼,是否所有的 NLP 任務都具備這樣的先驗假設呢?
2.2. 隨機詞替換
此處所謂的基於隨機詞替換的數據增強方法是對一類文本數據增強方法的統稱,其基本方法類似於圖像增強技術中的隨機裁剪、圖像縮放,通常是隨機地選擇文本中一定比例的詞,並對這些詞進行同義詞替換、刪除等簡單操作,不像回譯等模型,需要外部預訓練好的模型的輔助。
19 年有研究團隊提出了一種稱為 EDA (Easy data augmentation) 的文本增強方法 [11],該方法可以認為是這一類方法的集大成者。EDA 主要包含四種操作:同義詞替換、隨機插入、隨機交換和隨機刪除。詳細說明如下:
(1) 同義詞替換 (SR):從句子中隨機選擇非停止詞。用隨機選擇的同義詞替換這些單詞;
(2) 隨機插入 (RI):隨機的找出句中某個不屬於停用詞集的詞,並求出其隨機的同義詞,將該同義詞插入句子的一個隨機位置。重複 n 次;
(3) 隨機交換 (Random Swap, RS):隨機的選擇句中兩個單詞並交換它們的位置。重複 n 次;
(4) 隨機刪除 (RD):以概率 p 隨機刪除句子中每個單詞。
下面列舉了以上四類操作的例子:
原始文本:今天天氣很好。同義詞替換 (SR):今天天氣不錯。(好 替換為 不錯)隨機插入 (RI):今天不錯天氣很好。(插入 不錯)隨機交換 (RS):今天很好天氣。(很好 和 天氣交換位置)隨機刪除 (RD):今天天氣好。(刪除 很)對於這種方法,最大的一個疑問是,經過 EDA 操作之後,文本的類別標籤(label)是否還能保持不變,畢竟這是對文本進行隨機操作。研究人員對於這個問題專門進行了實驗分析。首先,他們僅用原始訓練集 (未經過數據增強) 訓練了一個分類模型,這裡姑且稱之為「模型 A」。接下來,利用 EDA 方法對測試集進行了數據拓展。最後,將原有的測試集和拓展出的語料輸入到模型 A 中,並對模型在最後線性層的輸出進行了比較。他們發現原有測試集和拓展出的語料,在高維空間中,距離很小。二者經過 t-SNE 算法降維之後的結果對比,如下圖所示:
從上面的分析可以看出來,經過 EDA 變換之後,原始數據集一方面在原有基礎上擴展吸收了很多噪聲,擴大了數據量,同時還保持了原有的標籤,因而有效的擴大了原始樣本集的信息容量。
接下來,我們看一下 EDA 技術應用到實際問題中的效果怎麼樣。
研究人員在五項公開的文本分類數據集中進行實驗測試,為了更充分地對比,實驗中分別採用了卷積神經網絡(CNN)和循環神經網絡(RNN)作為分類模型,最終在五項任務中的平均表現如下表所示 [2.2.1]:
從上表的結果中,我們至少可以得出兩個結論:
第一:EDA 技術可以有效提到模型的泛化能力,降低泛化誤差,即使在完整數據集下,EDA 技術也可以帶來平均 0.8 個百分點的提升;
第二:數據集越小,EDA 技術對模型帶來的提升越明顯。當樣本數量只有 500 時,EDA 技術可以帶來平均 三個 百分點的提升。因此,很適合用在少樣本的場景。值得注意的是,在 EDA 技術的幫助,數據量規模僅有原數據集的 50% 時,模型性能已經超過了不使用 EDA 時在 100% 數據上的表現。
此外,在 19 年 11 月由 IBM 研究團隊發表的一項新的文本增強技術的研究中 [2],也對 EDA 技術進行了對照實驗:
其中,LAMBADA 技術為 IBM 研究團隊所提出的文本增強方法,將本文的後面部分做詳細介紹。從表中可以看出,EDA 方法在多數訓練集中的表現僅次於 IBM 最新研究成果 LAMBADA,這再次驗證了 EDA 方法的簡單有效。
關於 EDA 技術,另一個需要重點關注的問題是,在運用 EDA 技術,如何設置替換比例 和 增強的文本倍數,比如 2000 條語句應對多少數據進行隨機刪除,增加等。原文給出的建議比例如下 [11]:
其中,α是替換刪除等的比例,比如同義詞替換中,替換的單詞數 n=αL,L 是句子長度,隨機插入、隨機替換類似;Naug 是使用 EDA 方法從每一個句子拓展出的句子數量。
綜上,我們可以知道,採用 EDA 文本增強技術進行模型性能的提升,簡單而有效,尤其是在小樣本場景下。
2.3. 非核心詞替換
在上文的 EDA 技術中,對於要替換的詞是隨機選擇的,因此一種直觀感受是,如果一些重要詞被替換了,那麼增強後文本的質量會大打折扣。這一部分介紹的方法,則是為了儘量避免這一問題,所實現的詞替換技術,姑且稱之為「基於非核心詞替換的數據增強技術」。
我們最早是 google 提出 UDA 算法的那篇論文中發現的這一技術 [6],是否在更早的文獻中出現過,我們沒有再深究了,有了解的同學請留言告知。
整個技術的核心點也比較簡單,用詞典中不重要的詞去替換文本中一定比例的不重要詞,從而產生新的文本。
我們知道在信息檢索中,一般會用 TF-IDF 值來衡量一個詞對於一段文本的重要性,下面簡單介紹一下 TF-IDF 的定義:
TF(詞頻)即一個詞在文中出現的次數,統計出來就是詞頻 TF,顯而易見,一個詞在文章中出現很多次,那麼這個詞可能有著很大的作用,但如果這個詞又經常出現在其他文檔中,如「的」、「我」,那麼其重要性就要大打折扣,後者就是用 IDF 來表徵。
IDF(逆文檔頻率),一個重要性調整係數,衡量一個詞是不是常見詞。如果某個詞比較少見,但是它在這篇文章中多次出現,那麼它很可能就反映了這篇文章的特性,正是我們所需要的關鍵詞。
TF-IDF = TF×IDF,通過此公式可以有效衡量一個詞對於一段文本的重要性。當我們知道一個詞對於一個文本的重要性之後,再採用與 TF-IDF 負相關的概率去採樣文中的詞,用來決定是否要替換,這樣可以有效避免將文本中的一些關鍵詞進行錯誤替換或刪除。
UDA 論文中所提出的具體實現方式如下:
提出這一方法的原始論文並沒有單獨對這一方法進行對照實驗,而是與 回譯 技術一起來共同實現文本的增強,我們可以看一下綜合的效果。論文在六個不同的數據集進行了實驗:
實驗中,採用了四種不同的模型進行對照實驗,分別是權重隨機化的 Transformer 結構,BERT-base,BERT-large 以及在領域內微調過的 BERT-large,表中的數值是在測試集上的誤差。從表中可知,在經過 非核心詞替換 以及 回譯 的文本增強之後,模型在實驗各個數據集中基本都取得較大提高。
上圖展示了不同含標籤數據量下,模型利用 UDA 算法框架和兩種數據增強方法可以實現的最佳性能。關於文本增強技術,從圖中可以間接驗證一個重要判斷:無論在少樣本下還是大樣本場景,文本增強技術的運用可以幫助模型在原始樣本集的基礎上進一步提高性能。
遺憾地是,論文沒有對基於 TF-IDF 替換的文本增強技術的效果進行單獨研究,或許團隊內部實驗過,但沒有放在論文中。本文的姊妹篇 文本增強技術在金融領域的應用實踐,單獨對這一技術的效果進行了對照實驗,感興趣的同學可以參考。
最後再針對 UDA 這篇論文所涉及的文本增強技術討論兩點:
第一,在 UDA 的這篇研究中,研究人員僅僅用到了詞替換的操作,並沒有將 EDA 中其他三項操作加入進來,如刪除、交換位置等等,這可以作為後續的研究方向之一。
第二,相對於 UDA 技術,這一技術額外的操作是引入了 TF-IDF 來衡量一個詞對於一個句子的重要性,本質上可以認為是在 EDA 的基礎上引入了強的先驗知識,再根據確定好的關鍵詞替換同義詞,避免無用數據和錯誤數據的產生。
2.4. 基於上下文信息的文本增強
基於上下文信息的文本增強技術在原理上也很直觀:首先需要一個訓練好的語言模型(LM),對於需要增強的原始文本,隨機去掉文中的一個詞或字(這取決於語言模型支持字還是詞)。接下來,將文本的剩餘部分輸入語言模型,選擇語言模型所預測的 top k 個詞去替換原文中被去掉的詞,以形成 k 條新的文本。這裡列舉兩個近兩年的代表工作。
一個是日本 Preferred Networks 公司在 2018 年提出的基於雙向 LM 的上下文文本增強技術 [12]。整個框架如下:
相對於一般的雙向 LM,在這個方案中,為了保證文本變換之後的標籤不變(例如對於表示情感極性的文本,變換之後不會從積極變為消極),研究人員在 LM 隱層中加入了文本的標籤信息,從而保證產生的文本與原始本文具有相同的標籤屬性。
研究人員在五個分類任務中測試了這個方法的效果,結果如下:
從上圖可以看出,本文提出的方法相對於同義詞替換的方法,能夠帶來 0.5 左右的提升。但是,針對是否應該加入標籤信息這個問題。從實驗中可以看出,加入標籤信息之後帶來了約 0.2 個百分點的泛化誤差的降低,這個差值基本在泛化誤差的波動範圍之內,因此是否有明顯效果是存疑的。
另一篇研究報導來自於國內的中科院 [13],是 19 年發表的成果。整體的思路與上面的方案類似,主要的區別是將雙向 LM 替換為了 BERT,並同樣對 BERT 進行了微調,引入了原始文本的標籤信息,以保證新產生的樣本具有與原始樣本相同的標籤屬性。實驗結果如下:
從實驗中至少看出兩點:
第一點,基於 BERT 的上下文增強技術可以帶來明顯的模型性能提升,平均能夠提高接近兩個百分點,這還是很吸引人的。
第二點,將原始原始文本的標籤信息帶入 BERT(w/C-BERT)相對於不帶入的情況(w/BERT)確實能夠帶來較為顯著的模型增益。
由於 BERT 模型已經開源,大家在平常工作和研究中也用的很多,因此從實用價值來說,這篇文章相對於前一篇文章 [12] 的參考意義更大一些。從上面的實驗可以看出,即使不對 BERT 做任何改造,直接套用過來,也可以帶來至少 1 個百分點的模型性能提升。
2.5. 基於語言生成模型的文本增強
利用語言生成模型進行文本增強是一大類方法,已經報導了多種實現方式 [14-16],19 年之前的研究工作一般是針對特定任務在 RNN 架構基礎上衍生出的文本增強技術。直到 19 年前後,GPT 和 GPT-2 模型橫空出世,在文本生成任務上的效果極其驚人,以至於 OpenAI 當時不敢放出 GPT-2 完整版的模型參數。
關於 GPT 模型的詳細介紹,大家可以參考 OpenAI 的相關文獻 [17,18]。至於中文相關的資料,大家可以參考張俊林老師在知乎上的文章:https://zhuanlan.zhihu.com/p/56865533。本文就不再做詳細介紹。
GPT 作為一個在海量語料上預訓練過的通用語言生成模型,人們自然會想到拿它來實現文本增強相關的工作。
前面已經提到,IBM 的研究團隊在 19 年 11 月提出了一種基於 GPT 架構的文本增強技術,他們稱之為 LAMBDA (language-model-based data augmentation)[2]。具體方法如下:
LAMBADA 首先在大量文本上進行了預訓練,使模型能夠捕獲語言的結構,從而能產生連貫的句子。然後在不同任務的少量數據集上對模型進行微調,並使用微調後的模型生成新的句子。最後在相同的小型數據集上訓練分類器,並進行過濾,保證現有的小型數據集和新生成數據集有相近的分布。
為了充分驗證 LAMBADA 技術的性能,研究人員進行了兩大類實驗。
實驗一:將 LAMBADA 技術運用在了三種不同數據集上,並採用三種不同的模型架構(BERT、LSTM、SVM)進行對照實驗,結果如下:
其中,Baseline 指的是僅採用原始數據集進行訓練時的模型。從表中可以看出,LAMBADA 技術相對於 baseline 在三種數據集下都可以帶來性能提升。尤其是對於 ATIS 數據集,相對 baseline 的性能提升超過了 50%,原論文中給出的說法是,ATIS 數據具有明顯的分布不均衡性,而 LAMBADA 技術可以有效彌補原數據集的不均衡性。
實驗二:將 LAMBADA 技術與當前其他主流的數據增強技術進行了比較(竟然沒有比較 回譯):
其中,EDA 和 CBERT 在前文中都已經做了詳細介紹。從圖中可以看出,LAMBADA 技術的優勢還是很明顯的。如果採用 BERT 作為模型架構,那麼相對於其他文本增強算法,至少可以提升 1.2 個百分點;在 ATIS 數據集上,更是比第二名提高了 13 個百分點。同樣地,在 SVM 和 LSTM 上,除了個別數據及上的表現略差於 EDA,LAMBADA 技術仍然是一枝獨秀。其實很好奇,如果將 回譯 技術也納入比較會是什麼樣的情況。
總而言之,至少從論文中的實驗來看,LAMBADA 技術可以視為當前最優秀的文本增強技術之一。LAMBADA 技術後續還有很多可以挖掘的地方,比如與前面提到的 UDA 框架結合,用實現少樣本下的半監督學習。或者像論文原作者提到的那樣,未來他們將嘗試將此技術用於 zero-shot learning。
3. 新方向展望
(1)文本風格遷移
在 CV 領域,圖像風格遷移在前兩年研究較多,相信大家也體驗過在手機 app 上,一鍵將普通照片轉換為梵谷風格的畫。對於人眼來說,變換前後的照片雖然風格變化很大,但是上面的人物或動物實體仍然是可以識別出來的。換言之,風格遷移也可以看作是一次圖像數據增強(augmentation)。
沿著這個思路,如果在 NLP 領域也有成熟且通用的語言風格遷移算法,那麼自然也可以用來做文本數據增強。其實,回譯 就有一點文本風格遷移的意思,但是屬於風格不可控的文本轉換。在這方面,近兩年已經有一些代表工作,但目前還有看到把相關算法用於文本數據增強的研究報導,感興趣的同學可以詳細參考文獻 [19,20]。
4. 在金融領域任務的實踐
文章到這裡,其實還有留下兩個問題:
第一,我們團隊為什麼會如此關注文本增強技術,它在具體業務場景中真的能發揮作用嗎?
第二,文中提到的幾類技術雖然在公開測評集上表現很好,那麼在實際業務中的表現如何?特別地,目前沒有看到有公開的研究報導對於文中部分技術進行單獨實驗。自然,我們會好奇這些技術在單獨運用時,到底效果怎麼樣。
本小節接下來部分,嘗試對這兩個問題進行回答。
4.1. 金融領域的 NLP 任務為什麼需要文本增強技術
先回答第一個問題。我們團隊之所以如此關注文本增強技術,這與我們日常面臨的業務需求緊密相關。我們團隊一直致力於將 NLP 和深度學習領域內最新的思想、最成熟的技術真正落地於金融資管領域,讓科技賦能產業,因此主要面對的任務特徵與金融資管領域的數據特點息息相關。
在面對金融資管領域的數據分析任務時,面臨的問題常常具備兩類特點:
第一,大量及時有效的信息分布在非結構化的文本數據中,如研報、新聞資訊、twitter 等社交媒體中,需要 NLP 等技術從中高效準確地挖掘出結構化信息。
上圖的數據來自 IDC,說明了近幾年全球新增的數據中,有 80% 的數據都是非結構化數據(除文本外,還包含圖片和語音等數據)。因此,金融業機構需要高精度、高魯棒性和高效率的 NLP 技術。其中,算法的高精度、高魯棒性是兩項最重要的指標。
第二,很多與金融領域內特定任務相關的應用場景常常面臨著少樣本的困境。這體現在兩方面:
一方面,可搜集的數據量少,數據搜集的時間成本很高,尤其在從 0 到 1 的立項初期。曾經在某個項目上,我們用了三周時間才搜集到 1000 多條有效樣本。
另一方面,數據的人工標註成本很高。大家都知道,NLP 屬於認知層面的技術,數據標註的難度和不確定性本來就比圖像識別要高。而對於金融領域的問題,還需要業務人員甚至金融分析師的參與才能實現相對準確的數據標註,滿足業務需求。這又進一步增大了數據標註成本。
因此,不論是為了提高模型的準確性和魯棒性,還是為了在少樣本場景下儘可能有效地利用數據,我們都希望能夠充分運用文本增強技術這個低成本的數據槓桿,在有限條件下儘可能撬動模型的性能。
關於第二個問題,這也是我們之前深入探索這一技術時的疑問。在本文的接下來部分,我們以金融資管領域的一類典型的文本處理任務為案例,以對照實驗的方式詳細地討論和展示,文本增強技術在具體產品開發時的重要作用。
4.2. 案例背景及實驗條件
4.2.1. 案例背景和數據集特點
此案例由前面提到的少樣本場景下的某個金融輿情項目抽象出來。其任務目標是,針對金融輿情類的短文本進行所屬行業分類,項目中以中信一級行業分類作為分類基準,包括餐飲旅遊、商貿零售、煤炭、紡織服裝、農林牧漁、建築、石油石化、家電、通信、計算機等 29 個行業類別。
這裡展示了幾條原始樣本,我們可以直觀感受一下數據(數據中的數值類指標為虛構數):
原始數據:【xxx 月報】特點:(1)緊跟物業市場動向,觀測各地政策變化;(2)補充公告內容,跟蹤項目中標和收併購。行業:「物業服務」入產業結構鼓勵類目,中消協發布調查報告。行業類別:房地產原始數據:公司有望成為「慢病管理+血糖監測+藥物治療」三位一體的糖尿病管理大平臺企業。維持預測 2001-2002 年 EPS 為 0.2/0.34/0.21 元,同比增長 11/11/11%,現價對應 01~21 年 PE 為 10/10/10 倍,維持「增持」評級。行業類別:醫藥原始數據:公司實現飛機起降架次 6 萬次,同比增長 4.8%,旅客吞吐量 800 萬人次,同比增長 4.5%,貨郵吞吐量 32.2 萬噸,同比增長 0.8%。行業類別:交通運輸在項目初期,我們共搜集和標註的有效數據約為 1900 條。為了充分測試和準確驗證算法的性能,在維持各類別數據相對均衡的情況下,我們將數據集隨機分為了訓練集和測試集。
其中,訓練集共包含 900 條樣本,用於模型的訓練。測試集包含約 1000 條數據,僅用來測試模型的泛化誤差,不參與模型的訓練。
4.2.2. 算法模型
在實際產品中,一般會採用多模型集成以及人工規則等多種方法的結合,以儘可能提高模型的泛化能力。在本文中,為了突出實驗重點,我們採用 TextCNN 網絡作為行業分類器 [21],其網絡架構如下圖所示:
這裡對於 TextCNN 網絡簡單做一下介紹,對於此模型熟悉的同學可以直接跳過此部分。如上圖所述,TextCNN 網絡由基於 word2vec 技術的詞向量層 (Word embedding block)、基於 TextCNN 架構的卷積神經網絡層(Multi-CNN block)共同構成。
TextCNN 架構由美國紐約大學的 Kim 教授提出 [21],該架構的兩類基本操作分別是卷積運算和池化運算:
卷積運算本質上是局部區域的加權運算,應用在本模型中可以有效提取文本的局部特徵及局部語序信息。通過不同長度卷積核的組合,還可以同時提到取文本中不同距離上的特徵信息。池化運算一方面可以實現降維功能,並保證輸出向量的長度不受文本長度變化的影響,另一方面池化操作還可以保證平移不變性,從而使得文本的關鍵特徵不受到位置的影響。得益於這兩大優勢,同時 CNN 網絡天然支持並行運算,具備無可比擬的計算效率優勢,因此本模型採用 CNN 網絡作為文本信息特徵提取層。值得一提的是,基於工程實踐經驗以及公開研究結果來看 [22, 23],卷積神經網絡在自然語言處理任務中具備獨特的優勢,受到很多大廠的青睞。
本模型的訓練樣本包含兩個部分:
詞向量層的語料訓練樣本:由各門戶網站的新聞語料、各機構發布的研報、百度百科等文本構成的數億規模的語料;整體模型的訓練樣本:包含上述的訓練集中的 900 條語料、利用數據增強技術對 900 條原始語料擴充之後獲得的語料;4.3. 實驗結果及分析
本文接下來部分,分別將 回譯、EDA 和 基於 TF-IDF 的詞替換 這三種數據增強技術運用在上述案例上,驗證三類方法是否有效。
4.3.1. 回譯
在回譯的具體實現方案上,我們先後嘗試了兩種方案:
方案一:利用開源的 中-英、英-中 兩個翻譯模型實現回譯變換,在輸出選擇時,我們同時嘗試了隨機採樣和 beam search 兩種方式,以實現多倍數的文本增強;方案二:利用 google 翻譯,選用多個中間語種做過渡,以同樣實現多倍數的文本增強。如,中-日-英-中,中-法-德-中 等。實驗中我們發現,雖然方案一所增強文本的語言豐富度更高,但是方案二所增強的文本在語義準確度和連貫性上更好,因此最終採用方案二。
原始文本與增強後的文本舉例如下:
原始文本:公司有望成為「慢病管理+血糖監測+藥物治療」三位一體的糖尿病管理大平臺企業。維持預測 2001-2002 年 EPS 為 0.2/0.34/0.21 元,同比增長 11/11/11%,現價對應 01~21 年 PE 為 10/10/10 倍,維持「增持」評級。增強後文本:該公司有望成為具有「慢病管理+血糖監測+藥物治療」的三位一體糖尿病管理平臺公司。維持預測,2001 年至 2002 年每股收益為 0.2 / 0.34 / 0.21 元,比上年增長 11/11/11%。當前價格是對應於 01-21 PE 的 10/10/10 倍,維持「增持」評級。在實驗參數的選擇上,我們重點對於數據集規模、數據增強倍數這兩個參數進行了詳細的對照實驗。整體的實驗步驟可概括如下:
步驟一:對訓練集中的 900 條樣本,運用 回譯 技術進行文本增強操作,共增強 4 倍(因此利用了 4 種不同的中間語種);步驟二:從原始訓練集的 900 條樣本中隨機取 20%、40%、60%、80% 和 100 % 比例的數據,然後混合進對應的增強後數據(包括 0 倍,即不做增強),在不同混合倍數下進行模型訓練,並記錄最優實驗結果;步驟三:重複步驟二的實驗三次,以三次實驗的平均值作為最終結果。最終的實驗結果如下:
從上表的結果來看,我們至少可以得出以下幾個結論:
第一,從整體來看,無論是在小規模數據下(20% 比例的數據對應約 180 條訓練樣本)還是在完整訓練集下(約 900 條訓練樣本),回譯技術都可以給模型帶來 8~25 個百分點的提升。這個提升有時可以帶來質的變化。例如,在比例為 60% 的實驗中,無擴充下的模型 F1 值為 0.823,這很難應用在金融領域的產品上。而運用文本增強技術之後,模型可以達到 0.921,這個表現已經接近灰度發布的標準了。
第二,對比不同倍數下的模型表現可以發現,相對於無擴充時 baseline 的表現,1 倍擴充時給模型帶來的新增提升是最顯著的,之後新增的倍數帶來的模型增益逐漸遞減,但即使採用 4 倍增強時,模型的性能依然略有提升。考慮到回譯的實現方式(參看方案二),這可能得益於不同語種之間對於同一語義表達的多樣性。
第三,對比不同數據規模下回譯帶來的模型提升,我們可以發現,隨著數據規模增強,回譯給 baseline 帶來的提升絕對值在逐漸降低,這也驗證了前一篇文章中的結論。即,小樣本場景下,文本增強技術給模型帶來的提升會更加顯著。
第四,從結果來看,在採用完全數據集下,在不引入額外數據的情況下,回譯技術幫助模型表現從 0.91 提升到了 0.95,這也充分說明了回譯是一種低成本的數據槓桿。
值得一提的是,回譯技術確實幫助模型在原有數據集上有效地提升了能力,但 embedding 層發揮的作用也不可能忽略。此模型用到的 embedding 層在海量通用語料和領域內語料上預訓練過,其詞典收錄了 20 萬個詞。對於金融領域內的重點詞,已經有很好的先驗表示。
4.3.2. EDA
在 EDA 增強方案中,我們嘗試了五種操作,分別是同義詞替換,隨機插入,隨機交換,隨機刪除和句子位置隨機替換。
其中,句子位置隨機替換在原始的 EDA 技術中並不包含,而是我們在本實驗中新加入的一種增強方式。本質上,我們是在表達這樣一種先驗信念,即對於所處理的金融輿情短文本,其句子出現的先後順序並不影響其所屬的行業。
關於實現中的幾個重要細節:
第一,所操作的詞語數,比如每句話同義詞替換個數,隨機交換個數等按照公式 n=αL,L 是句子長度,α是替換刪除等的比例,經過試驗發現 0.1 到 0.2 之間效果最佳。
第二,同義詞替換所用的同義詞:採用 word2vec 方法在公開的新聞語料訓練的詞向量,找出與被替換文本最相似的詞語。
第三,五種方法獨立使用,也即,對於每一條擴充的樣本,只使用了一種增強操作。更花式的組合,大家可以自己嘗試。
原始文本與增強後的文本舉例如下:
原始數據:【周報(12.02-12.08)】:拼多多上線火車票業務,海南離島購物免稅新政三周年銷售近 200 億。(行業類別:餐飲旅遊)同義詞替換:【周報(12.02 億 12.08,】:拼多多上線火車票業務)海南離島購物免稅新政三周年銷售近 200 億。隨機插入:【周報(12.02</s>-12.08)】:拼革新多多上線火車票業務,海南離島購物免稅新政三周年銷售近 200 億。隨機交換:【服務 200(12.02 近 12.08)】:拼多多上線火車票業務,海南離島購物免稅新政三周年銷售-周報億。隨機刪除:【周報(12.02-12.08)】:拼多多上線火車票,海南離島購物免稅新政三周年銷售近 200。隨即交換句子位置:海南離島購物免稅新政三周年銷售近 200 億,【周報(12.02-12.08)】:拼多多上線火車票業務。再次說明,上述文本中的數值為虛構數值,無任何參考意義。
直觀來看,經過五項操作之後,新擴充出文本與原始樣本的行業類別仍然保持一致。
在實驗參數的選擇上,與回譯類似,我們同樣對於數據集規模、數據增強倍數這兩個參數進行了詳細的實驗,步驟可概括如下:
步驟一:對訓練集中的 900 條樣本,運用 五種 EDA 技術進行文本增強操作,每中操作進行 2 倍,3 倍,4 倍擴充,即每條樣本對應擴充 10 倍,15 倍,20 倍;步驟二、三:與回譯實驗相同;
實驗結果如下:
從表中的結果,EDA 技術給模型帶來的提升整體與回譯技術類似:
第一,無論是在僅有 180 條樣本的場景下,還是在完整數據集下,EDA 的運用可以給模型帶來 2~30 個百分點不等的提升,數量越小,相對於 baseline 的提升越明顯;第二,運用 EDA 技術時,較好的增強倍數在 3 倍左右,數據量小時,可適當選擇更大的增強倍數;第三,從表中可以看出,數據集僅為 60% 時,採用 EDA 進行 2 倍擴充時,模型的表現就已經超過了在完全數據集下不用 EDA 技術的模型,這也充分說明了 EDA 的槓桿作用。同時,這一現象,也在 EDA 的原始論文中提到過 [4];4.3.3. 基於 TF-IDF 的文本增強
在基於 TF-IDF 增強方案中,主要思想是基於 TF-IDF 值評估原始樣本中各個詞對於文本的重要性,在此基礎上,用詞典中的非核心詞替換掉文中不重要詞,以重新生成一段文本。
在構建候選詞的字典時,由於原始預料數量較少,我們搜集整理了 4 萬多篇研究報告,儘量保證每個行業的報告數目不少於 1000 篇。同時,考慮到研報第一頁的內容在分布上與原始預料的分布最為相似,因此我們以這 4 萬多篇研報的第一頁來構建字典,並統計相應的詞頻和 IDF 值,用來統計字典中各詞的被替換概率。
下面給出一些原始文本與增強之後文本的對比:
原始樣本 1:錦江酒店調研紀要,經濟型酒店相比中高端酒店各指標下滑多一點,入住率、單價均有下滑,幅度較之前差不多。近期中端酒店同店 revpar 數據是持平,整體受新開店影響略有下降。
增強後樣本 (擴充係數 p=0.1):齊格勒酒店調研紀要,經濟型酒店相比中探訪酒店各細目下滑多一點專攻入住率、單價均有下滑,幅度較之前差不多。近期中端酒店同店 revpar 數據是持平,整體受新開店略有下降。增強後樣本 (擴充係數 p=0.3):201912 錦江酒店每位紀要,經濟型酒店相比中高端酒店各指標下滑多一點,入住率陶冶華有下滑,幅度較之前差不多。近期中端酒店同店 revpar 諾思是於長,整體受新町村藍黛略有下降。原始樣本 2:大秦鐵路點評:電煤需求回升或受港口卸車影響,8 月運量同比 2%。新聞/公告。大秦鐵路公布 9 月份運營數據,公司核心資產大秦線 9 月份完成貨物運輸量。
增強後樣本 (擴充係數 p=0.1):大秦鐵路點評:電煤需求回升或受港口卸車影響,8 月運量同比 2%。新聞/公告:大秦鐵路公布 9 月份運營馬勒,公司核心資產大秦線 9 月份完成貨物運輸。增強後樣本 (擴充係數 p=0.3):大秦鐵路助益:項下不斷回升或西遞專屬卸車影響,8 月運量同比 2%。償債/公告。大秦鐵路形制 10 月份運營數據,滑石封航 cerner 大秦線 9 月份完成招聘。在實驗參數的選擇上,我們重點對於數據集規模、數據增強倍數以及擴充比例這三個參數進行了實驗。步驟可概括如下:
步驟一:將數據集按照之前的比例劃分為 訓練集 和 測試集,並對訓練集進行文本增強操作,替換比例分別為 5%,10%,15%,20%,25%,30%;步驟二、三:與回譯實驗相同;實驗結果如下,遵循簡明扼要、突出矛盾的特點,這裡只展示了替換比例為 10% 和 30% 的情況:
從表中的結果可以得出以下結論:
第一,本方法與 EDA 技術給模型帶來的提升類似,即無論是在少樣本還是在完整數據集下,本方法都可以給模型帶來 3~30 個百分點的提升,樣本越少,效果越明顯。
第二,對比不同替換比例下的實驗結果,p=0.1 的替換比例一般會優於 p=0.3 的情況,尤其在小樣本下,這種差別會更加明顯。這是由於在 30% 的比例下,文本引入了更多的噪聲。但是,二者的差距很多時候都在 1 個百分點以內,這說明在這類任務下,模型對於噪聲的容忍度是很高的。這反過來可以啟發我們更好地設計和優化模型。
4.3.4. 三類方法的對比
為了更全面地了解三類方法的特點,我們選取了其中最有代表性的部分實驗數據進行了對比:
對比表中的三類方法,初步可以得出以下結論:
第一,三種方法都可以有效幫助模型提升性能。在全數據集下,只要保證充足的增強倍數,三類方法對於模型的提升基本相當。
第二,整體而言,基於 TF-IDF 的增強方法在效果上稍遜於另外兩種方法,隨著樣本量減少,這一差別越發明顯。從正則化或者先驗假設來看待這個問題:回譯技術在基本保證語義不變的情況下,可以提供豐富多樣的文本表達形式;EDA 技術則通過五種不同的操作,給模型施加了五類先驗信念,例如,文本中的句子應是可以交換的,部分詞是可以被替換、刪除或者交換位置的。而基於 TF-IDF 的增強方法僅僅告訴了模型不重要詞對於文本的行業類型沒有貢獻。相對而言,前兩類方法給予了模型更多的信息,因而能夠給模型更大的提升。
4.3.4. 小結
本文首先介紹了金融資管領域文本分析任務的特點,以金融資管領域一類典型的行業分類任務為案例,在少樣本場景下,對三種不同的文本增加技術進行了詳細的實驗分析,證明了 回譯、EDA 和 基於 TF-IDF 詞替換方法確實可以作為數據槓桿,在實際業務中撬動模型的性能。
另外,據我們所知,這也是第一次有公開文章單獨對基於 TF-IDF 的文本增強技術的實驗分析。如果有同學在其他地方發現了更早的實驗報導,望告知。
關於本文內容的其他補充如下:
第一,EDA 或 基於 TF-IDF 的詞替換方法會在原始樣本中引入噪聲,並導致一部分語義的丟失,因此這類方法是否有效與具體任務息息相關。在本文的案例中,行業分類屬於依靠少數一些關鍵詞的出現與否即可實現類別劃分的任務,對於局部噪聲並不敏感。因而,EDA 等技術才能夠有效發揮作用;
第二,我們內部正在實驗基於 GPT 的 LAMBADA 方法 [5],並在嘗試提出一些新的思想和方法,後面有機會再和大家分享。
5. 總結
本文回顧了文本數據增強技術(Data Augmentation)近幾年的發展情況,重點列舉和討論了 18 年、19 年中人們最常用到的五類文本增強技術路徑以及對應的代表性技術,分別是 回譯 (Back Translation)、隨機詞替換 (EDA 技術)、非核心詞替換 (基於 TF-IDF 的詞替換)、基於上下文信息的文本增強(C-BERT)以及 基於生成語言模型的文本增強 (LAMBADA),給出了各方法的詳細實現方案以及實驗效果。簡單總結如下:
第一,從各技術的實驗中來看,無論對於少樣本場景還是大樣本場景,文本數據增強技術都能帶來額外的增益,尤其在少樣本場景下,文本增強技術往往有奇效,多個實驗證明了可以帶來 5~20 個百分點的提升;
第二,文中提到的五種技術都可以獨立運用,而且實現起來相對簡單,屬於性價比很高的提高模型性能的通用方法。在實際中,大家可以嘗試聯合運用這幾種方法。
第三,回譯、基於上下文信息的文本增強以及基於 GPT 的文本增強,都利用了外部預訓練好的模型作為槓桿來撬動下遊任務,因此可以認為這是 NLP 普通玩家能夠享受當前 NLP 技術快速發展的紅利之一;
最後,從機器學習的角度再簡單談談對於文本增強技術的認識,總結上述幾類方法,至少可以從四個角度來看待文本增強技術的有效性:
(1) 正則化:
文本增強技術無疑是一種有效的正則化方法,無論是回譯、EDA、非核心詞替換還是基於上下文的文本增強,本質上都是設計者表達了一種模型偏好,或者對於模型的分布施加了較強的先驗分布假設。其中,回譯表達的模型偏好是,模型應該對於不同表達形式但同一語義的文本具有不變性。EDA、關鍵詞替換等表達的模型偏好則是,模型應該對於文本的局部噪聲不敏感。因此,即使面臨少樣本場景,在這種正則化下,模型也能夠在假設空間中有效的收斂,實現較好的泛化誤差。
(2) 遷移學習:
任何學習都需要有效的外部信息指導,上面所提的部分文本增強技術的有效性無疑也可以從遷移學習的角度來理解。無論是回譯、基於 GPT-2 的文本增強還是未來有希望的文本風格遷移,都可以理解為將外部預訓練好的模型從其他地方所學習到的信息或者知識遷移到了當前的任務中,提高了整體數據的信息容量,進而更好地指導當前模型的學習。
(3) 提高模型魯棒性:
EDA、關鍵詞等技術除了可以從語義層面的噪聲來看待,同時還可以看作是對於輸入數據施加一般化噪聲(與具體任務無關的),實現類似於 dropout 層的功能,而這一思路已經被各個研究證明,可以一定程度提高模型的魯棒性。
(4) 流形:
同一類標籤的文本可以視為文本空間中某一類流形,因此有效的文本增強技術應該保證新生成的文本仍然是該流形上的一點。
參考文獻
Wei, Jason W., and Kai Zou. "Eda: Easy data augmentation techniques for boosting performance on text classification tasks." arXiv preprint arXiv:1901.11196 (2019).Anaby-Tavor, Ateret, et al. "Not Enough Data? Deep Learning to the Rescue!." arXiv preprint arXiv:1911.03118 (2019).Hu, Zhiting, et al. "Learning Data Manipulation for Augmentation and Weighting." Advances in Neural Information Processing Systems. 2019.Wang, William Yang, and Diyi Yang. "That』s so annoying!!!: A lexical and frame-semantic embedding based data augmentation approach to automatic categorization of annoying behaviors using# petpeeve tweets." Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing. 2015.Chawla, Nitesh V., et al. "SMOTE: synthetic minority over-sampling technique." Journal of artificial intelligence research16 (2002): 321-357.Xie, Qizhe, et al. "Unsupervised data augmentation." arXiv preprint arXiv:1904.12848 (2019).Goodfellow, Ian, Yoshua Bengio, and Aaron Courville. Deep learning. MIT press, 2016.Sennrich, Rico, Barry Haddow, and Alexandra Birch. "Improving neural machine translation models with monolingual data." arXiv preprint arXiv:1511.06709 (2015).Edunov, Sergey, et al. "Understanding back-translation at scale." arXiv preprint arXiv:1808.09381 (2018).Yu, Adams Wei, et al. "Qanet: Combining local convolution with global self-attention for reading comprehension." arXiv preprint arXiv:1804.09541 (2018).Wei, Jason W., and Kai Zou. "Eda: Easy data augmentation techniques for boosting performance on text classification tasks." arXiv preprint arXiv:1901.11196 (2019).Kobayashi, Sosuke. "Contextual augmentation: Data augmentation by words with paradigmatic relations." arXiv preprint arXiv:1805.06201 (2018).Wu, Xing, et al. "Conditional BERT contextual augmentation." International Conference on Computational Science. Springer, Cham, 2019.Liu, Ting, et al. "Generating and exploiting large-scale pseudo training data for zero pronoun resolution." arXiv preprint arXiv:1606.01603 (2016).Hou, Yutai, et al. "Sequence-to-sequence data augmentation for dialogue language understanding." arXiv preprint arXiv:1807.01554 (2018).Dong, Li, et al. "Learning to paraphrase for question answering." arXiv preprint arXiv:1708.06022 (2017).Radford, Alec, et al. "Improving language understanding by generative pre-training." URL https://s3-us-west-2. amazonaws. com/openai-assets/researchcovers/languageunsupervised/language understanding paper. pdf (2018).Radford, Alec, et al. "Language models are unsupervised multitask learners." OpenAI Blog 1.8 (2019): 9.Hu, Zhiting, et al. "Toward controlled generation of text." Proceedings of the 34th International Conference on Machine Learning-Volume 70. JMLR. org, 2017.Guu, Kelvin, et al. "Generating sentences by editing prototypes." Transactions of the Association for Computational Linguistics 6 (2018): 437-450.Kim, Yoon. "Convolutional neural networks for sentence classification." arXiv preprint arXiv:1408.5882 (2014).Strubell, Emma, et al. "Fast and accurate entity recognition with iterated dilated convolutions." arXiv preprint arXiv:1702.02098 (2017).Tang, Gongbo, et al. "Why self-attention? a targeted evaluation of neural machine translation architectures." arXiv preprint arXiv:1808.08946 (2018).
作者信息
李漁,熵簡科技聯合創始人,博士畢業於清華大學電子工程系,以第一作者身份發表學術論文 10 餘篇,申請專利 6 項,致力於將先進的自然語言處理及深度學習技術真正落地於金融資管領域,讓科技賦能產業。目前負責熵簡科技 NLP 技術中臺的建設,包括層次化的分層架構、大數據泛採體系、持續部署的後臺支持以及前沿算法的領域內落地等,為熵簡科技的各大業務線提供底層技術支持和可落地的解決方案。