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相结合的初衷之一。全体项目得到了一系列奖项,系统及其创作的诗作在《机警过人》第一季和《朗读者》节目、人工智能教诲大会等场合进行过展示,成果被多家媒体广泛宣布,有一定的社会影响,并与学堂在线、腾讯相册管家进行互助。
--
04
自动作诗与知识图谱
我们也有用到一部分知识图谱的知识,我们构建了概率关联式的知识图谱——文脉,爬取维基百科中所有entity的链接,打算出一个带边权的链接的网络,如图所示,并将这个知识图谱map到了古诗文上,末了得到在所有古诗文中涌现的这样一个带边权的图谱,所有权重会用词云的办法表示出来。
在线演示:https://williamlwclwc.github.io/KG-Demo/
开源下载:https://github.com/THUNLP-AIPoet/ParCKG
除了常规的关键词扩展和转换以帮助机器理解词语外,我们还对其有一系列的未来展望:
知识驱动的用户输入理解人可以用古典的措辞去描述当代的“飞机”一词,由于人有知识。而目前的绝大多数模型无法做到这一点,图谱的运用会帮助改进这一情形。
引入措辞学与文学知识的诗歌天生知识可以用来帮助实现将典故知识输入模型来促进诗歌天生,或者利用各种修辞来匆匆使模型更好地天生更有寓意的诗歌。
结合时空及历史知识的诗歌天生古人作诗常常是登高望景,所见即所得,以是诗歌中常含有地理空间的成分以及历史知识的融入。
AI与人类的关系之我见现在我们用人类几百年来沉淀下来的作品来辅导AI学习,但随着技能的发展,AI会创作出更好的诗歌,以此勉励人类创作者创作出新的诗歌,反过来进一步提升AI,形成良性循环。创作上,机器与人不是非此即彼、相互取代,而是相互促进共同学习和进步的,这也是九歌系统研发的初衷之一。希望未来我们能够一起在这个方向上做更多更故意思的探索和考试测验。感激各位!
本日的分享就到这里,感激大家。
阅读更多技能干货文章、下载讲师PPT,请关注微信"大众年夜众号“DataFunTalk”。
分享高朋:矣晓沅博士 微软亚洲研究院 研究员
编辑整理:赵洪业 合肥工业大学
出品平台:DataFunTalk
分享高朋:
关于我们:
DataFun:专注于大数据、人工智能技能运用的分享与互换。发起于2017年,在北京、上海、深圳、杭州等城市举办超过100+线下和100+线上沙龙、论坛及峰会,已约请超过2000位专家和学者参与分享。其"大众年夜众号 DataFunTalk 累计生产原创文章700+,百万+阅读,14万+精准粉丝。
欢迎转载分享评论,转载请私信。