周亦敏,黃 俊
(上海理工大學 光電信息與計算機工程學院,上海 200093)
當今,已經形成一些學術搜索引擎,例如微軟學術搜索、谷歌學術搜索和AMiner等,這使得探索諸如科學文獻和研究者概況這類海量的數字學術資料更方便。數據量和種類的快速增長需要更先進的工具來幫助學術數據的研究,并且已經付出巨大的努力來開發各種高效的應用。長期以來,學術合作者推薦被認為是開發學術數據的一種有效應用,其目的是為給定的研究者找到潛在的合作者。在過去的幾年中,已經提出了一些方法[1-3]來解決這樣的問題。盡管取得了進步,但現有的技術只能推薦不考慮上下文關系的合作者。例如,目前的工作不能推薦合適的候選人給一個不僅包含“機器學習[4]”而且包含“推薦算法”主題的研究者。一般來說,在尋找合作者之前,研究者會先確定他要研究的主題。因此,有必要使用上下文關系為學術合作者提供推薦。
研究者:一名研究者與他發表的文獻有關,這些文獻揭示了他的研究興趣和與他人的學術合作。
研究主題:研究主題是從特定文段(如標題或關鍵詞列表中的一個詞)中提取的關鍵詞或短語;同時,一個文獻包含一個或多個研究主題,這些研究主題共同反映了其潛在的范疇。
上下文:合作上下文指的是研究人員在其合作文獻中共同研究的主題集。
基于以上的初步研究,對基于BERT的學術合作者推薦研究的定義如下:
BACR給定研究者r0和主題T0,從所有候選者R中找到合作者r,這些合作者將在T0上與r0一起工作,具有最高的可靠性。
該文所研究的學術合作者推薦主要用到兩組數據:研究者和研究主題。研究者每篇學術文獻都已給出,需要進行預處理的數據是研究主題,主要使用以下兩個方法:
(1)詞干提?。喝コ~綴得到詞根的過程(得到單詞最一般的寫法)。對于一個詞的形態詞根,詞干不需要完全相同;相關的詞映射到同一個詞干一般就能得到滿意的結果,即使該詞干不是詞的有效根。
(2)停用詞去除:因為在文獻的標題和摘要中通常會有一些高頻但無實際意義的詞,如:“this”,“of”,“is”,“at”等,該文將此類詞語加入停用詞表過濾掉。
基于以上兩個方法,從文獻的標題和摘要中獲取到一些詞組配合文獻已有的關鍵詞生成真正的關鍵詞組。
BERT[5],即是bidirectional encoder representations from transformers,顧名思義,BERT模型重要部分是基于雙向的Transformer編碼器來實現的,其模型結構如圖1所示。

圖1 BERT模型結構
圖1中的w1,w2,…,w5表示字的文本輸入,經過雙向的Transformer編碼器,就可以得到文本的向量化表示,即文本的向量化表示主要是通過Transformer編碼器實現的。Transformer是由文獻[6]提出,是一個基于Self-attention的Seq2seq模型,也就是Encoder將一個可變長度的輸入序列變成固定長度的向量,而Decoder將這個固定長度的向量解碼成為可變長度的輸出序列。通常Seq2seq模型中使用RNN來實現Encoder-Decoder的序列轉換,但是RNN存在無法并行、運行慢的缺點,為了改進它的不足,Transformer使用Self-attention來替代RNN。Transformer模型的encoder結構如圖2所示。
從圖2中可以看出,Encoder的輸入是一句話的字嵌入表示,并且加上該句話中每個字的位置信息,再經>過Self-attention層,使Encoder在編碼每個字的時候可以查看該字的前后字的信息。它的輸出會經過一層Add & Norm層,Add表示將Self-attention層的輸入和輸出進行相加,Norm表示將相加過的輸出進行歸一化處理,使得Self-attention層的輸出有固定的均值和標準差,其中均值為0,標準差為1。歸一化后的向量列表再傳入一層全連接的前饋神經網絡,同樣的,Feed Forward層也會由相應的Add & Norm層處理,然后輸出全新的歸一化后的詞向量列表。

圖2 Transformer Encoder結構
圖1中的Embedding包含三個嵌入層分別是Token Embeddings、Segment Embeddings和Position Embeddings,如圖3所示。

圖3 BERT的輸入表示
Token Embeddings:Token Embeddings層是要將各個詞轉換成固定維度的向量。輸入文本在送入Token Embeddings層之前要先進行tokenization處理。此外,兩個特殊的token會被插入到tokenization的結果的開頭([CLS])和結尾([SEP])。
Segment Embeddings:Segment Embeddings層標記輸入的句子對的每個句子,只有兩種向量表示。前一個向量是把0賦給第一個句子中的各個token,后一個向量是把1賦給第二個句子中的各個token。如果輸入僅僅只有一個句子,那么它的segment embedding就是全0。
Position Embeddings:Position Embeddings層標識序列的順序信息,最長序列長度為512。Position Embeddings layer實際上就是一個lookup表,表的第一行代表第一個序列的第一個位置,第二行代表序列的第二個位置,以此類推。
BERT模型使用兩個新的無監督預測任務來對BERT進行預訓練,分別是Masked LM和Next Sentence Prediction:
MLM:給定一句話,隨機掩蓋部分輸入詞,然后根據剩余的詞對那些被掩蓋的詞進行預測。這個任務在業界被稱為Cloze task(完型填空任務),它是為了讓BERT模型能夠實現深度的雙向表示,不僅需要某個詞左側的語言信息,也需要它右側的語言信息,具體做法是:針對訓練樣本中的每個句子隨機抹去其中15%的詞匯用于預測,例如:“加油武漢,加油中國”,被抹去的詞是“中”,對于被抹去的詞,進一步采取以下策略:(1)80%的概率真的用[MASK]去替代被抹去的詞:“加油武漢加油中國”->“加油武漢,加油[MASK]國”;(2)10%的概率用一個隨機詞去替代它:“加油武漢,加油中國”->“加油武漢,加油大國”;(3)10%的概率保持不變:“加油武漢,加油中國”->“加油武漢,加油中國”。這樣做的主要原因是:在后續微調任務中語句中并不會出現[MASK]標記,若總是使用[MASK]來替代被抹去的詞,就會導致模型的預訓練與后續的微調不一致。這樣做的優點是:采用上面的策略后,Transformer encoder就不知道會讓它預測哪個單詞,換言之它不知道哪個單詞會被隨機單詞給替換掉,那么它就不得不保持每個輸入token的一個上下文的表征分布。也就是說如果模型學習到了要預測的單詞是什么,那么就會丟失對上下文信息的學習,而如果模型訓練過程中無法學習到哪個單詞會被預測,那么就必須通過學習上下文的信息來判斷出需要預測的單詞,這樣的模型才具有對句子的特征表示能力。另外,由于隨機替換相對句子中所有tokens的發生概率只有1.5%(即15%的10%),所以并不會影響到模型的語言理解能力。
NSP:給定一篇文章中的兩句話,判斷第二句話在文章中是否緊跟在第一句話之后。許多重要的自然語言處理下游任務,如問答(QA)和自然語言推理(NLI)都是基于理解兩個句子之間的關系,因此這個任務是為了讓BERT模型學習到兩個句子之間的關系。具體做法是:從文本語料庫中隨機選擇50%正確語句對和50%錯誤語句對,即若選擇A和B作為訓練樣本時,B有50%的概率是A的下一個句子(標記為IsNext),也有50%的概率是來自語料庫中隨機選擇的句子(標記為NotNext),本質上是在訓練一個二分類模型,判斷句子之間的正確關系。在實際訓練中,NSP任務與MLM任務相結合,讓模型能夠更準確地刻畫語句乃至篇章層面的語義信息。
BERT模型的輸出有兩種形式,一種是字符級別的向量,即輸入短文本的每個字符對應的有一個向量表示;另外一種是句子級別的向量,即BERT模型輸出最左邊[CLS]特殊符號的向量,它認為這個向量可以代表整個句子的語義,如圖4所示。

圖4 BERT模型輸出
圖4中,最底端中的[CLS]和[SEP]是BERT模型自動添加的句子開頭和結尾的表示符號,可以看到輸入字符串中每個字符經過BERT模型后都有相應的向量表示,當想要得到一個句子的向量時,BERT模型輸出最左邊[CLS]特殊符號的向量,該文應用的就是BERT模型的這種輸出。
經過上節的處理后,有了研究者和研究主題的向量表示,該文要做的是推薦學術合作者,故此巧妙設置二分類判斷輸入樣本是正類的概率,輸出此概率,最后按照概率的大小做出推薦。在此引入邏輯回歸模型[7](logistic regression),它屬于廣義線性模型。
假設有訓練樣本集{(x1,y1),(x2,y2),…,(xm,ym)},其中xi∈Rn,表示第i個訓練樣本對應的某篇學術文獻里的研究者研究主題向量,維度為n,共m個訓練樣本,yi∈{0,1}表示第i個訓練樣本是否是正類。假設預測函數為:
hθ(x)=g(θTx)
(1)
其中,x表示特征向量,g表示一個常用的Logistic函數(Sigmoid函數):
g(z)=1/(1+e(-z))
(2)
其中,e是歐拉常數,z表示曲線陡度。
結合以上兩式,構造的預測函數為:
hθ(x)=g(θTx)=1/(1+e(-θTx))
(3)
由于g(z)函數的特性,它輸出的結果不是預測結果,而是一個預測為正類的概率的值,預測為負例的概率就是1-g(z),函數表示形式如下:
(4)
由式(4)可知,hθ(x)預測正確的概率為:
P(正確)=((g(xi,θ))(yi)*(1-g(xi,θ))(1-yi)
(5)
其中,yi為某一條樣本的預測值,取值范圍為0或者1。一般進行到這里就應該選擇判別的閾值,由于該文是做出推薦,實際上是輸出正類概率,最后篩選出前k個即為推薦的合作者,故不需要設定閾值。
此時想要找到一組θ,使預測出的結果全部正確的概率最大,而根據最大似然估計[8],就是所有樣本預測正確的概率相乘得到的P(正確)最大,似然函數如下:
(6)
上述似然函數最大時,公式中的θ就是所要的最好的θ。由于連乘函數不好計算,因此對公式兩邊求對數得到對數似然函數:
(7)
得到的這個函數越大,證明得到的θ越好,所以對求l(θ)的最大值來求得參數θ的值,由于在函數最優化的時候習慣讓一個函數越小越好,故此將式(7)做了以下改變得到邏輯回歸的代價函數:

(1-yi)log(1-hθ(xi))]
(8)
對于以上所求得的代價函數,采用梯度下降的方法來求得最優參數θ。梯度下降過程如下:
Repeat{
}

(9)
其中:
而又因為:
則:
因此:
故:

由以上分析可以得到梯度下降過程如下:
Repeat{
}
其中,i=1,2,…,m表示樣本數,j=1,2,…,n表示特征數。由此方法求得θ,得到預測函數hθ(x),即可對新輸入的數據輸出為正類的概率。
綜上2,3,該文提出基于BERT的學術合作者推薦算法,其具體流程可以描述如下:
算法1:基于BERT的學術合作者推薦算法。
輸入:初始研究者研究主題訓練集T={(x1,y1),(x2,y2),…,(xn,yn)},其中xi為每條研究者研究主題,yi表示每條訓練樣本是否為正類,i=1,2,…,N;
輸出:學術合作者推薦模型M。
步驟1:使用第1節中的方法對訓練集T進行預處理,得到預處理后的訓練集T={(x1,y1),(x2,y2),…,(xn,yn)},其中xi為預處理后的每條研究者研究主題,yi表示預處理后的每條訓練樣本是否為正類,i=1,2,…,N;
步驟2:使用第2節中介紹的BERT預處理語言模型在訓練集T上進行微調,采用如圖4所示的BERT模型輸出,得到訓練集T對應的特征表示為V=(v1,v2,…,vN),其中vi是每條研究者研究主題xi對應的句子級別的特征向量,i=1,2,…,N;
步驟3:將步驟2中得到的特征表示V輸入第3節中介紹的邏輯回歸模型進行訓練,輸出學術合作者推薦模型M。
5.1.1 數 據
在該實驗中,采用在文獻[9]中的Citation數據集進行數據分析,該數據集共包含629 814篇學術文獻和130 745名來自數據庫和信息系統相關社區的研究者。通過預處理后共獲得13 379個關鍵字,每個關鍵字都被視為一個獨特的主題。選取其中的600 000篇學術文獻,按照8∶1∶1的比例進行訓練集、驗證集以及測試集的劃分。
5.1.2 評價目標
針對以下目標進行實驗:
主題受限的合作者推薦:評價BERT在確定特定主題下推薦合作者的有效性。該文是基于二分類做出的推薦,分類問題最常用的評價指標包括精確率P、召回率R以及F1值,它們的計算需要用到混淆矩陣,混淆矩陣[10]如表1所示。

表1 分類結果的混淆矩陣
其中行代表真實值;列代表預測值;0表示negative;1表示positive。如果預測的是0,真實值是0,就為TN;如果預測為1,真實值為0,就為FP;預測為0,真實值為1,就為FN,預測為1,真實值為1,就為TP。
(1)精確率P是指分類器預測為正類且預測正確的樣本占所有預測為正類的樣本的比例,計算公式如下:
(10)
(2)召回率R是指分類器預測為正類且預測正確的樣本占所有真實為正類的樣本的比例,計算公式如下:
(11)
(3)F1值是兼顧P和R的一個指標,一般計算公式[11]如下:
(12)
此時F是P和R的加權調和平均,α>0度量了R對P的相對重要性,通常取α=1,此時是最常見的F1,也即:
(13)
其中,0≤F1≤1。當P=1且R=1時,F1達到最大值為1,此時精確率P和召回率R均達到100%,這種情況是完美狀態,而由文獻[11]知實際中很難達到,因為P和R是一對矛盾的變量,當P較高時,R往往會偏低;當R較高時,P又往往偏低。因此,在使用F1值評估性能時,其值越接近1,說明分類器的性能越好。由于F1值是對P和R兩個評價指標的綜合考慮,可以更加全面地反映性能,因此它是評價實驗效果的主要評價指標。
5.1.3 評價方法
為了評估BERT在主題限制的情況下推薦合作者的性能,采用以下基于Network Embedding的具有代表性的方法進行比較。
(1)深層網絡結構嵌入(SDNE)。SDNE[12]代表為編碼實體及其關系的結構信息而設計的方法[13]。當應用于BACR問題時,研究者被視為實體,在特定主題中的合作被視為上下文關系。由于主題的組合,BACR中實際上存在無限數量的上下文關系,因此不能直接采用像[13]這樣的常規方法。
(2)特定任務嵌入(TSE)。針對作者識別問題,在文獻[14]中提出了TSE。簡單來說,TSE由三個層次構成:第一個層次用嵌入學習方法表示上下文關系的每個來源(如關鍵詞、場所),如文獻[15-16];在實驗中,這些嵌入是為研究者和研究主題獨立學習的。在第二層,對所有源的提取嵌入進行不同權重的集成;最后,在集成嵌入的前提下,第三層學習特定分類任務的模型參數。
在以上比較方法中共享嵌入維數Dim。在該實驗中,Dim的范圍為{10,20,30,40,50,60}。粗體表示Dim有效性的比較的默認值,其他用于評估參數靈敏度。而該文使用的BERT預訓練模型是Google提供的BERT-Base模型,Transformer層數12層;隱藏層768維;采用了12頭模式;共有110 M個參數;其他的訓練參數如表2所示。該文使用邏輯回歸用于所有的比較方法,評價指標主要采用F1值。

表2 BERT模型訓練參數
5.2.1 BERT的有效性
所有比較方法的性能總結為表3,其中維數Dim設置為20、40和60;而推薦人數K設置為5、10、15和20。根據所呈現的結果,BERT證明了其在預測主題受限的合作者方面的優勢,因為所產生的F1明顯高于其他人。

表3 主題受限的合作者預測表現
給定不同主題研究者傾向于與不同研究員合作,使得有必要使推薦算法考慮研究者主題依賴關系。通過對實驗結果的進一步分析,可以得出以下三點:
首先,與SDNE相比,BERT和TSE都具有更好的性能。這些方法中最顯著的區別在于,BERT和TSE都在訓練推薦模型的同時提取上下文關系。因此,將上下文關系引入到推薦模型中是十分必要的。
其次,通過觀察,BERT的表現甚至比TSE更好。與研究者和研究主題的特征是獨立訓練的TSE不同,特征訓練在BERT中是一起訓練的。通過這種方式,研究者和研究主題的上下文關系自然得以保留,從而有助于更準確的推薦。
最后,在所有的比較方法中,SDNE的性能最低。很明顯的原因是SDNE沒有考慮到研究者和研究主題之間存在的上下文關系,不同的研究主題下,研究者傾向于與不同的研究者合作。如研究者A傾向于與B在“推薦算法”上合作而不是C,但卻傾向于與C在“機器學習[4]”上合作而不是B。
5.2.2 超參數對推薦算法的影響
圖5(a)和(b)分別演示了超參數Epoch和Learning Rate的影響。根據給出的結果,當Epoch=3和Learning Rate=1e-5時,獲得了優越的性能。此外,很顯然,Learning Rate對BERT的性能影響更大,因為生成的結果因Learning Rate不同而差異很大。較大的Learning Rate使梯度下降的速率更快,但也可能導致錯過全局最優點;因此,需要通過網格搜索仔細選擇適當的值。

(a)Epoch對F1值的影響

(b)Learning Rate對F1值的影響圖5 超參數的影響
綜上可知,基于BERT的學術合作者推薦充分考慮了研究者和研究主題間的上下文關系,對比以往的方法顯著提高了性能,相較于TSE最高提高達到了6.45%,最低提高2.10%;而相較于SDNE最高提高則高達18.00%,最低也提高了13.52%,這也充分展示了BERT的優越性能。
在解決學術合作者推薦的問題中,使用BERT模型進行研究者和研究主題的向量表示,提出了一種基于BERT模型的學術合作者推薦算法,并與SDNE、TSE兩個模型進行對比,實驗結果表明BERT模型在研究者研究主題向量的表示上能達到很好的效果,在一定程度上提升了推薦算法的準確性。