網(wǎng)絡(luò)解碼器采用的技術(shù)特點
點擊次數(shù):1301 更新時間:2019-05-14
網(wǎng)絡(luò)解碼器是一個很成功的翻譯模型。這個模型接受一個序列作為輸入,并將序列中的信息編碼為中間表示。然后解碼器解碼中間表示為目標語言。在我們的這個項目中,輸入序列是法語句子,輸出是相應的英語翻譯。
在我們深入網(wǎng)絡(luò)解碼器如何工作之前,我們需要了解下模型是如何表示我們的數(shù)據(jù)的。在對模型的工作機制一無所知的情況下,我們可以合理地推測如果我們給模型一個法語句子,模型能給我們對應的英語句子。也就是說,輸入一個單詞序列,模型應該輸出另一個單詞序列。然而,模型只不過是一組參數(shù),在輸入上進行多種運算。模型并不知道什么是單詞。類似ASCII編碼將字母映射到數(shù)字,我們的單詞也需要轉(zhuǎn)成數(shù)值表是。為此,數(shù)據(jù)集中的每個的單詞需要有一個的索引。模型接受的實際上不是一個單詞序列,而是一個索引序列。
一次傳入一個句子,這沒什么問題。不過,怎樣才能一次傳入多個句子以加速訓練過程呢?句子長短不一。這些數(shù)字序列又該如何組織呢?答案是輸入序列將表示為維度等于(batch大小 × 大句子長度)的張量(矩陣)。這樣就可以一次輸入一組句子,短于數(shù)據(jù)集中長句的句子可以用事先確定的“補齊索引”補齊。
回顧下編碼器輸出張量,序列維度的每一項保存了RNN輸出的向量。注意力模塊就批次中的每個樣本在序列維度上取這些向量的加權(quán)和。這樣,每個樣本得到一個向量,表示當前輸出序列步驟計算所需的相關(guān)信息。
下面我們將舉一個具體的例子。如果輸入句子的個單詞包含了給定輸出單詞所需的所有重要的信息,那么個單詞分配的權(quán)重是一,其他各項權(quán)重為零。也就是加權(quán)向量等于輸入句子的個單詞對應的向量。
模型需要學習如何分配這些權(quán)重,所以我們使用了一個全連接層。序列中的每個單詞對應一個權(quán)重,所以權(quán)重數(shù)量等于長句子長度。權(quán)重之和應等于一,所以全連接層將使用softmax激活函數(shù)。注意力模塊將接受網(wǎng)絡(luò)解碼器先前的隱藏狀態(tài)與解碼器前一步輸出的預測單詞的詞嵌入的連接作為輸入,從而決定這些權(quán)重的值。