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