论文《Chinese Poetry Generation with Recurrent Neural Network》阅读笔记

这篇文章是论文‘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

欣赏一下整个模型生成的诗歌吧

原文地址:https://www.cnblogs.com/naniJser/p/9029619.html

时间: 2024-10-08 13:25:21

论文《Chinese Poetry Generation with Recurrent Neural Network》阅读笔记的相关文章

Recurrent Neural Network 学习笔记【二】RNN-LSTM

理论上讲,只要足够大的RNN结构就能去生成任意复杂的序列结构. 但是在实际上,标准的RNN并不能有效的长期保存信息(这是由于类似HMM的结构,每次每个节点的信息如果始终经过同样的变换,那么会要么指数爆炸要么指数衰减,很快信息就会丢失).也是由于它这个“健忘”的特点,这种RNN生成的序列很容易缺乏稳定性.这样的话,如果只能依赖上几步的结果去预测下一步,而又使用预测的新结果去预测再下一步,那么一旦出现了错误,系统就会很容沿着错误的方向走下去,而很少有机会能从之前的信息中把错误改正过来. 从这个角度讲

Recurrent neural network language modeling toolkit 源码走读(五)

系列前言 参考文献: RNNLM - Recurrent Neural Network  Language Modeling Toolkit(点此阅读) Recurrent neural network based language model(点此阅读) EXTENSIONS OF RECURRENT NEURAL NETWORK LANGUAGE MODEL(点此阅读) Strategies for Training Large Scale Neural Network  Language

Recurrent neural network language modeling toolkit 源码深入剖析系列(一)

系列前言 参考文献: RNNLM - Recurrent Neural Network  Language Modeling Toolkit(点此阅读) Recurrent neural network based language model(点此阅读) EXTENSIONS OF RECURRENT NEURAL NETWORK LANGUAGE MODEL(点此阅读) Strategies for Training Large Scale Neural Network  Language

Recurrent neural network language modeling toolkit 源码深入剖析系列(二)

系列前言 参考文献: RNNLM - Recurrent Neural Network  Language Modeling Toolkit(点此阅读) Recurrent neural network based language model(点此阅读) EXTENSIONS OF RECURRENT NEURAL NETWORK LANGUAGE MODEL(点此阅读) Strategies for Training Large Scale Neural Network  Language

Recurrent neural network language modeling toolkit 源码走读(六)

系列前言 参考文献: RNNLM - Recurrent Neural Network  Language Modeling Toolkit(点此阅读) Recurrent neural network based language model(点此阅读) EXTENSIONS OF RECURRENT NEURAL NETWORK LANGUAGE MODEL(点此阅读) Strategies for Training Large Scale Neural Network  Language

Recurrent neural network language modeling toolkit 源码走读(八)

系列前言 参考文献: RNNLM - Recurrent Neural Network  Language Modeling Toolkit(点此阅读) Recurrent neural network based language model(点此阅读) EXTENSIONS OF RECURRENT NEURAL NETWORK LANGUAGE MODEL(点此阅读) Strategies for Training Large Scale Neural Network  Language

Recurrent neural network language modeling toolkit 源码剖析(四)

系列前言 参考文献: RNNLM - Recurrent Neural Network  Language Modeling Toolkit(点此阅读) Recurrent neural network based language model(点此阅读) EXTENSIONS OF RECURRENT NEURAL NETWORK LANGUAGE MODEL(点此阅读) Strategies for Training Large Scale Neural Network  Language

Recurrent Neural Network Language Modeling Toolkit by Tomas Mikolov使用示例

递归神经网络语言模型工具地址:http://www.fit.vutbr.cz/~imikolov/rnnlm/ 1. 工具的简单使用 工具为:rnnlm-0.3e step1. 文件解压,解压后的文件为: 图1.rnnlm-0.3e解压后的文件 step2. 编译工具 命令: make clean make 可能报错 说这个x86_64-linux-g++-4.6 命令找不到 如果出现上述错误,简单的将makefile文件的第一行CC = x86_64-linux-g++-4.6 改为 CC =

Recurrent Neural Network(循环神经网络)

Reference:   Alex Graves的[Supervised Sequence Labelling with RecurrentNeural Networks] Alex是RNN最著名变种,LSTM发明者Jürgen Schmidhuber的高徒,现加入University of Toronto,拜师Hinton. 统计语言模型与序列学习 1.1 基于频数统计的语言模型 NLP领域最著名的语言模型莫过于N-Gram. 它基于马尔可夫假设,当然,这是一个2-Gram(Bi-Gram)模