语言模型写长篇故事不靠谱,模型设计还得靠「作家仿生学」!
OpenAI 发布的聊天机器人 ChatGPT 着实是火出圈了,上知天文、下知地理,不仅理性、也有感性,写一篇 800 字的作文都不用打草稿的。
但 ChatGPT 的「故事续写」遵循逐词生成的线性逻辑,跟人类的写作方式相去甚远,注定了 ChatGPT 只能是一个写作助手,无法成为真正的 AI 作家。
最近田渊栋博士团队在 EMNLP'22 上发布了一个基于大规模语言模型的故事生成器 Re3(Recursive Reprompting and Revision)框架,通过设计 prompt 让模型生成一致性强的故事,完全不需要微调大模型。
论文链接:https://arxiv.org/ pdf / 2210.06774.pdf
代码链接:https://github.com/ yangkevin2 / emnlp22-re3-story-generation
Re3 框架没有采用语言模型的逐词生成的线性逻辑,而是改用层次化生成方式:先在 Plan 阶段生成故事角色,角色的各种属性和大纲,然后在 Draft 阶段给定故事大纲和角色,反复生成具体的段落,这些具体段落由 Rewrite 阶段筛选,挑出与前一段落高度相关的生成段落,而丢弃关系不大的(需要训练一个小模型),最后在 Edit 阶段修正一些明显的事实错误。
作者表示,相比语言模型毫无道理的逐词生成,迭代修改的思路更符合人类作家写作的一般方式。
从最后的效果来看,与当前其它的文本生成算法比较,Re3 写出来的故事长很多,最长的故事有 7500 个词,人来看的话需要看半小时左右。不夸张的说,比其它的方案要长 10 倍以上。
最关键的是,Re3 生成的文本相当自洽,至少不会出现主要角色突然换人,或者文风突变这种情况,前后的线索也能对上一些,也没有其它方案经常出现的陷入无限文字循环的情况。
与直接从同一基本模型生成的类似长度的故事相比,人类评估人员判断 Re3 的故事中有更多的故事具有连贯的总体情节(增加 14%),并且与给定的初始前提相关(增加 20%)。
尽管如此,Re3 目前相比人类作家仍然差得很多,主要问题在于人物没有动机,情节安排毫无规律,细节杂乱无章,更不用谈行文的步调、节奏或是主旨,读起来会比较累。
作家一般讲究「草蛇灰线,伏笔千里」,人物的重要细节和举动,场景中带有情绪色彩的描绘,都有可能成为下一步故事发展的决定性因素,更不用说人物间错综复杂的关系和出乎意料的情节展开。这些高阶写作能力,AI 现在还远远无法做到。
文章的第一作者 Kevin Yang 是加州大学伯克利分校的四年级博士生,主要研究兴趣为结构化设置下的可控自然语言文本生成,如利用可控生成的结构化方法来改善长篇文本的一致性。
第二作者田渊栋博士是 Meta 人工智能研究院研究员、高级经理,其研究方向为深度增强学习及其在游戏中的应用,以及深度学习模型的理论分析。先后于 2005 年及 2008 年获得上海交通大学本硕学位,2013 年获得美国卡耐基梅隆大学机器人研究所博士学位。
Re3 框架
生成长篇且连贯的故事是人工智能领域的一个难题,模型需要全面掌握语言、世界和常识知识才能完成。
之前工作中自动生成故事的长度少则几句话,多则也只有一两个段落,虽然这样长度的短故事可以作为文本生成的一个很好的测试平台,但它们仍然比一般的短篇小说要短得多。
Re3 框架的设计初衷旨在通过生成更长的「短」故事来弥补目前的故事自动生成模型的缺陷。
与短篇小说相比,长篇剧情的连贯性和相关性是更重要的问题,Re3 框架的研究人员也是首个做自动生成如此长的连贯情节故事模型的人,而进一步增加长度主要受限于评估而不是技术问题。
该系统必须在数千字的范围内保持一个连贯的总体情节。比如用户会给定一个初始前提(premise),模型需要在数千字的文本中保持与前提的相关性。
其他的难点还包括在很长的范围内保持叙事风格一致以及避免事实的矛盾。
研究人员观察到,人类作家并不是直接一次性写完一个长篇,而是有一个迭代过程,首先会(a)建立一个详细的计划;(b)根据计划对每个段落打草稿;(c)修改或者对整个文章进行重写;(d)继续编辑优化细节。
受此启发,Re3 框架也采用类似的方法来生成长故事。
计划(Plan)模块
利用 GPT3-Instruct-175B(针对人类指令微调后的 GPT-3)的结构化 prompting,将初始化的前提(premise)转化为更详细的故事设置来模拟高水平的人类计划,包括背景、人物 + 描述和故事大纲。
这些计划组件本身是由 prompting 生成的,并且会被反复使用以在 Draft 模块中生成故事段落的 prommpts,即 recursive reprompting
草稿(Draft)模块
为了生成连贯的故事,Draft 模块将会选择 plan 中和之前生成的故事最相关的部分,然后将它们重新组合成一个单独的 prompt,供 GPT3-175B 生成下一个段落。
与现有的思维链方法相比,这个故事 Draft 模块可以被认为是更进一步:动态地选择先前语言模型输出中与当前步骤相关的部分,并在需要时运行一些额外的处理(例如摘要)。
重写(Rewrite)模块
重写模块通过相关性评分、连贯性评分和简单的启发式过滤器的混合对连续性进行重新排序对人类重写进行模仿。
训练 rerankers 是 Re3 框架中「唯一」使用已存在的故事数据的地方,其他所有的生成模块都是通过 prompting 的方式 zero-shot 设置下完成的。
编辑(Edit)模块
最后编辑模块解决了检测(detecting)和纠正(correcting)长距离事实不一致的问题。
为了使该任务更具可操作性,研究人员把重点放在人物属性(如年龄、职业、与其他人物的关系)的事实不一致上。
在高层次上,检测系统以「属性字典」的形式为每个角色维护一个紧凑的知识库。
对于每个新的故事段落,只对照这些属性值字典来检查事实冲突,然后为新的段落更新字典,当检测到新的字符时创建新的字典。
具体来说,编辑模块的检测系统是一个受 OpenIE 启发的概念验证系统,将过程分解为简单的 GPT3 查询,纠正系统使用 GPT3 的编辑 API,后续还有较大的提升空间。
实验部分
研究人员主要从趣味性(Interesting, 是否吸引读者)、连贯性、相关性(忠实于初始前提)、类人(Humanlike,和人类作家相比)对生成的文字进行评估。
每个标注人员可以看到一个前提和两个相应的故事(由 RE3 和另一个随机 baseline 生成),并对两个生成的故事在四个指标上进行二元打分。
从结果来看,RE3 能够按照预期的前提写一个较长的故事,同时保持一个连贯的总体情节,这也验证了受人类写作过程启发的设计选择以及递归 reprompting 的生成方法。
与两个基线对比,RE3 在连贯性和相关性方面都有明显的大幅提高,标注人员还将 RE3 的故事标记为具有明显较少的写作问题。
参考资料:
https://arxiv.org/abs/2210.06774
https://github.com/yangkevin2/emnlp22-re3-story-generation
https://twitter.com/KevinYa33964384/status/1582149319032852480
https://zhuanlan.zhihu.com/p/578638528
本文来自微信公众号:新智元 (ID:AI_era),编辑:LRS
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。