神经网络在诗词自动生成方面的研究

中文古典诗词,语言简练、内涵丰富,是国学中的瑰丽明珠。

自《诗经》起,经汉乐府的发展和历代演变,诗词在唐宋达到顶峰,被后世广为传颂,明清直至近现代,人们对古典诗词的热爱经久不衰。

加之近年来,随着国学的复兴和诗词大会的持续升温,古典诗词走进千家万户。聆听经典、唱诵古诗成为一大乐事。诗词之美,在格律、在意象、在赋比兴。

然而,优秀的中文古典诗词作品,需要诗人的文学功底厚积而薄发,感世间百态、书千古韵事、作风流文章。

普通百姓对于诗词的热爱虽盛,却往往止步于欣赏和背诵名作名篇。读诗尚可、品诗亦自得其乐,谈及写诗、作诗则敬而远之。

神经网络在诗词自动生成方面的研究

突破性的便是,随着大数据、语料库和统计科学的发展,我们可以获取的诗词资源是海量的,能够有效挖掘中文古典诗词的宝库,从中学习古诗词的量化和统计规律,以及经典名篇中的行文和句法技巧,意象及铺陈规则,加上古诗词特有的平仄韵律,我们是否可以让诗词创作“飞入寻常百姓家”?

倘若古诗文中的上述特征提取,不是人工标注,不依赖于专家知识,在大数据、神经网络和图型处理单元(Graphics Processing Unit,GPU)广泛普及的今时今日,由机器完成提取特征、自动迭代、推演填词、谱写校对的过程,计算机必将辅助人类诗人的创作,涌现出更多更好的诗词作品,来丰富我们日益增长的经典文化和国学艺术需求。

神经网络在诗词自动生成方面的研究

也因此自然而然的,对于“机器作诗”的研究也应运而生,成为研究计算机自动分析、理解和使用人类语言的一个重要切入点。

早期的诗词生成模型都是基于规则和模板。例如,ASPERA诗词生成系统和日文俳句生成系统。

而在此之后,统计”机器学习方法”也被陆续用到诗歌生成上。Levy和Manurung先后探索利用遗传算法来进行诗歌生成。

与此同时,一些研究者也开始利用其他类型的文本生成模型。比如,Yan等人提出利用自动文本摘要的方式进行诗歌生成,将诗歌的生成过程看作是从整个古诗库进行摘要的过程。

神经网络在诗词自动生成方面的研究

此外,在诗歌生成任务上提升显著的模型是统计机器翻译(Statistical Machine Translation,SMT)模型。Jiang和Zhou首先将SMT模型用于中文对联的生成,取得了良好的效果。随后,He进一步将此模型应用于中文绝句的生成。

然而,随着人工神经网络的发展,诗词自动生成迎来了一个全新的阶段——基于神经网络的诗词生成。

随着人工神经网络在机器翻译方面的突破性进展,研究者从统计模型和对联生成研究逐渐过渡到基于翻译机制的网络模型来进行计算机诗词创作取得了一定的成就。

2014年,EMNLP (Conference on Empirical Methods in Natural Language Processing)会议上,Zhang和Lapata首次使用循环神经网络(Recurrent Neural Network,RNN)创作中文绝句。

方法为,使用了一个编码器(encoder)加上一个解码器(decoder)的结构,将生成的每句诗向量化,然后压缩到一个上下文向量中,用以捕捉诗歌的上下文信息。

神经网络在诗词自动生成方面的研究

图一

为了更好的理解该诗句生成模型,下面对RNN(循环神经网络)进行深入解析。

RNN的网络结构和时间序列展开式,如图1所示,其中每个圆圈可以看作是一个单元,而且每个单元内部完成的任务都是一样的,因此可以折叠为左侧的循环结构。用一句话解释RNN,就是单元结构的重复使用。

循环神经网络提供按时间步长的联合处理有益于大多数序列标记任务,包括文本分类、情感识别、语言生成等具体应用常见的循环神经网络改进结构主要包含长短时记忆网络(Long Short-Term Memory,LSTM)和门限递归单元(Gated Recurrent Units,GRU)结构。

以产生梯度长时间持续流动的路径是初始化LSTM模型的核心贡献。它由Hochreiter等1997年首次提出,一个关键的扩展是采用“门”来控制循环的权重,积累的时间尺度也可以动态的改变。

神经网络在诗词自动生成方面的研究

图二

在这种情况下,即使是具有固定参数的LSTM,积累的时间尺度也可以因为输入序列而改变。如图2展示了一个标准的LSTM结构。

当输入序列信息过长时,LSTM可以解决普通循环神经网络模型带来的梯度爆炸和弥散的问题。它将传统的神经元替换成有记忆系统的神经元(被称作记忆神经元),可以较好地解决RNN模型会丢弃甚至无法处理长序列信息的问题。

神经网络在诗词自动生成方面的研究

图3

双向长短时记忆神经网络(BiLSTM)是在所述的LSTM基础上,通过构建两个并行的隐藏层同时从正序和逆序两个方向处理序列信息,具体的网络结构如图3所示。

其中,两个并行神经元分别从前向层和反向层两个方向计算隐藏层状态后合并到输出层。

具体而言,给出一个词和这个词的位置,需要从这个词开始向前向后个字生成几个字,最后合起来一共7个字,所以需要一个向前生成和一个向后生成的模板。

向后生成:例如“黄河远上白云间”,如果我们给出了“远上”这个词,那么就需要向后生成“白云间”这三个字。

所以对于这种向后生成的情况,我们给出一个向后的训练方式,就是给出x为"远上"那么对应的v为"白",接下来给出x“上白”,对应y为“云”,以此类推训练出一个模板,这样就可以向后生成。

神经网络在诗词自动生成方面的研究

向前生成:就是给出"远上"需要生成前面的,所以我们给出训练方式,x“上远”,对应y“河”,接着x“远河”,对应v"黄",这样就可以向前生成。

RNN模型大致如上,而其中还有一个概念“词向量”也极为关键。词向量是将文本分词后,以向量的形式表示每一个词语,这种转换方式称为词嵌入(Word Embedding)。

早期的词嵌入是通过One-hot Representation来表示词向量,例如:春眠不觉晓,处处闻啼鸟。分词结果如下: “春眠\不\觉\晓\,\处处\闻\啼鸟。”

分词后用向量表示每一个词语,去掉标点,词语的总数量即为词典维度,每一个词所在位置为1,其它为0,如:春眠=[1,0,0,0,0,0,0],不=[0,1,0,0,0,0,0],……,鸟=[0,0,0,0,0,0,1]。

神经网络在诗词自动生成方面的研究

这种表达词语的向量空间为系数矩阵,便于做计算,但是有两个缺点:

一是在做一些深度学习的运算时造成维度灾难;

二是没有体现词语之间的关联性。为了能够在低维向量空间中表示词语,Mikolov提出了Word2vec来实现高效的低维词向量训练方法,它对序列局部数据有着很好的解释。

Word2vec主要包括了CBOW(Continuous bag-of-words for word2vec)和Skip-gram两个词嵌入模型如(图4)。

Word2vec在千万数量级的词典和上亿的数据集上面进行高效地训练,并且得出词嵌入的结果,可以很好地度量词与词之间的相似性。

神经网络在诗词自动生成方面的研究

有了大量的诗词语料基础,我们同样可以构建出适合诗词文本的向量表示。在一首包含n个词或者汉字的诗词作品中,wi表示第i个字的向量,那么整首诗词作品可以表示为:P={W1,W2,…,Wn}。

我们可以用此进行文本分类、新闻推荐、情感分析等工作。也为后期能将文本数据输入到CNN或者RNN以及各种复杂模型做好了充足的准备。同时,该方法对语言进行各种语义组合提供了很大的帮助。

然而在Word2vec模型中,同一个词是有相同的词向量的,但是在日常生活中,同一个词有着不同的语义,如果用同一组词向量表示具有不同语义的词,则会出现很多不必要的错误。

神经网络在诗词自动生成方面的研究

ELMo的出现便旨在处理这种一词多义的现象(如图5所示)。

ELMo模型,是由两层LSTM组成其中左侧为正向LSTM,右侧为反向LSTM。

对于左侧下方的“川”字来说,它与对应神经元以及由前方传来的信息计算以后得到向量V3,而后V3作为输入通过LSTM预测下一个字,此时就可以将V3当作是“川”这个字的向量,同时,右侧反向也会得到一个相应的向量v3′,将v3和v3′组合起来就得到了这一层中这个字的向量。

同理,第二层也会得到一组与第一层表示同一个字的向量,于是设置参数a,b使得这个字的向量最终表示为:v=a∗v1+b∗v2。

原理分析完毕,然而当时Zhang和Lapata最早应用的RNN模型较为简单,为了提升诗词的连贯性和通顺性,二人的模型还需要和两个额外的SMT特征以及一个基于n-gram的语言模型相结合。

神经网络在诗词自动生成方面的研究

于是,Yan提出了polish模型,同样是使用RNN进行绝句的生成,但不同之处在于,Yan的模型会对一首诗进行多次生成。

每次生成时,会考虑上一次生成的诗词,以模拟人类在创作诗歌时,不断修改润色的过程,从而提升诗词的质量。

进一步,Yi等人第一次提出用结合了注意力机制的Sequence-to-Sequence模型来进行诗词生成。他们针对绝句中不同的位置训练了不同的模型,以此来提升诗词的上下文关联性。

随后,在绝句生成任务上,Wang等人提出了Planning模型,该模型预先规划一首绝句里四个句子每一句对应的关键词,然后用对应的模型生成每一句。以往的模型生成的诗词大多缺乏新颖性,故Zhang等人提出了利用记忆网络来进行诗词生成。

神经网络在诗词自动生成方面的研究

为了提升生成诗词的新颖性,他们将数百首古人创作的诗词存入一个外部的Memory,以提供更丰富的外部知识来引导模型生成。同时,通过控制Memory中存储的诗词风格,他们的模型也能实现对生成的诗词风格的简单控制。

上述提及过的Yi等人其实也同样提出过利用Memory模型。他们则使用三个不同的Memory来模拟人类进行诗词创作时的写作和记忆习惯。

同时,采用了一种体裁向量,能够将诗词的格律和结构信息与诗词内容在一定程度上分离。从而,使一个训练好的模型能生成不同体裁的诗词。

行文至此,神经网络的应用研究对于诗词生成的作用已不言而喻。

“云山水落花前影,沽酒醉中一笑愁”,正如机器作品中所述,语言与人工智能相结合的道路苦乐相随,安之若素、甘之如饴,以语言学之根基,融会计算机技术,回归交叉学科的初心,便是让古典诗词走入寻常百姓生活,传承出国宝添异彩、岁月里源远又流长。