版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于神经网络的吟诗作对技术研究与应用摘要自古以来,中华民族每年都有吟诗作对的传统习俗,是中国的传统文化。在吟诗作对时讲究平仄要协调,对仗要工整,朗诵起来要有很强的美感,被很多人所喜爱。如何在运用机器语言来实现这一特殊的语言形式受到了广泛的关注。因此本文便是自然语言处理方面的技术,在RNN的基础上进行“吟诗作对”的研究与应用,设计与实现了一个根据指定序列生成目标序列的模型。因此根据实际需求是一项序列的自动生成工作。通过给定的输入序列,生成输出序列。在这种情况下,有人提出了一种编码和解码的模型。编码就是将文字以根据实际情况用相等长度的向量表示,解码就是将编码的序列再进行转化。本文采用双向循环神经网络进行编码,采用循环神经网络进行解码,在进行词向量处理的时候也要将上下文的关系考虑进去,同时考虑上下联对应位置的字的相关性,因此在解码阶段采用了注意力机制来完成这一规则。同时为了防止神经网络出现过拟合的情况在实验过程中加入Dropout机制,提高生成模型的效果。最后通过用静态页面的方法,输入上联经过模型自动生成下联。本文经过RNN的模型在实际应用中得到了很好的效果,自动生成的下联可以与上联的格式相同、文字相对应。关键词:循环神经网络;对联生成;dropout;注意力机制
ThemethodandapplicationofrecitingpoemsandcomposingpairsbasedonNeuralNetworkabstractSinceancienttimes,theChinesenationhasthetraditionalcustomofrecitingpoemsandcomposingrighteveryyear,whichisthetraditionalcultureofChina.Whenrecitingpoems,weshouldpayattentiontothecoordinationofthelevelandthetone,thealignmentshouldbeneat,andtherecitationshouldhaveastrongaestheticfeeling,whichislovedbymanypeople.Howtousemachinelanguagetorealizethisspeciallanguageformhasbeenwidelyconcerned.Therefore,thispaperisthetechnologyofnaturallanguageprocessing.OnthebasisofRNN,theresearchandapplicationof"recitingpoemsandmakingpairs"iscarriedout,andamodelofgeneratingtargetsequencesaccordingtospecifiedsequencesisdesignedandimplemented.Therefore,accordingtotheactualneedsisasequenceofautomaticgenerationwork.Theoutputsequenceisgeneratedbythegiveninputsequence.Inthiscase,acodinganddecodingmodelisproposed.Encodingistorepresentthetextwithvectorsofequallengthaccordingtotheactualsituation.Decodingistotransformtheencodedsequenceagain.Inthispaper,two-wayrecurrentneuralnetworkisusedtocode,andrecurrentneuralnetworkisusedtodecode.Inthewordvectorprocessing,thecontextrelationshipshouldalsobetakenintoaccount,andthewordcorrelationofthecorrespondingpositionoftheupperandlowerlinksshouldbeconsidered.Therefore,attentionmechanismisusedtocompletethisruleinthedecodingstage.Atthesametime,inordertopreventtheneuralnetworkfromoverfitting,thedropoutmechanismisaddedintheexperimentalprocesstoimprovetheeffectofmodelgeneration.Finally,byusingthemethodofstaticpage,theinputuplinkisautomaticallygeneratedbythemodel.Inthispaper,theRNNmodelhasbeenappliedinpracticeandgoodresultshavebeenachieved.Theautomaticallygeneratedlowerlinkcanbeinthesameformatastheupperlinkandcorrespondtothetext.Keywords:cyclicneuralnetwork;coupletgeneration;dropout;attentionmechanism
目录第一章绪论 第一章绪论在当今世界正在迈入人工智能时代。在最开始的时候,由于智能问题的复杂性、计算机的硬件设施比较落后、数据的缺少等问题,导致了人工智能的发展缓慢。但是随着科技的发展以及大数据、神经网络的快速发展。人工智能在各个方面得到的应用有了很好的效果,并且部分已经融入到社会的生产生活当中,有的方面已经取得了惊人的成绩,甚至在某些领域有的完成了人们不能亲自做的事情。在大数据时代的来临,自然语言处理的应用到各个层面,而且它也正在尝试着学习人类的表达方式,同时也让人工智能领域的发展可以得到一个很大的提升。自然语言处理主要包括先认识语言然后再学习语言这两个部分。而在中国语言生成的最具有代表意义的就是诗歌和对联,并且是各位专业学者经常作为的研究对象。1.1选题背景、目的及意义在中国自古以来都有吟诗作对的传统文化习俗,特别是在每年的春节家家户户都会在家门口贴对联,在元宵节猜灯谜,吟诗作对一番。其中有严格的格式,要求上下联字数相等,对应位置词语关系紧密,同时在进行吟诗作对之时还需要讲究平仄协调,格式严谨,是中华民泽非常特色的艺术展现方法,很多人都喜欢。而且经过时间的熏陶,形成了比较成熟完整的体系,而且应用广泛,与人民的生活也有着十分紧密的联系,也作为社会形态的一份独特的存在。对联的最早开始于秦汉时期悬挂桃符的日常生活中,五代时又让在桃符上刻字,在后蜀的时候孟旭让辛寅逊在桃符板上写一些祝福的话语。在之后一段时间在明清时代得到了非常迅速的发展,到现在也已经有了一千多年的时间了。三千年前,中国早期时代的人们开始使用对偶句了。后来在商朝和周朝这两个方面用的对偶句和后来的诗词歌赋中所用的骈俪句,都为对联的产生做了一些铺垫。随着时间的推移,到后来的朝代经过人民智慧的结晶出现了越来越严密和精准的格式要求同时也保留着一些格律诗的一部分准则。因此在很久以前人们经常在娱乐之时常用来把吟诗作对当做是文人墨客会友的一种常见的娱乐项目,以文会友。而且对联从古至今都有很多的用处,从最早时候的悬挂桃符开始,来寻求平安等,后来人民就把对联的话写在了桃木板上,后来在五代朝代等以后,出现了一些对联,在每个时代来说都出现与之相对应的对联如下表1-1所示每个朝代所出现的对联形式。表1-1每个朝代出现的对联朝代对联后蜀新年纳余庆,嘉节号长春北宋千门万户曈曈日,总把新桃换旧符明朝风格多样,种类在上表中出现的对联都有其特殊的意义在后蜀代表着当时出现的一些事件,而在北宋年间的对联则是当时过年时候所出现过年的场景。在明朝的时候则不在用之前的桃木板子了,换成了红纸,也就出现了现在的对联。而在明朝的时候朱元璋微服出巡之时让每家每户门前都加上一副对联,来进行观赏取乐,这也就出现了过年贴对联的传统习俗。随着时间的推移,对联的形式和种类也多种多样,不论是在喜事还是在白事上都会出现,只不过在内容上差别很大。而且其中一种叫做楹联的不仅在国内广受关注,在国外也很受欢迎。为了让对联这种特殊的文学形式,在社会发展时代如此之快的形式之下,也需要让每一个人都能重视起来。尤其是当今大数据人工智能时代,必须通过现代的技术来实现我们传统文化的继承,在自然语言处理领域关于对联的生成问题对于我们炎黄子孙来说必须要弘扬祖国的传统文化,而且传统文化的继承问题也应该随着科技的进步而进步,让所有人都知道传统文化也可以在不同的领域的到应用与发展,因此在本文当中采用神经网络来对对联这一形式进行应用处理。因此让计算机在人们生活中越来越能理解人们的语言文化艺术方面得到更好应用,体现的越来越必要。而且对联这一特殊的文化形式如果让计算机能够识别,而且通过让对联的爱好者和初学者能够更加简单方便的学习其相关的知识的话,既方便了人们的学习相关的知识,同时也对中华民族的传统文化也让更多人学习。在本文就以对联为研究,通过计算机生成训练队模型来生成对联制作可视化界面进行运用。1.2国内外研究现状1.2.1基于词向量的生成方法把自然语言的问题转化为机器所能识别的问题,就需要将语言转化为2进制,让计算机能够认识这种语言。在这里,需要将字典里的每个汉字表示成一个向量。在自然语言处理中,最先出现的方式是one-hot方法,这种方法的向量维度是字典大小,每个字都有数据自己的向量,在它自己的向量里面只有一个数字为1,其余的数字全为0,这个1就是这个字在实际中设置的字典中的地方。举个例子,“祖”表示为[001000...],“国”表示为[000001...],这种方法表示的向量非常稀疏,如果采用稀疏方式记录会非常简洁,给每个字都有自己的编号。但在实际操作的时候,这样的表达形式会出现一些问题,主要有这两个问题:(1)如果在实验中所设计的字典很大的话,计算机的计算范围有限不能进行操作。(2)字与字之间的相似性关系不能表现出来,即有“词汇鸿沟”现象。为了克服上述缺点,于是另一种词向量的表示方式产生了,即Distributedepresentation。DistributedRepresentation的想法是在1986年Hinton在发表的论文中有了的[1]。相比于one-hot表示方式,Distributedrepresentation还能体现不同词之间的语义关联,因此在自然语言的处理上得到了广泛的应用。如果采用不同训练词向量的方法,那么所得到的结果也不同,当前来说人们常用的有word2vec和glove。1.2.2基于统计机器翻译的生成方法在自然语言生成中,诗歌和对联生成在微软研究院周明等人看成是统计机器翻译StatisticalMachineTranslation,SMT)问题[2][3]。这种方法吧诗歌和对联的翻译过程,根据前一句翻译后一句,根据给出的上联翻译下联。在用户输入上一句的时候,接着根据用户输入第一句,接着根据统计机器翻译的模型来生成第二句。实验部分,通过人工和自动两个方面对实验结果进行评估。在人为评估的话按照一定的方式方法进行评估,对于机器评估的话人们常用BLEU[4]来评估。因为机器进行解码的时候不仅只考虑当前的数据,而且还会与其有关的句子进行考虑,所以用这种方法在句子的意思方面会与比较好的结果,并且不依赖于人工设计评估函数,模型通过语料进行自动学习。但在实际的生活中,人们的目标往往只有开始的一句有关,并不会考虑其他的,生成的结果不能满足需求,也没有主题意思。除此之外,此系统对用户的输入也有严格的限制要求。1.2.3基于深度学习的生成方法随着深度学习技术的出现和发展,深度学习已经融入到很多方面,如语音识别、图像处理、机器翻译等等。同样在诗歌和对联的得到了很大的成功。后来人们根据现有的神经网络进行符合实际需求的改进来满足对联的自动生成问题。其中最多的是循环神经网络的生成方法RNN-basedPoemGenerator,RNNPG)[5]、基于神经机器翻译的生成方法[6](AttentionbasedNeuralMachineTranslationNetworkANMT)、基于规划的生成方法[7](PlanningbasedPoetryGeneration,PPG)、基于记忆网络的生成方法[8]等,这些方法对自然语言处理有很大的价值。1.2.3.1基于循环神经网络的生成方法在2014年Zhang等人提出的基于循环神经网络生成方法RNNPG,算是比较早的将机器学习的技术应用到古代诗歌的产生上去[9]。图1-1展示了RNNPG系统框图。RNNPG系统首先根据用户输入的关键词,得出第一句.RNNPG的大概生成过程是这样的当有人输入主要的词语来生成开头句,有一定的约束规范,其主要目的是确保格式是正确的,其余的则是根据已经生成的来生成后面的以此类推。RNNPG模型由三个核心部分组成:CSM、RCM和RGM。其中CSM是一个基于卷积神经网络(ConvolutionalNeuralNetworks,CNN)的模块,用于提出句子特征,并生成向量。RCM是一个基于循环神经网络(RecurrentNeuralNetwork,RNN)的模块,依照之前线索产生句子的语义向量。RGM也是神经网络的一部分,通过之前的信息和RCM的输出结果共同作用之下来产生下一个字。在实际的操作过程则需要进行加权处理来输出结果,重复生成完整的目标。图1-1RNNPG系统框图与传统方法不同,RNNPG是一种基于深度学习的方法,它可以从训练数据中学习文本特征的动态学习不需要人工提取特征、设计规则模板和评价函数,生成诗歌效果也比较高。RNNPG使诗歌的生成更加简单和灵活。RNNPG的不足在于只用重点的词语来生成的诗,主题的话只是与它相关,不受其他行的影响。在生成的过程中,主题容易漂移,诗的最终主题不明确与传统方法相比,RNNPG是一种基于深度学习的方法,它可以从训练数据中学习文本特征的动态学习不需要人工提取特征、设计规则模板和评价函数,也不需要生成诗歌这首歌唱得更好。RNNPG使诗歌的生成更加简单和灵活1.2.3.2基于规划的生成方法Wang等人[10]提出一种基于规划的诗歌生成器(PPG)。该工作同样采用基于注意力机制的编码-解码框架,方法创新地将写作时运用的提纲技巧引入到机器生成问题中,在模型生成时引入规划信息大大防止了主题漂移的问题。PPG方法由规划模型和生成模型组成。规划模型用于得到规划信息,过程为首先根据用户输入的文本信息获取多个关键词作为规划信息。生成模型用于生成诗歌,过程为将规划模型得到的规划信息融入到生成模型中,通过ANMT的生成方法来生成每一行诗句,直到整首诗生成完成。如图1-2所示为PPG方法生成的诗歌示例。与前面的方法相比,PPG的方法创新地将人类创作的提纲技巧引入到机器写作问题中,大大防止了主题漂移的问题,开启了基于主题的诗歌生成新篇章。尽管PPG方法取得了相当不错的结果,甚至可以与人类作诗相媲美,但是PPG方法也存在着可以改进的地方。PPG方法生成的诗歌受规划信息导向,规划信息的好坏很大程度上决定诗歌生成的好坏,规划信息由多个关键词来组成,每个关键词导向着每行诗句的生成,关键词的获取大大影响着最终诗歌生成的效果,所以改进可从规划信息的获取角度考虑。其次,PPG方法亦可以从模型训练语料方面进行改进,联合其他任务对语料进行扩充,引入其他外界信息,如此可以增强模型的泛化能力,提高表现结果。图1-2PPG方法生成的诗歌示例1.3本文工作1.3.1本文主要内容在本文当中主要是针对神经网络自动生成对联训练的模型进行设计和实现。按照模型生成的相关工作在本文中需要做了很多相关的工作,首先我们在进行模型建立之前,需要获得大量的数据,因此在本文中通过在对联和诗歌的相关网站下载足够的数量,如果只严格按照对联的进行下载的话数据量不能满足本文的需求,而且诗歌的格式与内容上有很多的相似之处,因此可以下载一些作为训练的数据。然后通过采用序列到序列的模型进行模型的构建,在编码阶段采用的双向循环神经网络,因为对联这种特殊的格式下联的生成结果不仅与上下文相关,而且与上联相应位置的字相对应。而在解码阶段根据对联的实际要求采用的单向循环神经网络。通过生成的模型在本文中用HTML设计前台的界面,然后用FLASk框架设计后台,编写接口进行模型效果的展示。经过设计与验证之后,通过生成的对联与上联进行比对按照对联平仄押韵的格式进行评测,本文中的模型效果十分好。1.3.1论文结构安排在本文内容的安排上,一共分为五章。第一章:绪论。首先介绍了对联从古至今对人们的重要意义以及现在人们关于自动生成对联的关注情况,然后介绍词向量的相关内容,然后根据当今神经网络的发展在对联生成的应用,最后介绍本文的论文组织结构。第二章:任务描述与数据预处理。本章主要介绍的是在实现模型的所需的工作包括数据的选择,神经网络如何选择,以及模型的搭建以及模型检验。还有数据的预处理过程。第三章:基于RNN吟诗作对的方法。本章介绍相关理论知识的详细介绍,以及模型实现的过程。第四章:基于吟诗作对方法的应用。本章主要介绍的是演示系统的设计和功能的介绍,还有演示系统的实现自己测试的结果。总结与展望:对实验中创建的模型进行概括,有一些不足的地方提出来,并且对今后的预想提出来。
第二章任务描述与数据预处理本章节主要是对本文在实验过程中所需要完成的任务的详细介绍和本文建立的模型进行数据预处理的过程。任务描述对联作为中华民族的文化瑰宝,在很多中国的传统礼仪上都是不可缺少的一部分,而且在近年来在自然语言处理领域受到人们的关注。本文基于RNN的吟诗作对研究与应用的基础上设计并实现了通过用户输入上联通过模型自动生成下联的任务,主要是以下几个方面。1)获取训练集的建立。本文所设计并实现的吟诗作对模型,根据上联生成与之对应的下联,那么首先的任务需要相应的数量的对联,来建立数据集。本文所需要的数据集来源于对联网站的数据,将这些数据下载下来保存到本地,然后其格是每一行代表着的是对联的上联或者是对联的下联。在下载的数据当中也有一些诗歌的一部分内容,诗歌的格式与对联的内容要求有很多的相似之处,这样的话可以获得大量的数据使得模型更加可靠。当数据集下载完成之后,我们根据实际的需求需要训练词向量,为了不使用分词的方法,直接进行词向量的训练,本文中将获取的9130个汉字每个字作为一行放入到文件里面。这样的话可以直接训练。2)吟诗作对模型的建立。本文是在RNN的基础上,因为对联这种特殊的格式要求因此在本文中采用的是双向循环神经网络,框架的选择当然是当前比较热门的框架编码-解码模型(Encode-Decode)来设计实现的。本文在编码-解码的模型上进行进一步的设计使得更加符合实际需求,具体的网络选择在实际的模型生成上根据实际的情况进行选择,依次在编码阶段采用双向循环神经网络来进行编码使得对联这样特殊形式的关联性得到很好地体现,在解码阶段则采用的是单向循环神经网络并且加入注意力机制来增强模型的实际效果。3)应用系统的实现。本文采用通过输入上联自动生成下联的模式,采用的python的Flask框架来进行设计,在前台用的Html的技术制作的静态页面让用户通过已有的上联进行输入处理,点击生成按钮将上联的数据上传到模型中去然后进行展示结果。数据预处理本论文的数据来源主要为各个对联网站、论坛的数据,对联的内容丰富,包括了各种风格,另外的是来源于古代的诗词歌赋,从诗词中截取格式内容与对联相符合的部分作为本文的数据来源,虽然古诗和对联的格式并非完全一致,但是作为本文的训练数据还是可以的,在本文中对联和诗词共计770491条数据。将收集到的对联数据分为训练集和测试集。本文收集得到的数据,在实际的收集过程中就进行了一下预处理,把收集过来的数据一行只有一句话,这一句话不是对联的上联,就是对联的下联,每个字之间也有一定的间隔,每个字就是一个独立的词,这样的话就不需要进行分词了。本文下载的数据按照每一行进行排版,虽然不需要进行分词的处理,但是计算机无法直接识别因此需要将数据转化为计算机可以识别的二进制序列,因此本文需要训练词向量,首先需要准备一个词典用来训练词向量。在本文中采用word2vec的方法进行训练词向量,当然在进行训练之前需要进项构建一个词典,本文在网上下载的9130个字就作为本文的词典。并且每一个字就作为一行因此无需进行分词处理,直接进行词向量的训练。关于word2vec词向量的原理是将每一次选一行进行扫描。将生成一个向量,其中每个字中只有一个值为1,其余的全为0.在之前的文章中提到过例子。而对于Word2vec模型其实就是简化的神经网络,区别就在于它的隐藏层没有激活函数,也就是常说的线性单元。输入层和输出层都是采用的Softmax回归函数。
第三章基于RNN的吟诗作对方法技术基础知识介绍本文属于自然语言处理的问题,采用的技术也是神经网络的内容。在20世纪末,随着神经网络的发展出现的循环神经网络,并且已经广泛的应用到文本分类、文本生成、智能语音识别、自动摘要等领域,并且都取得了很好的效果。特别是本文采用的序列到序列模型,本模型是在2014年谷歌公司提出来的,自从提出以来在机器翻译、文本生成等领域都取得了很大的进步。在今后的深度学习中包含了诸多及技术的都在有了很大的发展。本章主要是对研究的相关技术做介绍,依次介绍循环神经网络、Dropout、注意力机制、序列到序列模型。3.1.1标准循环神经网络标准循环神经网络(RNN)是SarathaSathasivam在半个世纪以前提出的霍普尔德网络[11]。但是在它刚刚出现的时候并没有得到很好的应用,但是在最近几年得到了广泛的应用,因为GPU的出现提高了学习效率和神经网络的不断发展取得了很大的进步。特别是RNN在处理序列得到了非常好的效果,使得它在自然语言领域取得了非常好的成果,在各个方面都得到了很好的应用。传统的神经网络模型中的三个层,在输入和隐藏之间是全连接的,同样在隐藏和输出之间也是这样的,在每一层的所有节点,他们之间没有连接,都是属于自己的独立个体。这是最简单的全连接神经网络,其特点是结构简单非常清晰,但是有很多问题不能够应用到。比如用这个网络进行预测一个词之后的下一个词,显然这种不能够满足需求,而对于这种关系可以采用RNN来解决这个问题。实际上,由于RNN的结构特点就是来处理序列数据的。图2-1传统神经网络图2-2循环神经网络RNN之说以说是循环的,是因为序列的当前的输出结果与之前的输出结果有关,在网络结构中最明显的特征就是隐藏层节点之间的连接,隐藏层的输入由输入层和上一时刻隐藏层的输出组成,简单来说就是保留一部分前面的信息,并把这些信息用于当前的计算中去。虽说,RNN能够处理不同长度的序列,但是如果序列太长的话,而且没有选择保留的话会让模型非常的不好,而且效果也不好,所以一般只假设当前状态只与它之前若干个状态相关。图2-3RNN折叠结构图图2-4RNN展开结构图从图2-4RNN展开结构图可以看出,当前的输入来源由2个部分组成,一部分上一时刻的隐藏层的输出,另外的就是正在输入的xt,也就是说隐藏层的节点与多种连接方式可以进行,这个的输出结果也是一会将要进行的隐藏单元的输出。在某一时刻输出的结果会反过来到隐藏单元,这就是所谓的反向传播。如果将RNN展开成一个全连接的神经网络,句子的长度就是展开的网络的层数,每一层就代表着一个字。RNN网络的计算过程如下:1)xt2)st为隐藏层的当前时刻的状态,St=f(Uxt这里f是非线性的激活函数,一般是ReLU[12]或tanh,在计算s0的时候,由于它没有上一步的隐藏层状态,一般取0向量。3)OtOt=softmax(VS3.1.2长短时记忆网络长短时记忆网络(LongShortTermMemory,LSTM)的设计专门用于解决RNN的长期依赖问题,而RNN能被成功应用的关键就是LSTM[13]。LSTM是由Hochreiter和Schmidhuber于1997年提出的,它是一种特别的循环体结构[14]。LSTM和RNN主要区别在于隐藏层,LSTM的隐藏层比RNN更为复杂,用来解决长期依赖问题。LSTM的隐藏层与普通的网络有一点不同,就是遗忘门的应用。LSTM的门结构让细胞单元有选择的记忆之前的信息,从而来改变当前的输出状态。该网络的门用的方法是sigmoid和按位相乘的过程,这样做的目的主要是选择,简单来说就是选择多少信息的问题。而对于sigmoid它只有0和1,前者是拒绝通过,后者是可以通过。图2-5LSTM模型结构示意图LSTM通过门结构解决RNN梯度消失和梯度爆炸问题,让每个细胞单元保存有用的历史信息,解决了长期依赖的问题。如图2-5LSTM模型结构示意图,其工作原理:1)决定从细胞状态中丢弃什么信息。这个决定通过一个称为忘记门的层完成。该门会读取h_(t-1)和xt,结果会在0到1之间,给每个在细胞状态C_(t-1)中的数字。1表示留下来,0表示ft=(Wf*h(t-1),x2)决定让多少信息加入到cell状态中来,其中分为两步:一是sigmoid层决定哪些信息需要更新;一个tanh层生成一个新的结果,这个结果作为候选作为可能更新的那一部分,然后将这两个部分整合到一起,产生一个新的细胞状态。it=(Wi*[h(t-1),xtC't上面两个门,“遗忘门”和“输入门”已经选择好了留下来的东西,神魔东西要放弃,这时就要在cellstate上进行操作了:Ct3)根据sigmoid层所给出的信息得到结果,将结果通过tanh操作过之后并和sigmod门的结果相乘,得到目标:ot=(Wo*[h(t-1),xtht3.1.3双向循环神经网络在一个方向的循环神经网络,一般来讲隐藏层的状态都是从前向后的,通过之前得结果来影响之后的结果。但是,在有些时候并不能满足一些输出的信息不仅仅要与历史信息相关还要与未来的信息相关,此时的单向循环神经网络已经不能够满足目标需求,因此在本文就要采取双向循环神经网络。双向神经网络是由两个单向的循环神经网络叠加而成的神经网络,一个从前面到后面进行传递一个从后面向前面进行传递,两个相反方向的传递将之前的信息和后来的信息集中到当前的输出来。如图2-6所示的双向循环神经网络结构图。图2-6双向循环神经网络结构图双向循环神经网络在每时每刻都是由两个相反方向的单向循环神经网络进行传入,每一个的单向循环神经网络都会有一个结果,一个从前向后传递的信息代表着历史的信息,从后向前传代表着未来的信息,将两个信息进行合并作为双向循环神经网络最后的输出。双向循环神经网络可以由标准的循环网络,也可以是长短时记忆网络。双向标准循环神经网络的隐藏输出htht前=RNN(hht后=RNN(hht=[h双向长短时记忆循环神经网络的隐藏层htht前=LSTM(hht后=LSTM(hht=[h3.2Dropout机制Dropout在神经网络中广泛的应用,它是由Hinton等人提出来的[15]。这个机制提出来的目的主要是在机器学习的时候有时候设置的参数太多了,而且实验中没有那么多的数据可以用来训练,这样的出来的结果有很大的可能会出现过拟合的现象。尔而过拟合讲的就是模型的损失函数非常的小,而且准确率也是非常的高,但是当用测试集去测试时,这时候损失函数变得非常的大,这样生成的模型是无法使用的。而且过拟合对于机器学习来说,这是非常常见的一种毛病。在这个时候就需要阻止这种情况的发生。这就是Dropout发挥作用的时候了,它主要是不让特征检测器一起发挥作用的,以此来提高网络的效果。在实际的应用中,通过减少一半的特征检测器,来减少可能出现的过拟合。加入Dropout这种机制减少网络中隐藏层节点的相互作用,达到很好的效果。Dropout用简单的话说就是,在神经网络中正向进行的时候,当某一个神经元达到一定的值就停下来,不在继续。这样的话让生成的模型能满足绝大多数的要求,不会过分依赖部分的内容如图2-7所示。(a)原始神经网络(b)Dropout后神经网络图2-7Dropout机制示意图Dropout在实际中的工作,如果要用到这样一个神经网络,如图2-8所示.图2-8标准的神经网络输入一个x得到的结果是y,一般来说过程是这样的:把x在网络中正向传出去,然后把得到的误差结果反向传到网络中进行学习,让后让网络进行学习使用Dropout之后,过程变成如下:首先选择网络中一般的隐藏神经单元让这些单元不工作,当然输入和输出是不用改变的(图2-9中那些虚线部分是不让工作的神经元)图2-9部分临时删除的神经元2)经过x训练过之后调整过之后的网络继续向前进行,把得到的损失结果在修改后的网络反过来传。当一定数据训练完毕之后,在剩余的神经元上按照随机下降进行更新参数(w,b)。3)接下来就是重复以下过程:将不工作的神经元进行恢复,这时候工作的神经元已经有了新的状态。然后继续从隐藏层选择一般进行不工作,选择完毕之后同样选一批数据进行训练,训练之后更新。3.3注意力机制 注意力机制一开始来说来源于人们的视觉。简单说,当人看东西的时候不会全部都看,会选择自己好奇或者感兴趣的那一部分,如果这个东西是移动着的时候,人们对目光也会随着这个东西进行转移,这也就是说不同的人即使是在同一个地方,他们所关注的内容也是不同的。举一个简单的例子来说,当人们在说一件事情的时候,通常或说道一些东西或者人物,这时相关性会不断的改变,同时话题也会有所改变。正如上边说的这种情形,注意力机制有两种方向,一个是空间注意力,一个是时间注意力。加入注意力机制的动机有以下两个方面:序列输入时,如果序列在不断的增加,这时候不仅计算机无法承受其过长的序列,而且模型的表现效果也会越来越差,这就是模型设计时存在的缺陷,而且不会会根据实际的情况进行改变,整个模型的效果也会下降。2)编解码器的结构没有办法进行合理的工作,后续的工作无法进行。Attention机制首先会让编码器的结果进行有规则的展示出来,如果用集合c={c1,c2…cm}表示,如果在集合当中的每个元素都代表着某个时刻的输入信息的话,输出结果就是当前的时刻,某个上下文分别表示对应的注意力,在经过softmax得到最后的得分。Attention机制的另外一种模型Softattention机制的作用主要是给上下文的信息进行评分,它的作用就像是在解码前的预处理作用就是告诉编码器那些内容比较重要,这也就是注意力机制的具体含义。这个就能很好的体现注意机制的内容了。Attention的出现就是为了两个目的:1.对计算机而言,能够减少数据的计算负担,把数据的维度降下去。2.更有效的保留最有效的数据提高结果的质量。而对于注意力机制的应用而言,他主要用于解码器的类型,学习到一些关联度比较强的数据,从而更好的掌握这种关系,让实验中的模型更加符合实际的需求,同时也能将一些注意不到的,关联性比较强的隐藏关系找到,这样的效果会更好。正是由于注意力机制的优势让很多问题的解决显得非常高效。3.4序列到序列模型3.4.1经典的序列到序列模型序列到序列模型(seq2seq)也就是人们说的编码-解码模型,这个模型的提出是谷歌公司在《Sequencetosequencelearningwithneuralnetworks》中提出[16]。序列到序列模型提出以来在深度学习领域获得了很大的影响。该模型被广泛的应用到机器翻译、文本生成、语音识别、图像识别等领域都是采用的序列到序列模型。序列到序列面模型有两个部分,一个是解码器,另一个是编码器,编码器的作用是获取输入序列的特征,然后将句子编码成能够映射出句子导致内容的固定长度的向量。解码器的话就是把之前得到的结果处理还原把还原后的结果进行给出。图2-9为序列到序列模型结构示意图。图2-10序列到序列模型结构示意图假设序列到序列模型的输入序列为S=(x1,x2…xn),输出的目标序列为T=(y1,C=f(x1,x2yi=q(C,y1,y其中f代表编码器,q代表解码器,从公式中可以看出解码器的输出与之前的输出有关,在解码是很多人都用双向RNN、双向LSTM来获取文本的信息,而在解码阶段则用单向的循环神经网络,因为解码阶段无法获得之后的信息,所以本文中要采用单向模型。3.4.2基于注意力机制的序列到序列模型经典的序列到序列模型的应用十分广泛,但是也存在着些问题。最大的缺点在于编码器和解码器之间只有一个固定的语义向量C进行联系,每时每刻的语义向量的值都是固定的,并且这个语义向量无法将整个序列的信息表示,这样的解码器在历史的信息和固定的语义向量C进行输出,这样的导致一些强相关的输入信息不能够很好的表现出来,使得结果不能满足需求。在这种情况下,一种基于注意力机制的序列到序列模型提出来了,Bahdanau等人将注意力机制应用于序列到序列模型中[17],来克服之前提到的不足。如下图所示的添加注意力机制的模型。在图中可以看出Encode和Decoder之间不是固定的语义向量,不同的语义向量表示了每个时刻相关度最高的输入信息。如图2-11所示。图2-11添加注意力机制模型示意图假设基于注意力机制的序列到序列模型输入的源序列为S=(x1,x2…xn),输出的目标序列为T=(y_1,y_2…y_n),此时模型的计算过程可以表示为yi=q(Ci其中CiCi=j=1n其中αijαij=exp(e其中,eij=F(Si 其中,Si-1表示解码器第i-1时刻的隐藏层状态,函数F(a,b)表示(a,b)的相似度。注意力权值的计算的过程在图2-11图2-10注意力权值计算过程3.5基于序列到序列的对联自动生成实现本文将对联生成模型的具体操作,其中包含对联生成模型的构建过程,还有模型的实现。模型的实现采用的经典的序列到序列的生成方法。由于生成的句子主要由前面已经存在的词来预测下一个词,前后词之间有一定的相关性,循环神经网络的同层节点相互关联能够将这种之前的联系体现出来,而且同层节点共享权值,因此本文在实验过程中选用的是RNNEncoder-Decoder。常用的RNN结构需要将输入压缩成一个固定长度的向量,但是在实际中很难处理一些较长的句子,特别是在训练过程中遇到的,这个问题在Cho等人在2014年的论文[18]已经提出来了。根据实际情况本文编码阶段采用的是双向RNN结构,在解码阶段本文采用GRU结构,目的是为了让每次输出语句充分利用输入的信息产生对输出序列的影响,本文在解码阶段采用了注意力机制。3.5.1输入处理本文的主要任务的基本模式就是,用户输入上联输出对应的下联,这里的输入上联是汉字组成的序列。首先必须让计算机能够识别的文字,把文字转化为一个向量就是所谓的词向量,在之前的章节已经讲到了,但是对于对联这种特别的形式,普通的有一些不同,一般的来说只需要考虑词语之间与训练序列中的前后关系。而对于对联不仅需要考虑词语之间的关系,还需要考虑上下联中对应的位置词语之间的关系。因此在训练词向量的时候将上下联对应位置考虑在内,也就是加入到上下文中,这样的词向量称为对联字向量。举一个简单的例子,有对联“一粒米中藏世界,半边锅内煮乾坤”,比如本文预测下联的第三个字“锅”。按照常用的方法通常会用到上下文中前n个词语,如果取n=2,那么就要取“半”、“边”、“内”、“煮”,也就“锅”字前两个字和后两个字。假设s(i)为待预测的字所在的位置,p(i)为对应上联或者下联中相应位置的字的话,那么在预测“锅”的时候输入的上下文应该分别为p(i-1)、p(i)、s(i+1)、和p(i+1),即“粒”、“米”、“内”、“中”,上下文中不仅要有本联中的与待测字相邻的字也要有上联中对应的字,如下图3-1所示的预测词语过程。图3-1预测词语过程3.5.2编码阶段根据对联这种特殊的形式,本文在编码阶段使用的是双向循环神经网络的改进网络,也就是本文之前提到的长短时循环记忆网络。在之前的章节中已经做该网络与了详细的叙述,该网络与RNN没有本质上的区别,差异主要是在隐藏层状态的函数。在本次使用的网络中有两点的改进:(1)位置不同的词影响力的不同,距离越远的影响力也就越小,可以通过加权来体现,距离越近的权值也就越大,影响力也就越大。(2)在出现误差的时候,由于误差可能是由于一个词导致的,也可能是多个,因此在本文中只对当前的权值进行更新。该网络在序列数据上得到了广泛的应用,在自然语言处理,机器翻译等都取得了很好的成绩。在LSTM中首先就是要确定那些信息要抛弃,这个决定通过一个称为忘记门层完成。该门会读取ht-1和xt,会出来一个在0和1之间的值给每个细胞Ct-1一个值,1是留下来,0是不要。图3-2决定丢弃信息接下来确定新的信息存放在细胞中,在这个过程中包括2个部分:第一,sigmoid层称“输入门层”决定什么值将要更新。接着用tanh层生成新的候选值,同时也要加上Ct,最后结合起来更新一下就行了。第二,将两个信息来产生的更新。如图3-3图3-3确定更新的信息当所有的工作完成之后需要更新细胞的状态,Ct-1更新为C图3-4更新细胞的状态再更新细胞的状态之后,需要进行一个过滤过程。当然,需用用sigmoid确定输出的结果,然后用tanh处理得到一个值,将这个值与sigmoid门做乘法,确定输出的结果。在语言模型中,当遇到一个主语时,可能就需要一个形容词相关的信息。如图3-5所示输出信息。图3-5输入信息对于本文来说,采用的是双向的LSTM,一个从前向后一个则是相反。正向和反向的实际上没有很大的差距,只是输入序列的有所不同,正向得到的隐藏向量序列记做(h1,…ht,)方向向右,反向得到的隐藏序列记为(h1,3.5.3解码阶段解码阶段的任务主要是根据输入的信息的中间语义以及前面生成的历史信息来生成此时需要输出的词语,在解码阶段依然是LSTM网络,与基础的Decoder不同的是,基础的每一个中间语义都是固定不变的,对字与字之间的关联性影响非常小,但是如果在上联中只有对应的字有作用,上联中其它位置的字影响较小,此时在采用这种方法显然不能满足要求。为了更好地体现上联每个字对下联每个字的影响程度的不同,在实验设计是的解码阶段加入了attention机制。AM模型可以说是在NLP领域中的很大的突破,并且在很多场景得到证实。在解码阶段加入attention,在生成每一个中间语义向量都是不相同的,根据当前生成字的变化而变化的。在加入AM模型中的Encoder-Decoder框架,本文采用了一种模型配置,Encoder和Decoder均采用了RNN结构,图3-6为基于RNN-RNN结构的编码解码框架。绝大多数的AM模型都是采取RNN-RNN的框架。对于RNN的解码器来说假如要生成Yi,在时刻i要知道隐藏层输出值Hi,这时可以用i时刻隐藏层的状态节点Hi依次和输入句子中对应的RNN隐藏层节点状态的hi进行对比,然后将通过函数F(hi,Hi)来得到图3-6基于RNN-RNN结构的编码解码框架上是AM的基本思想,在不同的领域会有不同的用法。在生成目标单词语的时候,AM模型决定生成这个词语的时候收到的输入词语的影响程度不同,所以AM模型也可以称之为影响力模型,对于本文的对联生成而言相对应位置上的字更加紧密的联系,所以AM模型显得非常符合本文的需求。3.6模型训练与结果分析3.6.1模型训练在模型训练过程中使用的是经过处理之后的数据,在本文中选取的训练集的数据为70多万条数据用来进行训练模型,用4000条数据作为测试集进行测试,并且在本文当中所需要的字典来源于词典中9130个字作为词向量的训练,根据对联当中每个字之间存的关联性在训练中进行选择。在训练的参数设计阶段,本文中采用1024个隐藏单元,层数为4层,Dropout参数设置经过多次修改后设置为0.2,批训练大小根据电脑硬件的条件进行设置,本文中的批训练大小为64,在实验过程中设置的学习效率为通常人们设计的0.001。而对于对联这种特殊的形式以及本文训练集数量的庞大,因此在训练次数设计上尽可能的大,这样的话损失率才有可能到达实验的期望值,在训练模型时每100次保存一次。因此在本次的实验中我们在实际的操作中训练模型需要用到的系统环境以及训练的参数的设置,根据实际情况如下表3-1所示.表3-1系统环境与训练参数系统环境环境参数电脑系统Win1064位编写语言Python编写软件Pycharm电脑CPUI5每批次对联数量64Python环境3.65TensorFlow版本1.123.6.2结果分析对联有一定的特殊格式要求,其中最为关键的一点就是对仗工整。其中有6要素和6禁忌。其中的6要素有:字数相等、内容相当,词性相当,结构相称,节奏相应,平仄相谐。其中对联字数是必须要相同的,如果字数不相同的话那就不是对联,而且对联的内容要相关,相关不仅仅只有正相关还有反相关,所谓的正相关从相同的角度进行相互的补充,而反相关则是从相反的角度进行相互反衬、对照。如果上下联之间的关系没有任何的关联可言的话,会让人感觉到特别的别扭与生硬,丝毫没有对联的文学效果更别说这是对联了。而且还有一点是对联的词性相当、结构相称,其主要是上下联对应位置的词语性质应该相同或者相似,就比如来说名词对应的应该是名词,动词对应的应该是动词。还有一点是平仄相谐,其实就是平仄相对和平仄交替,也就是说汉字的拼音一声调与汉字的二声调为平调,汉字是三声调与汉字的四声调为仄调。就本实验来说输入上联生成的下联的结果如表3-2所示。表3-2对联模型测试表上联下联天街小雨润如酥地面春风暖似冰悠悠乾坤共老浩浩日月同辉民安国泰逢盛世人寿年丰庆新春万马争飞跃千帆竞发扬在这里以最后一个进行分析,首先字数方面,上联是五个字,下联也是五个字,字数相同,逐字分析,第一个字“万”字,与下联的“千”字都为数量词性相对,上联第二个字“马”字与下联的第二个字“帆”字都为名词,上联第三个字“争”字与下联的第三个字“竞”字都为动词,上联第四个词“飞跃”与下联的第四个词“发扬”都为动词。因此在结构上相对应,内容上相关联。而对于平仄押韵来说,上联的平仄规律为:仄平平平仄;下联的平仄规律为:平仄仄仄平。此时符合对联的格式如下表3-3所示:表3-3结果分析上联下联上联平仄情况下联平仄情况万千仄平马帆平仄争竞平仄飞发平仄跃扬仄平从表中我们可以看出,模型生成的对联结果在内容和格式上是十分不错的,满足对联的格式要求,同时在含义上也是十分满足对联的格式要求,平仄也相对称。因此本模型的测试结果非常棒。第四章基于吟诗作对方法的应用4.1系统设计本章节基于上文实现并经过测试的吟诗作对的可视化界面的设计,采用python的Flask框架,Flask框架是一个轻量级的web框架,其特点是灵活性高开发成本低,比较符合本文的要求。对于前台的设计本文只有一个输入框和一个按钮,下面是一个框将完整的对联进行展示,方便人们更加直观的体会到模型生成的效果,然后写出前后台交互的接口,通过接口让前后台的数据进行交互,通过用户的输入点击生成在下方生成对联的下联,吟诗作对系统的流程图,如图4-1所示。图4-1吟诗作对系统流程图从流程图中可以看出,吟诗作对系统的设计流程比较简单,用户通过自己想生成的对联,在本文给出的前端页面进行手动输入,点击生成按钮,系统将会把输入框内的汉字传递给已经训练好的模型进行处理,生成相应的词向量,然后根据词向量之间的相关性进行生成下联,然后将用户输入的上联与模型自动生成的下联在系统中显示出来。4.2系统实现系统的实现部分主要有两个内容:一个是将实验生成的模型进行应用,,另一个则是让用户能够操作并且能够看见的页面,正如前面提到的,在本文中采用的python的Flask框架进行设计,根据实际需求进行前端页面的设计,其可视化的界面如图4-2所示。图4-2前端页面展示图在系统的设计中调用实验中的模型代码,如图4-3所示,系统的让用户操作的代码如图4-4所示。在实现可视化的界面以整个界面作为展示,在以后可以适当的调整其大小插入到需要的网页上,作为网站内容的一部分。图4-3模型调用代码展示图4-4前台设计部分代码展示总结与展望在本文中首先对已经存在对联的研究工作的部分进行介绍,包括一些国外类似的例子,以及本次实验的目的。介绍了数据预处理阶段词向量的相关内容。介绍了序列生成任务常用的网络结构。本文在第二章中介绍了在完成本文中的额任务叙述以及数据预处理的过程。本文在第三章对联生成任务所使用的网络结构,包括编码阶段选用的相关神经网络的相关知识介绍以及解码阶段的AM机制的运用。在本文的最后部分运用前台与后台的技术通过编写接口的方式让数据进行传输,检验模型的效果,并且根据对联的格式要求进行评判模型的好坏。但是在本文的数据来源上我们选用了部分的诗歌作为我们的训练集,虽然在格式和内容上有很多的相似之处但是也存在这部分差异可能会导生成的对联在分析的时候降低模型的效果。因此在今后的实验中数据集如果全部严格采用对联。得出来的结果会更加的精准效果也会更好。参考文献[1]HintonGE.Learningdistributedrepresentationsofconcepts.[C]//EighthConferenceoftheCognitiveScienceSociety,1986.[2]LongJiangandMingZhou.Generatingchinesecoupletsusingastatisticalmtapproach[C].InProceedingsofthe22ndInternationalConferenceonComputationalLinguistics-Volume1,pages377–384.AssociationforComputationalLinguistics.2008.[3]ZhouM,JiangL,HeJ.GeneratingChinesecoupletsandquatrainusingastatisticalapproach[C]//Proceedingsofthe23rdPacificAsiaConferenceonLanguage,InformationandComputation,Volume1.2009,1.[4]KishorePapineni,SalimRoukos,ToddWard,andWei-JingZhu.2002.Bleu:amethodforautomaticevaluationofmachinetranslation.InProceedingsofthe40thannualmeetingonassociationforcomputationallinguistics,pages311–318.AssociationforComputationalLi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 春季常见传染病预防知识
- 2026年内存计算技术平台项目营销方案
- 2026年智能紧急按钮项目营销方案
- 2026年宠物主题民宿酒店项目营销方案
- 湘教版2026年初中化学元素周期律测验试卷及答案
- 2025年河北机关事业单位工人技能等级考试(农艺工-初级)历年参考题库及答案
- 2025年云计算运维工程师多云混合云管理考核试卷及答案
- 2025年人力资源管理师(初级)考试真题模拟卷及答案解析
- 燃气泄漏、火灾爆炸事故现场处置方案和脚本
- 雨季三防培训课件教学
- 中国诗词大赛笔试题库附答案
- 电厂安全培训课件
- 2026北京朝阳初二上学期期末数学试卷和答案
- 语文中考干货 11 非连续性文本阅读
- 二次配安全培训课件
- 【生 物】八年级上册生物期末复习 课件 -2025-2026学年人教版生物八年级上册
- 阿仑膦酸钠片课件
- 省考临夏州面试题目及答案
- (新版)钻井液工(高级)职业技能考试题库(附答案)
- 2024年安徽省考公务员财会专业考试真题
- 2025年护士心电图大赛题库及答案
评论
0/150
提交评论