tensorflow lstm 预测_解析seq2seq原理+tensorflow实现
1 寫在前面
最近抽時間寫文章,將自己以前學過的知識總結一下,通過文章記錄下來,以后忘記了也可以隨時翻閱。
本文主要介紹最基礎的seq2seq模型,并嘗試使用tensorflow實現。很多朋友都說pytorch很香,所以隨后自己有時間也想入門pytorch,嘗試寫一個pytorch的版本seq2seq。
2 seq2seq模型
圖1 seq2seq模型結合圖1,我們介紹下seq2seq模型。seq2seq模型可以分為Encoder和Decoder兩部分。在seq2seq模型中,Encoder和Decoder模型用LSTM或者GRU實現。這里的Enconder將原句子編碼成一個固定大小的有意義的向量 C,然后將向量C作為Decoder的輸入,Decoder對向量C解碼,最后輸出目標句子。
2.1 Encoder
Encoder是一個LSTM。假設我們的輸入是 how are you,輸入句子中的每個單詞
通過embedding layer (look up table)后得到一個向量 ,其中 是詞向量的維度。在我們的例子中,我們的輸入句子是how are you,因此我們得到的輸入向量是 。然后我們只需在這個向量序列上運行一個LSTM(在seq2seq的原始論文中,作者在實驗中使用的是多層LSTM,他們發現,多層LSTM的效果會更好,可以參考圖4),并存儲LSTM輸出的最后一個隱藏狀態,最后一個隱藏狀態就是我們的encoder編碼形成的有意義向量C,在對應到圖2中,LSTM的隱藏狀態為 ,所以C= 。圖2 Encoder部分模型結構2.2 Decoder
圖3 Decoder部分模型結構Decoder是另一個LSTM。通過Encoder,我們獲得了一個捕獲了輸入序列意義的 fix-size的向量C。然后我們將向量C作為Decoder的輸入,一個字一個字地獲取目標序列。對應到圖3,我們將encoder representation C作為LSTM的hidden state
,一個特殊的標志符向量 作為輸入 ,其中<sos>表示(tart of sentence)。隨后LSTM計算下一個隱藏狀態 。然后我們使用一個函數 ,這里一般就是加一個全連接層作為函數 。然后得到 , 。隨后將softmax應用到s1, 得到標準化的概率表示,即,其中 。p1中的每個元素 表示選中每個單詞的概率,如果法語單詞“comment”的概率最大,這樣我們就得到單詞"comment"的index,然后將單詞“comment"的向量 表示作為 ,然后 , h1作為下一個LSTM單元的輸入,如此進行下去,直到預測的單詞是<eos>seq2seq模型實際就是在給定原句子X的基礎上對句子的下一個詞的分布建模
下面這一點是Stanford nlp課程中的截圖,大家可以看看。
3 tensorflow 實現
本節基于tensorflow實現圖4的seq2seq模型,因為seq2seq原論文指出,使用多層LSTM可以達到更好的效果,并且在論文中指出,將原句子反轉能獲得更好的效果。
圖44 tensorflow實現
tensorflow實現我寫在下一篇文章中吧,不然一篇文章太長會讓人看起來不舒服。下面鏈接是seq2seq的tensorflow實現。
愛羅月:seq2seq之rensorflow實現?zhuanlan.zhihu.com5 參考文獻
https://web.stanford.edu/class/cs224n/slides/cs224n-2019-lecture08-nmt.pdf?web.stanford.eduSeq2Seq with Attention and Beam Search?guillaumegenthial.github.io寫在最后:以上全是個人理解,肯定會有不正確或者不準確之處,大家看出來可以評論指正,我看到就會修改過來。
看到這篇文章的小伙伴,如果覺得對你有用,就為我點個贊吧!
注:本文可以任意轉載,轉載時請標明作者和出處。
總結
以上是生活随笔為你收集整理的tensorflow lstm 预测_解析seq2seq原理+tensorflow实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 八皇后问题初始思路python_Pyth
- 下一篇: 单片机数据在网页上显示_不务正业的Exc