?

基于圖卷積編碼器的蒙漢神經機器翻譯

2023-11-02 12:34蘇依拉仁慶道爾吉李雷孝
計算機應用與軟件 2023年10期
關鍵詞:源語言解碼器編碼器

薛 媛 蘇依拉 仁慶道爾吉 石 寶 李雷孝

(內蒙古工業大學信息工程學院 內蒙古 呼和浩特 010080)

0 引 言

隨著全球化的不斷深入,國家與國家之間、民族與民族之間的交往日益頻繁,而各國家、民族之間的語言差異造成了溝通障礙。因此機器翻譯成為不同國家與民族之間的溝通橋梁。蒙古語屬于小語種,蒙漢機器翻譯系統在解決由于語言差異引起的交流障礙問題方面作出了很大的貢獻,本文主要對句法依存樹提高蒙漢機器翻譯系統性能進行研究。

蒙漢機器翻譯主要采用兩種做法:(1) 傳統的基于短語的機器翻譯方法[1];(2) 利用神經網絡模型進行機器翻譯[2]。對于神經機器翻譯方法,目前的缺陷是嚴格依賴于序列編碼器-解碼框架,并且不能有效利用句子的句法信息以及語言的層次結構信息[3]。究其原因是在編碼序列信息時,并沒有找到一種適合的方式將結構信息納入其中[4]。有研究采用間接的方式引入結構信息[5],還有研究對機器翻譯任務中建模結構信息加以嚴格的限制。對比本文方法,文獻[6]實現了基于非詞匯化概率上下文無關文法的蒙古文句法分析系統,然后設計并開發了基于樹到串的蒙漢統計機器翻譯系統,與該文不同,本文的目標是為編碼器提供對豐富語法信息的訪問,但是讓它決定語法的哪些方面對機器翻譯有益,而不必對語法和翻譯任務之間的交互施加嚴格的限制。因此嘗試在源端加入句法信息作為額外知識來輔助神經系統進行翻譯。

自然語言處理(NLP)的核心技術之一依存句法分析[7],該方法主要通過分析一個句子中詞與詞之間的依賴關系來確定其句法結構。作為底層技術,依存分析可直接用于機器翻譯以提升其效果,并且對于其他NLP任務效果的提升也是顯而易見。雖然神經機器翻譯技術已取得了很大的進步,但其翻譯效果還不及人工翻譯的原因之一在于神經網絡只有根據輸入的平行句子進行學習和對齊[8],并沒有很好地利用句子的句法結構和語義結構信息。蒙古語和漢語在語法結構中存在較大差異。蒙古語屬于阿爾泰語系,其語序為主-賓-謂結構,即主語在前,謂語在賓語之后,修飾語在被修飾語之前。而漢語屬于漢藏語系,在語序結構中采用主-謂-賓結構,其在謂語和賓語部分與蒙古文出現差異,并且這種結構差異會使神經網絡不能完全準確地進行對齊,造成翻譯性能差,倘若能對句子的句法結構進行分析后再進行編碼就會解決該問題,因此本文提出在編碼器端加入句法結構信息用以輔助神經機器翻譯。

DDparser,其全名為Baidu Dependency Parser,是百度開源的基于深度學習框架的依存句法分析系統,其功能為對于給定的源語言句子,可將其解析為依存句法樹,該系統的開源對于NLP(Natural Language Processing)的下游任務提供了巨大的幫助,輸入文本通過DDParser輸出其對應的句法分析樹。

對于句子“那家的飯菜太淡,還很貴”的依存句法關系如圖1所示。連接兩詞的弧表示兩個詞語之間的依賴關系,由核心詞指向依存詞,弧上的標簽表示依存詞對核心詞的關系。其中:ATT表示定中關系,即定語和修飾詞之間的關系;DE通常連接“的”與其中心詞;SBV表示主謂關系,通常也用來表示系詞與表語之間的關系;ADV表示狀中結構,圖1中“淡”是一個形容詞,而“太”作為副詞來修飾“淡”,因此DDparser在解析其關系時,定義為狀中結構;IC表示獨立分句,“淡”和“貴”都用來形容飯菜,但處于兩個分句中。對于百度依存句法分析系統中還存在很多句法關系,具體請查閱文獻[7]??梢钥闯?將這種依存句法關系加入到翻譯系統中,可以很好地輔助句子的理解,使得翻譯更加準確。

圖1 依存句法樹舉例

圖2 編碼器-解碼器模型

1 相關技術

1.1 神經機器翻譯

機器翻譯是利用計算機將一種語言轉換為另一種語言的過程[9]。給定一個含有N個詞的源語言句子X=x1,x2,…,xi,…,xN和一個含有M個詞的目標語言句子Y=y1,y2,…,yj,…,yM,NMT做的工作是將句子級概率分解為詞級的概率的乘積:

(1)

式中:θ表示源語言與目標語言之間的轉化公式。

神經機器翻譯模型通常由編碼器、解碼器,以及構建編碼器解碼器之間的聯系的一些方法組成,例如注意力機制,編碼器接收一個源語言句子序列,將其轉化為中間表示,解碼器再將這個中間表示生成翻譯,如圖1所示。

1.2 序列編碼方式

給定一個源語言句子序列,編碼器的工作就是將其編碼為一個計算機能夠識別的連續稠密向量。編碼方式有很多,包括詞袋模型(Bag-of-words,BOW)、循環神經網絡模型(Recurrent Neural Network,RNN)、卷積神經網絡模型(Convolutional Neural Network,CNN)的編碼器等,本文將重點介紹以上三種編碼方式。

1.2.1BOW(詞袋模型)

BOW[10]的原理十分簡單,就是把一句話轉換成計算機能看懂的向量形式,比如給定兩句話:

(1) 我喜歡書法,曉麗也喜歡。

(2) 我也喜歡繪畫。

可以構建包含所有單詞的詞典向量dictionary=[我,喜歡,書法,曉麗,也,繪畫]。第一句話的向量表示為v1=[1,2,1,1,1,0];第二句話的向量表示為v2=[1,1,0,0,1,1]

向量的每一個維度表示詞典向量中對應的單詞在句子中出現的次數。不難發現這種方式雖然可以將一個句子映射為向量形式,但表示出的句子向量是無序的,它不能明確表示一個單詞在句子中的相對位置,為了表明詞的位置信息用了一個位置編碼嵌入。通常選用整數型數字來表明詞的位置信息,為該數字初始化一個列向量表示詞的位置。因此詞袋模型編碼器可以表示為:

BOW(x1:N,i)=xi+pi

式中:pi表示位置向量。

1.2.2RNN編碼器

RNN編碼器[11]模型是在序列建模中應用的最多的一種變換方式,輸入一個源語言句子X=x1,x2,…,xi,…,xN,傳送給RNN后,RNN通過以下公式遞歸處理輸入中的每一個詞xi將其映射到實值向量中:

RNN(x1:i)=f(xi,RNN(xi))

(2)

式中:xi=x1,x2,…,xi-1;f是非線性函數,通常為LSTM(Long Short-Term Memory)或GRU(Gated Recurrent Unit),為了捕獲當前詞的前后文信息,一般采用雙向LSTM或雙向GRU,本文將采用雙向LSTM。將詞映射到實值向量中后,一個帶有LSTM單元的前饋和后饋RNN開始分別計算其前向和后向隱藏狀態。

(3)

(4)

整個源隱藏狀態hi就包含著前向和后向的全部信息:

(5)

1.2.3CNN編碼器

卷積神經網絡對于處理網絡結構的信息十分有效,最初的提出大多用于分析視覺圖像。2017年Facebook AI實驗室提出一款利用卷積神經網絡進行機器翻譯的翻譯模型Fairseq,由于卷積神經網絡的引入,模型不僅可以精確地控制上下文的長度,并且經過卷積的并行計算,在達到與RNN相同的翻譯準確率上,速度足足快了9倍。CNN編碼器[12]是用一個固定大小的窗口在輸入句子序列上滑動以捕獲句中每個詞的局部文本信息,相比RNN,雖然CNN速度快并且可以并行計算,但缺點是犧牲了全局文本信息,而為了彌補文本信息的丟失,通常對CNN的層數進行堆疊。

CNN(x1:N,i)=f(xi-└w/2┘,xi-└w/4┘,…,xi,…xi+└w/2┘)

(6)

式中:f是非線性函數;w是窗口大小。

1.3 圖卷積網絡

近兩年深度學習領域誕生了一種新的網絡,即圖卷積網絡[13]。該網絡從出現時就受到科學界的廣泛關注,那么GCN與CNN有什么不同呢?傳統的CNN網絡處理的數據是矩陣形式,就像以像素點排列的矩陣為基礎。而GCN處理的數據是圖結構,例如像社交網絡、信息網絡等這些拓撲結構,一般卷積神經網絡就無能為力了。

一個無向圖G={N,E},其中:N是圖中所有節點的集合;E是所有邊的集合,包括自還邊。GCN是一個多層神經網絡,可以直接在圖上進行操作,對節點聚合信息。通常一個圖上的節點信息用一個鄰接矩陣來表示。對于一層GCN,節點的向量信息聚合公式如下:

(7)

式中:W∈Rd×d是權重矩陣;b∈Rd是偏置向量;ρ是激活函數比如線性修正單元(ReLU);N(n)是節點n的鄰居節點集合,包括n本身。節點信息可以通過堆疊GCN層數來進行傳遞,層之間的傳遞關系可用如下公式來計算:

(8)

對于像神經機器翻譯,圖卷積網絡的輸入是一種語言的一句話,而一個句子詞與詞之間是有先后順序的,也就是說如果用有向圖來處理這種句子信息會更好,已有工作對GCN進行泛化,使其能夠在有向圖以及邊有類型的圖上進行操作[14]。這就使得GCN在依存樹上操作有了可能。

為了處理依存樹上邊的方向,根據邊的類型將其分為三類:入邊(IN)、出邊(OUT)和自環(LOOP)。遞歸計算如下:

(9)

式中:dir(u,n)表示邊的方向,包含IN、OUT和LOOP。對于一個節點而言,可能包含入邊、出邊,以及還可能給出自環,因此式(9)可以被拆解為式(10)-式(12)。

(10)

(11)

(12)

式中:WIN、WOUT和WLOOP分別表示u→n、n→u和n→n的權重矩陣;bIN、bOUT和bLOOP為相應的偏置向量。

2 編碼器-解碼器模型構建

2.1 編碼器

傳統的RNN以及CNN處理的序列數據,而神經機器翻譯的發展雖然已取得了很大的進步,但是現有的翻譯系統還是會出現所翻譯的句子還不夠通順,并且對于一些表達不同而句意相同的句子機器不能準確地進行識別。為了同時有效利用序列的前后文信息以及句法結構信息,本文提出在源語言端采用雙編碼器,該思想受Eriguchi等[15]提出的樹到序列注意力機制神經機器翻譯的啟發。不同的是Eriguchi使用LSTM編碼樹結構信息,而本文將使用RNN等編碼源語言的原始序列數據,用GCN編碼句法樹結構信息。為了證明該方法對于提高神經機器翻譯系統性能的有效性,將分別采用兩種方式編碼源語言序列數據。

(1) BiRNN+GCN。首先用雙向RNN學習序列信息,之后將RNN的輸出傳入給GCN學習句子的句法結構信息。具體結構如圖3所示。RNN編碼得到的隱藏狀態向量h0作為GCN的輸入。

圖3 RNN和GCN編碼器結構關系

(2) CNN+GCN。用CNN學習詞的表示,CNN雖然速度快但僅能學習局部的上下文信息,所以一般采用多層CNN來彌補這一缺點,但本文主要研究的是GCN對于神經機器翻譯性能的影響,因此僅采用了一層CNN,并且CNN的窗口大小w取值為5,CNN與GCN組合編碼結構圖與RNN和GCN組合編碼結構圖相似,因此不再給出圖。

2.2 解碼器

解碼器會根據源語言句子產生一個相應的目標序列,在本文中解碼器是一個RNN,其網絡單元采用LSTM,源語言句子根據編碼器產生一個上下文向量ci,連同解碼器產生的前一個值yi-1共同生成目標序列中的當前詞。我們知道,神經機器翻譯模型在訓練時,它以正確標注的單詞作為上下文進行預測,而在測試時,它只能從頭開始重新生成整個序列。這樣做的結果是訓練和測試中的預測詞分別來自不同的分布,訓練來自于原本平行語料中的數據分布,而測試卻來源于模型分布。這樣做將會產生暴露偏差(Exposure Bias),并且隨著目標序列的增長錯誤會不斷累積。為了解決該問題,很容易想到在與測試相同的條件下進行模型訓練,所以本文采用的方法是,首先從預測的單詞中選擇優質的單詞集BestWords(BW),然后從BW和正確標注的單詞中進行抽樣,所得的結果作為上下文進行訓練。使用LSTM進行解碼,第j步,目標隱藏狀態sj為:

sj=LSTM(ey′j-1,sj-1,cj)

(13)

目標詞的概率分布Pj為:

Pj=softmax(g(ey′j-1,cj,sj))

(14)

圖4 解碼器結構

3 實驗與結果分析

本實驗的技術路線如圖5所示,對于蒙漢對齊語料庫,在漢語端采用DDparser將其解析為依存樹,同時采用BPE處理蒙古語目標端的稀有詞和復合詞,然后分別采用RNN+GCN和CNN+GCN作兩組對比實驗,通過增加訓練步數,最終得到最好的翻譯模型。

圖5 技術路線

3.1 數據集來源及劃分

本實驗所采用的數據為由內蒙古工業大學構建的用于內蒙古自治區蒙古語言文字信息化專項扶持項目的121萬蒙漢對齊語料庫,包括政府新聞、法律公文、日常對話、詞典條目、計算機相關術語、氣象類相關術語、蒙古文諺語、日常用語和文學語句等語言信息。

對數據集劃分結果如表1所示。

表1 數據集劃分結果

3.2 語料預處理

本實驗的源語言為漢語,目標語言為蒙古語,對于劃分好的數據集,在漢語端采用由百度開源的中文依存句法分析工具——DDParser。將原始句子解析為依賴樹。對于句子“創新是文化的生命力所在”,其經過DDParser解析后,輸出結果如下:

[{′word′: [′創新′, ′是′, ′文化′, ′的′, ′生命力′, ′所在′],

′head′: [2, 0, 5, 3, 6, 2], ′deprel′: [′SBV′, ′HED′, ′ATT′, ′MT′, ′SBV′, ′VOB′]}]

為了解決蒙漢機器翻譯中存在的大量稀有詞和復合詞問題,采用發布于github上的fastBPE對蒙古語進行BPE操作,對蒙古語采用子詞級粒度[16]切分,操作數設為30 000,切分后詞典大小由原來的13 827 560變為16 319 479,僅出現過一次的詞由原來的314 616變為26 479,僅出現一次的詞的比率由0.023下降為0.002,很好地緩解了數據稀疏問題。

對于中文采用自行編寫的腳本程序字粒度切分,首先將原有的文本語料去掉標點符號生成新的文本,再將生成的文本進行逐字加空格生成新的語料文本。經過切分后詞典大小由原來的11 900 543變為20 987 685,僅出現過一次的詞由319 756下降到7 526,僅出現一次的比率由原來的2.69%下降為0.04%。

蒙漢平行語料分詞、分字結果見表2。

3.3 模型訓練及實驗結果

本實驗采用github上基于TensorFlow的開源工具包neuralmonkey,TensorFlow的版本為1.4.1,Python版本為3.6。采用Adam優化器,RNN模型學習率設為0.2,CNN模型學習率設為0.1,dropout設為0.2,訓練步數設為150 000。LSTM和CNN編碼器解碼器的層數均設為4層,隱藏單元數均為512,GCN層的維度與其輸入層的維度相等,并且實驗發現采用兩層GCN的效果更好。以上參數取值是多次實驗結果最好的參數,所以模型優化主要體現在這里。因為本文主要的研究內容不在此,因此對于模型優化不作過多的介紹。本實驗的基線系統有兩個,其一是有哈佛大學開源的OpenNMT,其二是由Facebook AI實驗室發布的基于CNN的神經機器翻譯系統Fairseq,其中w=5。進行多組對比實驗,得到實驗結果如下:

如圖6所示,為BiRNN和BiRNN+GCN隨著訓練步數的增加BLEU的變化圖??梢钥闯?隨著訓練步數的增加BLEU值逐漸增加并收斂,并且加了GCN編碼語義信息后要比直接采用BiRNN編碼效果要好,當訓練步數達到150 000步時,添加GCN后的BLEU值達到46.27,比基線系統(BLEU值為43.58)高了2.69個BLEU值,譯文結果見圖7。

圖7 句子級實驗結果

如圖8所示,當采用CNN+GCN組合編碼時,BLEU值會出現明顯提高,當訓練達到150 000步時,BLEU值達到43.72,比CNN基線系統(BLEU為41.63)提高了2.09。通過選擇GCN層數來調節信息傳播的距離:在k層中,一個節點最多可以從k跳處接收來自鄰居的信息。本文通過對比實驗發現:在BiRNN+GCN中,2層GCN取得更好的效果,如表3所示,其中1L、2L分別表示GCN的層數為1層和2層,+GCN表示BiRNN+GCN,可見,當采用1層GCN時,BLEU值為45.16,當采用兩層GCN時,BLEU值提高了1.11,達到46.27,譯文結果見圖7。

表3 GCN層數對翻譯結果的影響

圖8 CNN+GCN對比實驗BLEU值變化趨勢

4 結 語

蒙漢機器翻譯已取得了空前的進步,但是仍達不到人類翻譯的效果,一些句子翻譯結果看似符合語法結構,但并不符合人類的表達習慣,原因在于現有的神經機器翻譯系統并沒有很好地利用句子的句法結構信息。因此本文提出將句子的依存句法樹作為輔助信息來提高神經機器翻譯效果,對于依存句法信息,傳統的神經網絡也可以進行編碼,通常的做法是將句法樹轉化為序列信息進行編碼,而本文提出直接使用圖卷積神經網絡編碼這種句法結構信息,圖和樹的結構更加適應,并且采用有向圖編碼,能夠進一步體現節點之間的關系。為了解決神經機器翻譯系統在翻譯時嚴格對照給定語料作為參考,對于一些意思相近而表達不同的結果,神經網絡在學習時會嚴格進行校正,導致一些本來正確的翻譯被淘汰掉,本文提出將預測出的優質翻譯結果加入到下一步的訓練過程中,可以有效解決上述問題。為了解決神經機器翻譯中出現的復合詞和未登錄詞對于翻譯質量的影響,本文提出采用BPE,對蒙古語進行子詞級切分,對漢語進行字粒度切分。以上方法結合,最終的翻譯結果得到顯著提升,并且為蒙漢機器翻譯提供了一種新思路。

猜你喜歡
源語言解碼器編碼器
科學解碼器(一)
科學解碼器(二)
科學解碼器(三)
線圣AudioQuest 發布第三代Dragonfly Cobalt藍蜻蜓解碼器
林巍《知識與智慧》英譯分析
淺析日語口譯譯員素質
基于FPGA的同步機軸角編碼器
基于PRBS檢測的8B/IOB編碼器設計
JESD204B接口協議中的8B10B編碼器設計
以口譯實例談雙語知識的必要性
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合