機器翻譯模型的編碼器是先讀取整個句子后傳遞到解碼器中翻譯踢匣,對于過長句子序列(例如超過30個詞的句子)的記憶能力弱菠剩,翻譯效果不理想。此時就出現了注意力模型桶至,它是模仿人類翻譯,一部分一部分地翻譯匾旭,從而提高長句子的翻譯能力镣屹。
傳送門:Attention Is All You Need簡記(多頭注意力、自注意力价涝、位置嵌入)
本文示例翻譯法語句子:Jane visite I’Afrique en Septembre女蜈。用
來索引法語序列的詞。
使用雙向RNN用于待翻譯序列
的特征提取色瘩。下圖中藍色的
表示激活值伪窖,左右箭頭表方向,分別是前向傳播 和 后向傳播 的激活值居兆。
注意力權重
注意力模型在生成每個翻譯結果時只考慮部分提取到的特征覆山。注意力權重參數(a set of attention weights)表示當你在時間步
處生成輸出詞,你應該花多少注意力在第
個輸入詞上面泥栖。例如
分別表示前三個單詞對第一個詞語的翻譯結果具有的影響力吧享。類似的
分別表示表示在翻譯得到第二個單詞時钢颂,要分別放多少注意力在前三個單詞上钞它。并且前一步翻譯的輸出也會作為下一步的輸入。
翻譯過程
翻譯使用的是一個單向RNN殊鞭,用狀態(tài)
表示decoder RNN的隱藏狀態(tài)(the hidden state in this RNN)遭垛,
表示上下文(context),作為狀態(tài)
的輸入钱豁。參數滿足以下公式:
1耻卡、每次考慮的所有注意力權重之和等于1? ? ?
? ? ?
2、特征步激活值和注意力權重的乘積之和作翻譯模型的輸入牲尺,即上下文
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
計算注意力權重
為了滿足卵酪,計算注意力權重的方法(即使用softmax)是:
計算上式的關鍵是計算得分幌蚊,現直到計算
需要上一個deocder翻譯狀態(tài)的值
和特征提取模型encoder中本狀態(tài)的激活值
但不知道具體函數關系,需要通過一個小的神經網絡學習對應的具體的函數關系式。
除了學習溃卡,還有現成的表達式可以利用溢豆。
通過為每個單詞分配分值瘸羡,注意力為不同單詞分配不同的注意力漩仙。然后利用 softmax 對編碼器隱藏狀態(tài)進行加權求和,得到上下文向量(context vector)犹赖。
架構中的注意力模塊負責自動學習注意力權重α_ij,該權重會捕獲 h_i(編碼器隱狀態(tài)峻村,被稱之為候選狀態(tài))和 s_j(解碼器隱狀態(tài)麸折,被稱之為查詢狀態(tài))之間的相關性。這些注意力權重之后會被用于構建上下文向量 c粘昨,而該向量經過處理后作為輸入傳遞給解碼器垢啼。
注意力模型的缺點
缺點是時間花費是,因為注意力參數部分的計算。如果有
個輸入詞张肾,
個輸出詞芭析,則注意力權重參數的總數就是
x
。
酷文章:
想繼續(xù)深入了解注意力吞瞪?一篇就夠了:深度學習中的注意力模型--張俊林