外行語言中的機器翻譯是“用文本或其他形式的語言交流從語言替換爲另一種語言”。更根據維基百科的技術,它可以描述爲: -

“計算語言學的一個子領域,研究使用軟件將文本或語音從一種語言翻譯成另一種語言。”

Seq2seq(序列到序列)架構被認爲是MT(機器翻譯)的重要媒介。該序列具有可變輸入和輸出長度的多對多序列架構。一般來說,MT的架構由編碼器和解碼器組成。編碼器對一種語言的詞彙中存在的詞進行嵌入,對其進行編碼並將其作爲開始激活提供給解碼器。解碼器看起來類似於用於生成隨機序列的神經網絡語言模型,但不同之處在於,神經網絡語言模型是一對多架構,它生成隨機序列,並且模型初始化的激活爲0.而解碼器工作關於條件概率理論,可以稱爲條件語言模型。它生成一個給定輸入的序列,即

機器翻譯中的編碼器和解碼器

給定輸入序列x<1>, x<2>, x<3>,…., x,在語言-1中x長度T x,由解碼器網絡生成輸出y<1>, y<2>,…., y。 y在語言-2中長度爲Ty。輸出由softmax層組成。輸出由概率P(y 1,y 2,......,y | a)給出。爲了獲得最可能的句子,這個概率表達式需要最大化,即: -

一種常用的啓發式方法是Beam Search。上述的另一個解決方案是使用貪婪搜索。貪婪搜索只考慮了一個輸出,這減少了獲得其他句子的可能性,而這些句子更有可能輸出到譯文中。當我們看到Beam Search算法的工作原理後,就會更加清晰。

Seq2Seq建模中的Beam Search

同樣,Beam Search是用於最大化概率的上述表達式的算法。我們將使用MT的示例詳細描述和討論該算法。考慮法語' Soumya doit travailler dur pour obtenir de bons points '中的一個例子,當用英語翻譯成“Soumya must work hard to get good points ”時。

在繼續之前,我們爲算法定義一個參數,即 beam width(B),它一次考慮n個單詞的概率。如果解碼器輸出y <1>那麼它將是10000 units 的softmax(考慮到詞彙表中有10k個單詞)。我們選擇具有最高概率的最佳n個單詞。爲簡單起見,我們考慮 beam width(B)= 3。

Beam搜索所做的第一件事是從具有最大概率的詞彙表(忽略大寫)中選擇英語翻譯的前3個(如B = 3)單詞。我們使用概率表達式P(y 1 | a)來計算解碼器序列的第一時間步的輸出。該表達式意味着,給定y <1>的詞彙表中所有單詞的概率是多少。讓我們考慮神經網絡模型選擇了英文單詞的,soumya和points ,因爲他們在所有的最高概率。

模型挑選前3個英文單詞

挑選了,soumya和points 對於第一個單詞,Beam Search將執行什麼,給定前三個單詞,它將在第二個時間步驟中爲前三個單詞中的每個單詞計算3個單詞。爲此目的,RNN神經網絡模型被實例化3次。在這種情況下,概率的表達式變爲P(y 2 | a,y 1)。該表達式在給定輸入作爲a和y 1的情況下在第二時間步驟找出softmax層y 2的最可能的單詞。因此,到目前爲止形成的包含2個單詞的句子的表達式最有可能由 P(y<1>,y<2>|a) = P(y<1>|a)*P(y<2>|a,y<1>)給出。 我們可以看到該模型關注詞語y <1>和y <2>用於翻譯,而不是隻考慮模型中預測的單個單詞。不太可能在第一次步驟中第二次步驟有30000種可能(10k each for the 3 ouputs of y<1>)。

y 2的預測

從30k的可能性出發,讓我們考慮具有最大概率y 2 =(good)的3個輸出,並且y 2 =(must, should)分別爲y 1 = for和y 1 = soumya。由於y <2>的3個單詞來自y <1>的2個單詞,因此忽略剩餘單詞y <1> = points 。同樣的過程一直持續到EOS即句末,最後我們得到了輸入序列最可能的3個翻譯。

注意:當B(Beam width)保持爲1時,光束搜索變得類似於貪婪搜索算法。

Beam搜索算法的一些改進

長度歸一化: -將 得到完整輸出後的總概率表達式 P(y<1>,y<2>, ….,y|a) = P(y<1>|x)*P(y<2>|a,y<1>)*P(y<3>|a,y<1>,y<2>)*….. 等等。我們已經知道任何事件的概率都小於1,在這種情況下,因爲我們有一個10k詞彙量的樣本空間,我們得到的數字非常小。當這些概率乘以表達式時,結果輸出變得非常小,這導致數值下溢。最終,如果我們有一個長句,我們會得到一個非常小的數字。這限制了機器學習模型翻譯更長的句子。對錶達式應用一個對數函數將其轉換爲單個時間步長的概率的對數值的總和,使表達式具有數值穩定性。對數函數是單調遞增函數,其意義與前面的表達式相似。

雖然我們使用對數概率,但我們應該記住,log(值<1)給出負數並將負數相加以得到更大的負數將導致表達式在數值上變得更不穩定。爲了避免這種出現的情況,使用生成Ty的翻譯序列的長度對對數表達式進行歸一化。爲了使用更柔和的方法,Ty也可以被提升到0到1之間的數字。

B值(Beam width)

用於生產目的的beam width值通常保持在10-100之間,而用於研究目的的beam width通常在1000 - 3000之間。波束寬度越大,就越有可能找到一個可能的句子,但它使計算開銷和內存需求顯著提高。

查看原文 >>
相關文章