系統學習NLP(十五)--seq2seq
轉自:https://blog.csdn.net/aliceyangxi1987/article/details/73420477
本文結構:
- 什麼是 seq2seq?
- Encoder–Decoder 結構?
- seq2seq 結構?
什麼是 seq2seq?
seq2seq 是一個 Encoder–Decoder 結構的網路,它的輸入是一個序列,輸出也是一個序列, Encoder 中將一個可變長度的訊號序列變為固定長度的向量表達,Decoder 將這個固定長度的向量變成可變長度的目標的訊號序列。
這個結構最重要的地方在於輸入序列和輸出序列的長度是可變的,可以用於翻譯,聊天機器人,句法分析,文字摘要等。
下面是寫過的 seq2seq 的應用:
RNN與機器翻譯
http://www.jianshu.com/p/23b46605857e
如何自動生成文字摘要
http://www.jianshu.com/p/abc7e13abc21
自己動手寫個聊天機器人吧
http://www.jianshu.com/p/d0f4a751012b
Encoder–Decoder 結構?
Cho 在 2014 年提出了 Encoder–Decoder 結構,即由兩個 RNN 組成,
https://arxiv.org/pdf/1406.1078.pdf
(其中的 RNNCell 可以用 RNN ,GRU,LSTM 等結構)
在每個時刻, Encoder 中輸入一個字/詞,隱藏層就會根據這個公式而改變,
到最後一個字/詞 XT 時 ,隱藏層輸出 c ,因為 RNN 的特點就是把前面每一步的輸入資訊都考慮進來了,所以 c 相當於把整個句子的資訊都包含了,可以看成整個句子的一個語義表示。
Decoder 在 t 時刻的隱藏層狀態 ht 由 ht−1,yt−1,c 決定:
yt 是由 ht,yt−1,c 決定:
f 和 g 都是啟用函式,其中 g 函式一般是 softmax。
模型最終是要最大化下面這個對數似然條件概率:
其中每個 (xn, yn) 表示一對輸入輸出的序列, θ 為模型的引數。
seq2seq 結構?
Sutskever 在 2014 年也發表了論文:
https://arxiv.org/pdf/1409.3215.pdf
這個模型結構更簡單,
因為 Decoder 在 t 時刻 yt 是由 ht,yt−1 決定,而沒有 c:
論文中的 Encoder 和 Decoder 都用的 LSTM 結構,注意每句話的末尾要有 “” 標誌。 Encoder 最後一個時刻的狀態 [cXT,hXT] 就和第一篇論文中說的中間語義向量 c 一樣,它將作為 Decoder 的初始狀態,在 Decoder 中,每個時刻的輸出會作為下一個時刻的輸入,直到 Decoder 在某個時刻預測輸出特殊符號 結束。
LSTM 的目的是估計條件概率 p(y1, … , yT′ |x1, … , xT ) ,
它先通過最後一個隱藏層獲得輸入序列 (x1, … , xT ) 的固定長度的向量表達 v,
然後用 LSTM-LM 公式計算輸出序列 y1, … , yT′ 的概率,
在這個公式中,初始狀態就是 v,
而且用了 4 層的 LSTM,而不是一層:論文中的實驗結果表明深層的要比單層的效果好
下面是個 3 層的例子
計算公式如下:
為了便於理解,單層的表示如下:
並且對輸入序列做了一個翻轉,即不是把 a, b, c 對映到 α, β, γ, 而是把 c, b, a 對映到 α, β, γ, 這樣的結果是相應的 a 會更接近 α,並且更利於 SGD 建立輸入輸出間的關係。
參考:
Learning Phrase Representations using RNN Encoder–Decoder
for Statistical Machine Translation
https://arxiv.org/pdf/1406.1078.pdf
Sequence to Sequence Learning
with Neural Networks
https://arxiv.org/pdf/1409.3215.pdf
Generating Sequences With
Recurrent Neural Networks
https://arxiv.org/pdf/1308.0850.pdf
相關文章
- 系統學習NLP(十六)--DSSMSSM
- 系統學習NLP(二十一)--SWEM
- 系統學習NLP(十七)--文字相似度
- 系統學習NLP(二十)--文字聚類聚類
- 系統學習NLP(十九)--文字分類之FastText文字分類AST
- 系統學習NLP(十二)--文字表示綜述
- 系統學習NLP(十四)--句子向量與篇章向量
- 深度學習-->NLP-->Seq2Seq Learning(Encoder-Decoder,Beam Search,Attention)深度學習
- NLP學習1
- 深度學習的seq2seq模型深度學習模型
- 系統學習NLP(十)--詞性標註演算法綜述詞性標註演算法
- NLP與深度學習(一)NLP任務流程深度學習
- NLP系列學習:資料平滑
- NLP入門-學習路徑
- NLP教程(7) - 問答系統
- 你是怎麼學習 NLP 的?
- cms系統學習
- 強化學習(十五) A3C強化學習
- Python學習之旅(二十五)Python
- 【譯】十五分鐘,學習 WebpackWeb
- 第十五天學習javaJava
- 第十五週學習總結
- 前端系統學習——前端學習路線前端
- NLP&深度學習:近期趨勢概述深度學習
- 深度學習利器:TensorFlow與NLP模型深度學習模型
- 語言模型(五)—— Seq2Seq、Attention、Transformer學習筆記模型ORM筆記
- 【深度學習篇】--Seq2Seq模型從初識到應用深度學習模型
- FastAPI(六十五)實戰開發《線上課程學習系統》基礎架構的搭建ASTAPI架構
- MySQL如何系統學習MySql
- 作業系統學習作業系統
- SpringCloud學習(十五)---Spring Cloud FunctionSpringGCCloudFunction
- Salesforce LWC學習(二十五) Jest TestSalesforce
- 科學組合,系統學習
- CFA協會線上學習系統學習詞彙!
- 深度學習教程 | Seq2Seq序列模型和注意力機制深度學習模型
- 圖解BERT(NLP中的遷移學習)圖解遷移學習
- NLP與深度學習(六)BERT模型的使用深度學習模型
- Dart基礎系統學習Dart