李 響,徐金安,姜文斌,呂雅娟,劉 群
(1. 中國科學院 計算技術研究所 智能信息處理重點實驗室,北京 100190;2. 北京交通大學 計算機與信息技術學院,北京 100044)
作為自然語言處理領域一項具有挑戰(zhàn)性的技術,統(tǒng)計機器翻譯為克服語言障礙提供了一個解決方向。與此同時,嵌入式硬件的快速發(fā)展使移動終端運行復雜的統(tǒng)計機器翻譯系統(tǒng)成為可能。
最近,隨著機器翻譯研究的不斷深入,基于語料庫的自然語言處理技術的發(fā)展使現(xiàn)實環(huán)境中的語音翻譯成為可能,一些多語言語音翻譯系統(tǒng)已經(jīng)出現(xiàn)??梢灶A見,在未來的國際交流和經(jīng)貿(mào)交往中,具有高效統(tǒng)計機器翻譯功能的移動終端將會得到廣泛利用,將成為相關人士的必備工具。
目前,商用移動終端上的機器翻譯主要采用基于規(guī)則的方法,這種方法需要針對源語言和目標語言設計翻譯規(guī)則,而規(guī)則自動獲取難度大,主要依靠人工編寫,系統(tǒng)的造價和成本高,僅僅適用于受限的領域,系統(tǒng)不易擴充、更新和維護;然而,基于統(tǒng)計的機器翻譯不依賴語言學知識,能夠很快的實現(xiàn)多語言互譯,但翻譯模型龐大,翻譯計算耗時長,消耗系統(tǒng)資源較多[1-2]。
近年來,嵌入式硬件性能的不斷提升使移動終端運行統(tǒng)計機器翻譯成為可能,然而,統(tǒng)計機器翻譯需要大量的浮點運算,無浮點運算單元的中低端嵌入式處理器影響了翻譯速度。另一方面,面向移動終端的語音翻譯也面臨同樣問題。對此,本文提出了將統(tǒng)計機器翻譯解碼運算定點化的方法。與統(tǒng)計機器翻譯的浮點解碼運算相比,利用定點實現(xiàn)解碼運算可以降低對計算資源的需求,獲得更好的翻譯性能。實驗結果表明,在保證同等翻譯質(zhì)量的情況下,本方法可以有效地提高統(tǒng)計機器翻譯在移動終端上的翻譯速度。
本文在第2節(jié)簡要介紹了統(tǒng)計機器翻譯系統(tǒng),第3節(jié)介紹了計算機內(nèi)部數(shù)據(jù)的表示方法,第4節(jié)詳細闡述了利用定點處理浮點運算的解碼器實現(xiàn),第5節(jié)是實驗結果,第6節(jié)是對本文的總結和對未來的展望。
本文以Xiong et al.的Bruin系統(tǒng)[3]為實驗系統(tǒng),重新實現(xiàn)了一個以定點運算替代浮點運算的統(tǒng)計機器翻譯解碼器。
Bruin系統(tǒng)主要由以下三個特征:
(1) 括號轉錄語法(BTG)[4],并用對數(shù)線性形式的多種特征對規(guī)則賦予權重;
(2) 基于最大熵的調(diào)序模型,其特征通過雙語訓練集自動學習;
(3) 采用Beam Search的CKY類型的解碼器。
下面,我們主要介紹通過BTG對翻譯過程的實現(xiàn),如下式所示。
規(guī)則(3)將源短語x翻譯為目標短語y,并生成一個塊A,規(guī)則(1)和(2)以正向或反向順序將兩個連續(xù)的塊合并為一個更大的塊。
Bruin采用對數(shù)線性模型計算規(guī)則概率,從而構建一個BTG。對于規(guī)則(1)和(2),指定的概率定義如公式(4)。
(4)
其中,Ω表示通過最大熵調(diào)序模型得到的A1和A2的重調(diào)序得分,λΩ表示Ω的權重;ΔPLM(A1,A2)表示根據(jù)調(diào)序結果得到的兩個塊的語言模型分數(shù)增量,λLM表示ΔPLM(A1,A2)的權重。
規(guī)則(3)的概率定義如公式(5)。
Prl(A)=p(x|y)λ1·p(y|x)λ2·plex(x|y)λ3
·plex(y|x)λ4·exp(1)λ5
(5)
其中p(·)表示短語雙向翻譯概率,plex(·)表示詞匯化雙向翻譯概率,exp(L)表示短語懲罰,exp(|y|)表示單詞懲罰,λs表示特征權重,通過多種加權特征概率獲得規(guī)則概率。
下面主要介紹與本文密切相關的浮點與定點數(shù)據(jù)在計算機中的表示方法。
在廣泛采用的IEEE-754浮點標準中[4],浮點數(shù)是將特定長度的連續(xù)字節(jié)分割為特定長度的符號域S,指數(shù)域E和尾數(shù)域M,其尾數(shù)域M由小數(shù)部分和一個隱含的小數(shù)點組成,同時指數(shù)域E的基數(shù)2也是隱含定義的。
IEEE-754標準明確定義了32位單精度浮點和64位雙精度浮點兩種基本浮點數(shù)據(jù)類型的表示方式以及運算法則。
單精度浮點格式表示如圖1,其中N共32位,其中S占1位,E占8位,M占23位。
圖1 單精度浮點格式
雙精度浮點格式表示如圖2,其中N共64位,其中S占1位,E占11位,M占52位。
圖2 雙精度浮點格式
在計算機中,定點數(shù)據(jù)既可表示整數(shù)也可以表示小數(shù)。定點數(shù)是將特定長度的連續(xù)字節(jié)分割為特定寬度的符號域S,整數(shù)域IWL和小數(shù)域FWL,如圖3所示[6],當設定隱含小數(shù)點在最低位時,定點數(shù)據(jù)只能表示整數(shù),反之,則可以表示小數(shù)。
圖3 定點數(shù)據(jù)類型的表示形式
定點數(shù)據(jù)類型約定了參與運算的數(shù)據(jù)的小數(shù)點隱含在某一固定位置上,而在對小數(shù)點位置做出選擇后,運算中的所有數(shù)均應統(tǒng)一為定點數(shù)據(jù)類型,在運算中不再考慮浮點數(shù)問題。
由于無浮點運算單元的嵌入式處理器本身不提供對浮點運算支持的寄存器和指令集,即使可以通過編譯器實現(xiàn)浮點運算,但這樣會頻繁產(chǎn)生CPU中斷,增加了系統(tǒng)延遲,降低了運算效率。因此,為了提高無浮點運算單元處理器運行統(tǒng)計機器翻譯的解碼速度,在此類嵌入式處理器上運行的統(tǒng)計機器翻譯解碼算法中,我們需要用定點數(shù)據(jù)類型來表示解碼算法中的浮點類型及實現(xiàn)相應運算,在保證一定翻譯質(zhì)量的情況下,提高解碼器的翻譯速度,即解碼器運算的定點化實現(xiàn)。
數(shù)的定標是通過開發(fā)人員來決定小數(shù)點在定點數(shù)據(jù)中的位置,從而確定實數(shù)的范圍和精度。Q格式是一種常用的定標格式,其小數(shù)部分位數(shù)已經(jīng)設定,例如,Q15表示該定點數(shù)有15位小數(shù)。因此,針對移動終端統(tǒng)計機器翻譯解碼,我們采用Q格式定點數(shù)來處理浮點數(shù)據(jù)和運算??梢酝ㄟ^改變定標值,使程序更加靈活,適應不同的處理器和統(tǒng)計機器翻譯解碼器。
將一個基本浮點數(shù)據(jù)轉換為Qn格式的W位定點數(shù)據(jù)所執(zhí)行的操作如下:
(1) 獲取存儲浮點數(shù)的連續(xù)字節(jié)內(nèi)容于一個W位整型變量;
(2) 根據(jù)IEEE-754標準對基本浮點數(shù)據(jù)的存儲格式定義,獲得浮點數(shù)的符號,指數(shù)和尾數(shù);
(3) 根據(jù)指數(shù)對尾數(shù)進行縮放,然后根據(jù)Qn格式,將縮放后的尾數(shù)轉換為相應的定點數(shù),并采用截斷方式處理超過定點字長的位。
最后,我們以小數(shù)1.123 4為例說明其轉換方式,其單精度浮點數(shù)存儲格式如圖4。
圖4 定點數(shù)值類型表示形式
其中:
符號:S=0,表明該浮點數(shù)為正數(shù);
指數(shù):E=0x7F,實際指數(shù)E′=E-Bias=127-127=0;
尾數(shù):M=0x8FCB92,實際尾數(shù)M′=M|0x800000=0x8FCB92。
下面采用Q8格式的16位整數(shù)類型變量替換浮點數(shù),則小數(shù)1.123 4的定點存儲格式如圖5。
圖5 實數(shù)1.123 4的Q8格式定點存儲格式
為了在SMT系統(tǒng)中采用不同精度定點運算,我們用執(zhí)行效率更高的C++設計了一個定點化類Fixed_SMT,該定點化類主要包含兩個屬性:整數(shù)域長度IWL和小數(shù)域長度FWL,通過這兩個主要屬性來調(diào)整實數(shù)的表示范圍和精度,同時,該類對+,-和×等相關運算進行了重載定義,使其滿足解碼運算需求。這樣通過定點類對象的運算可以模擬浮點運算。
用定點運算模擬浮點運算是整個解碼器定點化過程中的重點,需要預先知道解碼過程中參與浮點運算的浮點類型變量的范圍,然后用一定精度的定點類型變量來表示它們,再通過定點運算模擬實現(xiàn)原來的浮點運算。
下面,我們介紹對Bruin系統(tǒng)解碼器的定點化工作。
(1) 由于解碼器采用的語言模型直接調(diào)用SRILM[7]接口,我們暫時無法實現(xiàn)其定點化,因此,我們?nèi)匀焕贸R?guī)的浮點運算獲得語言模型和翻譯模型;
(2) 由于解碼器使用了語言模型、短語懲罰等九個特征,并為每個特征賦予權重,并采用式(6)計算當前短語翻譯評分,因而我們便對其中的特征值和權重值分別進行定點化。
(6)
圖6為解碼器的定點化的具體流程,通過分析解碼過程涉及的浮點變量的運算范圍和精度,設置定點類采用的Q格式,進而替代解碼器的浮點變量和運算,實現(xiàn)定點運算模擬浮點運算。最后,我們要對模擬結果進行驗證,從而調(diào)整定點格式設置以優(yōu)化解碼運算和翻譯精度。
圖6 解碼器定點化流程
通過上述處理,定點運算在功能上完全和被替換的浮點運算一樣,只是在精度上略遜于浮點運算。當把這樣的替換應用到整個的解碼器代碼空間后,并且能保證翻譯結果在允許的誤差范圍內(nèi)時,相當于消除了所有的浮點運算,此時解碼器也已經(jīng)定點化。
下面,我們將分別在PC和移動終端上進行定點解碼器和浮點解碼器的性能對比實驗。
本實驗均是在漢英方向上進行,并且使用FBIS(共239K雙語對)作為訓練集,NIST 2002漢英測試數(shù)據(jù)作為開發(fā)集,NIST 2005漢英測試數(shù)據(jù)作為測試集。
我們使用SRILM工具包對訓練語料的目標端訓練了一個四元語言模型,并采用Kneser-Ney[8]平滑方法。同時,我們使用大小寫不敏感的BLEU[9]來衡量翻譯質(zhì)量。
表1 PC實驗平臺配置信息
表2的PC實驗結果表明,定點解碼器可以保證較好的翻譯質(zhì)量,而速度稍慢于浮點解碼器。可以預測,將定點解碼器移植到無浮點運算單元的移動終端中,翻譯速度將會有較大提升。
表2 PC實驗結果
由于統(tǒng)計機器翻譯系統(tǒng)對內(nèi)存要求較大,限于硬件條件,我們采取在移動終端上對定點和浮點數(shù)值運算性能進行對比試驗,間接驗證我們的統(tǒng)計機器翻譯定點化解碼器的解碼速度。
我們在無浮點處理單元的移動終端中進行定點和浮點運算性能對比實驗,分別對定點數(shù)值和浮點數(shù)值進行10 000 000次的循環(huán)運算,其中運算類型采用統(tǒng)計機器翻譯解碼中運算頻率較高的乘法和累加運算。
由于實驗采用的移動終端沒有浮點處理單元,因此其浮點運算采用內(nèi)核中非定義指令的異常中斷處理方式,浮點指令被截獲并由浮點模擬器模塊來執(zhí)行。
表4的實驗結果表明,定點運算性能較浮點運算性能提高135.6%,從而可以間接驗證,將本文設計的定點解碼器移植到無浮點運算單元的移動終端中,將會有效提高統(tǒng)計機器翻譯的解碼速度。
表3 移動設備實驗平臺配置信息
表4 移動終端實驗結果
近幾年,統(tǒng)計機器翻譯技術已經(jīng)取得大量成果,進展迅速,實用性進一步提高,同時,由于嵌入式移動終端的廣泛普及和硬件性能的提高,統(tǒng)計機器翻譯可以在移動終端中得到應用。然而,由于大量的中低端低耗能的嵌入式處理器缺乏浮點處理單元,從而導致統(tǒng)計機器翻譯速度較慢的問題。為了提高統(tǒng)計機器翻譯在移動終端中的翻譯速度,我們提出了解碼運算的定點化方法。實驗結果表明,本文方法有效地提高了統(tǒng)計機器翻譯在浮點運算能力薄弱的移動終端上的翻譯速度,同時保持了較好的翻譯質(zhì)量。
另外,本文提出的方法也適用于語音識別、語音翻譯、圖像處理等相關領域,具有較高的實用價值。
在以后的研究中,我們希望完成以下方面的工作:
第一,實現(xiàn)對SRILM訓練語言模型的定點化,進一步提高移動終端中統(tǒng)計機器翻譯性能;
第二,針對其他受限于浮點硬件的統(tǒng)計機器翻譯系統(tǒng)模塊,提出針對性的優(yōu)化方法;
第三,針對iPhone,Android等移動平臺,結合具體移動終端,利用我們的方法實現(xiàn)初步的統(tǒng)計機器翻譯系統(tǒng)。
[1] 徐金安. 機器翻譯展望[C]//2010海峽兩岸信息科學與信息技術學術交流會議. 秦皇島,2010:368-372.
[2] 劉群. 統(tǒng)計機器翻譯綜述[J]. 中文信息學報,2003,17(4):1-12.
[3] Deyi Xiong, Qun Liu, Shouxun Lin. Maximum entropy based phrase reordering model for statistical machine translation[C]//Proceedings of the 21st International Conference on Computational Linguistics and the 44th annual meeting of the Association for Computational Linguistics,Sydney,Australia,2006:521-528.
[4] Dekai Wu. Stochastic Inversion Transduction Grammars, with Application to Segmentation, Bracketing, and Alignment of Parallel Corpora[C]//Proceedings of IJCAI 1995,Montreal,Canada,1995:1328-1334.
[5] ANSI/IEEE. IEEE Std 754-1985,IEEE Standard for Binary Floating-Point Arithmetic[S]. 1985.
[6] K-l Kum, J. Kang, and W. Sung. A floating-point to fixed-point C converter for fixed-point digital signal processors[C]//Proc. 2nd SUIF Compiler Workshop, 1997.
[7] Andreas Stolcke. SRILM—An Extensible Language Modeling Toolkit[C]//Proc. Intl. Conf. on Spoken Language Processing,2002:901-904 .
[8] Stanley F. Chen and Joshua Goodman. An empirical study of smoothing techniques for language modeling[C]//Proc. 34th ACL,1996:310-318.
[9] Kishore Papineni,Salim Roukos,Todd Ward et al. BLEU: a method for automatic evaluation of machine translation[C]//Proceedings of ACL 2002,2002:311-318.
[10] David Goldberg. What Every Computer Scientist Should Know About Floating-Point Arithmetic[J]. ACM Computer Surveys,1991, 23(1):5-48.
[11] 張海濱,李揮. 基于S3C2410的WMA開源解碼程序優(yōu)化[J]. 計算機工程與設計,2009,30(1):13-15.
[12] 曾微維,鄭善賢,成鋼. 基于統(tǒng)計的機器翻譯在嵌入式系統(tǒng)上的實現(xiàn)[J]. 計算機系統(tǒng)應用,2009,18(9):1-4.