半监督学习技术在金融文本分类上的实践
垂直領域內的自然語言處理任務往往面臨著標注數據缺乏的問題,而近年來快速發展的半監督學習技術為此類問題提供了有希望的解決方案。本文以 Google 在 2019 年提出的 UDA 框架為研究主體,詳細探索該技術在熵簡科技真實業務場景中的實踐效果。
本文主要有三方面的貢獻。第一,以金融文本分類為案例,探索了 UDA 在真實場景中的效果和不足;第二,探索了 UDA 在輕量級模型上的效果;第三,增加了原始 UDA 論文中未披露或未完成的研究,如領域外數據的影響,錯誤標記數據的影響。
關于作者
李漁,熵簡科技聯合創始人,博士畢業于清華大學電子工程系,以第一作者身份發表學術論文 10 余篇,申請專利 6 項,致力于將先進的自然語言處理及深度學習技術真正落地于金融資管領域,讓科技賦能產業。目前負責熵簡科技 NLP 技術中臺的建設,包括層次化的分層架構、大數據泛采體系、持續部署的后臺支持以及前沿算法的領域內落地等,為熵簡科技的各大業務線提供底層技術支持和可落地的解決方案。
知乎專欄:
https://zhuanlan.zhihu.com/c_1215573707772649472
目錄
1. 背景
2. 金融領域的問題為什么需要半監督技術
3. UDA 技術介紹及特性
3.1? UDA 技術的基本框架和核心思想
3.2? 在少量標簽數據上的表現,by Google 團隊
3.3? 在領域外數據上的表現,by 熵簡團隊
3.3.1 實驗一:在 IMDb 數據集中混入 Yelp-2 數據
3.3.2 實驗二:在 IMDb 數據集中混入 20 Newsgroups 數據
3.4? 在錯誤數據上的表現,by 熵簡團隊
4. UDA 技術在金融文本分類上的實踐
4.1? 案例背景及數據集特點
4.2? 實驗方案
4.2.1 分類模型
4.2.2 主要目標
4.3? 主要實驗結果及分析
4.3.1 有標簽數據的數據量對于模型的影響
4.3.2 對比不同的增強方案
4.3.3 CNN 與 BERT 的對比實驗
5. 總結
背景
前段時間我們團隊針對深度學習時代的半監督學習技術進行了梳理,詳細介紹了半監督技術的發展歷程,以及各技術在核心思想、方法論上的演進,感興趣的朋友可以查看原文:
https://zhuanlan.zhihu.com/p/138085660
從文中我們似乎看出,當前的半監督技術似乎已經具備了與監督學習相比擬的優勢。那么在真實場景中,半監督技術是否依然可以如實驗室中的表現,可以在真實問題上發揮出獨特的優勢,降低我們對于標簽數據的需求。
本文基于熵簡 NLP 團隊在真實業務場景上的實踐經驗,從垂直領域對于半監督技術的需求出發,詳細介紹半監督學習中最新的代表技術之一 UDA 算法的特性,以及在金融文本分類任務上的落地實踐。
借此,我們可以在 2020 年這個時間點,初窺半監督技術對于真實場景問題的價值。
金融領域的問題為什么需要半監督技術
我們在前面一篇文章已經提到,金融領域內的自然語言處理問題屬于典型的垂直領域問題,在面對特定任務場景時,常常面臨的一個重要挑戰就是少樣本。這主要體現在兩個方面:
可收集到數據總量少,數據收集的時間成本很高,尤其在從?0?到 1 的立項初期。曾經在某個項目上,我們用了三周時間才搜集到 1000?多條有效樣本。
數據的人工標注成本很高。由于自然語言處理任務大部分屬于認知層面的任務,因而數據標注的難度和不確定性顯著高于感知層面的任務,例如圖像識別、語音識別等。而對于金融領域的問題,往往需要資深金融分析師的參與才能實現相對準確的數據標注,滿足業務需求。這不僅增大了標注的成本,也會顯著延長標注的時間。因為在實際中,金融分析師很難有大塊的時間來協助標注,這往往會延長項目周期。
對于第一點,我們可以通過文本增強、遷移學習、few-shot learning 以及元學習等等技術或者思想來嘗試解決。對于特定的任務,我們目前已經取得一些較好的成果,由于不屬于本文的討論范圍,這里就不再詳細展開,有興趣的同學可以查看專欄的其他相關文章。
對于第二點,為了讓大家有更直觀的感受,下面給出一個實例。對于金融文本,為了方便閱讀和快速篩選,往往需要對文本按照內容分為不同的類型,比如公司點評、公司深度、行業點評、行業深度等等。如下案例所示:
文本1:非銀金融周觀察:堅守長期價值,優選個股。
文本2:生豬養殖行業專題報告三十六:當下養殖板塊投資的核心矛盾是什么?
對于上述的兩個文本,到底哪個文本屬于行業點評,哪個屬于行業深度呢?(具體答案可查看 4.1 節)顯然,只有金融領域相關的專業人士才能做出比較準確的標注。
因此,對于人工標注成本高的問題,我們希望能夠找到這樣的解決方案:
首先由人類專家對數據進行少量標注,在這個基礎上,算法同時利用少量標注的有標簽數據和還沒有標注的大量無標簽數據進行學習,最終也能達到較好的性能,滿足業務需求。
這一目標正是半監督學習核心想要達成的目標。接下來,我們開始分享團隊在探索半監督技術 UDA 算法過程中的具體收獲和重要結果。
UDA 技術介紹及特性
3.1?UDA 技術的基本框架和核心思想
UDA 算法是由 Google 團隊在 2019 年提出的半監督技術,超越了包括同年提出的 MixMatch 在內的一眾半監督算法,達到了當時的 SOTA 水平。
上圖即是 UDA 算法的基本框架,該框架對于模型網絡本身并沒有特別的要求,核心是對目標函數進行了改造。從圖中可以看出,UDA 的目標函數共包括兩個部分,分別是有監督損失項和無監督損失項:
有監督損失項(Supervised Cross-entropy Loss):用來計算有標簽數據的誤差,采用了常用的交叉熵作為目標。
無監督損失項(Unsupervised Consistency Loss):用來計算無標簽數據的誤差。具體的方式是,對于任何一個無標簽數據,首先運用數據增強技術對于該數據進行一次變換操作。接下來,利用模型對于增強前后的數據分別進行預測,從而獲取到模型對于同一條數據在增強前后的不同結果。最后,利用 KL 散度來度量這兩個預測結果的距離。整個訓練的過程就是要讓這個距離盡可能小。
對于整個 UDA 算法,其中最核心部分就是一致性假設,即模型在輸入數據的附近空間應該是平坦的,即使輸入數據發生微弱變化或者發生語義不變而僅僅是形式變化時,模型的輸出也能夠基本保持不變。這本質上是傳遞了模型設計者對于模型的一種先驗信念。
3.2?在少量標簽數據上的表現,by Google 團隊
接下來我們看一下原始論文中,對于 UDA 算法的實驗結果,本文主要展示 NLP 相關的實驗。
上面一張表分別展示了 UDA 算法在 IMDb,Yelp-2,Yelp-5,Amazon-2,Amzon-5 以及 DBpedia 這幾個數據集上的實驗結果。整張表分別上下兩個部分,其中上面部分展示了各個數據集在完整數據集下的 SOTA 表現,作為參照組來對比 UDA 的效果。
下面部分則展示了不同網絡模型在僅有少量標簽數據下,是否采用 UDA 框架,對于模型最終性能的影響。從表中我們至少可以得出三方面的結論:
UDA 框架可以幫助模型在僅有很少有標簽數據下接近或超過 SOTA 表現。對比 IMDb 下 BERT_large 在 20 條有標簽數據和 2.5 萬有標簽數據下的表現,二者在錯誤率上僅差 0.2%。類似的結果在其他數據集下也能看到;
在少標簽場景下,UDA 框架可以幫助模型顯著提升性能。對比 BERT_base 在 5 個數據集下(除 DBpedia 以外)的表現,UDA 的引入給模型均帶來了 10個百分點以上的提升;
UDA 框架給模型帶來的提升大小與數據集分布相關。對比 Random 在 Yelp-2 和 Yelp-5 上的表現,UDA 給模型帶來的提升與數據集分布以及具體任務難度相關。
原始論文的研究由于采用了標準數據集,因此停留在實驗室理想條件,而實際情況往往沒有這么理想。接下來,我們團隊進一步研究,UDA 在遇到真實場景中兩類典型問題時的表現。
3.3?在領域外數據上的表現,by 熵簡團隊
我們知道,如果要采用半監督技術,那就意味著需要引入大量無標簽的數據,而在真實場景中,無標簽數據由于沒有經過人工篩選或者只能進行粗篩選,那么必然會混入類別外或領域外的數據。這類數據是否會對模型的表現帶來負面影響?
3.3.1 實驗一:在 IMDb 數據集中混入 Yelp-2 數據
Yelp 數據集整理自 Yelp 網站(美國版大眾點評)上的用戶評論,其中的文本是與 IMDb 數據集類似的點評類短文本,區別在于二者所涉及的領域不太一樣,IMDb 主要集中在影視相關的評論,而 Yelp 涉及的領域則更為廣泛,可參考國內的大眾點評上的評論。?
在保持 IMDb 的有標簽數據仍然為 20 條的情況下,我們隨機從 Yelp 挑選一定數據量的數據混入無標簽數據。在混入數據量占整體無標簽數據量的比例分別為 5% - 30% 等五種不同條件下,我們在 BERT_base 上進行了實驗。
實驗結果如上表所示,從表中可以發現,Yelp 數據集的引入并沒有給模型帶來負面影響,大多數情況下,反而給模型帶來了1 百分點左右的額外提升。這背后的原因或許是,Yelp 數據集雖然所涉及的領域與 IMDb 有所差異,但是其本身所蘊含的情感表現方式與 IMDb 數據集類似。因此從文本情感這個角度來看,二者在分布上是類似的,這一點對于情感分類這樣的監督任務是有益的。
?
3.3.2 實驗二:在 IMDb 數據集中混入 20 Newsgroups 數據
20 Newsgroups 數據集包含有 20 個不同主題的新聞類文本,其中的文本不論是在文本內容、語言表達方式以及涉及的領域上都與 IMDb 數據集中的文本存在明顯差異。
我們在 20 Newsgroups 上做了與上述 Yelp 類似的實驗。同樣地,我們從 20 Newsgroups 數據集的 20 個類別中隨機選擇一定數據量的文本混入無標簽數據中。同時,將混入比例最高調整到了 100%,這對應著在無標簽數據完全采用 20 Newsgroups 的數據。
從上表的實驗結果中,我們至少可以得出三方面的結論:
第一,20 Newsgroups 作為無標簽數據加入訓練,可以幫助模型帶來近1個百分點的提升。這似乎說明了,即使是領域外甚至其他類型的文本加入,這部分數據依然可以通過一致性正則來幫助模型進行更好地學習;
第二,當 20 Newsgroups 的比例為 100% 時,模型的表現幾乎與隨機預測一樣(對于二分類,隨機預測的準確率是 50%)。這說明在 UDA 框架中,無標簽數據同樣可以給監督任務提供較強的學習信號;
第三,綜合前兩項結果,我們可以知道,在 UDA 框架中,無標簽數據同時提供著兩類學習信號。一方面,通過一致性正則提供無監督的學習信號,從約束模型對輸入的變化不敏感;另一方面,也為有監督任務提供學習信號。
從前面兩個實驗中,我們是否可以得出結論,在半監督學習中,無標簽數據即使混入領域外的數據,對于模型的訓練也不會產生負面的影響。
我們認為這樣的結論是不成立的。之所以在本實驗中表現出類似的現象,是因為這兩個實驗所加入的其他數據集,其與 IMDb 的區別主要體現在文本形式、文本內容的主題等特征上,這與情感分類這個監督任務所需要的特征不在同一個維度上,因而不會產生干擾。
換言之,如果加入的其他數據集與當前數據集在特征上的差異與監督任務所重點關注的特征是正交的,那么這個數據集就不會對模型的訓練帶來負面影響。
3.4 在錯誤數據上的表現,by 熵簡團隊
在真實場景中,另一類不可避免的問題是,數據的標簽很難保證絕對的正確。接下來,我們通過實驗驗證,當有標簽數據中存在部分錯誤標記時,模型在 UDA 框架下的表現。
在實驗中,我們從 IMDb 數據中選取 200 條數據作為有標簽數據,剩下的數據作為無標簽數據。同時,對于有標簽數據,按照一定比例對于其標簽進行打亂。
從上表的結果可以發現,當錯誤標簽比例為 10% 時,原生 BERT 的準確率下降了 6 個百分點(相對下降率約為 9%),而 UDA BERT 只下降了一個百分點(相對下降率約為 1%);而錯誤比例增大到 20% 時,原生 BERT 的下降了近七個百分點,而 UDA BERT 則下降了 4 個百分點。
因此,無論從絕對下降值還是下降率來看,UDA 框架對于錯誤標簽具備有一定的抑制作用。尤其當錯誤比例較低時,UDA 可以保證模型的準確率基本不受錯誤標簽的影響。這無疑是一項吸引人的特性,而背后的原因或許來自于 UDA 中的銳化操作,即要求模型的分割平面不穿過數據分布密度較高的區域。而更深層的原因則需要更深入的研究分析。
UDA 技術在金融文本分類上的實踐
了解了 UDA 的基本特性以及在實驗室條件下的優良表現之后,本節將以金融資管領域中的一類金融文本分類問題作為實際任務,用來驗證 UDA 算法在真實任務場景中的表現。
4.1 案例背景及數據集特點
此案例來自于熵簡科技信息流相關的產品,其核心任務是對金融類短文本按照文本內容進行類型分類,打上標簽,從而方便用戶更及時、更精準地觸達感興趣的內容。
我們對原任務進行了簡化,從原始的 15個類別中抽離出最典型的 6 個類別,分別為:公司深度分析類、公司點評類、行業深度分析類、行業點評類、固收報告類以及宏觀策略類。
為了更直觀地感受數據,這里展示了幾個類別的典型樣本:
公司深度:本文詳細測算了 AWP 龍頭制造商的產能、銷售規模情況;龍頭租賃商的保有量、采購計劃和主要合作廠商;同時測算了目前的終端租金對應的回報率水平。依然重點推薦 xx 科技。
公司點評:【xx 科技】市場位勢上移驅動業績超預期,未來估值繼續向一線龍頭靠齊。今日公司股價大漲 xx%,主要由于其發布盈喜公告 19 年凈利潤超 xx 億,顯著超出市場預期。
行業深度:生豬養殖行業專題報告三十六:當下養殖板塊投資的核心矛盾是什么?
行業點評:空調價格競爭或已步入后半程,基于對歷史上空調行業價格競爭的對比分析,判斷 11 月大概率為近期空調均價同比降幅極值所在,本輪價格競爭或已步入后半程。
在接下來的實驗中,我們按照時間順序選取各類別樣本共約 1.5 萬條作為訓練集,1200 條數據作為測試集:
在訓練集中,有標簽樣本約為 1200 條,各類別基本均衡。剩余的 1.4 萬條數據為無標簽數據,各類別按照時間順序采集,分布并不均衡。粗略估計,公司點評的數量最多,而行業深度的數量最少,二者比例約為 4:1(由于這部分數據無標簽,只能做粗略估計);
在測試集中,各類別數據基本均衡。
4.2?實驗方案
4.2.1 分類模型
在實驗中,我們在 UDA 的框架基礎上,分別采用了 BERT_base 和 TextCNN 作為分類模型。采用 TextCNN 有兩方面的原因:
第一,作為對照實驗,驗證 UDA 框架是否對于輕量級模型也具有價值;
第二,考慮到實際線上部署的需求,我們更傾向于采用 TextCNN 類似較為輕量的模型;
對于 BERT_base,采用了與 google 原始論文相同的網絡結構,僅僅將二分類調整為六分類。同時,我們將 BERT 在 1000 多萬條金融領域的研報及公告上進行了二次預訓練,以使得 BERT 能夠在金融領域相關的任務表現更好。
對于 TextCNN,其 embedding 層在各門戶網站的新聞語料、各機構發布的研報、百度百科等文本構成的數億規模的語料進行了預訓練。卷積核的窗口大小和數目為實驗中優化參數。
4.2.2 主要目標
如前所述,我們將 UDA 技術運用到實際項目中包括兩方面的目標:
核心目標:希望將無標簽數據的價值充分發揮出來,即:通過 UDA 的框架,利用無標簽數據讓現有模型在原本的性能基礎上能夠進一步提升。
研究目標:通過在真實場景中的實驗設計,來進一步了解 UDA 框架的特性,為后續應用提供基礎。這些實驗包括:
不同數據增強方案對于半監督學習效果的影響;
在不同有標簽數據量下的提升效果;
在輕量級模型下的效果;
與其他早期半監督學習算法的效果對比,如 self-traning 方法;
4.3?主要實驗結果及分析
4.3.1 有標簽數據的數據量對于模型的影響
上表所示為不同有標簽數據量下,是否采用 UDA 框架對于模型準確率的影響。從表中至少可以得到以下三方面的重要結論:
UDA 可以幫助模型有效利用無標簽數據的信息,從而幫助現有模型在原本的性能基礎上能夠進一步提升。從表中可以看出,有標簽數據量為 600 時,如果采用 UDA 框架,可以使得模型具有與有標簽數據擴大一倍(即 1200 條)時的模型相當的表現。這相當于免費地獲得了近一倍的額外標簽數據。
隨著有標簽數據的增加,UDA 框架帶來的額外提升效果會逐漸降低。在 60 條有標簽數據時,可以使得模型提升近 30%;而在全數據下,只能幫助模型提升 1%。
UDA 的表現并沒有想象中的好,增加有標簽數據量仍然是最直接最穩定提升模型的方法。在 UDA 原始論文中,google 團隊僅用 20 條有標簽數據,就讓模型達到了與 SOTA 接近的性能。但從我們的實驗中可以看出,當有標簽數據較少時(如 60 條),模型相對于最好結果仍然具有較大的差距。
整體而言,UDA 算法確實是一種有效利用無標簽數據的半監督學習技術,但還不無法在少量標簽下真正讓模型達到最佳表現。
4.3.2 對比不同的增強方案
隨著這兩年半監督技術和自監督技術的發展,大家已經意識到,數據增強技術除了用于解決少樣本場景下的樣本稀缺的問題,也同樣在半監督技術和自監督技術中扮演中重要作用。很多研究已經證明了,數據增強技術的優劣很多時候決定了最終半監督技術的最終效果。
我們團隊之前也系統地梳理過近幾年半監督技術的發展情況,感興趣的朋友可以查看:
https://zhuanlan.zhihu.com/p/111882970
在這一部分,我們研究 UDA 框架在幾類典型的文本增強技術下的表現,包括? EDA、回譯和基于 TF-IDF 的非核心詞替換,關于這三類方法的具體實現細節可參考我們之前梳理的那篇文章。
值得注意的是,回譯和非核心詞替換技術正是 UDA 原始論文中所用到的數據增強方式。
從表中可知,數據增強技術在此任務中的效果由高到低依次為 EDA、回譯和非核心詞替換。EDA 相對于非核心詞替換高出了一個多百分點,同時考慮到不采用? UDA 框架的 baseline(見 4.3.1 節中的表格)模型準確率也在 0.86 左右,這充分說明了數據增強技術的選擇對于半監督學習的效果有重要影響。
這背后的原因或許是相對于非核心詞替換,EDA 技術可以給文本帶來更為豐富的形式變換,畢竟里面包含了五類不同的操作。而更豐富、更多變的文本變換,可以更好地告訴模型什么是語義不變性。
從研究角度而言,探索更有效的數據增強技術將是半監督技術發展的重要方向之一。
4.3.3 CNN 與 BERT 的對比實驗
上表展示了當有標簽數據量不同時,在 UDA 框架下采用重量級的預訓練模型? BERT_base 和輕量級的 TextCNN 模型的準確率比較。從表中至少可以得出兩方面的結論:
UDA 框架對于輕量級模型同樣具有很好的效果。對比第三行和第四行的結果,UDA CNN 僅比 UDA BERT 低了一到兩個百分點,這充分說明了 UDA 框架對于輕量級模型的有效性。同時,這一個百分點的準確率損失相對于預測效率的提高和機器資源的節省,在很多實際業務中是非常值得的。
在少標簽數據下,UDA 帶來的提升遠大于預訓練模型帶來的提升。對比第二行和第四行的結果,UDA CNN 相比于直接采用 BERT 的情況,其準確率高了近 20 個百分點。這或許是由于 BERT 雖然在海量語料上進行了預訓練,但學習到的大部分特征與當前的任務無關。而通過 UDA 從相應的無標簽數據中獲取信息則是可以直接為當前的監督任務作出貢獻。
至此,對于 UDA 在真實場景中的效果以及特性,我們基本有了直觀的了解,本文的主要內容也到此結果。由于篇幅所限,其他相關的實驗,例如與其他半監督方法的對比、領域外數據的影響等,此處不再展開,后面有機會再做分享。
總結
本文針對 Google 提出的半監督學習框架 UDA 進行了詳細地梳理和討論,補充了原始論文沒有披露或未考慮到的實驗,如領域外數據的影響、錯誤標簽的影響等。同時,我們將該技術應用到熵簡科技的實際業務中,并以金融文本分類問題作為案例,分析了 UDA 框架在真實場景中的實際收益和存在問題。
最后,再簡單做一下總結和討論:
第一,無論是對于重量級的預訓練模型還是輕量級的模型,UDA 框架都能夠幫助模型從無標簽數據中挖掘出學習信號,從而幫助模型在原有基礎上進一步提升表現。尤其在標記數據稀缺的場景下,這一提升往往比較明顯;
第二,當前的半監督技術在真實問題中還無法真正達到我們想象中的少標簽學習的目標,需要和預訓練模型、遷移學習等技術結合起來,協同解決低資源場景下的問題;
第三,數據增強技術對于半監督學習的效果具有重要的影響,我們認為這也是半監督的重要研究方向之一,值得深入探索。
?
參考文獻
[1]?Xie, Qizhe, et al. "Unsupervised data augmentation for consistency training." (2019).
[2]?Oliver, Avital, et al. "Realistic evaluation of deep semi-supervised learning algorithms." Advances in Neural Information Processing Systems. 2018.
[3]?Zhu, Xiaojin, and Andrew B. Goldberg. "Introduction to semi-supervised learning." Synthesis lectures on artificial intelligence and machine learning 3.1 (2009): 1-130.
[4]?Kim, Yoon. "Convolutional neural networks for sentence classification." arXiv preprint arXiv:1408.5882 (2014).
[5]?Devlin, Jacob, et al. "Bert: Pre-training of deep bidirectional transformers for language understanding."?arXiv preprint arXiv:1810.04805?(2018).
?
?
更多閱讀
?
#投 稿?通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
?????來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
?????投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的半监督学习技术在金融文本分类上的实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 消息称零跑汽车截止 10 点半国庆大定破
- 下一篇: 怎么用u盘格式化c盘 格式化C盘使用U盘