Attention:
把注意力集中放在重要的點(diǎn)上, 而忽略不重要的因素. 其中重要成都取決于應(yīng)用場景.
1. 為什么要用Attention機(jī)制?
在seq2seq模型中,原始編碼模型的encode 過程中會生成一個中間向量C用于保存原序列的語義信息. 但是這個向量長度時固定的, 當(dāng)輸入原序列的長度比較長時, 向量C 無法保存全部語義信息, 上下文語義信息受到了限制. 這也限制了模型的理解能力. 所以使用Attention機(jī)制來打破這種原始編碼解碼模型對固定向量的限制.
2. Attention 原理.
Attention的原理就時計(jì)算當(dāng)前輸入序列與輸出向量的匹配程度, 匹配度高也就是注意力集中點(diǎn)其相對分?jǐn)?shù)越高, 其中Attention計(jì)算得到的匹配度權(quán)重, 只限于當(dāng)前序列對, 而不是像網(wǎng)絡(luò)模型權(quán)重這樣的整體權(quán)重.
3. 算法過程:
1) encode 對輸入序列編碼得到最后一個時間步的狀態(tài)C, 和每個時間步的輸出h, 其中C又作為decode 的初始狀態(tài)z0.
2) 在decoder層 對于每個時間步的輸出h與z0做匹配也就是match操作, 得到每個時間步的匹配向量a_01
3)? 對于所有時間步的輸出h與z0的匹配度a0, 使用softmax做歸一化處理,得到各個時間步對于z0的分配分?jǐn)?shù).
4) 求各個時間步的輸出h與匹配分?jǐn)?shù)的加權(quán)求和得到的c0, 作為decode的下一個時間步的輸入.
5) 計(jì)算各個時間步的輸出h與z1的匹配度得到C1作為decode下一個時間步的輸入, 如此一步步重復(fù)下去.
這樣就可以把每個時間步重要的信息傳遞給decode中,以上是Attention機(jī)制的處理過程.其中match 操作,一般是求兩個向量的相似度,通常有如下方法:
1) 余弦相似度, 2) 一個簡單的神經(jīng)網(wǎng)絡(luò) 輸入為hh 和 ww,輸出a, 3) 或者矩陣變化a=hTWz.
參考:attention