頭圖 | CSDN付費下載於東方IC
為了促進自然語言處理技術在金融科技領域的應用和發展,熵簡科技 AI Lab 近期開源了基於 BERT 架構的金融領域預訓練語言模型 FinBERT 1.0。
據悉,這是國內首個在金融領域大規模語料上訓練的開源中文BERT預訓練模型。相對於Google發布的原生中文BERT、哈工大訊飛實驗室開源的BERT-wwm 以及 RoBERTa-wwm-ext 等模型,本次開源的 FinBERT 1.0 預訓練模型在多個金融領域的下游任務中獲得了顯著的性能提升,在不加任何額外調整的情況下,F1-score 直接提升至少 2~5.7 個百分點。
對於深度學習時代的自然語言處理技術,一般認為存在兩大里程碑式的工作。第一個里程碑是在2013年逐漸興起,以 Word2Vec 為代表的的詞向量技術;第二個里程碑則是在 2018 年以 BERT 為代表的深度預訓練語言模型(Pre-trained Language Models)。
一方面,以 BERT 為代表的深度預訓練模型在包括文本分類、命名實體識別、問答等幾乎所有的子領域達到了新的 state of the art;另一方面,作為通用的預訓練模型,BERT 的出現也顯著地減輕了NLP算法工程師在具體應用中的繁重工作,由以往的魔改網絡轉變為 Fine tune BERT,即可快速獲得性能優秀的基線模型。因此,深度預訓練模型已成為各個 AI 團隊必備的基礎技術。
但是,當前開源的各類中文領域的深度預訓練模型,多是面向通用領域的應用需求,在包括金融在內的多個垂直領域均沒有看到相關開源模型。熵簡科技希望通過本次開源,推動 NLP技術在金融領域的應用發展,也將在時機合適的時候推出性能更好的 FinBERT 2.0 & 3.0。
項目地址:
https://github.com/valuesimplex/FinBERT
模型及預訓練方式
2.1網絡結構
熵簡 FinBERT 在網絡結構上採用與 Google 發布的原生BERT 相同的架構,包含了 FinBERT-Base 和 FinBERT-Large 兩個版本,其中前者採用了 12 層 Transformer 結構,後者採用了 24 層 Transformer 結構。考慮到在實際使用中的便利性和普遍性,本次發布的模型是 FinBERT-Base 版本,本文後面部分統一以 FinBERT 代指 FinBERT-Base。
2.2訓練語料
FinBERT 1.0 所採用的預訓練語料主要包含三大類金融領域的語料,分別如下:
金融財經類新聞:從公開渠道採集的最近十年的金融財經類新聞資訊,約 100 萬篇;
研報/上市公司公告:從公開渠道收集的各類研報和公司公告,來自 500 多家境內外研究機構,涉及 9000 家上市公司,包含 150 多種不同類型的研報,共約 200 萬篇;
金融類百科詞條:從 Wiki 等渠道收集的金融類中文百科詞條,約 100 萬條。
對於上述三類語料,在金融業務專家的指導下,我們對於各類語料的重要部分進行篩選、預處理之後得到最終用於模型訓練的語料,共包含 30億 Tokens,這一數量超過了原生中文BERT的訓練規模。
2.3預訓練方式
FinBERT 預訓練框架圖
如上圖所示,FinBERT 採用了兩大類預訓練任務,分別是字詞級別的預訓練和任務級別的預訓練。兩類預訓練任務的細節詳述如下:
(1)字詞級別的預訓練
字詞級別的預訓練首先包含兩類子任務,分別是 Finnacial Whole Word MASK(FWWM)、Next Sentence Prediction(NSP)。同時,在訓練中,為了節省資源,我們採用了與 Google 類似的兩階段預訓練方式,第一階段預訓練最大句子長度為128,第二階段預訓練最大句子長度為 512。兩類任務具體形式如下:
Finnacial Whole Word MASK(FWWM)
Whole Word Masking (wwm),一般翻譯為全詞 Mask 或整詞 Mask,出是 Google 在2019年5月發布的一項升級版的BERT中,主要更改了原預訓練階段的訓練樣本生成策略。簡單來說,原有基於WordPiece的分詞方式會把一個完整的詞切分成若干個子詞,在生成訓練樣本時,這些被分開的子詞會隨機被mask。在全詞Mask中,如果一個完整的詞的部分WordPiece子詞被 Mask,則同屬該詞的其他部分也會被 Mask,即全詞Mask。
在谷歌原生的中文 BERT 中,輸入是以字為粒度進行切分,沒有考慮到領域內共現單詞或詞組之間的關係,從而無法學習到領域內隱含的先驗知識,降低了模型的學習效果。我們將全詞Mask的方法應用在金融領域語料預訓練中,即對組成的同一個詞的漢字全部進行Mask。首先我們從金融詞典、金融類學術文章中,通過自動挖掘結合人工核驗的方式,構建出金融領域內的詞典,約有10萬詞。然後抽取預語料和金融詞典中共現的單詞或詞組進行全詞 Mask預訓練,從而使模型學習到領域內的先驗知識,如金融學概念、金融概念之間的相關性等,從而增強模型的學習效果。
Next Sentence Prediction(NSP)
為了訓練一個理解句子間關係的模型,引入一個下一句預測任務。具體方式可參考BERT原始文獻,Google的論文結果表明,這個簡單的任務對問答和自然語言推理任務十分有益,我們在預訓練過程中也發現去掉NSP任務之後對模型效果略有降低,因此我們保留了NSP的預訓練任務,學習率採用Google 官方推薦的2e-5,warmup-steps為 10000 steps。
(2)任務級別的預訓練
為了讓模型更好地學習到語義層的金融領域知識,更全面地學習到金融領域詞句的特徵分布,我們同時引入了兩類有監督學習任務,分別是研報行業分類和財經新聞的金融實體識別任務,具體如下:
研報行業分類
對於公司點評、行業點評類的研報,天然具有很好的行業屬性,因此我們利用這類研報自動生成了大量帶有行業標籤的語料。並據此構建了行業分類的文檔級有監督任務,各行業類別語料在 5k~20k 之間,共計約40萬條文檔級語料。
財經新聞的金融實體識別
與研報行業分類任務類似,我們利用已有的企業工商信息庫以及公開可查的上市公司董監高信息,基於金融財經新聞構建了命名實體識別類的任務語料,共包含有 50 萬條的有監督語料。
整體而言,為使 FinBERT 1.0 模型可以更充分學習到金融領域內的語義知識,我們在原生 BERT 模型預訓練基礎上做了如下改進:
1、訓練時間更長,訓練過程更充分。為了取得更好的模型學習效果,我們延長模型第二階段預訓練時間至與第一階段的tokens總量一致;
2、融合金融領域內知識。引入詞組和語義級別任務,並提取領域內的專有名詞或詞組,採用全詞 Mask的掩蓋方式以及兩類有監督任務進行預訓練;
3、為了更充分的利用預訓練語料,採用類似Roberta模型的動態掩蓋mask機制,將dupe-factor參數設置為10。
2.4預訓練加速
當前,對於所提供的一整套軟硬體深度學習煉丹系統,英偉達提供了豐富的技術支持和框架優化,其中很重要的一點就是如何在訓練中進行加速。在 FinBERT 的訓練中,我們主要採用了 Tensorflow XLA 和 Automatic Mixed Precision 這兩類技術進行預訓練加速。
- Tensorflow XLA 進行訓練加速
XLA 全稱為加速線性運算,如果在 Tensorflow 中開啟了 XLA,那麼編譯器會對 Tensorflow 計算圖在執行階段進行優化,通過生成特定的 GPU 內核序列來節省計算過程對於硬體資源的消耗。一般而言,XLA 可以提供 40% 的加速。
- Automatic Mixed Precision
一般深度學習模型訓練過程採用單精度(Float 32)和雙精度(Double)數據類型,導致預訓練模型對於機器顯存具有很高的要求。為了進一步減少顯存開銷、加快FinBERT預訓練和推理速度, 我們實驗採用當前最新的Tesla V100GPU進行混合精度訓練。混合精度訓練是指FP32和FP16混合的訓練方式,使用混合精度訓練可以加速訓練過程同時減少顯存開銷,兼顧FP32的穩定性和FP16的速度。在保證模型準確率不下降的情況下,降低模型的顯存占用約一半,提高模型的訓練速度約 3 倍。
下游任務實驗結果
為了對比基線效果,我們從熵簡科技實際業務中抽象出了四類典型的金融領域典型數據集,包括句子級和篇章級任務。在此基礎上,我們將 FinBERT 與 Google 原生中文 BERT、哈工大訊飛實驗室開源的 BERT-wwm 和 RoBERTa-wwm-ext 這三類在中文領域應用廣泛的模型進行了下游任務的對比測試。在實驗中,為了保持測試的公平性,我們沒有進一步優化最佳學習率,對於四個模型均直接使用了 BERT-wwm 的最佳學習率:2e-5。
所有實驗結果均為五次實驗測試結果的平均值,括號內為五次測試結果的最大值,評價指標為 F1-score。
3.1實驗一:金融短訊類型分類(1)實驗任務
此任務來自於熵簡科技信息流相關的產品,其核心任務是對金融類短文本按照文本內容進行類型分類,打上標籤,從而方便用戶更及時、更精準地觸達感興趣的內容。
我們對原任務進行了簡化,從原始的 15個類別中抽離出難度最大的 6個類別進行實驗。
(2)數據集
該任務的數據集共包含 3000 條樣本,其中訓練集數據約 1100 條,測試集數據約 1900條,各類別分布情況如下:
(3)實驗結果
TASKMODEL |
Google-bert |
BERT-wwm |
RoBERTa-wwm-ext |
FinBERT |
金融短訊類型分類 |
0.867(0.874) |
0.867(0.877) |
0.877(0.885) |
0.895(0.897) |
此任務核心任務是對金融類短文本按照文本內容進行行業分類,以中信一級行業分類作為分類基準,包括餐飲旅遊、商貿零售、紡織服裝、農林牧漁、建築、石油石化、通信、計算機等 28 個行業類別,可以用在金融輿情監控、研報/公告智能搜索等多個下游應用中。
(2)數據集
該任務的數據集共包含 1200 條樣本,其中訓練集數據約 400 條,測試集數據約 800條。訓練集中的各類別數目在 5~15 條之間,屬於典型的小樣本任務。
各類別分布情況如下:
(3)實驗結果
TASKMODEL |
Google-bert |
BERT-wwm |
RoBERTa-wwm-ext |
FinBERT |
金融短訊行業分類 |
0.939(0.942) |
0.932(0.942) |
0.938(0.942) |
0.951(0.952) |
此任務來自於熵簡科技金融質控類相關產品,其核心任務是針對金融事件或標的的評述性文本按照文本內容進行金融情感分類,並用在後續的市場情緒觀察和個股相關性分析中。
該任務共有 4個類別,對應不同的情緒極性和強度。
(2)數據集
該任務的數據集共包含 2000 條樣本,其中訓練集數據約 1300 條,測試集數據約 700條,各類別分布情況如下:
(3)實驗結果
TASKMODEL |
Google-bert |
BERT-wwm |
RoBERTa-wwm-ext |
FinBERT |
金融短訊類型分類 |
0.862(0.866) |
0.85(0.860) |
0.867(0.867) |
0.895(0.896) |
此任務來自於熵簡科技知識圖譜相關的產品,其核心任務是對金融類文本中出現的實體(公司或人名)進行實體識別和提取,主要用在知識圖譜的實體提取和實體連結環節。
(2)數據集
數據集共包含 24000 條樣本,其中訓練集數據共3000條,測試集數據共21000條。
(3)結果展示
TASKMODEL |
Google-bert |
BERT-wwm |
RoBERTa-wwm-ext |
FinBERT |
公司名稱實體識別 |
0.865 |
0.879 |
0.894 |
0.922 |
人物名稱實體識別 |
0.887 |
0.887 |
0.891 |
0.917 |
在本次基線測試中,我們以金融場景中所遇到的四類實際業務問題和數據入手進行對比實驗,包括金融類短訊類型分類任務、金融文本行業分類、金融情緒分析任務以及金融類實體識別任務。對比 FinBERT 和 Google 原生中文BERT、 BERT-wwm、RoBERTa-wwm-ext 這三種通用領域的預訓練模型
可知,FinBERT 效果提升顯著,在 F1-score 上平均可以提升 2~5.7 個百分點。
結語
本文詳細介紹了 FinBERT 的開源背景、訓練細節和四類對比實驗結果,接下來,熵簡 AI 團隊會從預料規模、訓練時間、預訓練方式上進行更多的創新和探索,以期發展出更懂金融領域的預訓練模型,並在合適時機發布 FinBERT 2.0、FinBERT 3.0。
參考文獻
[1]Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. 2018. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. (2018). https://doi.org/arXiv:1811.03600v2arXiv:1810.04805
[2]Jinhyuk Lee, Wonjin Yoon, Sungdong Kim, Donghyeon Kim, Sunkyu Kim, Chan Ho So, and Jaewoo Kang. 2019. BioBERT: a pre-trained biomedical language representation model for biomedical text mining. Bioinformatics
[3]Kexin Huang, Jaan Altosaar, and Rajesh Ranganath. 2019. Clinicalbert: Modeling clinical notes and predicting hospital readmission. arXiv:1904.05342.
[4]Iz Beltagy, Kyle Lo, and Arman Cohan. 2019. Scibert: Pretrained language model for scientific text. In Proceedings ofEMNLP.
[5]Yiming Cui, Wanxiang Che, Ting Liu, Bing Qin, Ziqing Yang, Shijin Wang, and Guoping Hu. Pre-training with whole word masking for chinese bert. arXiv preprint arXiv:1906.08101, 2019.
[6]Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, and Veselin Stoyanov. RoBERTa: A robustly optimized BERT pre-training approach. arXiv preprint arXiv:1907.11692, 2019.
[7]Micikevicius, Paulius, et al. 「Mixed precision training.」 arXiv preprint arXiv:1710.03740 (2017).
[8]https://github.com/ymcui/Chinese-BERT-wwm/
[9]https://github.com/huggingface/transformers
文章來源: https://twgreatdaily.com/zh-cn/2Zj5oXUB2uKmW_kOgFrm.html