Wangd-wiki-article-vvpoem

来自cslt Wiki
跳转至: 导航搜索

薇薇的故事

王东/2017.12.08


薇薇已经有快两岁了。

回顾起来应该是2015年暑期,应该是邢超或东旭在文本组的组会上分享了一篇用神经网络生成古诗的文章,名叫“Chinese Poetry Generation with Recurrent Neural Networks”,作者是爱丁堡大学的Xingxing Zhang和Mirella Lapata两位学者。我一向对古诗词有浓厚的兴趣,这篇文章又来自我毕业的母校,因此特地仔细读了一遍,很受启发。传统诗词生成方法是拼凑的,即把诗词库里的句子打碎,再将片段按诗词规则组合起来。这种拼凑法显然过于机械,事实上没什么道理可言。爱丁堡的这篇文章用递归神经网络(RNN)作为生成模型对诗词进行建模,同时为了保证生成句子的主题连贯性,将已经生成的句子压缩成一个表征向量作为模型的辅助输入。我立刻意识到用RNN生成诗词是一个有趣的思路,因为这种模型可以学习很复杂的动态性,足以描述诗人在遣词造句上的规则。然而,当前这篇文章所给出的方法具有很大局限性,因为诗词本质上是一个字符流,RNN应该学习整首诗/词的字符规则,而不是一句话内部的规律。换句话说,诗歌的规律更多是整体的,而非局部的。另外,逐句生成的方法也不适合生成更灵活体例,如八句律诗,不定句的古风,长短句的宋词。我们需要一种新方法,能对诗/词进行整体生成,同时保持前后句子在语意和语境上的连贯性。


用RNN来学习整体语流是个好思路,但可能会出现语义漂移。一个解决方法是利用一种称为“注意力”机制的改进型RNN,将用户输入的主题作为指导序列进行编码,在生成过程中始终对这一指导序列进行“回顾”,保证生成的句子不会偏离主题。2015年8月初,我和实验室文本组的成员,包括邢超、骆天一、张东旭等讨论了这一思路,大家都很兴奋,觉得可行。我把这件事交给了当时一个北邮实习生,但他做了一个月就离开了,这事情也就此搁浅。


突破发生在两个月后,天一带来一个很不合群的实习生,剃着板寸,穿着马甲,精明壮实,一副铁掌水上漂状,蔑视天下。天一说:“老师,这个学生叫王琪鑫,刺头,不过很聪明”,我问:“你能搞定吗?”,天一说:“老师放心!”。


现在我能查到琪鑫最早的工作记录是在2015年11月16号,他当时已经能让机器生成这样的藏头诗了:


新著黄昏雨帽客/春香返绿遍吹帘/快送东风千里便/乐燕枝伤娉前鉴

到下一周时,他报告的诗是这样的:

新春五谷喜丰年/春色香云马不欢/快柳迎如光意美/乐书今为事时安

自此以后,这个剃着板寸、穿着马甲的年轻人迅速进入这个领域,并完成了若干重要实验。到2015年12月21日时,他已经可以生成若干词牌名的宋词,一例如下:

菩萨蛮

塞下秋来风景异 /一点愁边 /又是天年几

归去无穷千里意/何时不自然红紫/莫教小桥横月日

花满城头/夜上青山碧

云外有情多处事/休言酒醒初长记

诗的质量也有了很大提高:

诗人已化罗浮鹤/独有春风细雨得/行到处将无半作/东君未许几分隔

2016年2月,琪鑫和天一作为共同第一作者提交了一篇论文到IJCAI 2016,“Chinese Song Iambics Generation with Neural Attention-based Model”。这是第一个基于Attention 机制的诗词生成模型,也是第一个可以做宋词的程序。

其后,琪鑫和天一专注提高格律诗的质量。和宋词比起来,格律诗更注重个性化,因此神经网络建模更困难。我们现在知道,如果数据量足够大(比如上百万首诗),学习这些个性化规律是没有问题的,但当时我们的数据规模只有1.3万首五言诗,6.6万首七言诗,远远达不到训练一个完美模型的要求。琪鑫做了大量探索,基于这一小数据集取得了非常好的效果。2014年3月21号,我们发布了人机图灵测试结果。在这次发布中,我们首次将我们的作诗机器人称为“薇薇”,取名自我们团队中一个叫张雪薇的漂亮女孩。

在这一测试中,我们邀请了诗词圈的诗人们和薇薇一起就30个主题进行创作。人类诗人可以选择他们最擅长的主题,最终我们收到144份诗稿。我们让薇薇用同样的比例生成了144份诗稿。为减轻评价工作量,这288份诗作由社科院的张一南老师进行初筛,去掉那些明显质量低下的作品,最终83篇人类作品和124篇薇薇作品入选。24位来自北大、社科院等权威机构的专家对这些作品进行了匿名评价,结果发现人类诗人以3.27比3.17的微弱优势胜出。同时,在薇薇写的诗中,有31.02%的作品被认为是人类作品,这事实上刚好超过了图灵测试中30%的通过比例。由此,薇薇成为第一个通过图灵测试的作诗机器人。下面这首诗是被专家评价最高的薇薇诗作:

春信香深雪 / 冰肌瘦骨绝 / 梅花不可知 / 何处东风约

薇薇的表现让我们感到鼓舞,她的成功事实上证明了一件事:很多时候我们认为的“智能”也许不过是经验的累积外加一些随机性,因此诸如艺术这种看似亟需创造力的事情或许本质上并不复杂。可惜过了不久琪鑫和天一都离开实验室去了美国,我们刚刚半岁的薇薇又一次陷入停滞。

2016年6月27日的工作报告里,另一个来自北大的实习生张记袁开始着手继续培养薇薇。记袁和琪鑫是完全不同的两类人,憨实厚朴,肯下苦功,经常工作到午夜以后。如此勤奋终于换来成果。2016年10月31日,记袁得以用Tensorflow重现了薇薇的生成质量,并很快实现了对薇薇的改进。当时我们着眼一个现象,即当模型训练不足时,生成的诗比较平庸,但当训练较深入时,生成的诗又变得非常“诡谲”,不合常理。换句话说,让薇薇生成较平顺的句子是没问题的,但让她创新则很困难,一旦强迫她创新,她就开始胡写。这显然是统计模型的固有缺陷:但凡创新的事都是缺少统计显著性的,因此很难被RNN这样的统计模型有效学习。当时冯洋老师是文本组的组长,她提出一种方法,用记忆机制去平衡统计学习和联想学习,即用模型方法学习常见规律,用记忆机制去保存那些不合常规的个例。这是个很有趣的想法,后来我们证实在若干任务上这种方法是有价值的—事实上这一方法的价值已经远超过我们当前的任务。不论如何,记袁很快给薇薇加入了记忆功能,让她学习写诗的同时,也把奇趣妙句记下来,随时应用。这种方法使得她生成的诗句更加流畅可靠,同时还可以变换不同风格。这些工作后来发表在ACL 2017上。下面是加入了记忆能力后薇薇的诗作,前者是通常风格,后者是香艳风格:

一山自有无人语/不是青云入水边/莫把春风吹落叶/花开绿树满江船。

花香粉脸胭脂染/帘影鸳鸯绿嫩妆/翠袖红蕖春色冷/柳梢褪叶暗烟芳

我们对薇薇还在继续改进中,让她学习不同朝代、不同诗人的各异风格,让她学习如何起承转合,如何对主题进行议论升华,等等。我们相信这些是人类的智慧,但同样可能被机器模拟。我们相信一些规律隐藏在作品样例之中,人们可以熟读后掌握这些规律并进行创作,薇薇也是一样。不仅是诗词,我们相信人类艺术在很大程度上是一种低维空间的创作方式,这种空间正是人类的基础审美规则。我们相信这种规则性是可以学习的。反过来,我们用机器去学习这些空间,不仅是在学习艺术,也是在学习我们自己。


薇薇还在成长,我们呵护她如女儿。经常有人转发些微信文章给我,看哪家又推出什么作诗系统了,我统统做驼鸟不看。那些也许真的是很好,但薇薇是我们的,不仅因为我们手把手教她学语长大,而且因为这个名字背后那个曾经和我们一起奋斗的女生,直到今天依然有如亲人。