讲完了理论,我们来讲一下我们最近发表的实用文章。
以下这篇文章最近中了EMNLP'22,链接见这里,代码见这里。

我自己业余也写写小说,有一个自动故事生成器是长久以来的梦想,这次借着大语言模型(LLM,这次用的是GPT-3),离这个梦想更接近了一步。
Re3的想法极为简单,通过设计prompt让它生成一致性强的故事,完全不需要微调大模型。我们跳出语言模型的逐词生成的线性逻辑,改用层次化生成方式:先在Plan阶段生成故事角色,角色的各种属性和大纲,然后在Draft阶段给定故事大纲和角色,反复生成具体的段落,这些具体段落由Rewrite阶段筛选,挑出与前一段落高度相关的生成段落,而丢弃关系不大的(这需要训练一个小模型),最后在Edit阶段修正一些明显的事实错误。
当时提这个想法,是觉得这更符合作家写作的一般方式。毕竟现在的语言模型一个一个词逐个生成,实在太没有道理了。

最后的效果也确实不错。与当前其它的文本生成算法比较,Re3写出来的故事长很多,最长的故事有7500个词,看了半小时才看完,不夸张的说,比其它的方案要长10倍以上。关键的是它相当自洽,至少不会出现主要角色突然换人,或者文风突变这种情况,前后的线索也能对上一些,也没有其它方案经常出现的陷入无限文字循环的情况。
下面举一个简单例子,让Re3写主角突然间从素不相识的父亲那边继承一大笔财产之后的忐忑心情。

当然,和人类作家相比,这个系统差得还很多,主要问题在于人物没有动机,情节安排毫无规律,细节杂乱无章,更不用谈行文的步调、节奏或是主旨,看起来比较累。作家一般讲究“草蛇灰线,伏笔千里”,人物的重要细节和举动,场景中带有情绪色彩的描绘,都有可能成为下一步故事发展的决定性因素,更不用说人物间错综复杂的关系和出乎意料的情节展开。这些高阶写作能力,AI现在还远远无法做到。
