Seq2Seq Attention输入输出维度分析(最全面细致)
先給出Seq2Seq Attention的計算過程的截圖,來源于知乎Yuanche.Sh的題為真正的完全圖解Seq2Seq Attention模型的文章,也希望你閱讀了我的上一篇文章:Seq2Seq Attention(這三篇就夠了,精心發(fā)掘整理)
這樣對Seq2Seq Attention會有一個比較基礎(chǔ)全面的認識。為了進一步加深對于Seq2Seq Attention的認識,我們還需要搞懂,Seq2Seq Attention數(shù)據(jù)輸入輸出維度的變化。
上述流程圖是常見的一種Seq2Seq Attention,雖然Attention有多種,但是我們搞懂一種維度的變化后,那么其它的類似。這里我采用具體的數(shù)據(jù)來說明,這樣更直觀一些。我們從第一步開始看,假設(shè)輸入數(shù)據(jù)xt的形狀是[N,100],其中N表示batch_size,表示批次大小,也即一個批次含有的句子數(shù)目,這里我們沒有給出具體是多少,但是不影響接下來的理解,100為input_dim也就是輸入數(shù)據(jù)的維度。ht-1為時刻t-1的狀態(tài),形狀為[N,128],其中,128為RNN中的神經(jīng)元數(shù)目,也就是Encoder神經(jīng)網(wǎng)絡(luò)輸出的維度大小。ht的形狀當然和ht-1是一樣的。這里你可能會問,xt的形狀和ht-1不一樣,如何一起運算呢?其實這個(1)式省略了系數(shù)矩陣,完整的應(yīng)該是這樣子的:
這里U的形狀為[100,128],W的形狀為[128,128],也就是說,通過一個系數(shù)矩陣U,把原來形狀為[N,100]的輸入數(shù)據(jù)xt轉(zhuǎn)換成了[N,128],所以說,輸入數(shù)據(jù)其實無論什么維度,都可以很方便的找到對應(yīng)的轉(zhuǎn)換矩陣將之轉(zhuǎn)換為我們神經(jīng)網(wǎng)絡(luò)所需要的形狀。
再看第二步,由于Decoder網(wǎng)絡(luò)的第一個隱狀態(tài)s0就是Encoder網(wǎng)絡(luò)最后一個時刻的隱狀態(tài),在Seq2Seq中就是我們常見的c,所以Decoder網(wǎng)絡(luò)隱狀態(tài)的形狀和Encoder的隱狀態(tài)的形狀是完全一樣的。即st-1和st的形狀均為[N,128],而y是我們的目標單詞(Target word)所生成的word embedding,也就是一個詞向量,和xt很類似,為了統(tǒng)一,我們也可以將y的維度設(shè)為[N,100]。這里和(1)式一樣,也隱藏了系數(shù)矩陣。
對于計算Attention的(3),(4),(5)步,我們首先從(5)步說起,這一步作用是計算Attention score,這一步的方式有多種,但是搞懂一種,其它方式的類似。我們這里采取了
hj和si-1的形狀均是[N,128],所以W1和W2形狀也一樣。其中,j和i分別表示Encoder和Decoder的時間序列的時刻。這里有兩種做法,一種是W1和W2的形狀都是[128,128],這樣得到的eij的形狀為[N,128],另一種W1和W2的形狀都是[128,1],這樣的話,eij的形狀便為[1,1],其實就是一個單個的值了。理論上這兩種方法都是可以的,但是前者保留了更細致的維度信息,所以效果可能稍好些,所以也最常用,但是相應(yīng)的計算量會增加。我們這里采用第一種,這樣便得到了eij的形狀為[N,128].
再看第(4)步,由于分子分母的形狀均是[N,128],,所以αij的大小也為[N,128],通過點乘和累加的方式得到的ct形狀同樣是[N,128]。
(6),(7)步就比較好理解了,每個參數(shù)的形狀均是 [N,128],這里的y<t表示y0,y1…yt-1.
需要注意的是,(7)步只是得到了目標單詞(target word)的概率分布,而得到具體的單詞還需要更近一步,就是將此概率分布設(shè)為Ot,也即:
則具體的單詞通過下式求得:
這個公式表示只取概率最大值對應(yīng)的那一個單詞的索引。Yt的形狀變?yōu)閇1,1],也就是一個單獨的單詞索引。通過這個索引我們在字典中可以查到相應(yīng)的單詞:
總結(jié)
以上是生活随笔為你收集整理的Seq2Seq Attention输入输出维度分析(最全面细致)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Monaca Web IDE 初体验 —
- 下一篇: 经纬度转geohash函数