书城艺术分析传统下的电影研究:叙事、虚构与认知
13847900000007

第7章 机器叙述者的黎明:走向自动化故事生成(1)

故事生成让机器运用图像、文字来讲故事,是可能的吗?“讲故事”这样的创造性能力,可能在依靠指令和程序运行的计算机上实现吗?“自动化故事生成”或“数字叙事”研究的目标,就是通过计算机来自动生成电脑动画形式或图文形式的故事。在这里,被机械地生成的将不再是“图像”(例如传统的“数字生成图像”)或“声音”,而是“叙事”(narrative)本身。

“叙事”原本是美学家和各种叙事媒介的艺术理论家所关注的领域,例如电影叙事、文学叙事等等。而计算机叙事模型研究主要以三个领域的工作为基础:认知心理学、计算机语言学和叙事理论。出于对叙事的共同兴趣,这三个领域的研究者协同合作,分别沿着不同的路径,对数字叙事技术的发展有所促进。

首先,“认知心理学”(cognitive psychology)致力于为人们在理解叙事时的认知过程构建模型,例如观众关于故事期待、预测、推理等等的模型。实验心理学为不同类型的叙事在读者、观众或听众那里引起的不同反应或情感效应提供了数据。其次,语言学特别是注重“话语”研究的语言学,提出了讲述一个故事的计算途径,以及特定的交流数据如何以一种融贯的、吸引人的方式来传达一个故事中的诸要素。最后是叙事理论家的研究成果,这也许是这三者中最难实现计算机化的。但是,叙事理论为数字叙事的计算模型提供了基本框架:在长期以来对各种叙事作品、叙事模式和人类叙事史的关注中,叙事理论已经分辨出了一个故事及其讲述的基本成分,并分辨出了诸成分之间应该具有的种种关系和限制,这是设计数据结构和在一个虚拟环境内部运作的类似结构的算法时必须参考的。或者说,叙事理论试图为机器叙事提供一套审美或评价标准。也就是说,如果不考虑人类关于叙事的审美经验和标准,就无法制造出能够生成我们感兴趣的故事的机器叙述者。

撇开技术背景上的差异不谈,仍有必要先说明传统叙事学研究与今天的自动化叙事模型研究在目的上的不同。传统叙事理论致力于提供对叙事及其要素的静态特征的刻画,也就是说,经典叙事理论家的主要工作是描述一个作者可以用来“制造”一个引人入胜的故事的基本建筑材料。但是,从本质上说,经典叙事理论家的工作是分解性的,是把一个整体的作品分解成诸要素,而并不关心这些要素能否用来“组装”或者“制造”新的故事或故事组。要明白这一点,不妨想想我们时常听到的作家或者导演对叙事学家们的指责:“你们可以头头是道地分析我的故事,但你们自己创作一个故事试试?”这种批评虽然有欠公允,但它确实揭示出了叙事理论的一个特点:它是分解性的,而不是生成性的。

而自动化叙事研究的一个重要目标是“生成性”或“能产性”(productive)。当然,这种“能产”(product)不等于艺术家的“创造”(create),而是可以通过计算机来生成故事。它并不关注一个固定的文本可以静态地拆分成哪些要素,或者这些要素中哪一些比哪一些更“本质”。相反,自动化叙事关注的是哪些要素和关系的配置可以实现哪些叙事效应?也就是说,自动化叙事研究是从功能上,而不是在一个静态的横截面上来理解各种叙事要素的;各种要素和关系是根据它们引起特定效应的功能来理解的,而不是在静态的文本结构层次上理解的。

一、自动化故事生成的早期尝试

自动叙事生成的研究者一开始就是以观众/用户为中心来考虑叙事,因此他们对叙事类型的划分往往不同于传统叙事学理论的划分。例如,在数字叙事领域中,很难找到“散文化叙事”、“诗化叙事”、“主观叙事”、“现实主义叙事”之类以文体或者技巧、风格为核心的叙事概念。相反,数字叙事更关注的是“引起悬念效应的叙事”、“引起喜剧效应的叙事”、“具有曲折效果的叙事”等范畴。

最初的数字叙事探索颇为混乱,并且局限在计算机科学领域,与人文学科的叙事研究成果相对疏离。例如,巴利(P.Bailey)于1999年提出了一个理论上的交互式模型,来生成他所谓的“引起用户兴趣的叙事”,其核心手段是访问当前用户的知识库。他设想的系统将按照由四阶段构成的循环来运作,这是一个需要用户参与和互动的模型。在一个故事切片作为“种子”被输入之后,系统的第一个阶段调用(概括、逐项列举、超离、参与)该用户的当下知识库,以生成下一个故事切片的多个候选者。第二个阶段则根据用户的期待和对前面的故事已经形成的问题,测算每一个候选故事单位的效应。第三步则根据一个故事启发程序,选择一个能产生良好问题和期待模式的切片。最后,这个被选择的故事单元被用来作为下一个故事切片,而该用户面对的模型也相应地被更新。

但是,这个方法的实施是有困难的,它表明了把我们的叙事能力直接等同于“计算能力”之不可行。巴利的系统的高明之处在于,强调用户知识库的重要性,利用这个知识库来“生成下一个故事片断的多个候选者”在原则上是可行的。例如,如果把“一个少女从山顶落下”作为初始故事片断输入,此后的情节如何发展的方式(下一个故事片断候选者的数量)是无限的。但是,以用户的当下知识库为基础,他在过去的阅读/观看活动中形成的关于故事发展常规、合理性判断、风格类型等方面的知识,会使得他对已经给出的故事进行特征抽取、推理和期待,这会大大缩小下一步故事生成的搜索空间,从而使有限数量的故事候选者的产生成为可能。但是,困难在于第二步和第三步,计算机怎么能够评估出哪一个故事候选者将是这个用户最感兴趣的并加以选择?事实上,这里需要的是一个可以由机器来执行的对故事的审美评价(根据情节发展的可能性、故事风格、想象力、情绪效应等,评价故事情节的好坏)。在没有一个明确的审美理论框架的情况下,机器无法有效地对故事的候选者进行评价,因而无法在众多候选者中进行选择。

回顾人工智能发展早期的情况,可以帮助我们更直观地理解这方面的困难。1958年,AI专家西蒙(H.Simon)曾乐观地预言:十年内,计算机就可以夺得国际象棋的冠军。但实现这个预言所耗费的时间,比他预想的要长得多。直到四十年后——1997年,IBM的计算机“深蓝”才击败了世界象棋冠军加利·卡斯帕罗夫。

为什么等了这么久?在早期的AI研究者看来,人类的智能活动正如大多数游戏(包括象棋、跳棋、十五子棋等所有在棋盘上玩的棋类游戏)一样,都可以这样定义:(1)一个初始位置;(2)一套规则,它具体规定什么是一个合法步骤;(3)一个或者多个目标状态。这类似于一个“问题求解过程”。根据这一定义,很容易编写出计算机能够执行的简单的下棋程序:给这台计算机一种表征当前开局的方法,以及这样开局之后能够在当前诸合法步骤中任选一个步骤的方法。不妨称这个走棋程序为C1。但是,C1的下棋水平会很差,因为对于它来说,当前符合规则的合法步骤都是可行的:只要不犯规,走哪一步都一样。C1的这种能力类似于前面巴利所设想的叙事机器的步骤1的能力。把C1用于叙事领域,它相当于具备了写出一组不违反语法和逻辑规则的句子的能力。

要提高C1的下棋水平,得让它具有某种新的能力——“评价能力”。C1不但得知道哪步棋是“不犯规”的棋,还得学会评价哪步棋是“好棋”,由此选择“好棋”并避免“臭棋”。“好的”是一个评价性词语,正如“美的”、“善的”、“吸引人的”、“有趣的”一样。要决定一个东西是“好的”而选择它,与决定它是“真的”或“正确的”截然不同。计算机可以很轻易地判断一个运算的结果是否正确,但要判断一步棋是不是高明、一个公式是不是优美,却颇费周章。但这并不是不可解决的,至少我们可以把这里的“好棋”转化为“能够给自己带来最大利益的棋”来理解(尽管这个概念不完全等同于通常我们对一步充满奇思妙想的“好棋”的看法)。数学家纽曼(Von Neumann)的“二人零和博弈论”很早就提供了这种评价的算法基础。“二人”指只有两个人参加游戏,“零和”指一方胜则另一方负,一方之所得即一方之所失,两人得失之和为零。这样就可以遵循“极大极小准则”,选择一个使自己的极小利益最大化的步骤。这样,我们就能让C1学会计算这步棋对自己或者对敌手的有利程度,从而选择走哪一步。这是一个复杂的运算,但对于计算机来说并不困难。

现在,我们把这个新的走棋程序称为C2。这一步类似于巴利的叙事程序中的步骤2和步骤3,即它们根据用户知识库来评价和选择当前候选的故事片断。但是,很难说这样的选择能够构成“好”故事。我们可以考虑作家创作的情况。一个作家并不只是从故事已经发展出来的当前局面中考虑下一步的发展,他更多地要从故事的整体发展方向上考虑下一步的情节。用下棋的术语来说,作家和下棋高手一样,他们不是“看一步”,而是“看n步”甚至“看通盘”。

只有当走棋程序能够思考对手如何走棋以及自己如何对抗,即具有“看n步”的能力之后,才有可能成为高明的棋手。从理论上说,要做到这一点并不难。只要我们把C2已经具有的那种“评价能力”从当前步骤扩展到将来的多个步骤,就可以找出在一步或者两步之外赢子的机会。通过迭代法,把这一过程自动化是比较容易的。从理论上说,我们能够把这个过程重复多次,并且把对“好棋”的评价应用到将来的第n步的每一种走法中。现在,我们把这个新的复杂的走棋程序称为C3。在数字叙事中,我们也可以扩展巴利的系统对将来“n步”情节发展的评估能力。

也许你会感到疑惑:如果这么简单,要让计算机打败人类棋手并不难,为什么最后却让计算机专家花费了那么长的时间?前面指出,在理论上,对将来的步骤组合的展开可以无限制地持续下去,但事实上要做到这一点却存在巨大的障碍。假设每个棋局可走的方法有一百种,对于C3的每一种走法对方也有一百种回应的走法,那么看双方一步棋要计算一万次,这对于C3来说不算多。但是,看双方两步棋就需要计算一亿次,用每秒一亿次的计算机要运算一秒钟;如果看三步棋就要运算三个小时;看四步得运算一年——这盘棋就没法下了。并且,计算机受物理条件制约,不可能做到运算无限大和无限快,我们也无法指望通过制造更快的计算机来实现C3。在跳棋、五子棋等简单游戏中无疑可以运用C3,早在五十年前,跳棋就已经以这种方式实现计算机化。但是对于象棋、围棋这类复杂游戏,靠C3是不可能制造出战胜人类棋手的计算机的。

AI研究以及当代哲学和心理学研究,从这一事实中学到了什么?也许这是一件原本再明白不过的事情:人类并不是用下棋程序C3的那种“蛮力搜索”来处理问题的。“智能”(intelligence)不等于“计算”(computation)。在决定要走哪一步棋的时候,象棋大师加利·卡斯帕罗夫只进行了有限得多的搜索(在最快速度上,伟大的人类棋手可以每秒钟评价三步棋)。他并不是依赖于巨量运算来走棋的,相反,他依赖于“预感”和“直觉”——从他一生中千万次下棋和研究中获得的“默会知识”(tacit knowledge)。

我之所以用这样大的篇幅来讲述貌似与“叙事”无关的“下棋游戏”,是因为从AI的角度来看,下棋是“问题求解”能力的体现(给定当前状态、目标、规则和障碍因素,最后完成从当前状态到目标状态的转换)。“问题求解”被视为思维活动的一个最普遍的形式,并且它突出地表现了人类心智的创造性特征。因此,对问题求解的处理理所当然地成了AI的核心。今天的自动生成叙事系统,仍然是依赖于对问题求解过程的模拟。