导读:本文将介绍清华大学THUNLP实验自研的拥有文学表现力的中文古典诗歌自动生成系统“九歌”的算法,重点包含以下几方面内容: 自动作诗缘起九歌的模型算法九歌系统介绍自动作诗与知识图谱
--
01
自动作诗缘起
1. 诗歌自动写作
① 何为诗歌自动写作
诗歌自动写作,是用户给定某种形式的输入,例如关键词、语句段落、照片等,由生成模型依据输入生成一首完整的诗歌,所生成的诗歌,既要满足必定的形式需求,例如长度、平仄,又要满足必定的语义需求,例如语句通顺,连贯一致等。
② 诗歌自动写作的科研价值 初心:探索设备智能
这个问题拥有非常丰富的科研价值,而咱们做它的初心是探索设备智能。人工智能之父Alan Turing就曾对人工智能写诗有过描述和设想。在史叫作图灵-杰斐逊辩论的讨论和1950年其关于图灵测试的论文中都有所表现。图灵认为人工智能是有可能写出有韵律的诗歌并且能对诗中的格律意象有必定的理解。
人工智能的经典任务是围棋,它考验的是规律推理能力,而诗歌自动创作考验的是创造能力。假设全部汉字集中有约一万个字,那样所有可能的七律的数量,远大于围棋棋盘可能的盘面数和宇宙中所有的原子数。我国著名的科幻小说家刘慈欣在短篇小说《诗云》一书中构想了一个高级智能文明,能够把所有诗歌的可能状况所有生成并保留下来,但无办法去找出其中真正有价值的好诗歌。怎样从海量可能性中的把前人无创作过的、拥有文学价值的诗歌给寻找或生成出来,就很拥有挑战性。 科研方面
这个任务亦利于咱们去科研人类的智能。按照多元智能理论,语言智能是人类智能的重要构成部分,而诗歌,尤其是中文古典诗歌,是一种非常特殊的语言形式,拥有多种优点,是科研可计算性创造力的非常好的切入点。把这两者结合在一块,利于咱们将来构建真正的类人AI。 应用方面
除了科研价值之外,这个研究方向亦在许多行业有着丰富的应用场景和商场价值,因此在研发九歌系统之前市面亦有非常多的写诗软件。而社会各界人士,包含国内外的有些作家、诗人、大学教授,亦对设备写诗有了越来越正面的评估。
--
02
九歌的模型算法
接下来介绍全部系统里面到底用了什么样的算法,做了什么样的模型。
1. 任务描述与科研框架
诗歌生成,咱们能够广义地将其定义成篇章级文学性文本的要求生成任务。
为了更好的加强生成诗歌的质量,咱们去关注中文古典诗歌的文学表现力,由于诗歌是个文学体裁,可能区别于评论和商品描述,必须更加多地重视可读性和文学性。因此咱们拆解了文学表现力的两个层面,一是文本质量,这是表现力的基本。二是审美特征,这是诗歌做为文学体裁区别于其他文本的最大特殊。
文学质量方面,咱们关注连贯性、扣题性。审美特征方面,咱们关注新颖性、风格化、情感化。针对所有的方面,咱们都做了逐一的系统化科研,亦都发了区别的paper,并对这些技术做了工程化的实现,最后集成为了咱们的九歌系统。能够看到这几个点和诗歌的广义描述是一一对应的,连贯性对应篇章性,扣题性对应要求生成,审美特征对应文学性。
2. 针对提高文学表现力的五个层面的算法科研
① 连贯性
因为人类创作的写诗的句子之间都是有紧密衔接和自然过渡的,况且这些句子做为整体,其主题意境有较好的一致性。而设备生成的诗作,可能会存在前后主题不一致,例如这首春风,前两句写了一个非常和煦的初春晚冬景色,后两句变为描写边塞的怀古的非常消极的感慨,中间不存在任何过渡,连贯性并欠好。 问题原由探究
之因此显现这个问题,重点是之前诗歌生成的办法针对上文的利用方式不恰当而导致的。之前运用了单一历史(上文)向量办法,它存在三种问题如图所示。另一一种被运用的办法是拼接完整上文语句,但咱们发掘倘若模型的容纳能力(capacity)不足,针对长的输入序列会显现显著的性能下降。 处理思路之明显性线索模型
为认识决这个问题,咱们首要提出了一个明显性线索模型(Salient Clue Model),这个模型的灵感源自于《文心雕龙·章句》的“意脉”一词。
为了实现这一点,咱们提出明显性线索模型,设计思路是在一首诗的生成过程中,对每一诗句丢弃其中无实质语义的部分,例如虚词,并运用上文中拥有明显语义的局部内容来代替完整上文,形成明显性线索以引导下文生成。
由于咱们运用局部上文来替代完整上文,因此能够避免太多的约束。同期应用明显上文帮忙咱们减少干扰,加强相关。而运用动态构建全部线索骨架而非预先指定线索的方式,能够增多创造性和灵活性。
这一模型的核心在于怎样计算每一个字的明显性,咱们应用了两部分信息。一部分是基于全部语料库静态计算出来的TF-IDF值,做为全局明显性。另一在生成过程中,两个句子之间的attention矩阵,做为动态局部明显性。例如咱们能够把这个attention矩阵按列加和,就能够得到输入端每一个字的局部明显性,之后咱们提出了明显性选取算法,进一步过滤掉里面不是那样明显的词,再整合到全局明显性中做加权,最后就能够把鸿雁这个关键意象挑选出来。
咱们采用自动评测和人工评测相结合的方式进行诗歌评测,自动评测采用BLEU,人工评测会找有些专家依据区别的指标按一到五分打分,经过对绝句的实验能够显示诗歌的连贯性和整体质量提升最为显著,如图所示。
在实例中能够看出,模型能对关键意象进行选取,来引导诗歌最后一句生成高度关联的落叶这一意象。 进一步优化之工作记忆模型
这个做法存在的问题是,在每一个句子中挑选多少个明显的字,这是一个人为指定的超参数。倘若挑多了会导致冗余,少了又会漏掉有些关键信息。咱们其实更倾向于要一种更加灵活动态的办法去自动决定每句中有多少个关键的明显的内容必须保存,而不必须人工指定。针对这一点,咱们参考了心理语言学中关于上下文连贯性的描述,它认为只要咱们能够把内容和存在于working memory中的语义连在一块,就能够实现连贯性。working memory是人类大脑中存在的一个拥有有限容纳能力的结构,用来存储临时的信息,能够用来处理后面的决策等。咱们模拟这个working memory,提出了工作记忆模型。
这个模型有区别的记忆模块,首要有一个历史记忆模块(History Memory M1),类似于前面讲的明显性线索模型,亦是从每一个生成的句子中挑哪些最明显的token写进去。但区别在于,这些模块是动态更新擦除的,在生成过程中倘若填满了,会自动选取比较老的,比较不关联的给覆盖掉,以此咱们能守护相互独立、有限、多个记忆槽,既能供给足够的容纳能力去守护部分远距离信息,又不会无限的膨胀。
还有一个局部记忆模块(Local Memory M2),用来存储上一句生成的诗句,充当一种完整近距离上文信息,以此来促进对仗句等强语义相关内容的生成。
在做记忆模块读取的时候,所有区别模块会统一读取,模型就能够自动决定要关注近距离的还是远距离的区别的信息,从而守护了整首诗留意境上的相关性。
② 扣题性
另一一个文本质量的层面是扣题性,由于诗歌生成是一种要求生成任务,咱们期盼输入的内容都能够在生成的诗歌中得到完整的体现来提高用户体验。传统诗歌生成会存在遗漏部分输入信息的现象,这重点是因为针对关键词的应用方式不恰当而导致的。
传统有两种办法来应用关键词,一种是多个关键词压缩入单一主题向量,用以引导生成,(向量中)关键词混杂会引起关键词包括率下降。另一种是关键词逐句插进,这种方式的坏处端在于当输入关键词数少于句子数时,必须应用关键词扩展机制,况且生成的诗歌过分依赖于用户输入的关键词词序引起了诗歌生成不足灵活。 处理思路之主题记忆模块与主题跟踪机制
咱们做的工作,是在工作记忆模型中加入了一个新的模块,主题记忆模块(Topic Memory M3),它会显式且独立地存储每一个主题词。由于这些关键词是显式存储读取的,关键词不会混杂,关键词的包括率就会提升。同期独立存储读取,寓意不存在相互之间词序上的依赖,这让生成诗歌的主题表达的形式和次序都更加灵活。
同期咱们还设计了一个主题跟踪机制(Topic Trace),在生成过程中用更加显式的方式来记录每一个主题表达与否,以此来加强其覆盖率。
经过针对绝句的测试,平均来讲咱们能做到输入关键词83%都能在诗歌中生成出来,远超之前的几个baseline model。 用户输入为语句/段落时显现的新问题
除了关键词之外,用户还倾向于输入一个完整的语句或段落来暗示主题。怎样去处理呢?在工程化上的pipeline便是先做中文分词,之后做关键词抽取,再把抽取得到的多个关键词输入模型生成。但这个pipeline中分词和抽取都有误差,况且肯定会有信息损失,这会引起咱们没法生成目的诗句。
咱们发掘现代文和古诗文的词表有78%的重合,两者能够看成同一种语言上面的两种区别的风格。咱们提出的处理方法是:文本风格转换——把用户的输入直接转换为古典诗句,以此最大程度的保存用户供给的主题信息。 处理方法之实例支撑的风格转换模型
文本风格转换之前有两种区别的范式,这两者在内容保留度和风格转换准确率上各有千秋,咱们的做法是结合两种办法来取长补短。
首要咱们提出了基于attention的Seq2Seq结构以此来完整地保存用户输入的词级别的源端信息,同期咱们运用隐空间风格暗示来构造更拥有区分度和表达能力的风格信号,最后将两者结合在一块,从而实现了转化之后用户输入的语义的内容保存度以及转化后诗歌风格准确度的更好的平衡。咱们推导了新的数学形式,首要运用一组风格实例,例如运用100个诗句这个小的集合来表率古诗这种风格,亦便是该特定风格的经验分布。基于此推导出了新的转化形式,这和咱们的模型结构是一一对应的。
咱们的核心是风格编码器,而问题在于怎样从这组风格实例中抽取一个足够灵活和有表征能力的风格暗示信号。这个过程是在隐空间进行,运用生成式流模型,咱们会构造一个更加繁杂的风格隐空间而后从里面去做sample。另一针对这种古诗和现代汉语的转化,咱们是有一部少量的翻译标注数据的,因此为了有效利用这些数据,咱们进一步推出了一个半监督的训练损失如图所示。
咱们在优化该损失的时候是在同期做三件事情,首要是在最大化由咱们的现代汉语文本和风格实例所生成目的风格诗句的概率的下界。同期在最小化这个概率的负值的上界,向两边逼近它。最后在对齐有没有标注数据时的古诗的分布,以此在最后生成时学到更加符合真实的诗歌空间的风格暗示。
③ 新颖性
除了文本质量之外,诗歌做为一种文学性文本,它最大的特点便是审美特征,首要是新颖性。由于用户期盼读到新颖有趣的诗歌,而不是重复乏味无聊况且被人写过的诗作。针对新颖性咱们最低的需求是,针对用户区别的主题词输入,模型能够生成有差异性和新颖的诗歌。
因为咱们通常运用MLE极重似然估计来做模型的优化,这引起了上面所述需求很难实现。详细来讲便是一个Token级别交叉熵损失。这种损失是倾向于记忆并生成高频模式,例如高频n-grams、停用词。同期这种损失函数的评估指标在评估粒度和评估指标上都与人类的评估不匹配。 处理思路之互强化学习
为认识决这个问题咱们提出运用强化学习,咱们对人类评估诗歌的每一个指标都做了量化的近似和建模,用这些来做为一个评分性的rewarder,用强化学习去激励模型在训练过程中去生成在这些指标上能得到更高得分的诗作。
进一步咱们提出了互强化学习,由于写作学习针对人来讲是一种群体性的任务,交流非常重要,有必要准许训练过程中生成器之间有必定的交流和借鉴。因此呢咱们在训练过程中,同期训练两个不同的生成器来模拟学生,打分器来模拟老师,生成器不仅从老师那获取梯度反馈信号,同期相互之间亦会有必定的信息交互。为了实现这种交互咱们提出了一种算法,能够在全部强化学习的策略空间搜索时沿着区别的两条路径来搜索,既能加快搜索速度,又能避免某个生成器陷入局部最优点。
④ 风格化
另一一个特点,审美特征是风格化。咱们晓得人类在同一个主题下是有能力创作出完全区别风格的诗歌的,因此咱们想让模型亦实现风格的掌控。咱们要做的是把无风格区分度的全部诗歌空间p(x)做解耦合到区别的风格依赖的风格上子空间上,这般就能够选取对应风格的空间,从中生成咱们想要风格的诗歌。但咱们仅有很少的标注数据,因此想要无监督地去实现这一目标。咱们无办法去构建要求概率分布,亦便是无办法构建生成诗歌与输入的风格label之间的相关关系。 处理思路之无监督学习与利用正则项添加相关性
处理方法是用一个正则项去强加这个关系。详细来讲,便是最大化风格分布和诗歌分布之间的互信息,强行把这种依赖给加上。互信息是衡量两个变量之间的依赖程度的。加上之后,改变风格标签y,生成的诗歌x就会跟着改变,以此实现了风格的掌控。
咱们得出了这般的损失函数,由两部分构成,一部分是风格无关的似然项,它能够保证咱们生成的诗歌是比较通畅的,和上文相关性比较好。另一一个是风格的正则项,用来给输入的风格标签和输出的诗歌的文本空间强加一个相关性,以此来实现掌控。
⑤ 情感化
最后一个审美特征是情感化,抒情是人类诗歌创作最重点的目的之一。咱们想让生成模型亦做到情感的掌控。人类写诗的情感表达有两大特点,首要是针对同一个主题人们能写出两种区别的情感。其次一首诗歌内部每一句的情感并不完全相同,拥有必定的变化转折规律。 处理思路之提出新拆解式
模型思路:针对文学文本咱们提出了一个全新的拆解式,来描述咱们的生成模型是怎么生成一首诗歌的。首要咱们的user给指定一个主题词w,亦能够指定一个情感标签y,若其不指定,咱们亦能够自动的去预测一个y。y和w一起构成为了咱们的一个隐空间,这三部分一起用于生成咱们的诗歌。 针对全诗情感采用半监督循环训练
当咱们要掌控整首诗的整体情感时,倘若有标注数据,比较简单。咱们会按标准的流程去推导出它的ELBO下界来直接优化。区别在于咱们天然的自带了一个归类器,这个归类器会依据咱们的主题词自动地预测一个最合适的情感标签。无label的时候,咱们把情感y看成另一一个隐变量,又能够推出它的另一一项,亦进行优化。这其中的第二个归类器能够用来为每一个无标注的诗歌预测一个适合的情感。咱们把两者结合在一块。在全部训练过程中,用哪些有标注的数据去训练模型和归类器,归类器反过来为哪些无标注的数据预测一个合适的标签,持续循环交替迭代,以此来实现半监督的训练。 针对每句情感采用交叉时间序列进行训练
倘若咱们想要掌控每一句的情感,咱们思虑每一个诗句xi和这个诗句的句子级别的情感yi,无label的状况下,推出的式子中有一个期望,将其用蒙特卡罗采样,会产生一个时间序列的拆解,有一个序列的采样。在这个过程中同期学两个区别的序列:一个是每一个句子的情感形成,另一一个是每一个诗句si的内容的次序,咱们是在同期对两者进行建模和学习。
另一,虽然九歌算法诞生的时间比较早,但以上算法均能够移植到最新的模块上。
--
03
九歌系统介绍
以上所有的工作都做了工程化的实现,并整合到了中文古典诗歌在线生成系统——九歌中,在线系统网址(jiuge.thunlp.org/),大众能够到网站上体验九歌系统的功能。九歌系统累计为用户创作诗歌超过2500万首,用户遍布全世界,亦为万里之外漂泊的祖国游子供给了一点小小的慰藉,这亦是咱们做文化与AI相结合的初衷之一。全部项目得到了一系列奖项,系统及其创作的诗作在《机智过人》第1季和《朗读者》节目、人工智能教育大会等场合进行过展示,成果被多家媒介广泛报告,有必定的社会影响,并与学堂在线、腾讯相册管家进行合作。
--
04
自动作诗与知识图谱
咱们亦有用到一部分知识图谱的知识,咱们构建了概率相关式的知识图谱——文脉,爬取维基百科中所有entity的链接,计算出一个带边权的链接的网络,如图所示,并将这个知识图谱map到了古诗文上,最后得到在所有古诗文中显现的这般一个带边权的图谱,所有权重会用词云的方式表现出来。
在线演示 :https://williamlwclwc.github.io/KG-Demo/
开源下载 :https://github.com/THUNLP-AIPoet/ParCKG
除了常规的关键词扩展和转换以帮忙设备理解词语外,咱们还对其有一系列的将来展望: 常识驱动的用户输入理解
人能够用古典的语言去描述现代的“飞机”一词,由于人有常识。而日前的绝大都数模型没法做到这一点,图谱的应用会帮忙改善这一状况。 引入语言学与文学知识的诗歌生成
知识能够用来帮忙实现将典故知识输入模型来促进诗歌生成,或运用各样修辞来促进模型更好地生成更有寓意的诗歌。 结合时空及历史知识的诗歌生成
古人作诗常常是登高望景,所见即所得,因此诗歌中常含有地理空间的原因以及历史知识的融入。 AI与人类的关系之我见
此刻咱们用人类几百年来沉淀下来的作品来指点AI学习,但随着技术的发展,AI会创作出更好的诗歌,以此激励人类创作者创作出新的诗歌,反过来进一步提高AI,形成良性循环。创作上,设备与人不是非此即彼、相互取代,而是相互促进一起学习和进步的,这亦是九歌系统开发的初衷之一。期盼将来咱们能够一块在这个方向上做更加多更有意思的探索和尝试。谢谢各位!
今天的分享就到这儿,谢谢大众。
阅读更加多技术干货文案、下载讲师PPT,请关注微X公众号“DataFunTalk”。
分享嘉宾:矣晓沅博士 微软亚洲科研院 科研员
编辑整理:赵洪业 合肥工业大学
出品平台:DataFunTalk
分享嘉宾:
关于咱们:
DataFun:专注于大数据、人工智能技术应用的分享与交流。发起于2017年,在北京、上海、深圳、杭州等城市举办超过100+线下和100+线上沙龙、论坛及峰会,已邀请超过2000位专家和学者参与分享。其公众号 DataFunTalk 累计生产原创文案700+,百万+阅读,14万+精细粉丝。
欢迎转载分享评论,转载请私信。
|