1. 程式人生 > >理解Attention機制原理及模型

理解Attention機制原理及模型

寫在前面

目前採用編碼器-解碼器 (Encode-Decode) 結構的模型非常熱門,是因為它在許多領域較其他的傳統模型方法都取得了更好的結果。這種結構的模型通常將輸入序列編碼成一個固定長度的向量表示,對於長度較短的輸入序列而言,該模型能夠學習出對應合理的向量表示。然而,這種模型存在的問題在於:當輸入序列非常長時,模型難以學到合理的向量表示。這個問題限制了模型的效能,尤其當輸入序列比較長時,模型的效能會變得很差。解決方法是將encoder的歷史狀態視作隨機讀取記憶體,這樣不僅增加了源語言的維度,而且增加了記憶的持續時間(LSTM只是短時記憶)。

Attention機制

Attention機制的基本思想是,打破了傳統編碼器-解碼器結構在編解碼時都依賴於內部一個固定長度向量的限制

Attention機制的實現是通過保留LSTM編碼器對輸入序列的中間輸出結果,然後訓練一個模型來對這些輸入進行選擇性的學習並且在模型輸出時將輸出序列與之進行關聯

更為通俗的一種解釋是,attention機制就是將encoder的麼一個隱藏狀態設定一個權重,根據權重的不同決定decoder輸出更側重於哪一個編碼狀態。

下面直接上圖來看看attention機制的流程。

約定encoder hidden states:h1,h2,...,hn; 第t時刻decoder hidden state:St

  1. 由encoder hidden states和decoder hidden state 計算每個encoder狀態對應的attention score Et

2.

2.將Et  softmax化後得到attention分佈

3.將attention分佈與encoder hidden state 相乘後相加得到attention vector

4.將attention vector與decoder hidden state 作為輸入計算得出輸出

參考資料