李 響,徐金安,姜文斌,呂雅娟,劉 群
(1. 中國科學(xué)院 計算技術(shù)研究所 智能信息處理重點(diǎn)實驗室,北京 100190;2. 北京交通大學(xué) 計算機(jī)與信息技術(shù)學(xué)院,北京 100044)
作為自然語言處理領(lǐng)域一項具有挑戰(zhàn)性的技術(shù),統(tǒng)計機(jī)器翻譯為克服語言障礙提供了一個解決方向。與此同時,嵌入式硬件的快速發(fā)展使移動終端運(yùn)行復(fù)雜的統(tǒng)計機(jī)器翻譯系統(tǒng)成為可能。
最近,隨著機(jī)器翻譯研究的不斷深入,基于語料庫的自然語言處理技術(shù)的發(fā)展使現(xiàn)實環(huán)境中的語音翻譯成為可能,一些多語言語音翻譯系統(tǒng)已經(jīng)出現(xiàn)??梢灶A(yù)見,在未來的國際交流和經(jīng)貿(mào)交往中,具有高效統(tǒng)計機(jī)器翻譯功能的移動終端將會得到廣泛利用,將成為相關(guān)人士的必備工具。
目前,商用移動終端上的機(jī)器翻譯主要采用基于規(guī)則的方法,這種方法需要針對源語言和目標(biāo)語言設(shè)計翻譯規(guī)則,而規(guī)則自動獲取難度大,主要依靠人工編寫,系統(tǒng)的造價和成本高,僅僅適用于受限的領(lǐng)域,系統(tǒng)不易擴(kuò)充、更新和維護(hù);然而,基于統(tǒng)計的機(jī)器翻譯不依賴語言學(xué)知識,能夠很快的實現(xiàn)多語言互譯,但翻譯模型龐大,翻譯計算耗時長,消耗系統(tǒng)資源較多[1-2]。
近年來,嵌入式硬件性能的不斷提升使移動終端運(yùn)行統(tǒng)計機(jī)器翻譯成為可能,然而,統(tǒng)計機(jī)器翻譯需要大量的浮點(diǎn)運(yùn)算,無浮點(diǎn)運(yùn)算單元的中低端嵌入式處理器影響了翻譯速度。另一方面,面向移動終端的語音翻譯也面臨同樣問題。對此,本文提出了將統(tǒng)計機(jī)器翻譯解碼運(yùn)算定點(diǎn)化的方法。與統(tǒng)計機(jī)器翻譯的浮點(diǎn)解碼運(yùn)算相比,利用定點(diǎn)實現(xiàn)解碼運(yùn)算可以降低對計算資源的需求,獲得更好的翻譯性能。實驗結(jié)果表明,在保證同等翻譯質(zhì)量的情況下,本方法可以有效地提高統(tǒng)計機(jī)器翻譯在移動終端上的翻譯速度。
本文在第2節(jié)簡要介紹了統(tǒng)計機(jī)器翻譯系統(tǒng),第3節(jié)介紹了計算機(jī)內(nèi)部數(shù)據(jù)的表示方法,第4節(jié)詳細(xì)闡述了利用定點(diǎn)處理浮點(diǎn)運(yùn)算的解碼器實現(xiàn),第5節(jié)是實驗結(jié)果,第6節(jié)是對本文的總結(jié)和對未來的展望。
本文以Xiong et al.的Bruin系統(tǒng)[3]為實驗系統(tǒng),重新實現(xiàn)了一個以定點(diǎn)運(yùn)算替代浮點(diǎn)運(yùn)算的統(tǒng)計機(jī)器翻譯解碼器。
Bruin系統(tǒng)主要由以下三個特征:
(1) 括號轉(zhuǎn)錄語法(BTG)[4],并用對數(shù)線性形式的多種特征對規(guī)則賦予權(quán)重;
(2) 基于最大熵的調(diào)序模型,其特征通過雙語訓(xùn)練集自動學(xué)習(xí);
(3) 采用Beam Search的CKY類型的解碼器。
下面,我們主要介紹通過BTG對翻譯過程的實現(xiàn),如下式所示。
規(guī)則(3)將源短語x翻譯為目標(biāo)短語y,并生成一個塊A,規(guī)則(1)和(2)以正向或反向順序?qū)蓚€連續(xù)的塊合并為一個更大的塊。
Bruin采用對數(shù)線性模型計算規(guī)則概率,從而構(gòu)建一個BTG。對于規(guī)則(1)和(2),指定的概率定義如公式(4)。
(4)
其中,Ω表示通過最大熵調(diào)序模型得到的A1和A2的重調(diào)序得分,λΩ表示Ω的權(quán)重;ΔPLM(A1,A2)表示根據(jù)調(diào)序結(jié)果得到的兩個塊的語言模型分?jǐn)?shù)增量,λLM表示ΔPLM(A1,A2)的權(quán)重。
規(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表示特征權(quán)重,通過多種加權(quán)特征概率獲得規(guī)則概率。
下面主要介紹與本文密切相關(guān)的浮點(diǎn)與定點(diǎn)數(shù)據(jù)在計算機(jī)中的表示方法。
在廣泛采用的IEEE-754浮點(diǎn)標(biāo)準(zhǔn)中[4],浮點(diǎn)數(shù)是將特定長度的連續(xù)字節(jié)分割為特定長度的符號域S,指數(shù)域E和尾數(shù)域M,其尾數(shù)域M由小數(shù)部分和一個隱含的小數(shù)點(diǎn)組成,同時指數(shù)域E的基數(shù)2也是隱含定義的。
IEEE-754標(biāo)準(zhǔn)明確定義了32位單精度浮點(diǎn)和64位雙精度浮點(diǎn)兩種基本浮點(diǎn)數(shù)據(jù)類型的表示方式以及運(yùn)算法則。
單精度浮點(diǎn)格式表示如圖1,其中N共32位,其中S占1位,E占8位,M占23位。
圖1 單精度浮點(diǎn)格式
雙精度浮點(diǎn)格式表示如圖2,其中N共64位,其中S占1位,E占11位,M占52位。
圖2 雙精度浮點(diǎn)格式
在計算機(jī)中,定點(diǎn)數(shù)據(jù)既可表示整數(shù)也可以表示小數(shù)。定點(diǎn)數(shù)是將特定長度的連續(xù)字節(jié)分割為特定寬度的符號域S,整數(shù)域IWL和小數(shù)域FWL,如圖3所示[6],當(dāng)設(shè)定隱含小數(shù)點(diǎn)在最低位時,定點(diǎn)數(shù)據(jù)只能表示整數(shù),反之,則可以表示小數(shù)。
圖3 定點(diǎn)數(shù)據(jù)類型的表示形式
定點(diǎn)數(shù)據(jù)類型約定了參與運(yùn)算的數(shù)據(jù)的小數(shù)點(diǎn)隱含在某一固定位置上,而在對小數(shù)點(diǎn)位置做出選擇后,運(yùn)算中的所有數(shù)均應(yīng)統(tǒng)一為定點(diǎn)數(shù)據(jù)類型,在運(yùn)算中不再考慮浮點(diǎn)數(shù)問題。
由于無浮點(diǎn)運(yùn)算單元的嵌入式處理器本身不提供對浮點(diǎn)運(yùn)算支持的寄存器和指令集,即使可以通過編譯器實現(xiàn)浮點(diǎn)運(yùn)算,但這樣會頻繁產(chǎn)生CPU中斷,增加了系統(tǒng)延遲,降低了運(yùn)算效率。因此,為了提高無浮點(diǎn)運(yùn)算單元處理器運(yùn)行統(tǒng)計機(jī)器翻譯的解碼速度,在此類嵌入式處理器上運(yùn)行的統(tǒng)計機(jī)器翻譯解碼算法中,我們需要用定點(diǎn)數(shù)據(jù)類型來表示解碼算法中的浮點(diǎn)類型及實現(xiàn)相應(yīng)運(yùn)算,在保證一定翻譯質(zhì)量的情況下,提高解碼器的翻譯速度,即解碼器運(yùn)算的定點(diǎn)化實現(xiàn)。
數(shù)的定標(biāo)是通過開發(fā)人員來決定小數(shù)點(diǎn)在定點(diǎn)數(shù)據(jù)中的位置,從而確定實數(shù)的范圍和精度。Q格式是一種常用的定標(biāo)格式,其小數(shù)部分位數(shù)已經(jīng)設(shè)定,例如,Q15表示該定點(diǎn)數(shù)有15位小數(shù)。因此,針對移動終端統(tǒng)計機(jī)器翻譯解碼,我們采用Q格式定點(diǎn)數(shù)來處理浮點(diǎn)數(shù)據(jù)和運(yùn)算??梢酝ㄟ^改變定標(biāo)值,使程序更加靈活,適應(yīng)不同的處理器和統(tǒng)計機(jī)器翻譯解碼器。
將一個基本浮點(diǎn)數(shù)據(jù)轉(zhuǎn)換為Qn格式的W位定點(diǎn)數(shù)據(jù)所執(zhí)行的操作如下:
(1) 獲取存儲浮點(diǎn)數(shù)的連續(xù)字節(jié)內(nèi)容于一個W位整型變量;
(2) 根據(jù)IEEE-754標(biāo)準(zhǔn)對基本浮點(diǎn)數(shù)據(jù)的存儲格式定義,獲得浮點(diǎn)數(shù)的符號,指數(shù)和尾數(shù);
(3) 根據(jù)指數(shù)對尾數(shù)進(jìn)行縮放,然后根據(jù)Qn格式,將縮放后的尾數(shù)轉(zhuǎn)換為相應(yīng)的定點(diǎn)數(shù),并采用截斷方式處理超過定點(diǎn)字長的位。
最后,我們以小數(shù)1.123 4為例說明其轉(zhuǎn)換方式,其單精度浮點(diǎn)數(shù)存儲格式如圖4。
圖4 定點(diǎn)數(shù)值類型表示形式
其中:
符號:S=0,表明該浮點(diǎn)數(shù)為正數(shù);
指數(shù):E=0x7F,實際指數(shù)E′=E-Bias=127-127=0;
尾數(shù):M=0x8FCB92,實際尾數(shù)M′=M|0x800000=0x8FCB92。
下面采用Q8格式的16位整數(shù)類型變量替換浮點(diǎn)數(shù),則小數(shù)1.123 4的定點(diǎn)存儲格式如圖5。
圖5 實數(shù)1.123 4的Q8格式定點(diǎn)存儲格式
為了在SMT系統(tǒng)中采用不同精度定點(diǎn)運(yùn)算,我們用執(zhí)行效率更高的C++設(shè)計了一個定點(diǎn)化類Fixed_SMT,該定點(diǎn)化類主要包含兩個屬性:整數(shù)域長度IWL和小數(shù)域長度FWL,通過這兩個主要屬性來調(diào)整實數(shù)的表示范圍和精度,同時,該類對+,-和×等相關(guān)運(yùn)算進(jìn)行了重載定義,使其滿足解碼運(yùn)算需求。這樣通過定點(diǎn)類對象的運(yùn)算可以模擬浮點(diǎn)運(yùn)算。
用定點(diǎn)運(yùn)算模擬浮點(diǎn)運(yùn)算是整個解碼器定點(diǎn)化過程中的重點(diǎn),需要預(yù)先知道解碼過程中參與浮點(diǎn)運(yùn)算的浮點(diǎn)類型變量的范圍,然后用一定精度的定點(diǎn)類型變量來表示它們,再通過定點(diǎn)運(yùn)算模擬實現(xiàn)原來的浮點(diǎn)運(yùn)算。
下面,我們介紹對Bruin系統(tǒng)解碼器的定點(diǎn)化工作。
(1) 由于解碼器采用的語言模型直接調(diào)用SRILM[7]接口,我們暫時無法實現(xiàn)其定點(diǎn)化,因此,我們?nèi)匀焕贸R?guī)的浮點(diǎn)運(yùn)算獲得語言模型和翻譯模型;
(2) 由于解碼器使用了語言模型、短語懲罰等九個特征,并為每個特征賦予權(quán)重,并采用式(6)計算當(dāng)前短語翻譯評分,因而我們便對其中的特征值和權(quán)重值分別進(jìn)行定點(diǎn)化。
(6)
圖6為解碼器的定點(diǎn)化的具體流程,通過分析解碼過程涉及的浮點(diǎn)變量的運(yùn)算范圍和精度,設(shè)置定點(diǎn)類采用的Q格式,進(jìn)而替代解碼器的浮點(diǎn)變量和運(yùn)算,實現(xiàn)定點(diǎn)運(yùn)算模擬浮點(diǎn)運(yùn)算。最后,我們要對模擬結(jié)果進(jìn)行驗證,從而調(diào)整定點(diǎn)格式設(shè)置以優(yōu)化解碼運(yùn)算和翻譯精度。
圖6 解碼器定點(diǎn)化流程
通過上述處理,定點(diǎn)運(yùn)算在功能上完全和被替換的浮點(diǎn)運(yùn)算一樣,只是在精度上略遜于浮點(diǎn)運(yùn)算。當(dāng)把這樣的替換應(yīng)用到整個的解碼器代碼空間后,并且能保證翻譯結(jié)果在允許的誤差范圍內(nèi)時,相當(dāng)于消除了所有的浮點(diǎn)運(yùn)算,此時解碼器也已經(jīng)定點(diǎn)化。
下面,我們將分別在PC和移動終端上進(jìn)行定點(diǎn)解碼器和浮點(diǎn)解碼器的性能對比實驗。
本實驗均是在漢英方向上進(jìn)行,并且使用FBIS(共239K雙語對)作為訓(xùn)練集,NIST 2002漢英測試數(shù)據(jù)作為開發(fā)集,NIST 2005漢英測試數(shù)據(jù)作為測試集。
我們使用SRILM工具包對訓(xùn)練語料的目標(biāo)端訓(xùn)練了一個四元語言模型,并采用Kneser-Ney[8]平滑方法。同時,我們使用大小寫不敏感的BLEU[9]來衡量翻譯質(zhì)量。
表1 PC實驗平臺配置信息
表2的PC實驗結(jié)果表明,定點(diǎn)解碼器可以保證較好的翻譯質(zhì)量,而速度稍慢于浮點(diǎn)解碼器??梢灶A(yù)測,將定點(diǎn)解碼器移植到無浮點(diǎn)運(yùn)算單元的移動終端中,翻譯速度將會有較大提升。
表2 PC實驗結(jié)果
由于統(tǒng)計機(jī)器翻譯系統(tǒng)對內(nèi)存要求較大,限于硬件條件,我們采取在移動終端上對定點(diǎn)和浮點(diǎn)數(shù)值運(yùn)算性能進(jìn)行對比試驗,間接驗證我們的統(tǒng)計機(jī)器翻譯定點(diǎn)化解碼器的解碼速度。
我們在無浮點(diǎn)處理單元的移動終端中進(jìn)行定點(diǎn)和浮點(diǎn)運(yùn)算性能對比實驗,分別對定點(diǎn)數(shù)值和浮點(diǎn)數(shù)值進(jìn)行10 000 000次的循環(huán)運(yùn)算,其中運(yùn)算類型采用統(tǒng)計機(jī)器翻譯解碼中運(yùn)算頻率較高的乘法和累加運(yùn)算。
由于實驗采用的移動終端沒有浮點(diǎn)處理單元,因此其浮點(diǎn)運(yùn)算采用內(nèi)核中非定義指令的異常中斷處理方式,浮點(diǎn)指令被截獲并由浮點(diǎn)模擬器模塊來執(zhí)行。
表4的實驗結(jié)果表明,定點(diǎn)運(yùn)算性能較浮點(diǎn)運(yùn)算性能提高135.6%,從而可以間接驗證,將本文設(shè)計的定點(diǎn)解碼器移植到無浮點(diǎn)運(yùn)算單元的移動終端中,將會有效提高統(tǒng)計機(jī)器翻譯的解碼速度。
表3 移動設(shè)備實驗平臺配置信息
表4 移動終端實驗結(jié)果
近幾年,統(tǒng)計機(jī)器翻譯技術(shù)已經(jīng)取得大量成果,進(jìn)展迅速,實用性進(jìn)一步提高,同時,由于嵌入式移動終端的廣泛普及和硬件性能的提高,統(tǒng)計機(jī)器翻譯可以在移動終端中得到應(yīng)用。然而,由于大量的中低端低耗能的嵌入式處理器缺乏浮點(diǎn)處理單元,從而導(dǎo)致統(tǒng)計機(jī)器翻譯速度較慢的問題。為了提高統(tǒng)計機(jī)器翻譯在移動終端中的翻譯速度,我們提出了解碼運(yùn)算的定點(diǎn)化方法。實驗結(jié)果表明,本文方法有效地提高了統(tǒng)計機(jī)器翻譯在浮點(diǎn)運(yùn)算能力薄弱的移動終端上的翻譯速度,同時保持了較好的翻譯質(zhì)量。
另外,本文提出的方法也適用于語音識別、語音翻譯、圖像處理等相關(guān)領(lǐng)域,具有較高的實用價值。
在以后的研究中,我們希望完成以下方面的工作:
第一,實現(xiàn)對SRILM訓(xùn)練語言模型的定點(diǎn)化,進(jìn)一步提高移動終端中統(tǒng)計機(jī)器翻譯性能;
第二,針對其他受限于浮點(diǎn)硬件的統(tǒng)計機(jī)器翻譯系統(tǒng)模塊,提出針對性的優(yōu)化方法;
第三,針對iPhone,Android等移動平臺,結(jié)合具體移動終端,利用我們的方法實現(xiàn)初步的統(tǒng)計機(jī)器翻譯系統(tǒng)。
[1] 徐金安. 機(jī)器翻譯展望[C]//2010海峽兩岸信息科學(xué)與信息技術(shù)學(xué)術(shù)交流會議. 秦皇島,2010:368-372.
[2] 劉群. 統(tǒng)計機(jī)器翻譯綜述[J]. 中文信息學(xué)報,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]. 計算機(jī)工程與設(shè)計,2009,30(1):13-15.
[12] 曾微維,鄭善賢,成鋼. 基于統(tǒng)計的機(jī)器翻譯在嵌入式系統(tǒng)上的實現(xiàn)[J]. 計算機(jī)系統(tǒng)應(yīng)用,2009,18(9):1-4.