1.attention模型計算上下文語意,為什麼需要解碼端的隱藏單元?

2.另外上下文語言如何與帶反饋的解碼輸出合併?


在深度學習中,網路由特徵層和分類層(或者回歸層)組成,特徵層負責特徵的提取,特徵層得到的結果可以看做兩方面組成:

  1. 特徵的種類,例如圖像卷積得到的Feature Map的每個通道便對應一種特徵;
  2. 特徵對應輸入數據的位置,還是圖像,Feature Map的每個像素點會對應輸入圖像中固定的感受野,以及NLP的機器翻譯等任務中每個時間片對應的是句子的一個單詞。

傳統的方法是將這些特徵平等的考慮,例如將特徵拼接到一起,或者直接去平均數之類的方法。那麼能不能讓機器自己學哪些東西更重要呢?當然可以,這就是Attention的工作,對於上面我說的特徵層的分類,有幾個經典的論文:

  1. 哪個特徵更重要?參考Momenta的([1709.01507] Squeeze-and-Excitation Networks),它就是為每個Feature Map學一個權值,也就是哪些通道對於目前的任務會更重要。

圖1:SENet

2. 學習什麼位置的特徵呢?計算機視覺方向參考論文《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》,演算法學到的是哪個位置的東西對我們的任務更優幫助,如圖2中的高亮部分:

圖2:Show, Attend and Tell: Neural Image Caption Generation with Visual Attention

3. NLP呢?計算目標句子中結果需要哪些時間片的信息呢?例如對於機器翻譯來說,一般是時間片接近的位置對翻譯越有幫助,參考論文《[1409.0473] Neural Machine Translation by Jointly Learning to Align and Translate》,正如我們所理解的,Attention會給相同時間片的特徵更高的權值,如圖3所示

圖3

有了上面的例子就很好理解了,假設 [公式] 是編碼碼器得到的N個特徵,首先需要為每個特徵(位置)學習一個權值

[公式]

其中softmax是激活函數,保證概率和是1。

那麼輸入到解碼器的就是特徵加權後的結果,例如加權和(拼接類似):

[公式]

上面就是Attention最簡單的理解,正如Faster R-CNN中所講,Attention的本質就是『Where to look!』


Attention?!Seq2Seq Recurrent Neural Networks(RNNs)Seq2Seq 模型包含兩個部分: Encoder和Decoder。像LSTM和GRU這樣的循環神經網路(RNN)比較適合處理序列數據,使得RNN成為Encoder-Decoder架構的主流選擇。Encoder接受一個輸入序列並輸出上下文向量( context ve…2 贊同 · 0 評論查看完整文章

Seq2seq Models With Attention


https://zhuanlan.zhihu.com/p/44731789

attention is all you need(注意力模型),一文解讀注意力模型詳細流程。


回答第一個問題。

經典NMT模型的attention的參數是一個矩陣,每次解碼的時候,將矩陣與解碼器的上一個引狀態做一個懲乘法,得到一個向量,這個向量歸一化後就是權重,權重表示在當前時刻的解碼中,更應該關注哪個原句的詞。

attention is all your need中,對attenion做了一個精闢的定義:


個人理解,複雜功能很難靠單一網路來完成任務,而是需要多個子系統協作耦合,attention本質上是耦合進了一個系統,系統的維度比不使用注意力機制的系統更高。這種耦合結構某種程度上是把問題空間進行分解,以後的複雜功能系統都會慢慢走向有意識的設計這類耦合系統來解決問題。

說句題外話,人類意識可能就是人腦多子系統耦合過程中生成的一個相對穩定的使用latent parameter的系統,這個系統耦合了多種人腦區域又有一定的相對獨立性,而且是全局的。動物可能只有局部的這類系統,所以其意識有缺失。而我們說的潛意識可能就是沒有被這個系統耦合的部分。


輸入的序列是「我在編程」,如果只是按照上文seq2seq的原理,可能會得到【編程在我】,【在我編程】,【程編我在】多種詞義對的上但是順序混亂的語句,特別是你想翻譯詩歌,最後的效果驢頭對得上馬嘴的情況下,僅僅用seq2seq還是有時會失手的。

而注意力機制 相當於在原文輸入時,為每個辭彙對應的翻譯輸出,下了一個位置錨,更好的定位預測詞,翻譯輸出合理的自然的語序。首先Encoder中的h1、h2、h3、h4就可以分別看做是「我」、「在」、「編」、「程」所代表的信息。在翻譯成英語時,第一個上下文c1應該和「我」這個字最相關,因此對應的a11比較大,相應的a12、a13、a14會比較小。c2應該和「在」最相關,因此對應的a22比較大。最後的c3和h3、h4最相關,因此a33/a34的值就比較大。由此看來,輸入字元與輸出字元除了編碼以外,對應的位置相當重要,在最終翻譯結果中,可以將模糊的一句話,結合輸入時原文的辭彙位置進行權重賦值,最終輸出的模糊語文輪次的句子被編排的更加得體自然。

2attention核心-權重計算:我們如何計算aij的權重呢?

首先下圖是加入了Attention機制的seq2seq:

其中encoder的Ht層和decoder的Hs層是計算權重的關鍵所在。

再然後是開始計算咱們的aij權重啦:

有三種計算方式:主要看第一種dot模式下aij權重計算。

輸入是encoder的所有hidden states H: 大小為(hid dim, sequence length)。decoder在一個時間點上的hidden state, s: 大小為(hid dim, 1)。

第一步:旋轉H為(sequence length, hid dim) 與s做點乘得到一個 大小為(sequence length, 1)的分數。

第二步:對分數做softmax得到一個合為1的權重。

第三步:將H與第二步得到的權重做點乘得到一個大小為(hid dim, 1)的context vector。

第二種模式圖解如下:很類似 增加了一個中間調解向量W。

————————————————

版權聲明:本文為CSDN博主「AI工匠book」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/weixin_37479258/article/details/99887469

AI工匠聊天機器人Seq2Seq模型+attention(理論篇-圖文詳解)智能對話系統神仙組合_百度搜索?

www.baidu.com圖標

問題1:通過解碼端的隱藏單元保存之前輸出的文字的語義信息。

Bahdanau D, Cho K, Bengio Y. Neural Machine Translation by Jointly Learning to Align and Translate[J]. Computer Science, 2014. P14

通過[公式] 保留 [公式] (Embedding of i-1th output word)信息。

問題2:題中"帶反饋的解碼"指代不明,請給更詳細描述。


推薦閱讀:
相關文章