基于长短时记忆网络的古诗词生成

2018-12-19 12:44董虎胜
现代计算机 2018年32期
关键词:向量神经网络古诗词

董虎胜

(苏州经贸职业技术学院,苏州 215009)

0 引言

随着对大数据与人工智等研究的不断推进,我们期待着让计算机像人类一样进行写作,撰写出高质量的自然语言文本,这就是文本的自动生成技术。文本自动生成是自然语言处理中一个重要研究方向,在智能问答与对话、机器翻译和计算机视觉等领域都具有非常广泛的应用前景,能够帮助实现更加智能和自然的人机交互。

根据输入的不同,文本自动生成可以被大致分为文本到文本的生成(text-to-text generation)、意义到文本的生成(meaning-to-text generation)、数据到文本的生成(data-to-text generation)和图像到文本的生成(im⁃age-to-text generation)等。例如:对给定的文本自动生成摘要、压缩、复述等工作均属于文本到文本的生成;而根据统计数据生成天气预报和新闻报道的工作属于数据到文本的生成;根据给定的主题作文或写诗都属于意义到文本的生成;对给定的一张图片生成相应的语言文字描述或是根据图像中的内容进行问答则属于图像到文本的生成。但由于语言中存在同/近义词和歧义表达等原因,上述每类文本生成技术都具有相当强的挑战性。

由于深度学习模型具有相当强的学习与表达能力,近年来在许多任务中都取得了比传统机器学习方法更优的性能。在文本自动生成中,循环神经网络(Recurrent Neural Network,RNN)所具有的序列结构使其非常适合用来处理文本序列数据,而且已经取得了相当不错的结果。本文对循环神经网络中的长短时记忆网络(Long Short Term Memory,LSTM)进行了研究,在将其应用于古诗词的生成中取得了良好的实验结果。

1 循环神经网络

一般的神经网络只能在输入层给定样本(x∈Rd)后,在输出层获得特定的结果y,尽管由于网络中庞大的参数与多层非线性结构,神经网络系统具有相当强的学习与表达能力,但却只能单独地处理一个个输入,无法表达出序列数据中的前后关系。例如,在标注“我/在/做/作业”四个词的词性时,系统的输入为“我”、“在”、“做”、“作业”,而系统的输出为“我/nn 在/p做/v作业/nn”。显然系统的每个输入之间具有极强的相关性。为了捕捉这些输入之间的相关性,循环神经网络被设计为如图1所示的结构。

图1 循环神经网络及其按时间展开图

在图1所示的标准循环神经网络结构图中,左侧为折叠后的结构图,将其中的循环结构按时间展开后即获得如右侧所示的序列。图中xt为输入样本,ht为隐藏层结果,若记W 、U分别为xt、ht-1权值,则ht的计算式为:

若记Ot为由输入样本xt时的输出,V为ht的权重矩阵,则Ot计算方法为:

f和g均为非线性的激活函数,比较常用的激活函数有Sigmoid和tanh函数等。由于在计算ht时不仅依赖于样本xt还需要同时考虑前一时刻的ht-1,因此循环神经网络能够有效地捕捉到序列数据中内在的相关性。

2 长短时记忆网络LSTM

尽管循环神经网络能够捕捉到序列数据中的相关性,但其仅仅只能利用前一时刻的信息。当时间间隔不断变长时,简单的循环神经网络将无法捕捉到较远时间间隔前的信息。但是在一些复杂的序列化数据中,样本间的依赖关系并不确定,这种不确定的时间间隔使循环神经网络RNN的性能受到限制。为了有效利用数据中的长期依赖信息,人们设计出了长短时记忆网络LSTM。

作为一种特殊的循环神经网络,LSTM也具有类似RNN的循环结构,但是与朴素的RNN网络不同,LSTM中采用了四个以特殊方式相互影响的处理模块来实现对长时依赖关系的处理,LSTM网络模块如图2所示。

图2 LSTM网络展开结构图

2.1 前向传播过程

在朴素的循环神经网络RNN中,隐藏层只有一个状态ht,而且它对短期的输入非常敏感,而LSTM中增加了一个称为细胞(Cell)状态的Ct。另外LSTM中还设计了门(gates)结构实现对细胞状态的信息增加或删除,具体来说每个门都是一个全连接层,再通过激活函数根据激活值控制信息通过的方式。每个门中包含有一个Sigmoid神经网络层和点乘操作运算,由于Sig⁃moid层的输出位于(0,1)区间上,因此和其作点乘运算就控制了输入的量。

LSTM中的门结构有输入门(input gate)、遗忘门(forget gate)和输出门(output gate)三种,它们分别控制了当前的输入样本和前一时刻的状态对当前细胞状态Ct的影响,以及当前细胞状态Ct有多少输出到了LSTM当前的输出ht。通过对这些处理的循环迭代,LSTM就实现了对细胞单元状态序列化更新处理。LSTM的前向传播步骤如下:

(1)遗忘门层决定从LSTM细胞状态中丢弃哪些信息。遗忘门接收前一时刻的输出ht-1和当前时刻的样本xt作为输入,采用Sigmoid激活函数获得在0~1之间的数值,其中1表示信息完全保留,0表示完全丢弃。遗忘门的输出可以表示为:

式中的 σ(∙)为 Sigmoid 函数,[ ]ht-1,xt表示将两个向量连接为一个更长向量的运算。

(2)下一步是确定什么样的信息被存放在LSTM单元中,这其中包含了两个部分。首先,输入门的Sigmoid层结果it作为即将更新的信息;其次,由tanh层创建一个新的候选值向量C˜t并加入到细胞状态中。细胞新的状态将由旧的状态Ct-1和 ft相乘后获得遗忘后的信息,再加上it∙C˜t来实现更新。上述步骤的运算式即为:

2.2 模型权重的更新

与其他神经网络模型相同,LSTM在训练时也采用的是反向传播算法,主要包括以下三个步骤:

(1)前向计算每个神经元的输出值,即 ft、it、ct、ot、ht五个向量,它们的计算方法已在上一节中描述。

(2)反向计算每个神经元的误差项δ值,与循环神经网络一样,LSTM误差项的反向传播也需要包含两个方向:一个是沿时间的反向传播,即从当前时刻t开始计算每个时刻的误差项;另一个是将误差项向前一层传播。

(3)根据相应的误差项,计算每个权重与偏置的梯度。

根据获得的权重与偏置项的梯度,就可以采用诸如随机梯度下降等优化方法来不断调整模型的权重,从而使得模型能够很好地拟合训练数据。

上式中∘符号表示两个向量的按元素点乘运算。

(3)由输出门更新LSTM细胞单元的状态。首先使用一个Sigmoid层来决定当前单元状态的哪些部分需要输出;接下来将单元状态通过tanh进行处理获得一个-1~1之间的值,并将它与Sigmoid输出相乘,从而获得输出值。上述处理的运算式为:

3 基于LSTM的语言模型

由于LSTM神经网络模型使用门结构实现了对序列数据中的遗忘与记忆,它不仅能够刻画出输入数据中的短时相关信息,还能够捕捉到具有较长时间间隔的依赖关系,因此能够很好地应用于文本数据的处理。在使用大量的文本序列数据对LSTM模型训练后,就可以捕捉到文本间的依赖关系。训练好的模型就可以根据指定的文本生成后序的内容。

在将LSTM应用于语言模型时,需要首先把词依次输入到网络中,每输入一个词,LSTM将输出截止到目前为止下一个最可能的词。例如,当依次输入下面的词:

我想买一部手机

神经网络的输出将如图3所示,其中s和e是两个特殊的词,分别表示序列的开始与结束。

由于网络只能接收数字向量,无法直接接收语言文本,因此需要将词表达为向量的形式。为了将词向量化,需要执行下面的步骤:

(1)建立一个包含所有词的词典,每个词在词典中具有唯一的编号;

(2)使用N维的one-hot向量来表示词典中的每一个词,N为词典中包含的词的个数。设一个词在词典中的编号为i,v为表示该词的向量,则:

为了在语言模型中对下一个词出现的概率进行建模,可以采用Softmax层作为神经网络的输出层,Soft⁃max函数的定义为:

由于Softmax函数的输出向量保证各项取值为0~1之间的正数,同时各项之和为1,对于语言模型来说即可取概率最大的项作为待选取的词。

4 实验

实验时采用了Google开源深度学习框架Tensor⁃Flow 1.3构建了LSTM生成古诗词的网络,在NVIDIA 1080单GPU上完成训练。用于训练的古诗词为全唐诗,其中包含有4万多首诗词,训练时以每首诗为一个训练序列。在对这些古诗预处理时去除了一些文字少于10字或多于100字的异常诗目,图4给出了部分用于训练的诗目。

图4 部分训练文本

在创建网络模型时,采用了2层RNN堆叠结构,每个RNN单元的大小选择为128,设置网络的损失函数为Softmax交叉熵损失函数。在训练时使用了Adam优化方法,初始学习率为0.01,批次训练样本数设置为128,训练epoch数设置为100。

在完成网络的训练后,随即进行了生成测试,下面为部分生成结果。从结果可以看出生成的诗句基本上能够符合古诗词的格式与韵律规范,但是内容的可阅读性上还有待于提高。若采用更多的用训练样本和更多的迭代优化次数,生成的诗的质量将会得到很大的改进。

故人出关去,况是萧萧关。

相逢皋皋春,中山征马阑。

落日初飘香,深亭凌岚月。

望中逐月声,倏黄盈窗影。

新犬随风起,一璃迹阵悲。

浅昏罢庄哉,清插去园空。

双叶坐成鉴,王妓水正苑。

鸟声不成影,胙滩朱瓮声。

无斑红芜踏,那期日正闲。

吾燕登无士,无处得赵名。

5 结语

本文对循环神经网络中的长短时记忆网络LSTM进行了研究,基于Google的TensorFlow深度学习框架设计了生成古诗词的网络模型。使用全唐诗作为训练数据进行了模型的训练,训练后的模型能够很好地模拟出古诗词的风格。

猜你喜欢
向量神经网络古诗词
古诗词里的清明时节
踏青古诗词
基于递归模糊神经网络的风电平滑控制策略
向量的分解
我爱古诗词
聚焦“向量与三角”创新题
神经网络抑制无线通信干扰探究
基于神经网络的中小学生情感分析
基于Q-Learning算法和神经网络的飞艇控制
向量垂直在解析几何中的应用