seq2seq模型的最核心的就是encoder網路得到的隱含向量。在句子較短的時候,seq2seq模型可以表現的很好,但是在長句子的場景時,隱含向量中經常會丟失了句子開始部分的信息,造成翻譯的結果不好。attention機制就是為瞭解決這個問題而提出的,核心的解決方案就是將隱含向量變成一系列隱含向量,從而保存更完整的信息。
以上的截圖講述了有attention機制的seq2seq模型的decoder是如何工作的。
對比一下沒有attention機制的seq2seq的decoder是如何工作。
第一種:
第二種:
以上的截圖介紹了在attention機制中,如何通過一系列的隱含向量,得到綜合的隱含向量。
(我的理解)為什麼attention機制能夠起到作用呢?正如attention機制的名字顯示的那樣,需要在每一次輸出的時候,只關注我們感興趣的部分,忽視或者減小無關信息的影響。如何忽視或者減小無關信息的影響,就是通過計算權重,將聯繫緊密(score函數得分較高)的項的權重調高,將剩下的項的權重調低,從而實現attention的目的。
在沒有attention機制的時候,可以認為encoder網路得到的隱含向量是一個全局的信息,並不能很好的使得輸出的各個位置都只關注真正有用的信息。
推薦閱讀: