首先介紹一下 encoder-decoder 框架
中文叫做編碼-解碼器,它一個最抽象的模式可以用下圖來展現出來:
這個框架模式可以看做是RNN的一個變種:N vs M,叫做Encoder-Decoder模型,也可以稱之為Seq2Seq模型。
原始的N vs N RNN要求序列等長,然而我們遇到的大部分問題序列都是不等長的,如機器翻譯中,源語言和目標語言的句子往往並沒有相同的長度。
對於文本領域來講,這個框架可以直觀的這么去解釋:它可以當做是一個句子(文章)通過處理生成另一個句子(文章)的通用框架。假設給定輸入句子Source,想要通過encoder-decoder 生成目標句子Target。Source和Target可以是同一種語言,也可以是兩種不同的語言,當然也就對應着不同的任務,比如機器翻譯,比如文章生成摘要。
對於Source和Target 分別由各自的單詞序列構成:
這個框架最為核心的一點就是中間語義向量C。
C的獲得有多種方式,最為簡單的就是把編碼器的最后一層的隱層狀態直接復制為C,或者可以對這個隱層狀態進行一個變換再賦值為C,還可以對編碼器部分(或者所有)隱層狀態進行一個變換然后賦值為C。
對於解碼器來說,處理中間語義向量C的方法也有不同方法。C可以直接被當做解碼器首個分支的輸入h0,也可以當做解碼器所有分支的輸入.
參考了這篇博文-寫的很厲害-介紹而RNN和及其變種-簡單命了-完全圖解RNN、RNN變體、Seq2Seq、Attention機制
這個encoder-decoder模型最為常見的一個使用就是機器翻譯的實際應用,我會寫一篇關於此應用的,由此引出attention機制,並對這個機制進行一個詳細解釋