劉 壯 劉 暢 Wayne Lin 趙 軍
1(東北財經大學應用金融與行為科學學院 遼寧大連 116025) 2(中國石油物資采購中心 沈陽 110031) 3(南加州大學計算機學院 美國加利福尼亞州洛杉磯 90007) 4(IBM研究院 北京 100101)
海量的互聯網金融信息在金融市場中有著舉足輕重的地位,對網絡金融文本信息的挖掘工作具有很大的實際價值.隨著大數據時代的到來,金融大數據挖掘已成為行業熱點趨勢,面向金融的機器學習技術吸引了越來越多的關注.面對每日產生的數量驚人的金融文本數據,如何從中提取有價值的信息已經成為學術界和工業界一個非常有挑戰的研究.如果我們采取人工的方式來分析這些文本信息并從中獲得可行的見解幾乎是一項極其艱巨的任務.機器學習技術的進步使金融科技中的金融文本挖掘模型成為可能.但是,在金融文本挖掘任務中,構建有監督訓練數據代價非常高昂,因為這需要使用財務領域的專家知識.由于可用于金融文本挖掘任務的有標簽訓練數據量很少,因此大多數金融文本挖掘模型無法直接利用深度學習技術.
在本文中,我們創新地提出了F-BERT模型,通過利用自監督學習和多任務學習的深度神經網絡方法來解決該問題.當前,金融科技中的金融文本挖掘模型主要是采取基于深度學習(deep learning)的自然語言處理(natural language processing)技術.
目前,自然語言處理主要使用基于深度神經網絡的技術,其發展主要有兩大里程碑工作.首先是2013年提出并不斷發展的以Word2Vec[1]為代表的詞向量技術,例如Word2Vec,GloVe[2]等;第2個里程碑是在2018年底由谷歌提出的以BERT(bidir-ectional encoder representations from transformers)[3]為典型代表的預訓練語言模型(pre-training language models)技術,例如BERT,ELMO[4]等.其中,諸如Word2Vec,GloVe之類的詞編碼是從無監督語料庫中提取知識的一種方式,已成為自然語言處理的主要進步之一.但是,由于在金融領域中包含了很多專業術語,因此這些簡單的詞向量方法不夠有效.另一方面,預先訓練的語言模型技術,例如BERT,ALBERT[5]等,采取在大規模無監督數據(例如維基百科數據等)上進行了預先訓練,經過大規模語言模型預訓練,BERT獲得了有效的上下文表示.與Word2Vec詞向量相比,BERT能夠充分利用深度預訓練模型的參數,可以更有效地學習上下文知識.但是,模型的預訓練(例如BERT)主要使用基于簡單的預訓練任務來對語言模型進行訓練,從而使得模型具備掌握單詞或句子共現的能力.實際上,除了共現之外,還有其他詞匯、句法和語義信息需要在訓練語料庫中進行檢查.尤其是對于金融文本數據,例如,股票、債券類型和金融機構名稱之類的命名實體包含唯一的詞匯信息.此外,諸如句子順序和句子之間的接近度之類的信息也使模型能夠學習語義感知表示.并且,BERT的預訓練數據來自Books Corpus和英文維基百科,這些語料不一定和目標任務的語言環境相近,如金融領域.因此,如果我們直接使用BERT進行金融文本挖掘,效果并不是很好.
為了在大型金融訓練語料庫中有效地捕獲語言知識和語義信息,我們構建了涵蓋更多知識的4個自監督學習的預訓練任務,并通過對訓練數據進行多任務學習來訓練F-BERT.具體而言,我們創新地提出了F-BERT模型,在該模型架構中,我們構建了4個自監督學習預訓練任務,并同時對普通文本語料和金融領域文本語料進行了學習,從而使得F-BERT可以更好地捕獲金融文本數據的語言知識和語義等信息.總結來說,本文的主要貢獻有5個方面:
1) 利用深度學習領域的自監督學習和多任務學習技術,提出了一種基于BERT模型架構的大規模語料上訓練的開源金融預訓練模型F-BERT.
2) 構建了4個自監督學習預訓練任務,可以通過多任務自監督學習來進行同時預訓練,通過該機制可以有效地捕獲大規模預訓練語料中的金融語言知識和語義等信息.
3) 分別在金融關系提取、金融情緒分類、金融智能問答任務上進行了金融任務實驗,驗證了F-BERT的有效性和魯棒性.實驗結果表明F-BERT模型在這3個有代表性的金融文本挖掘任務均取得了最佳準確性,優于所有當前其他模型性能;另外,針對金融命名實體識別、金融短文本分類這2個實際金融科技任務也進行了實驗驗證,所提出的F-BERT模型均取得了最佳準確性.
4) 采取了一種混合精度訓練方法,并在Horovod框架上進行F-BERT的分布式訓練,既使得整個訓練過程具有穩定加速比,同時擁有較好的可擴展性.
5) 在Github上進行了F-BERT的開源,包括其模型架構、源代碼、超參數、訓練模型,以及用于微調的源代碼.通過該開源代碼,F-BERT可用于各種其他下游金融文本挖掘任務,對特定金融文本分析任務進行最少的修改即可幫助實現最新的性能.
預訓練模型最早應用于機器圖像和計算機視頻領域.在2012年的大規模圖像識別競賽ImageNet[6]中,當時取得第一名成績的AlexNet[7]橫空出世,它采取了基于CNN[8]的卷積神經網絡模型架構.此后,AlexNet被廣泛應用在眾多的機器視覺任務中.雖然很多新模型并不是完全借鑒AlexNet模型架構從頭開始訓練,而是主要利用在ImageNet上訓練得到的AlexNet模型的參數和神經網絡架構,再進一步結合實際任務進行少量修改,然后在新的數據上訓練和優化.實驗結果表明,復用預訓練模型可以顯著增加目標任務的準確度,也大大縮短了新模型的訓練時間.
預訓練模型的一大優勢是,可以利用在其他相似任務的大量數據上建立有效的模型再遷移到目標任務,從而解決了目標任務(例如股票漲跌預測)訓練數據不足的問題.另外,從垂直領域文檔(例如金融文本數據等)中提取有價值的信息正在變得越來越重要,深度學習促進了有效的垂直領域文本挖掘的研究發展.
Google在2018年下半年發布了預訓練語言模型BERT[3],在自然語言處理界具有開創時代的意義.接下來,BERT模型在十多個自然語言理解任務中全部取得了最佳模型準確率,在多個公開自然語言處理競賽上取得大幅提升,甚至在常識推理、自動問答、情緒分析、關系抽取、命名實體識別等競賽均取得了超過了人類準確率的成績.同時,在BERT模型的源碼發布之后,后續研究人員基于開源代碼和預訓練模型進行了各種自然語言處理任務,進一步大幅提升了各個NLP任務模型的成績.例如,在SQuAD[9-12]競賽排行榜上排名前20名的模型均選擇使用BERT模型,且最好成績超過人類水平;在CoQA[13-15]競賽排行榜上,排名前12名的模型也全部基于BERT模型,排名第一的模型也同樣取得了超過人類水平的成績.
BERT本質上也是一種多層Transformer[16]結構.它的輸入是一段文本中每個單詞的詞向量(分詞由Word Piece生成),輸出是每個單詞的BERT編碼.單詞的BERT編碼表示一般包含了該單詞及其上下文的信息.BERT模型采用了2個預訓練任務:雙向語言模型和判斷下一段文本.這2個任務均屬于無監督學習,即只需要文本語料庫,不需要任何人工標注數據.
1) 掩碼機制
BERT提出了掩碼機制.BERT在一段文本中隨機挑選15%的單詞,以掩碼符號[MASK]代替.然后,利用多層Transformer機制預測這些位置的單詞.由于輸入中沒有被掩去的單詞的任何信息,這些位置上的Transformer輸出可以用來預測對應的單詞.因此BERT是一個雙向語言模型.但是,由于原文本中并不包含掩碼[MASK],從而使得預訓練任務與真正目標任務會出現不一致的情況.為了更好地緩解這個問題,BERT采取了在選取被掩單詞后以80%的概率替換成[MASK],同時以10%的概率替換成一個隨機單詞,以10%的概率保持原單詞的方法.最終實驗也證明該方法可以有效地提升目標任務的準確性.
2) 判斷下一段文本機制
BERT的第2個預訓練任務是二分類問題:給定2段文本A,B,判斷B是否是原文中A的下一段文本.為了盡可能多地考慮上下文,文本A和B的長度總和最大為512個詞.訓練中,50%的正例來自原文中緊挨著的2段文本,50%的負例來自2段無關聯的文本.由于Transformer結構只接收一段文本輸入,BERT將A和B拼接起來,并加上起始符號[CLS]和分隔符[SEP].為了使模型區分文本A和B,還加入了段編碼,即給文本A和文本B中的單詞分配不同的編碼.設起始符[CLS]位置的BERT編碼為CLS,則模型預測文本B是文本A的下一段文本的概率.判斷下一段文本的預訓練任務屬于分類問題,提高了預訓練階段與微調階段任務的契合度.這也是BERT取得比其他預訓練語言模型更優秀結果的原因之一.
3) BERT預訓練
BERT的預訓練數據來自公開語料庫Books Corpus(共8億個詞)和英文維基百科(共25億個詞)[3].BERT公開的預訓練模型有BASE與LARGE兩種.
① BERTBASE:12層Transformer,輸入和輸出維度為768,注意力含12個Head,共1.1億個參數.
② BERTLARGE:24層Transformer,輸入和輸出維度為1 024,注意力含24個Head,共3.4億個參數.
其中,2個模型均訓練了40輪.BERTBASE在4個Cloud TPU上訓練,BERTLARGE在16個Cloud TPU上訓練,均花費了4天左右的時間.特別地,相比于GPU來說,針對深度學習訓練TPU能夠進行更好的硬件和算法的優化.在4個GPU上訓練BERTLARGE需要花費初略計算約100天時間.因此,BERT語言模型被提出時是當時耗費計算資源最多且模型規模最大的自然語言預訓練模型.
如圖1所示,我們利用深度學習領域的自監督學習和多任務學習技術,創新地提出了基于BERT模型架構的垂直領域預訓練語言模型:金融預訓練語言模型,我們將其命名為F-BERT模型.F-BERT是同樣采取預訓練(pre-training)加微調(fine-tuning)的兩階段架構.其中,在模型預訓練階段,F-BERT與傳統的BERT預訓練不同之處在于,與其使用少量的預訓練目標進行訓練,不如考慮同時引入多種預訓練任務來嘗試更好地幫助模型進行有效地學習訓練.因為除了語言共現信息之外,在訓練語料中實際上還涉及到多方面的語言知識,例如詞法、句法以及更高層次的語義和語用等知識.同時,也還包括金融實體等詞語概念的知識、文本語義相似度等語義知識.最重要的是,F-BERT會通過多任務學習來不斷地更新預訓練模型.并且,與現有的預訓練模型相比,F-BERT同時在通用語料庫和金融領域語料庫上進行訓練.在微調階段,首先使用預訓練的參數初始化F-BERT,然后使用特定于任務的監督數據進行微調訓練.

Fig. 1 An illustration of the architecture for F-BERT圖1 F-BERT模型的預訓練架構
本節將對F-BERT模型架構進行詳細描述.
在預訓練的階段,我們使用Transformer編碼器,采取和BERT類似的編碼方法,即位置編碼(position embedding)、段編碼(segment embdding)和令牌編碼(token embedding),但除此之外我們額外設計了一個任務編碼(task embedding).針對不同的預訓練任務,我們使用任務編碼來精細化地建模不同類型的任務.對于N個任務,任務的ID范圍就是1~N,每個任務ID都會被映射到不同的編碼上,最終輸入編碼的輸入為:輸入編碼=位置編碼+段編碼+令牌編碼+任務編碼.具體如圖2所示.

Fig. 2 Transformer encoder layer圖2 Transformer編碼層
接下來,針對輸入編碼計算注意力,我們使用Transformer的多頭自注意力機制進行計算.它主要由查詢Query(使用Q來代替),鍵Key(使用K來代替)和值Value(使用V來代替)作為輸入,然后使用線性變換對Q,K,V進行投影,并且可以同步計算多次,即使用多頭h來表示h個不同的線性變化.最后再將全部的注意力值結果進行拼接,從而完成一次多頭注意力計算.對于單個Q,注意力功能的輸出是V的加權組合.為了簡化計算,在這里我們將自注意力取相同的Q,K,V值,并且注意力計算使用是縮放點積.具體注意力函數為
其中,d表示Q,K,V向量維度.
目前預訓練階段主要是利用句子或詞的共現信號設計不同任務進行語言模型的預訓練.例如,原始BERT模型構建了2個預訓練(遮蔽語言模型任務和下一句預測任務);XLNet[9]模型利用全排列的語言模型進行自回歸方式的預訓練.相比較之下,我們在F-BERT模型中堆疊了大量的預訓練目標.就好像人類進行外語考試,在卷子上面有多種不同的題型,如果可以進行綜合訓練,那么對整體學習提升一定有很大幫助.具體來說,在預訓練階段,F-BERT構造了4個自監督學習的預訓練任務,并通過多任務學習方式從訓練文本語料中學習不同層面的知識.如圖1所示,這4個自監督的預訓練任務分別為:跨度替換預測預訓練任務、大寫預測預訓練任務、句子打亂重組預訓練任務,以及問答句子關系預訓練任務.
1) 跨度替換預測預訓練
我們采取了一種分詞級別的預訓練任務,實現跨度替換預測預訓練.BERT模型的輸入主要是以字為單位進行切分,這樣就不能夠更好地考慮到共現單詞和共現詞組間的關系,進一步導致不能充分學習其所包括對隱含先驗知識.針對金融領域文本語料該問題就會更進一步被放大,從而降低模型的學習效果.通過借鑒Mandar等人提出的SpanBERT[17]思想,我們對谷歌原生的BERT模型進行了2方面改進:①不再對單個隨機詞定義掩碼,而是定義了一種更好的跨度掩碼方案,即采取隨機對一定窗口范圍的鄰接詞來設計掩碼;②不再對分詞內單個詞的表示過多依賴,而是定義一種分詞邊界表示來預測被添加掩碼的分詞內容,從而實現跨度替換預測的訓練目標,最終我們可以更充分地學習到領域性更強的金融領域文本知識,提升F-BERT模型性能.
關于跨度替換預測預訓練任務,具體來說,首先,我們迭代地采樣文本序列,即針對每一個單詞序列X=(x1,x2,…,xn),通過定義一個掩碼比例閾值(例如整個序列的20%)來構造一個序列子集Y.在F-BERT訓練任務中,我們采取基于幾何分布來隨機選擇一定長度的文本.由于幾何分布(geometric distribution)是一種離散型概率分布,在它的第m次伯努利試驗中,試驗k次才得到第1次成功的機率,因此我們能夠均勻地(隨機地)得到分詞起點并可以得到一個較短的序列.為了獲得更佳的采樣長度分布,F-BERT模型中的幾何概率分布超參數P=0.18,最大長度上限T=16(超出部分按照丟棄處理),通過實驗我們得到的最佳平均序列長度是4.6.接下來,我們具體實現了該實現跨度替換預測預訓練任務.在F-BERT訓練過程中,我們將跨度定義為取跨度前后邊界的4個詞,如果這些詞沒有在跨度范圍內,就使用這4個詞的向量再加上跨度中被遮蓋掉詞的向量來預測原來的單詞.具體實現就是使用一個2層的前饋神經網絡,并使用層正則化,其中的激活函數我們使用ReLU,從而將編碼向量和位置向量拼接起來:
h=LayerNorm(ReLU(W1X)),
f=LayerNorm(ReLU(W2h)).
我們同樣使用交叉熵作為損失函數,就是跨度替換預測預訓練目標的損失來用于模型訓練.
為了更直觀地理解跨度替換預測訓練,圖3中給出一個具體例子,其中使用了跨度替換預測預訓練任務.假設輸入序列為“股價預測很困難”,以“很”字為例,我們首先隨機掩蓋一個連續的跨度(圖中的x4到x6),針對待預測字的位置信息和基于該跨度前后S個字的表示(這里S=2)來進行最終預測,這個過程就是跨度替換預測訓練任務,同理,最終的“測”和“困”也使用同樣的跨度替換方法來進行預測.在跨度替換預測過程中,對每個文本序列相當于進行多次驗碼,因此任意字都會成為跨度替換預測連續內容,這樣就實現了各個字的表示均會包含周圍跨度的信息,從而將跨度前后字的知識體現到跨度中的字的語義信息中.針對抽取類任務中(例如金融文本邊界檢測,跨度和起止位置的知識對模型而已非常重要),我們通過對預訓練語料的不斷訓練,最終就可以使得F-BERT模型在這樣的抽取類任務中取得很好的效果.

Fig.3 An example of span boundary prediction task圖3 跨度替換預測預訓練示例
2) 大寫預測預訓練任務
大寫預測預訓練任務主要是由F-BERT模型預測一個字母是不是大寫.這個對特定的任務例如命名實體識別比較有用,與句子中的其他單詞相比,大寫單詞通常具有某些特定的語義價值,尤其對于金融文本處理,其中包含很多專業命名實體,因此該任務可以發揮很大作用.同時,針對中文的訓練語料,我們還額外定義了一個預測某個詞組是不是專有短語的縮寫訓練任務,這個針對中文的金融文本處理作用較大.
3) 句子打亂重組預訓練任務
句子打亂重組預訓練任務主要是進行順序還原,就是將輸入文本序列隨機打亂,然后通過該任務將其還原回來.受到ALBERT和T5[18]預訓練任務的啟發,我們提出一種更優的重組任務.具體來說,首先把一篇文章隨機分為n=1到k份,對于每種分法都有n!種組合,然后我們再讓模型去預測這篇文章是第幾種,本質相當于構造了一個多分類的問題,通過該任務就能夠讓模型學到句子之間的順序關系.
4) 問答句子關系預訓練任務
問答句子關系預訓練任務主要是判斷2個句子是否屬于問答對.問答或者對話的數據對語義表示很重要,因為對于相同回答的提問一般都是具有類似語義的,通過修改段嵌入,使之能夠適用多輪問答或多輪對話的形式.具體:定義3個句子的組合[CLS]Sentence1[CLS]Sentence2[SEP]Sentence3[SEP]的格式,這種組合可以表示多輪問答和多輪對話,例如QRQ,QRR.在這里,Q表示“問題”文本,R表示“答案”文本.
本節我們首先給出預訓練數據集的構建;然后在多個金融任務上將F-BERT與最新的預訓練模型進行了性能比較;最后進行了詳細的模型分析,包括預訓練對模型性能的影響、少量預訓練數據進行預訓練分析和預訓練語料庫的大小的討論等.
為了更好地訓練F-BERT模型,我們主要構建了基于通用領域和金融領域2部分的訓練語料.其中,通用領域訓練數據集與BERT模型訓練相似,使用來自Wikipedia和Book Corpus的英語語料庫.為了將F-BERT模型更好地應用于金融文本,我們還構建了金融領域訓練數據集,通過在金融網站上爬取各種金融文本數據,包括金融新聞和對話等.如表1所示,我們具體構建了4個大小不同、領域不同的英語語料庫,總計超過40 GB大小的文本(約108.4億個詞):
1) 通用英語訓練語料庫Book Corpus和英語Wikipedia.即用于訓練BERT的原始數據,共計13 GB(約33.1億詞)文本.
2) Financial Web金融文本數據集(共23 GB,約62.5億詞).主要是從Common Crawl News數據集中進行收集的,其中包含2012-01至2019-12期間的1 300萬條財經新聞以及爬取自FINWEB網站的金融文章.
3) Reddit Finance QA金融問答文本數據集(共4 GB,約12.8億詞).主要從Reddit網站上收集有關金融問題然后構建一個問答訓練語料.
表1中報告了F-BERT全部預訓練數據的統計信息.我們已經建立并維護了一個開放的金融文本語料庫并進行了開源處理,任何人都可以訪問和利用該資料庫資源.

Table 1 List of Pre-training Corpora Used for F-BERT
F-BERT的預訓練過程對整個計算力有著非常大的要求,我們主要采取基于AI Framework On YARN分布式框架來進行F-BERT預訓練.該訓練框架是使用Horovod[19]的分布式訓練方案,整個架構基于YARN實現的16張NVidia Tesla v100 GPU卡進行訓練,框架在調度上非常靈活,同時還具有調度作業高伸縮性和高容錯力.Horovod是由Uber發布的開源深度學習工具,它是一個分布式深度學習框架.Horovod庫為分布式訓練提供了幫助,可以使分布式深度學習更易于使用且訓練更高效,該庫集成了百度Ring Allreduce和Facebook的一小時訓練ImageNet論文的優點.Uber官方發布的Horovod包括TensorFlow和Horovod兩種分布式方案,根據其架構特點,GPU的數量越多,Horovod性能損失越小,要優于分布式TensorFlow,甚至訓練速度可以達到TensorFlow的2倍;同時,即使GPU卡數量達到幾十張,仍可以保證穩定的加速比.我們使用混合精度的訓練方式來訓練F-BERT模型,以便可以更好地提高預訓練效率.
目前的神經網絡模型,它們的訓練過程基本都使用雙精度或單精度的數據類型.但由于顯存大小的限制,如果神經網絡模型很深且比較復雜時通常會使得處理的batch較小.如果調整batch的大小,會降低數據的處理效率,訓練速度會受到影響,并且一旦batch很小的話,也會造成模型訓練不穩定并影響模型整體性能.2018年,百度在ICLR提出了一種單精度和雙精度的混合精度訓練,該方法可以減少顯存消耗并加速訓練,通過在語言模型任務、語言識別任務和圖像檢測任務上進行了有效性驗證,均表現非常高效.通常而言,Nvidia的Pascal系列顯卡或新一代GPU架構Volta系列在單精度和底精度計算方面都有非常好的支持,例如,NVIDIA Tesla P40硬件支持INT8計算加速,NVIDIA Tesla V10支持FP16計算加速,同時,就計算峰值而言,相比單精度浮點,低精度浮點計算的峰值要高得多.因此,本節提出的F-BERT,在實驗中采用了混合精度訓練方式.具體而言,F-BERT采用的是FP16和FP32的混合精度訓練.其中,模型的計算過程使用FP16精度進行加速,而權重參數會以FP32數據格式進行存儲、FP32格式進行參數更新,從而使得模型兼具了FP16的速度和FP32的穩定性.因此,F-BERT的訓練過程既減少了緩存的開銷也加速了訓練,同時因為FP16的速度優勢,使得F-BERT的整體預訓練和推理都有了一定提升.另外,由于神經網絡的訓練梯度一般會超過FP16的范圍,為了控制梯度使其在反向傳播過程中在其表示范圍內,在訓練過程中,我們針對F-BERT特別使用了Loss Scaling策略控制來對損失的控制,對其梯度進行了放大的處理.
微調(fine-tuning)是機器學習和深度學習中常用的一種調參方法.在實際中,考慮到數據不足夠大,通常很少且很難從頭開始重新進行神經網絡模型的訓練.通常采取的辦法是探索如何利用已有的神經網絡,然后在其基礎上結合具體任務特點進行進一步訓練處理.通常,預訓練語言模型BERT包括2個連續的步驟:一個是預訓練階段(pre-training),另外一個是微調階段(fine-tuning).它首先在預訓練階段對大型語料庫進行無監督預訓練,接下來在微調階段再對下游的自然語言處理任務進行有監督微調.與BERT相似,從頭開始在這些大型無監督語料上訓練F-BERT模型,并將其微調/應用于各種下游有監督的金融文本處理任務.在這里,我們分別在金融關系提取、金融情緒分類、金融智能問答任務這3個有代表性的金融文本挖掘任務上進行了微調處理.
1) 金融文本邊界檢測
金融文本關系抽取常被稱作金融文本邊界檢測,它是金融文本挖掘的基本任務.由于句子是自然語言的基本單位,檢測句子的開頭和結尾,或者句子邊界檢測是許多自然語言處理任務(例如詞性標記、信息提取等)非常基礎的一步.在金融領域,招股說明書等文獻中包含了投資方式等投資基金詳細信息,金融句子邊界檢測任務,就是指如何將嘈雜的非結構化文本轉換為半結構化文本,從而實現通過檢測招股說明書的開始和結束邊界來提取句子的細分.2019年,IJCAI19會議發布了FinNLP金融檢測挑戰賽數據集FinSBD Shared Task[20-22].本節使用FinSBD Shared Task數據集作為金融句子邊界檢測任務的有監督微調數據.FinSBD-2019數據集包含已自動分段的金融文本,它的訓練集和開發集中有953個不同的開始標記和207個不同的結束標記.
2) 金融情緒分析
金融情緒分析是金融科技中一項基本任務,也是金融文本分析最基本的任務之一.金融情緒分析主要是指根據給定金融文本數據,檢測文本的目標情緒得分.本節使用2個金融情緒分析數據,分別是Financial PhraseBank和金融情緒分析挑戰數據集(FiQA Task1)[23].Financial PhraseBank數據集包含了4 845個英語單詞,這些文本是從LexisNexis數據庫中發現的財經新聞中隨機挑選的,然后由具有金融和商業背景的16個專家進行了標注處理.金融情緒分析挑戰數據集(FiQA Task1)包括2種類型:金融新聞標題和金融微博,分別帶有人工標注的目標實體和情感得分.其中,金融新聞標題數據集總共包含529個帶標注的標題樣本(訓練集為436個樣本,測試集為93個樣本),而金融微博包含總共774個帶標注的帖子樣本(訓練集為675個樣本,測試集為99個樣本).
3) 金融智能問答
金融智能問答是金融科技的一項具有挑戰的任務,其目的是自動提供與給定短文本或文章相關的問題的答案.2018年,WWW18會議發布了2個金融文本處理數據集[23-24],分別是金融情緒分析挑戰數據集(FiQA Task1)、金融金融智能問答挑戰數據集(FiQA Task2).這里使用FiQA Task2的數據集作為金融金融智能問答任務的有監督微調數據.FiQA Task2數據集是通過抓取Stack Exchange網站在2009—2017年間所有涉及“投資”主題的帖子內容人工構建而成的.例如,類似這樣的問題“Why are big companies like Google or Apple not included in the Dow Jones Industrial Average (DJIA) index?”.最終FiQA Task2數據集包含了57 640個答案集,其中包含了17 110個“問題-答案”用于訓練集和531個“問題-答案”用于測試集.
1) 金融文本邊界檢測任務
在IJCAI19金融檢測挑戰賽數據集FinSBD Shared Task測試集上提交方法以進行評估,詳細內容參見表2.在表2中我們可以看到,針對測試集上的準確率,所提出的F-BERTLARGE和F-BERTBASE優于模型發布時的其他方法,尤其取得最佳結果的F-BERTLARGE模型獲得了0.93的ES(end of sentence)得分,0.95的BS(beginning of sentence)得分和0.938的MEAN(平均值)分數,均為評估指標的最佳成績.正如實驗結果所看到,對通用領域語料庫和金融領域語料庫進行預訓練的F-BERT是非常有效的,在金融句子邊界檢測任務上獲得了顯著的模型性能提升.

Table 2 Experimental Results on Test Set for the FinSBD Dataset
2) 金融情緒分析任務
從表3~4我們可以看到F-BERT模型和其他有競爭力的方法在Financial PhraseBank和金融情感分析數據集(FiQA Task1)上的性能.
如表3~4所示,F-BERT模型(包括F-BERTLARGE和F-BERTBASE)的模型準確率優于基線模型分別在PhraseBank情感分析數據集和FiQA Task1情感分析數據集上取得的成果.其中,在Financial PhraseBank[29]上,最優模型F-BERTLARGE獲得了0.90的準確率和0.89的F1值.
情感分析數據集FiQA Task1主要包括2種類型的數據:金融新聞頭條和金融微博.FiQA Task1具體有2個評估指標[27]:均方誤差(MSE)和R方(R2).在表4中,MSE(H)和MSE(P)分別表示金融微博的均方誤差和金融新聞頭條的均方誤差,同樣R2(H)和R2(P)分別表示為金融微博和金融新聞頭條的R方值.通過表4可以清晰看到,在FiQA Task1上,最優模型F-BERTLARGE獲得了MSE(H)=0.30和R2(H)=064的值,以及MSE(P)=0.34和R2(P)=0.27的值.
表3~4的實驗結果表明在Financial PhraseBank和FiQA Task1上,F-BERT的表現均明顯優于提交時的所有其他方法,這證明了方法的有效性.考慮到使用眾多語言功能的最新模型的復雜性,目前的實驗結果令人鼓舞,這些結果突出了特定于金融領域的語料庫預訓練設計的重要性.

Table 3 Experimental Results on Test Set for the PhraseBank Financial Sentiment Analysis Dataset

Table 4 Experimental Results on Test Set for the FiQA Task1 Financial Sentiment Analysis Dataset
3) 金融智能問答任務
表5展示了金融文本智能問答挑戰數據賽(FiQA Task2)上方法和其他基準模型的性能對比.為了更好地進行金融智能問答模型的性能比較,FiQA Task2數據集主要定義了2個評估指標[27]:歸一化貼現累積收益(nDCG)和平均倒數排名(MRR).從表5可以看到,我們的最佳模型F-BERTLARGE在測試集上可達到nDCG=0.60和MRR=0.52,同時F-BERTBASE達到了nDCG=0.51和MRR=0.41,其準確率也高于其他的基準模型.由于金融智能問答的數據一般都很小(只有幾十或者上百個訓練樣本),由此可見,模型預訓練模型在金融智能問答任務中可以起到非常重要的作用.

Table 5 Experimental Results on Test Set for the FiQA Task2 Question Answering Dataset
為了詳細分析架構內各組件對最終性能的影響,在本節中對架構進行了詳細的模型分析,包括預訓練對模型性能的影響、少量預訓練數據進行預訓練分析和預訓練語料庫大小的討論.
1) 預訓練對模型性能的影響
如表6所示,進一步測量了預訓練對模型性能的影響.詳細比較了4個模型:沒有進一步的預訓練,由Vanilla BERT和Vanilla F-BERT表示;對訓練集進行進一步的預訓練,使用BERT-task和F-BERT-task表示.在測試數據集上使用準確率、精確率和召回率的得分對相應模型進行評估.從表6可以明顯看出,F-BERT模型能帶來可觀的性能提升.盡管BERT任務在金融領域訓練集上進行了進一步的預訓練,但Vanilla F-BERT的性能優于2個基于Vanilla BERT的模型Vanilla BERT和BERT-task,在準確率上,比它們分別提高0.06和0.03.這表明F-BERT在預訓練期間有效地利用了來自大量未標記金融文本的領域特定知識.

Table 6 Experimental Results on Test Set for the Financial Classification Dataset
2) 少量預訓練數據預訓練分析
預訓練模型通常需要龐大的訓練語料庫來進行訓練,但是,在金融領域的許多應用程序中,很難擁有大型的有標注訓練語料庫.因此,為進一步驗證F-BERT的優勢,本文進行了一個模型實驗.實驗使用小型語料庫來分別對BERT和F-BERT進行預訓練.具體地說,通過在整個金融訓練數據集中隨機選擇1/8大小的文本數據作為訓練語料庫.然后,基于自己模擬構造的這個小語料庫,對所有模型進行預訓練,并和1)中實驗的相同任務上進行測試,實驗結果詳見表7.

Table 7 The Performance of BERT and F-BERT on Three Financial Tasks When They Are Trained on a Small Corpus
從表7中的實驗數據我們可以看到,與之前的實驗相比,該實驗呈現了相同的趨勢,F-BERT模型在所有任務中始終勝過BERT.該實驗結果進一步證實,當模型在不同大小的語料庫上訓練時,F-BERT可提供穩定的增強.如表7所示,這些實驗數據也表明,F-BERT模型可以在具體金融文本處理任務上提供更多幫助,例如金融機器閱讀理解任務、金融情感分析任務和金融句子邊界檢測任務.總體而言,該實驗模擬了在數據有限的情況下對金融文本進行預訓練的情況,這是特定領域經常遇到的問題,因此證明了F-BERT有潛力處理特定領域的小訓練數據集問題.
3) 預訓練語料庫的大小及訓練時長變化分析
為了進一步評估針對不同大小的數據集F-BERT模型的表現,我們針對預訓練語料庫的規模大小進行了消融實驗.通過在3個具體下游金融任務上的性能改進變化,進一步驗證了在預訓練階段數據大小和多樣性的重要性.表8詳細地展示了不同大小的數據集上F-BERT模型的性能變化.通過該實驗我們還觀察到,隨著訓練時間的提升F-BERT并沒有過分擬合數據,模型同樣會從進一步訓練中獲益.

Table 8 The Performance of F-BERT on Different Traing Size and Steps of the Corpus
我們利用真實線上業務數據對所提出的F-BERT模型有效性進行了進一步驗證.具體來說,我們從金融科技實際業務中抽象并人工構建了2個典型的金融領域數據集:包括金融命名實體識別任務數據集和金融短文本分類任務數據集,然后分別針對金融命名實體識別和金融短文本分類這2個實際金融任務進行了實驗.
1) 金融命名實體識別
金融命名實體識別,是一種非常常見的金融業務,此任務主要是對給定的金融文本,利用訓練模型可以自動完成有特定意義的金融實體的識別,包括識別出金融機構名、人名(例如高管、人名),以及其他專有實體名詞等.該任務也是關系抽取和實體提取的基礎任務,也多用于金融大數據和金融知識圖譜相關任務中,是金融數據分析的一項非?;A的任務.在這里,我們對實際業務數據進行了簡化和脫敏處理,從真實數據中人工整理出一個金融命名實體識別數據集.該數據集共包含53 000條訓練樣本,測試數據集45 000條,訓練數據樣本8 000條.
2) 金融短文本分類
金融短文本分類是一種非常常見的金融業務,此任務主要是幫助判斷該金融短文本屬于哪一類別,從而完成金融文本內容對自動類別分類,最終對于不同的金融業務場景可以有不同的業務處理方案.在這里,我們對針對實際金融短文本分類進行了精簡處理,基于真實的業務數據,我們構造了一個包含6 600條樣本、6個類別的金融短文本分類數據集.該數據集的訓練集和測試集分別有2 000條和2 850條.
3) 實驗結果
基于構建的金融命名實體識別數據集、金融短文本分類數據集,我們將提出的F-BERT模型分別與BERT模型和RoBERTa-wwm-ext[6]模型、BERT-wwm[26]模型進行金融文本挖掘任務的實驗比較.表9和表10給出了最終的實驗對比結果.實驗過程中,我們針對這3個基準模型(BERT,RoBERTa-wwm-ext,BERT-wwm)和F-BERT均設置成相同的學習率等超參數,最終在F1值上平均可以提升3~4個百分點的準確率.通過對真實業務數據的對比實驗,包括金融命名實體識別任務、金融類短文本類型分類任務的基線測試,我們可以清楚看到,F-BERT模型在相比于BERT等其他基線模型在金融文本發掘任務上有比較明顯的提升.

Table 9 Experimental Results on Named Entity Recognition Task

Table 10 Experimental Results on SMS Text Classification Task
在本文中,我們利用深度學習領域的自監督學習和多任務學習技術,創新地提出了一種基于BERT模型架構的大規模語料上訓練的開源金融預訓練模型F-BERT.雖然BERT是為理解通用語言而構建的,但F-BERT通過多任務自監督學習進行同時預訓練,有效地捕獲了大規模預訓練語料中的金融領域知識和語義信息.我們通過最小限度地修改特定于具體金融任務的模型結構,F-BERT在多個金融文本數據挖掘任務(包括金融關系提取任務、金融情緒分類任務、金融智能問答任務)上的性能均優于當前的最新模型.同時,我們還從金融科技線上業務中構建了2類有代表性的金融大數據挖掘任務,即:金融命名實體識別、金融短文本分類,在這2個實際金融科技任務進行了實驗,F-BERT模型同樣取得了最佳準確性.
將來的工作中,我們將進一步擴展F-BERT模型以進行消費者情緒分析和個性化理財智能投顧問題的研究.