1. 程式人生 > >論文《Chinese Poetry Generation with Recurrent Neural Network》閱讀筆記

論文《Chinese Poetry Generation with Recurrent Neural Network》閱讀筆記

code employ 是個 best rec AS Coding ack ase

這篇文章是論文‘Chinese Poetry Generation with Recurrent Neural Network’的閱讀筆記,這篇論文2014年發表在EMNLP。

ABSTRACT

這篇論文提出了一個基於RNN的中國古詩生成模型。

PROPOSED METHOD

技術分享圖片

第一句的生成

第一句的生成是規則式的。
先自定義幾個keywords,然後通過《詩學含英》(這是清朝人編寫的)擴展出更多的相關短語。然後生成所有滿足格式約束(主要是音調方面的)的句子,接下來用一個語言模型排個序,找到最好的。
原文中有挺重要的一句,但是我沒看懂。

In implementation,we employ a character-based recurrent neural network language model (Mikolov et al., 2010) interpolated with a Kneser-Ney trigram and find the n-best candidates with a stack decoder.

接下來句子的生成

一個字一個字的生成。
已經有了前面的1,2,3..i句話,句子\(S_{i+1}\)的條件概率:
\[ P(S_{i+1}|S_{1:i}) = \prod_{j=1}^{m-1}P(W_{j+1}|w_{1:j},S_{1:i}) \]
也就是構成這個句子的每個字的概率乘積。每個字概率依賴於前面的j-1個字以及前面的i句話。
整個模型由三個子模型構成:
1, CSM模型,convolution sentence model
這個模型的任務是把已經生成的句子\(S_i\)映射到一個vector \(v_i\)
\[ v_i = CSM(S_i) \]
這裏采用的是基於CNN的senence model, Kalchbrenner and Blunsom (2013)

2, RCM模型,recurrent context model
這個模型的把CSM對前面i個句子生成的i個向量映射到\(u_{i}^{j}\)
\[ u_i^{j}=RCM(v_{1:i},j) \]
這是個encode-decode模型,先把前i個句子encode到一個向量,然後再decode到m個向量,每個向量對應一個位置,如果是五言絕句那就是decode出5個向量,分別對應著5個字。然後把這些向量拼接起來。
技術分享圖片

3,RGM模型,recurrent generation model
預測下個輸出是字w的概率(w是字典裏面的任意一個字),以RCM的輸出、前j個字、字本身的信息(這個模型用的是one-hot encoding向量)為輸入。

\[ P(w_{j+1}|w_{1:j},S_{1:i}) = RGM(w_{1:j+1},u_i^{j}) \]
這裏其實是個語言模型
技術分享圖片

\(e(w_j)\)是字w的one-hot encoding.Y需要註意,“matrix \(Y\subset R^{|V|\times q}\) decodes the hidden representation to weights for all words in the vocabulary”

CONTRIBUTION

這篇文章有兩個創新點:

  1. 通過RNN模型把格式的約束和內容的選擇一起做了
  2. 在生成的過程中考慮了所有前面已經生成的句子

RESULT

欣賞一下整個模型生成的詩歌吧
技術分享圖片

論文《Chinese Poetry Generation with Recurrent Neural Network》閱讀筆記