第八课 RNN条件生成与Attention机制
文章目錄
- 1 RNN條件生成
- 2 機器翻譯
- 2.1 V1:Encoder-Decoder
- 2.2 V2:Attention-based Encoder-decoder
- 2.3 V3:bi-directional encode layer
- 2.4 V4:Residual Encode layer
- 3 Attention
- 3.1 self attention
- 3.2 hierarchical attention
- 4 圖像生成文本
- 4.1 問題引入
- 4.2 模型變遷
- 4.2.1 M—RNN
- 4.2.2 Neural Image Caption
- 4.2.3 attention based
1 RNN條件生成
RNN可以解決的問題有多種,根據輸入輸出個數不同分為:
1 一對多:圖像描述
2 多對一:文本分類
3 多對多:
實時多對多:輸入法、視頻解說
輸入完成再多對多:機器翻譯
條件生成問題:P(y|x)
2 機器翻譯
2.1 V1:Encoder-Decoder
encoder-decoder由2個RNN組成。RNN一般具體指LSTM。在手機上的時候一般使用GRU模型。
第一個RNN做編碼的事情。把輸入編碼為S,最后一個單元的輸出作為編碼S。
第二個RNN做解碼的事情。把S輸入,得出第一個詞,第一個作為輸入得到第二次輸出…
decoder一個向量,之后做一個全連接softmax預測下一個詞。
缺點:向量S一般是固定長度,例如1024,2048,能夠存儲的信息有限。
RNN中有忘記門,長度越長,前面輸入RNN的信息就越被稀釋。
2.2 V2:Attention-based Encoder-decoder
這個網絡是在前一個的基礎上添加了Attention機制。
首先每一步的輸出都以加權的方式參與到計算中得到attention。
第二:輸出的attention參與到decoder的第二步計算中。在計算decoder第二步輸出的時候參與的對象有3個:第一步的輸出結果、第一步到第二步的隱狀態hi,以及attention。
第三,第二步計算得到的hi,會再次參與attention的計算。計算之后attention參與到decoder的第三步中。
具體Attention層
Attention的計算:LSTM每一步的輸出向量a=[a1,a2,...an]a=[a_1,a_2,...a_n]a=[a1?,a2?,...an?]
decoder每一步的中間狀態hi
alpha=[tanh(w1?aj+w2?hi)alpha = [tanh(w1*aj+w2*hi)alpha=[tanh(w1?aj+w2?hi) for j in range(n)]range(n)]range(n)]
attention加權:alpha*a
global attention 計算量大,提出local attention。
2.3 V3:bi-directional encode layer
使用雙向RNN做encode。
2.4 V4:Residual Encode layer
最后得到谷歌的機器翻譯網絡:
3 Attention
除了global attention,local attention,還有self attention、hierarchical attention。
3.1 self attention
可以理解為source=target的情況下,捕捉詞與詞之間的關系。這可以用于知識圖譜抽取關系,實體詞等。
3.2 hierarchical attention
一種是在文本分類中。第一層詞取得embedding,第二層是雙向LSTM。對第二層的輸出做合并,可以使用拼接、average或者max,拼接過程中加入attention。將輸出作為第三層的輸入,送入MLP中,得到正確的分類。
在對文章分類過程中,一種策略是先看句子是什么情況,再看句子中的詞是什么情況。
對每個句子中的詞都會做一個RRN。例如圖中是對第二句話S2做RNN。
輸入層是詞。第二層是雙向LSTM,對詞做encode。輸出結果以及上一個句子的encoder輸出,加入attention,得到輸出是句子編碼。一個層級完成。
上一個層級是句子。不同的句子之間算一個RNN。得到所有句子的編碼。
之后做decoder,做分類。
attention 就是一個加權,看哪個對象權重高。
embedding就是把用one-hot形式表示的詞向量,通過table projection的方式表示為一個固定維度的稠密向量。例如詞庫中有40萬詞,那就是把一個40萬維的詞向量映射為一個300維的詞向量。
4 圖像生成文本
4.1 問題引入
1 圖像檢索
2 盲人導航:引導盲人自拍
3 少兒教育-看圖說話
數據集:AI Challenger: 圖像中文描述數據
評測:BLEU score
4.2 模型變遷
4.2.1 M—RNN
1 輸入詞生成embedding
2 對embedding做全連接生成256維度的詞表達
3 Embedding輸入到RNN生成更加抽象的embedding
4 256維度的embedding、RNN的embedding以及圖像特征同時輸入給multimodal。此處的圖像特征是AlexNet的第七層輸出。
5 最后:輸出交給分類層做softmax,預測出下一個詞。
4.2.2 Neural Image Caption
模型show and tell,是斯坦福大學李飛飛實驗室提出的。
1 圖像特征使用更強大的CNN提取,例如googlenet、residual等
2 圖像特征只提取一次
3 用LSTM生成文本
4.2.3 attention based
1 輸入圖片,不獲取CNN的全連接層,而是使用某個卷積層的feature。
卷積層有位置信息, 每個位置的值都對應原圖中的一個區域。每個channel對應位置相同。例如在一個MxMxC的特征中,對(i,j)這個位置對應原圖中的某一塊區域,不同channel的(i,j)的值都對應原圖中的同一塊區域。
我們把不同channel,同一個位置的值摳出來,當做一個向量,代表這個區域的特征表達,最后會得到MxM個位置信息。
2 將這MxM個特征送入RNN網絡中,會為不同位置的特征賦予不同的注意力。不同位置的圖可能會輸出不同的詞:bird、water、over。
a對應圖片中每個位置的權重
etie_{ti}eti?是通過對第i個位置的信息和上一步記憶做函數變換
αti\alpha _{ti}αti?表示t時刻位置i的權重(注意力)
14x14x256(怎么會有256個通道?)
問題:一個LSTM同時做了兩件事情:attention和分類。這會導致同樣大小的區塊存了更多的內容。
第一層top-down attention LSTM負責學習attention。輸入是上一時刻第二層LSTM的記憶ht?12h_{t-1}^2ht?12?、圖像的全局信息(所有feature map的平均)vvv,輸入詞語的embedding。
這一層的輸出與圖像特征做加權學習到attention。
第二層language LSTM 是用于分類預測的。輸入是attention以及第一層的輸出。
此外這個模型的特點是對原始圖片使用selective detection,選取了不同的原始區域作為特征提取。在上一個模型中使用的是一樣大小的特征區域,這會影響效果。
總結
以上是生活随笔為你收集整理的第八课 RNN条件生成与Attention机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Amesim17.0安装教程(基于Win
- 下一篇: 黑苹果EFI大全下载,拥有各种电脑机型配