Generating Chinese Poetry from Variational Auto-Encoder
本期使用Variational Auto-Encoder(VAE)生成中國五言絕句,模型實現來源於論文:[1511.06349] Generating Sentences from a Continuous Space。
模型結構:
模型由三部分組成,Encoder,Decoder和VAE。
- Encoder - rnn模型,論文中使用LSTM,通過rnn模型提取樣本的序列特徵。
- Decoder - rnn模型,可以看做一個標準的Recurrent neural network language models(rnnlms)如果看過上期文章的朋友想必不會陌生:Natural Language Generation for Chinese Poetry
- VAE:筆者能力不夠,無法將論文中的意思很好的翻譯成中文傳達給大家,所以只能附上原文並帶上自己的一點淺見:由於高位空間中空間過於龐大,僅僅使用latent variable生成樣本會有明顯失真,不管圖片還是自然語言,所以在latent variable基礎上強制使其服從某種有規律的幾何概率分布,從而指導decoder生成逼真的樣本。
論文中使用 highway network layers 提高模型性能
t=σ(WTx+bT) - transform gate,(1?t) - carry gate,靈感來源於lstm。Highway實現
損失函數由兩部分組成:
來源於encoder,可以參考圖1
代碼實現
全部代碼鏈接在文章最後面
encoder由一層雙向lstm構成,輸出時間序列的總體特徵。
decoder為標準rnnlms
vae由embedding,highway,encoder, ,decoder組成
- 這裡embedding使用預訓練詞向量,接入代碼請看82行,載入詞向量代碼
- 使encoder輸出tensor轉換成規定長度latent variable,latent_dim是超參數
生成服從高斯分布的latent variable並計算latent loss(109行)
全部代碼
查看github全部代碼
後話
到目前為止已經使用Pytorch實現NLP中主要任務,希望對大家有所幫助;下一期開始會實現一些有意思的Computer Vision相關內容。
其他NLP的模型將會使用TensorFlow繼續實現,有興趣的朋友可以關注ne7ermore/deeping-flow,筆者會不定期上傳代碼並在後面文章中挑選講解。
感興趣的朋友可以關注專欄深度學習
推薦閱讀:
※機器學習識別cfDNA
※梯度下降法求解logisitic回歸及其python代碼實現
※數學 · 神經網路(二)· BP(反向傳播)
※Python · 神經網路(三*)· 網路
※【啄米日常】3:一個不負責任的Keras介紹(下)
TAG:深度学习DeepLearning | PyTorch | 机器学习 |