seq2seq


網絡輸入是一個序列,一句話,圖像的某一行,都可以認為是一個序列,

網絡輸出的也是一個序列。

RNN的架構

我們把所有的輸出o連起來,就成了一個序列。

rnn有一些缺點,lstm可以加入一個遺忘單元,然后控制哪些需要記住,哪些需要忘記。

 

機器翻譯:

現在的機器翻譯已經達到了非常高的水平。最早的時候,就是逐字翻譯。

逐字翻譯不准確,而且不連貫,現在已經被淘汰了。

然后使用統計學,使用轉移矩陣,選擇最可能的轉接方式,可以做的不錯,但依然有問題。

 

 

現在我們使用的是循環神經網絡。

首先我們進行RNN編碼,就是把輸入的句子轉成一個向量(比如300維),然后通過另一個RNN進行解碼,得到最后的結果。

 

seq2seq網絡架構

 左邊輸入:are you free tomorrow?

右邊輸出:yes, what's up?

END或者用EDS表示最終的結束字符。因為我們要防止它無限制的解碼下去,我們需要一個終止字符。

這樣的網絡架構可以構造一個聊天機器人的。但是這樣的對話數據不好找。

文本摘要

S表示輸入數據。

T表示文本摘要。

S的序列不一樣長,我們可以采用補全的方式,讓他們一樣的輸出長度。

rnn輸入字符是不認識的,我們一般是使用word2vec進行映射操作的。

 

seq2seq存在的問題:

壓縮損失了信息,因為在進行編碼的過程中,最后一個詞可能占比比較大一些,因為編碼過程損失了信息,所以會導致在解碼的過程中,得不到損失的那些信息。這是seq2seq中比較嚴重的缺點。

 

序列長度一般10-20左右最好的。

解決辦法:加入attentation機制。

 

我們認為knowledge就是和知識有關,和后邊的幾個詞關系不大,或者說,我們可以引入一個概率分布,讓它知道這個詞和哪些輸入的關系大一些。

 

舉例子:

加入了attentation機制,然后改變了C的結果。從論文中可以看到,加入attentation機制之后,效果變好。

 attentation實際上是做了一個加權的工作。

 

Bucket機制

每次mini—batch都是固定大小。我們可以分組,然后保證內部一致就可以了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM