Mark Riedl 人工智能故事生成導論 (2021)

編者按
本篇文章是與友人厭氧菌合作的譯介,也是作為落日間 AI-游戲研究小組的工作的一部分。
這是一篇關于AI進行自動故事生成的整體入門介紹的文章。在每個人高呼chatgpt將能改變游戲以及創(chuàng)造出如同「全息甲板(holodeck)」一般的無限敘事的時候,我們需要搞清楚這些所謂的互動敘事和故事生成的背后是如何可能的,而人們又是經過了怎樣的道路而走到了大語言模型的今天,而所謂「無限」何時會失效。
當我們真正投入其中,看到那些真正在科研與創(chuàng)造前沿的工作者所思考的具體的、各種方案的利弊時,我們能夠意識人們和AI一同,是如何頗為笨拙,但卻數十年如一日地一往無前,參照各種戲劇、故事的創(chuàng)作理論與方法,從符號邏輯、從語言、從類比等不同的方式試圖捕捉人類最偉大也原始的故事講述的藝術,如同鏡子一番,映照出這些纏繞我們生活的因果之線同言語的美妙舞蹈。
葉梓濤
落日間
譯按
在我之前的兩篇文章——2018年的如何不費腦子地寫出一個好故事?或許AI能幫你辦到!和2023年的基于大數據的語言模型與程序化敘事生成中,我介紹了人工智能領域自動生成故事的一些方法,包括傳統(tǒng)的基于圖搜索、模擬和優(yōu)化的方法,也包括近幾年流行起來的基于機器學習特別是大語言模型(Large Language Models)的方法。
我在為這些文章查閱文獻時發(fā)現了 Mark Riedl 的這篇2021年的博客文章,感覺如獲至寶。文章不僅對故事生成這個領域發(fā)展至今出現過的各種具有代表性的方法作了介紹,還穿插了大量作者自己的精彩洞見,包括對故事本質的理解、對研究故事生成的意義的看法、傳統(tǒng)方法和基于語言模型的方法各自的根本性問題——尤其是作者指出因為基于神經網絡的方法目前階段性的成功,就徹底否定傳統(tǒng)的故事生成方法,無異于「把嬰兒和洗澡水一起倒掉(throwing the baby out with the bath water)」
——在所有人都為 chatGPT 而興奮到昏了頭的今天,我認為特別有借鑒意義。
厭氧菌
菌群反應器
Mark Riedl

Mark Riedl 是喬治亞理工大學交互計算學院的教授和機器學習中心的主任,主要研究以人為中心的人工智能(Human-centered artificial intelligence)——也就是能以更自然的方式理解人及與人交互的AI和機器學習技術。他在故事生成和理解(story understanding and generation)、計算創(chuàng)意學(computational creativity)、可解釋AI(Explainable AI)等領域發(fā)表了大量的論文。
原文鏈接:https://mark-riedl.medium.com/an-introduction-to-ai-story-generation-7f99a450f615
翻譯:厭氧菌
校對:葉梓濤
翻譯已獲得作者授權。
人工智能故事生成導論 An Introduction to AI Story Generation

自動化故事生成(Automated Story Generation)是我研究的眾多課題之一。我已經有好幾年沒有教授我的人工智能講故事的課程了。我編寫了這篇入門讀物,作為我認為我的學生需要知道的資源,以便開始自動故事生成的研究。任何對自動故事生成主題感興趣的人都可能會從中得到有用的信息。由于我在近二十年來一直積極研究自動故事生成,這篇入門讀物將在一定程度上偏向于我的研究小組和合作者的工作。
1. 自動化故事生成是什么?What is Automated Story Generation?
自動化故事生成是指使用智能系統(tǒng),從一組最小的輸入(minimal input)中產生一個虛構的故事。
讓我們把這個問題展開成不同部分來討論。
敘事(Narrative):對一連串事件(event)的敘述,這些事件有一個連續(xù)的主題并構成一個整體 (Prince, 1987).。一個事件描述了世界狀態(tài)的某種變化。一個 "連續(xù)的主題 "意味著事件之間有某種關系——它是關于某件事情的,而不是一堆不相關事件的隨機列表。究竟是什么」聯系」起這些事件,還并不完全清楚,但我將在后面討論這個問題。
**故事(Story)**:人們會期待講述故事的敘事要有某種特定屬性。所有的故事都是敘事,但不是所有的敘事都是故事。不幸的是,我無法指出一套人們將敘事視為故事的具體標準。然而,一個強有力的可能的說法是,(故事是)一種為了對觀眾產生特定的影響而進行的,對事件的某種結構化處理。
**情節(jié)(Plot)**:情節(jié)是敘事中主要事件(incidents)的大綱。
我們可能要把自動故事生成(automated story generation)和自動情節(jié)生成(automated plot generation)區(qū)分開來。最近,有些人開始以這樣的根據來區(qū)分故事生成與情節(jié)生成:系統(tǒng)的輸出是否讀起來像是一個主要事件的大綱,而不是用自然語言來描述的故事中那些并非嚴格意義上的事件的要素,如描寫、對白和其他闡述。
區(qū)別似乎是:它讀起來是像一個大概的事件大綱呢,還是像一個人可能在一本書中找到的東西。我不確定我會做出這樣的區(qū)分,但我看到了這種區(qū)分對那些對表面形式而非結構(這兩個觀點同樣重要和有效)更感興趣的人的吸引力。
「虛構(fictional)」的標準將自動故事生成與其他講故事的技術區(qū)分開來,如新聞寫作,其中的事件是那些在現實世界中真實發(fā)生的。也就是說,新聞依靠現實世界作為 "生成器(generator)",然后創(chuàng)造出自然語言的文本敘述。新聞生成是一個重要的問題,但在我看來,這個問題應該從自動故事生成中分離出來。
「最小輸入(minimal input)」是我為自動故事生成添加的一個標準,以區(qū)別于故事復述( story retelling)。故事復述是這樣一個問題,其中大部分或全部的故事/情節(jié)都是給定的,自動化系統(tǒng)產生的輸出是密切追蹤輸入的。例如,人們可能會給故事復述系統(tǒng)以某種簡寫或結構化形式來表述事實記錄,該系統(tǒng)可能會生成自然語言文本敘述,按順序傳達這些事實。在這種情況下,"故事 "是已知的,但講述的表面形式是可變的。至于什么是 "最小"的輸入集,是有爭議的。它應該是故事開始的單一提示(prompt)嗎?它應該是情節(jié)發(fā)展的起點和目標嗎?它應該是需要被填入的少量情節(jié)點嗎?給定的領域知識算是輸入嗎?對于機器學習系統(tǒng),我們是否應該考慮將訓練的語料庫作為輸入?這可能需要更多的工作,但我不愿意提供一個過于狹窄的定義。
2. 為什么要研究自動故事生成?Why Study Automated Story Generation?
我們可以從幾個角度來看待這個問題。首先是應用的角度。除了人工智能系統(tǒng)能夠寫出人們愿意閱讀的書這一宏大挑戰(zhàn)之外,故事講述(storytelling)出現在社會的許多地方。
人類與AI的協作:有些時候,通過敘事的方式進行溝通會更容易。例如,通過小故事(vignettes)進行交流有助于協調,因為它設定了期望值,以衡量行為的適當性。人類經常發(fā)現通過小故事來解釋更容易,而且通過小故事往往能夠更容易地處理復雜的過程性信息。
人類與AI的融洽關系:講故事和聽故事也是人類建立融洽關系的一種方式。
可解釋的人工智能: 解釋可以幫助人類理解人工智能系統(tǒng)的工作。對于連續(xù)的決策任務(sequential decision making tasks;例如機器人),這可能需要在解釋中加入類似于故事的時序成分。
電腦游戲:許多電腦游戲都有故事或情節(jié),這些故事或情節(jié)可以被生成或定制。超越了線性情節(jié)的交互式故事,是指用戶在故事中扮演一個角色,并能夠用他們的行動改變故事。為了能夠對用戶的新奇行動作出回應,需要有調整或重寫情節(jié)的能力。
訓練和教育:基于探究的學習使學習者處于專家的角色和場景下,而這些可以被生成以滿足教學需要(類似于上述互動故事)。
除了應用領域之外,故事的產生還觸及了人工智能的一些基本研究問題。為了創(chuàng)造一個故事,就需要用語言進行規(guī)劃。
為了講好一個故事,一個智能系統(tǒng)必須擁有大量的知識,包括關于如何講故事的知識和關于世界如何運作的知識。這些概念需要在智能系統(tǒng)的「心智」中打下基礎,從而它能夠講述前后具有一致性(coherent)的故事。這種基礎不一定是在視覺或物理操作方面;知識可以以共同的經驗(shared experience)為基礎。共同經驗與常識性推理(commonsense reasoning)有關,這是人工智能的一個研究領域,它被認為是許多實際應用的關鍵。
故事生成是了解一個智能系統(tǒng)是否真正理解了事物的一個很好的方法。要理解一個概念,必須能夠將該概念付諸實踐——講述一個概念被正確使用的故事,正是這樣做的一種方式。如果一個人工智能系統(tǒng)講述一個關于去餐館的故事——聽起來很簡單,但當系統(tǒng)把基本的細節(jié)搞得一團糟時,我們很快就會發(fā)現,它不理解的究竟是什么。
故事生成需要一個智能系統(tǒng)擁有心智理論(theory of mind),一個關于聽眾的模型,以推理出什么需要說或什么可以不說,并仍能傳達出一個可理解的故事。
3. 敘事學與敘事心理學 Narratology and Narrative Psychology
在深入技術之前,讓我們看看我們可以從敘事學(Narratology)和敘事心理學(Narrative psychology)中學習的一些東西。敘事學是一個人文學領域,關注敘事的研究。敘事心理學是心理學的一個分支,研究人類在閱讀故事時頭腦中發(fā)生了什么。
敘事學有很多的分支。作為一個技術人員,我發(fā)現結構敘事學 (Structural Narratology) 的價值最大,它為思考敘事的結構提供了框架。我發(fā)現他們的一些理論和框架是可操作的(這并不是說敘事學的其他分支沒有用,只是我還不能直接將他們的貢獻映射到系統(tǒng)工程中)。
結構敘事學在很大程度上借鑒了《敘事學:關于敘事的理論導論(Narratology: Introduction to the Theory of Narrative)(Bal(1998))》,其中從兩個層面分析敘事:
Fabula: 「Fabula」是指對從故事開始到結束期間發(fā)生在故事世界中的所有事件的列舉。在Fabula中,事件是按其發(fā)生的順序排列的,但這并不一定與故事被講述的順序相同。最值得注意的是,故事中的事件不一定都存在于最后的敘事中;有些事件可能需要從實際講述的內容中推斷出來。比如說。「約翰離開了他的房子。三小時后,約翰到達白宮。約翰嘀咕著交通堵塞的問題」。這個故事顯然包含了 「約翰離開家「和 「約翰到達白宮「以及 」約翰喃喃自語「這些事件。我們可以推斷出,約翰也開著車,并且被堵在了路上——這個事件沒有被明確提及,而且會發(fā)生在 "出發(fā) "和 "到達 "之間,而非在第一條線索給出后。
Sjuzhet: sjuzet 是 fabula 中實際通過敘事呈現給觀眾的那些事件組成的子集。它并不要求按照時間順序講述,允許采用倒敘、閃回、省略號(時間上的空白)、交錯、隨機化(隨機化)等非線性講述方式。
(譯注: Fabula 和 Sjuzhet這兩個詞實在找不到好的中文翻譯,關于它們之間的區(qū)分更具體的請參看英文維基百科條目:**Fabula and syuzhet**)
有些人進一步區(qū)分了第三層,即文本(text)或媒體(media),這是讀者/觀眾直接接觸交流的表面(surface)形式。文本/媒體是具體的文字或圖像,從中可以推斷出 Fabula 層面的敘事。
雖然在現實中,人類寫作者在上述所有三個層面上同時進行認知操作,但對故事生成系統(tǒng)的操作來說,fabula、sjuzhet 和文本間的區(qū)分是有用的。例如,一些系統(tǒng)使用了包含下述三個步驟的生成管線,其中(1)一個明確的 fabula 被生成為一個詳盡的事件列表,(2)通過選擇一個事件子集并可能重新排序來生成 sjuzhet,以及(3)生成自然語言句子,以更豐富和更可讀的細節(jié)描述 sjuzhet 中的每個事件。
敘事心理學的一個研究方向是讀者在閱讀故事時建立的心理模型(mental models)。敘事理解的心理學研究指出了因果關系在人類讀者建立故事事件之間關系時的重要性(Trabasso 1982)。在敘事中,兩個事件之間的因果關系是一種標識,即,時間上的后一個事件部分是由時間上的前一個事件的存在促成的(敘事的因果性(narrative causality)與統(tǒng)計學或貝葉斯推理中的不同,在統(tǒng)計學中,隨機變量之間的因果性意味著一個隨機變量的值會影響另一個隨機變量的值的分布)。敘述的因果性可以是由于直接原因(direct cause)——車輪從汽車上掉下來導致汽車墜毀——或通過使能(enablement)——如果不打開點火裝置就不會墜毀。
Trabasso(1982)認為,人類對敘事的理解涉及對故事中事件之間因果關系的建模。當事件e1發(fā)生在事件e2前,且如果e1沒有發(fā)生,e2就不可能發(fā)生時,兩個事件e1和e2之間就存在因果關系。雖然因果關系意味著e1導致e2,但更準確的說法是,因果關系的存在體現了使能(enablement)性:e1使得e2能夠發(fā)生(e1 enables e2)。Graesser等人(1991)假設,讀者也對故事世界角色的目標層次進行建模,認識到故事中的角色與現實中的人相仿,有自己的目標,并采取行動來使目標和意圖得以實現。有些事件是目標事件,有些事件是次級目標事件,是實現最終目標事件的必要步驟。例如,"約翰射殺弗雷德"這一事件可能是一個目標事件,之前還有一些次級目標事件,如"約翰買槍"和"約翰裝槍"。這些子目標事件在目標事件之前,也作為層次結構的一部分與目標事件相關。有些事件還直接導致角色形成一種意圖,這種意圖在故事的后期表現為目標事件(或至少是實現目標事件的嘗試)。例如"弗雷德威脅要綁架約翰的孩子"可能是一個導致約翰打算向弗雷德開槍的事件。這就以角色的心理狀態(tài)為中介,抓住了兩個事件之間的直接原因的概念。
4. 非機器學習的故事生成方法 Non-Learning Story Generation Approaches
讓我們談談具體的技術。我們的討論不可能是詳盡無遺的,所以我試圖建立一些籠統(tǒng)的類別,并給出每個類別的一些例子。這一部分考察那些并非基于機器學習的方法。非學習系統(tǒng)在自動故事生成的大部分歷史中占主導地位。盡管對自然語言輸出的強調減少了,但它們可以產生很好的情節(jié)。這些技術的關鍵性的本質特征——在大多數情況下——是對包含手工編碼的知識結構的知識庫的依賴。
4.1. 故事語法 Story Grammars
計算語法(Computational Grammar)是專門為判斷一個輸入序列是否會被機器接受而設計的。語法也可以反過來用來開發(fā)生成系統(tǒng)。已知最早的故事生成器(Grimes 1960)使用了一個手工設計的語法。其細節(jié)在很大程度上已被歷史所遺忘。

1975年,David Rumelhart(1975)發(fā)布了一個故事理解(story understanding)的語法。此后,Thorndyke(1977)提出了一個故事語法。

Black 和 Wilensky(1979)評估了 Rumelhart 和 Thorndyke 的語法,得出的結論是他們在故事的理解上并沒有什么成果。Rumelhart(1980)回應說 Black 和 Wilensky 誤解了。Mandler 和 Johnson(1980)認為 Black 和 Wilensky 是把嬰兒和洗澡水一起扔掉了。Wilensky (1982) 重新審視了故事語法,并對其進行了加倍的批評。Wilensky(1983)接著提出了一種語法的替代方案,叫做"故事點(story points)",它類似于情節(jié)點(plot point)的模式(見下一節(jié)),但并不是生成的。Rumelhart 繼續(xù)研究神經網絡,并發(fā)明了反向傳播算法(back-propagation algorithm)。
4.2. 故事規(guī)劃器 Story Planners
故事規(guī)劃器(Story Planner)的前提假定是:故事生成過程是一個目標驅動的過程。它將某種形式的符號規(guī)劃器(Symbolic Planner)應用于生成故事的問題。規(guī)劃器最后的輸出是一個動作序列,這個動作序列就是故事。
被公認為第一個「智能」故事生成器的系統(tǒng)是 Tale Spin(Meehan 1977)。Tale Spin 起源于故事理解(Story Understanding)領域的工作,將之逆轉過來成為故事生成的方法。Tale Spin 建立在兩個核心思想之上。首先是概念依賴理論(Conceptual Dependency Theory),這是一種關于人類自然語言理解的理論,(為了簡潔起見,)它將一切都歸結為少量幾個基本要素:ATRANS(轉移一種抽象關系,如占有),PTRANS(轉移物理位置),PROPEL(應用一種力量,如推),GRASP(抓住一個物體),MOVE(身體部位的移動)。其次是腳本(script),它是實現目標的程序性公式(由概念性的依賴關系組成)。給定一個角色的目標,Tale Spin 會通過挑選腳本來生成一個故事。這可能導致主角或其他角色的進一步目標和進一步的腳本選擇。

Tale Spin 的一個更值得注意的貢獻是「誤紡(mis-spun)」的故事,它體現了腳本的知識工程和故事質量之間有緊密關系,就像那些以有趣的方式失敗的例子所說明的那樣。


【譯注:是萬有引力將亨利移動到了水里,因此萬有引力一定與亨利在同一個地點,因此萬有引力也在水里。而萬有引力既不會游泳,又沒有翅膀不會飛,也沒有在附近的朋友來救它,所以不幸淹死了?!?/p>
隨后的 Universe 系統(tǒng)對「規(guī)劃(Planning)」的概念有了更現代的理解。我們現在將 Universe 稱為貪婪的分層任務規(guī)劃器(greedy hierarchical task planner)。Universe 有一個角色生成器 (Lebowitz 1984) 和一個故事規(guī)劃器 (Lebowitz 1985)。Universe 專注生成肥皂劇,它使用一個模版庫,表明一個場景是如何進行的。該模版可以引用子模版。從一個高層次的場景目標開始(例如,"攪亂一對情人"),系統(tǒng)會選擇一個描述如何使兩個角色不開心的模版。該模版將包含一些子目標。系統(tǒng)將通過迭代式地分解子目標來構建故事。


在90年代中期,符號規(guī)劃通過謂詞邏輯(Predicate Logic)變得更加形式化。準確地說,規(guī)劃器找到一個行動序列,將初始狀態(tài)(以事實命題列表的形式給出)轉變?yōu)槟繕藸顟B(tài)成立的狀態(tài)(以必須為真的命題列表的形式給出)。行動模版包括一個行動(action)、操作數(operands)、一個前提條件(precondition)和一個影響(effect)。前提條件是一組命題,必須為真才能執(zhí)行一個動作。影響是對世界如何在命題變成真的和變成假的方面發(fā)生變化的描述。

做規(guī)劃有很多方法。部分順序因果聯系(Partial-Order Causal-Link, POCL)規(guī)劃器通過尋求使目標條件成真的行動,然后尋求使這些行動的前提條件成真的行動,從目標向后反推到初始狀態(tài)。這個過程一直持續(xù)到初始狀態(tài)中列出的所有命題都能成立。有一種觀點認為,最小投入(Minimal commitement, lesat-commitment)規(guī)劃類似于讀者的心理模型,因為從某個行動的前提條件到另一個行動的結果的每一個鏈條都類似于「使能(enablement)」關系。

符號規(guī)劃器的一個問題是,「使能」關系并不是故事的唯一考量。如果一切都由先決條件的啟用來驅動,那么最終看起來就像所有角色都在為一個共同的目標——給定的目標狀態(tài)——而合作。我的Fabulist 系統(tǒng)(Riedl 2010)使用了一種新發(fā)明的POCL規(guī)劃器,它建立了一種規(guī)劃結構,其中包含了角色目標層次和角色意圖的表達。Fabulist 的框架由三部分構成:它首先生成一個作為 fabula 的規(guī)劃數據結構,再選擇行動作為 sjuzhet 的一部分,然后使用模板將行動渲染成自然語言。


Stephen Ware(2014)進一步修改了POCL規(guī)劃器,以確保角色沖突的出現(CPOCL)。規(guī)劃器通常喜歡避免沖突,因為沖突會打破角色的一個或多個規(guī)劃。


4.3. 基于案例的推理 Case Based Reasoning
基于案例的推理(Case based Reasoning)是關于智能的一種理論,其基礎是認為大多數推理并不是從某個」第一原則(First Principle)」出發(fā)進行的,而是將對相關問題的解決方案的記憶調整遷移到新環(huán)境中來實現的。當遇到一個問題時,行動者會去檢索一個較早的相關問題的解決方案,將舊的解決方案應用于新的問題,并調整舊的解決方案以更好地適應當前問題的需要,然后儲存新的解決方案。
我們有理由相信,人們也是通過將已有的故事改編到新的上下文中來講述故事的。基于案例推理的故事生成方法通常假定行動者可以訪問現有的故事庫,并使用上述的「檢索-應用-改編-存儲」的過程將一個舊的故事(或幾個舊的故事)轉化為一個新的故事。
Minstrel 系統(tǒng)(Turner 1993)可以說是最著名的,基于案例的故事生成系統(tǒng)。它使用了很多特殊的改編規(guī)則。

ProtoPropp 系統(tǒng) (Gervas et al. 2005) 后來使用了更具普遍性的改編技術。ProtoPropp 使用了Vladimir Propp對俄羅斯民間故事的分析 來構建一個案例庫。

Mexica 系統(tǒng)(Perez y Perez, Sharples 2001)將一種創(chuàng)意寫作理論操作化(operationalize)了。它交替進行兩個過程。第一個過程(參與, engagement)的操作有點像一個基于案例的推理器。它將迄今為止生成的故事與庫中的現有故事進行比較,以產生一些有趣的延續(xù)。這些延續(xù)并不能保證與現有的故事元素連接起來,所以第二個過程(反思, reflection)使用了一個看起來很像倒推規(guī)劃器的東西來修改新的片段,并添加新的動作來連接所有內容。

我的一些工作是試圖進一步調和基于案例的推理和 POCL 規(guī)劃(Riedl 2008),并對基于案例的故事規(guī)劃的改編適應階段做了一些仔細的探索(Li and Riedl 2010)。與基于案例的推理相關的是,通過類比推理(analogical reasoning)的故事生成(Riedl and Leon 2009)。SayAnything 系統(tǒng)(Swanson 和 Gordon 2012)是基于文本案例推理的一個例子。
基于文本的案例推理將大型文本語料庫視為一種「非結構化的」案例庫。大多數案例庫都是結構化的,以便于檢索和改編,因此對于非結構化的文本,檢索和改編的難度要大得多。SayAnything系統(tǒng)從博客文章中挖掘故事,并從博客故事中檢索片段以回應用戶寫的故事片段。該系統(tǒng)在人類和計算機之間輪流對故事進行補充。
4.4. 基于人物角色的模擬 Character-Based Simulation
上述方法可以被認為是以作者為中心的(author-centric, Riedl 2004)——故事生成者承擔了一個單一的作者的職責,負責策劃所有角色的所有行動和事件。
還有另一種生成故事的方法:對角色進行模擬。在以角色為中心(character-centric)的模擬中,每個角色都是一個能夠獨立進行思考判斷的個體。他們根據自己的信念、欲望和意圖,對環(huán)境和其他角色做出反應。這方面的一個例子是 Cavazza、Charles 和 Mead(2001) 的系統(tǒng),它使用了一個很現代的分層任務網絡規(guī)劃器(Hierarchical Task Network Planner, HTN)。每個行動者都有一個目標并指定自己的規(guī)劃。這些規(guī)劃可能會發(fā)生沖突,需要另外一個行動者進行重新規(guī)劃(在分層任務網絡規(guī)劃器中可以很快完成)。這個系統(tǒng)在技術上是一個交互敘事系統(tǒng)(interactive storytelling system),因為用戶可以向故事世界注入新的事實或信念,引起系統(tǒng)的重新規(guī)劃以作出回應。

幾乎所有能夠對環(huán)境變化做出反應的智能體技術都可以應用于以角色為中心的模擬方法來生成故事。模擬方法的局限性之一是,幾乎沒有保證角色開始執(zhí)行時將發(fā)生什么。理論上,如果模擬是在對演員(actor)進行建模,而不是對角色(character)進行建模,那么他們將有一些能力根據故事講述的原則做出決定(Louchart 和 Aylett, 2007),而不是完全從角色的視角運作(就像詹姆斯·邦德的模型與肖恩·康納利的模型區(qū)別)。在嘗試對即興戲劇演員進行建模的方面也有一些工作(Riedl,2010;Magerko 和 O'Neill 2012)。
5. 基于機器學習的故事生成方法 Machine Learning Story Generation Approaches
在本節(jié)中,我們將探討不使用神經網絡的機器學習方法。
非機器學習方法的挑戰(zhàn)之一是,絕大多數的非機器學習系統(tǒng)要么需要編碼成符號性故事模板(例如,分層級的情節(jié)模板、符號腳本、帶有前提條件和影響的行動模板、以符號格式存儲的案例等)。機器學習可用于獲取構建這些模板所需的知識。
Scheherazade 系統(tǒng)(Li et al. 2012, 2013)維護了一個情節(jié)圖(plot graphs)的存儲器,這些情節(jié)圖是部分排序(partially ordered)的圖,代表了某一主題的事件最可能的排序。例如,去餐館的情節(jié)圖可能有一些關鍵事件,如點菜、吃飯、付款、離開等等。圖中的有向邊代表時間順序的約束,例如,付款發(fā)生在離開之前。這些圖實質上類似于腳本,除了(a) 它們是部分有序的,而不是完全有序的;(b) 事件是任意的字符串。當 Scheherazade 被要求講述一個關于某個主題的故事,但卻沒有相應的情節(jié)圖時,它就會以眾包(Crowdsourcing)的方式尋找故事例子,然后從最常提到的事件中學習最可能的排序約束而學習出一個情節(jié)圖。該系統(tǒng)沒有一個規(guī)定的字典來解釋什么是 "事件"——一個事件是一組語義相關的字符串。一旦學會了情節(jié)圖,生成過程就會選擇不違反時間約束的事件節(jié)點。由于事件是眾包語料庫中語義相關的句子集群,最終的故事可以通過選擇一條節(jié)點的線性序列,然后從每個節(jié)點中選擇一個句子來產生。


手心發(fā)汗、心跳劇烈的約翰開車到了薩利家里進行他們的第一次約會。薩利美麗的裙子在風中飄舞著,她小心地坐進了約翰的車里。約翰和薩利開車到了電影院。約翰和薩利在停車場停好了車。安心起見,約翰提前買好了電影票。一個臉色蒼白的招待員站在門前,約翰展示了電影票,兩人入場了。薩利覺得口渴,于是約翰趕在電影開始前急忙去買了飲料。約翰和薩利在后排找到兩個不錯的位置。約翰坐下來,升起了座位扶手,這樣他們就能靠在一起。約翰在電影放映中更加關注薩利,并且緊張地小口喝著他的飲料。他終于做好了心理準備,伸出手臂去擁抱薩利。他感受到薩利靠過來以示回應,感到狂喜和釋然。薩利在電影中途起身去上廁所,在出口前扭捏地向約翰微笑。他們兩人在電影中途還一直牽著手,盡管約翰的手上全是汗。兩人緩慢從座位上站起來,手還繼續(xù)牽著。穿過急行的人群組成的迷宮,約翰陪薩利走回了車里。約翰為薩利打開門,兩人離開黑暗的電影院,走到大街上,他一時被陽光閃瞎了。約翰放開了薩利的手,打開了車門。然而薩利沒有進入車里,而是向前一步抱住了約翰,給了他一個深吻。約翰開車送薩利回了家。
6. 基于神經網絡的故事生成方法 Neural Story Generation Approaches
在過去的幾年里,神經網絡在文本方面的能力有了穩(wěn)步提高。關于基于神經網絡的故事生成技術的文獻正在迅速增多,這就要求我在寫作時只能關注一些我認為值得注意的系統(tǒng)和工作。
6.1. 基于神經網絡的語言模型 Neural Language Models
一個語言模型能根據前文出現的符號(token)序列的歷史,學習接下來出現一個符號或者符號序列的概率。該模型是在一個特定的文本語料庫中訓練的。文本可以通過從語言模型中采樣的方式生成。從一個給定的提示(prompt)開始,語言模型將提供一個或多個符號作為延續(xù)文本。提示加上得到的后續(xù)文本可以輸入語言模型以獲得再接下去的后續(xù)文本,以此類推。在故事的語料庫上訓練語言模型,意味著語言模型將試圖模仿它從語料庫中學到的東西。因此,從一個在故事語料庫上訓練的語言模型中采樣,往往會產生看起來像故事的文本。
諸如長短時記憶(Long Short-Term Memory,LSTM) 和門控循環(huán)單元(Gate Recurrent Unit,?GRU)的循環(huán)神經網絡(Recurrent neural networks, RNN)最初被探索用于文本生成(Roemelle and Gordon 2017,Khalifa et al 2017)。最初,如果故事訓練語料庫過于多樣化,基于 RNN 的語言模型將很難產生不顯得過于隨機的序列。這是由于稀疏性(sparsity)導致的——每個故事都很獨特,故事中的任何句子或事件都可能是唯一的或幾乎是唯一的。這使得在故事語料庫上訓練語言模型很困難。
Martin et al.(2018)通過將自然語言中的故事轉換為事件元組?e = <s, v, o, p, m>
?的方式來解決這個問題,其中 s 是主語,v 是動詞,o 是動詞的直接賓語,還有,p 是介詞,m 是伴隨著介詞的一個可選的附加名詞。例如,"Sally 多次在臥室里向她的出軌男友開槍" 將被表示為<Sally, 開槍, 男友, 位于, 臥室>。通過用?WordNet?的語義詞類(校注:WordNet 是一個大型的英語詞匯數據庫。名詞、動詞、形容詞和副詞被分成一組組的認知同義詞 (同義詞組) ,每一組都表達一個不同的概念,通過概念-語義和詞匯關系相互聯系。)或?VerbNet?的語義動詞框架類來替換元組中的詞,例如上述元組可以變?yōu)?<person-1, murder-42.1, male.2, in, area.5>
?,進一步抽象化了這些概念。理論上,這減少了稀疏性,而且事實表明,生成器可以學會產生比使用原始文本時更好的事件序列。但這種方法有一個問題是,人類很難讀懂事件元組,因此他們引入了第二個神經網絡,將事件元組轉換為完整的句子。句子的 "事件化(Eventification) "是一個有損的過程,所以這個神經網絡的任務是以增加上下文的方式恢復信息。這是一個具有挑戰(zhàn)性的難題,相當于用自然語言重新講述一個抽象的故事。人們發(fā)現,使用集群(ensemble)的效果最好(Ammanabrolu 2020)。

單一的語言模型并不能很好地區(qū)分人物角色,這些角色只是一些符號(tokens)。Clark、Ji and Smith(2018)的工作是學習再現出不同的實體,這樣就可以生成出關于不同角色的故事。
6.2. 可控的基于神經網絡的故事生成 Controllable Neural Story Generation
神經網絡的語言模型的主要局限性之一是,它們是根據前文符號序列生成后續(xù)符號的。由于它們是回頭看的(backward-looking),而不是向前看的(forward-looking),所以不能保證神經網絡會產生一個含義連貫(coherent)的文本,或驅動到一個特定的敘事點或目標。此外,故事越長,早期的上下文被遺忘的就越多(要么是因為它不在可允許的上下文窗口內,要么是因為神經注意機制更偏重更近的歷史)。這使得基于神經語言模型的故事生成系統(tǒng)變成了「花哨的胡言亂語者(fancy babblers)」——這些故事往往有一種意識流的感覺。大規(guī)模的預訓練的 Transformer 模型,如?GPT-2、GPT-3、BART?等,通過允許更大的上下文窗口,幫助解決了一些 "花哨的胡言亂語 "的問題,但這個問題并沒有完全解決。作為語言模型本身,它們無法處理具有前瞻性的問題,以確保它們是朝向某些未來的東西建立的,除非是碰巧。
Tambwekar et al.(2019)使用強化學習(Reinforcement Learning)來微調(fine-tune)一個序列到序列(sequence-to-sequence)的語言模型,以生成朝向特定敘事目標發(fā)展的故事后續(xù)。
強化學習,一般來說,是一種可以用來解決序列決策問題(sequential decision-making)的技術。然而語言模型的潛在空間對于真正的試錯法(trial-and-error)學習來說太大了。強化學習器是作為一個不可求導(non-differentiable)的損失函數(loss function)來使用的。而強化學習器如何知道故事后續(xù)是否正在接近一個特定的目標的呢?該系統(tǒng)從故事語料庫中提取動詞的模式,根據每個動詞離目標的遠近對它們進行聚類(clustering),然后當語言模型產生的后續(xù)中有一個動詞在下一個聚類中更接近目標時,就對它進行獎勵。


雖然通常語言模型得到的提示(prompt)輸入是故事的第一行,但神經語言模型也可以以故事中需要出現的情節(jié)點為條件進行生成。這增加了某些事件在故事生成過程中發(fā)生的概率。
分層融合模型(Hierarchical fusion model, Fan et al, 2018)采用對故事內容的一句話描述,而產生一個段落。

Plan-and-write(規(guī)劃與寫作)技術(Yao et al,2019)也采用了分兩層的方法。Plan-and-write 系統(tǒng)并非去學習生成一個單一的,在大體上描述情節(jié)的句子,而是學習生成一連串的關鍵詞。然后,這些關鍵詞中的每一個都被用來提示語言模型,使其產生關于該關鍵詞的內容。如果關鍵詞呈現出含義連貫的情節(jié)發(fā)展,那么更具體層次的闡述內容也會如此。

PlotMachines(Rashkin et al,2020)根據用戶提供的一組概念短語來提示故事生成器。然而,系統(tǒng)不是將這組概念短語作為大綱來闡述,而是自行決定以何種順序來引入這些概念。

另一種控制故事走向的方法是提供故事中的關鍵情節(jié)點,然后讓模型填寫中間的部分。Wang, Durrett, and Erk (2020)?試圖在故事的給定開頭和給定結尾之間進行插補(interpolate)。然而,他們使用的語言模型不知道如何處理結尾的提示詞。然而,他們從開頭的提示詞開始,生成一些候選,并使用一個重排序器來判斷整體的一致性(開頭、中間和結尾),選擇其中最佳的。Ippolito et al.(2019)提出了一種內填法(in-filling approach),他們使用給定的故事開頭和結尾,并生成可能在故事中間發(fā)現的關鍵詞。然后,這些關鍵詞被用來提示一個語言模型,生成故事的中間部分。
6.3. 神經-符號性故事生成 Neuro-Symbolic Generation
基于神經網絡的語言模型的一個問題是,神經網絡(無論是循環(huán)神經網絡還是transformer)的隱藏狀態(tài)(hidden states)只代表了根據先前的上下文歷史做出可能的詞匯選擇所需要的東西。而神經網絡的 "狀態(tài) "不太可能與讀者正在構建的關于世界的心理模型相同,后者側重于角色、物體、地點、目標和原因。從符號系統(tǒng)到神經語言模型的轉變,將重點從對讀者的建模轉為對語料庫的建模。這是有道理的,因為故事語料庫形式的數據是現成的且可用的,但讀者形成的心理模型形式的數據卻并非如此。假設有一種正確的能將讀者心理模型符號化的理論,我們能否建立一種神經-符號系統(tǒng)(neurosymbolic systems),將神經語言模型的優(yōu)勢與符號模型的優(yōu)勢結合起來?基于神經網絡的語言模型通過在語言而非有限的符號空間中操作,給我們提供了非常大范圍的輸入和輸出空間的某種健壯性(robustness)。但基于神經語言模型的故事生成從故事含義的一致性角度上來看則退步了。另一方面,符號系統(tǒng)通過邏輯和圖形約束在一致性方面表現出色,而其代價是有限的符號空間。
Lara Martin?(Dissertation, 2021) 提議采用 GPT-2 這樣的神經語言模型,并用因果關系的推理來約束它。GPT-2 作為一個語言模型,可以根據先前的單詞符號的歷史,概率性地生成故事的后續(xù)。Martin 的系統(tǒng)會解析生成的后續(xù),并使用 VerbNet 來推斷讀者對該句子的前提條件和影響會有什么認識。如果后續(xù)句子的前提條件沒有得到故事中先前句子影響的支持,那后續(xù)句子就被拒絕。如果前提條件得到支持,那么該句子所產生的影響,就會更新一套描述世界的類似邏輯化的命題。這些命題之所以從 VerbNet 中提取,正是因為它們是基于讀者從閱讀句子中可以推斷出的內容,可以被認為是一個簡單的讀者模型(reader model)。通過追蹤這個假設性的讀者模型,這個系統(tǒng)就不太再會以對讀者沒有意義的方式,從一個事件過渡到另一個事件。

CAST 系統(tǒng)(Peng et al,2021年)做了與上述神經符號性生成系統(tǒng)類似的事情。
CAST 使用 COMET 常識推理模型作為世界引擎。它推斷出故事中角色的需求和愿望,并試圖與之前事件中角色的需求和愿望相匹配。超越了前提條件和影響,角色的目標和意圖是讀者追蹤故事含義一致性的另一種方式。

6.4. 其他基于神經網絡的方法 Other Neural Approaches
從語言模型中直接采樣故事的后續(xù)文本,并不是使用神經網絡生成故事的唯一合理方式。人們可以想象類似于某些類似搜索算法,將神經網絡作為決策的資源。
很多故事都涉及常識性知識。常識性知識(commonsense knowledge),或者更具體地說,共享性知識(shared knowledge),是指人們可以假設大多數人都持有的知識。為了創(chuàng)造一個對人類讀者來說有意義的故事,利用常識性知識可能是有利的。像?COMET?和?GLUCOSE?這樣的神經網絡經過訓練,可以接受輸入的句子,并對人類可能推斷的內容做出推斷。C2PO 系統(tǒng)(Ammanabrolu et al,2021)接受一個起始事件和結束事件,并試圖填補故事的中間部分。它沒有使用語言模型,而是使用 COMET 來推斷大多數人類可能認為在故事開始之后的下一步是什么,以及在故事結束之前可能出現什么。這個過程不斷重復,創(chuàng)造出一個由合理的后繼和前驅情節(jié)組成的有向無環(huán)圖,直到找到一條從起點到終點的完整路徑。


前面提到的關于敘事心理學的工作建立了故事一致性(coherence)和問題回答(Question answering)的任務之間的聯系。因此,故事生成的另一種方法是將語言模型作為一種資源來進行查詢,以回答關于故事世界的問題——這些精心選擇的問題的答案成為故事內容本身。
Castricato 等人(在第三屆敘事理解(Narrative understanding)研討會上)對此進行了探討。他們從一個關于故事結局的句子開始,倒過來生成一個故事。他們生成一些關于故事如何達到這個結局的合理問題,訓練一個能夠生成解釋的語言模型來回答這個問題,然后把生成的解釋作為故事的前一段。然后他們用最后一個片段作為問題的來源,重復這個過程。從理論上講,這樣做的結果是使故事在含義上更加連貫,因為每一個添加到故事中的片段都能解釋后來的內容。

7. 結論 Conclusions
自動故事生成這個領域經歷了許多階段性轉變,也許再沒有比從「非機器學習型」的故事生成系統(tǒng)到「基于機器學習」的故事生成系統(tǒng)(尤其是神經網絡)的轉變更重要的了。
符號化的故事生成系統(tǒng)能夠生成合理的、長且含義連貫的故事。這些系統(tǒng)的能力主要來自于良好組織的知識庫。但這些知識庫必須手工構建,這限制了系統(tǒng)所能產生的內容。當我們轉向并獲得了神經網絡的力量后,我們可以從語料庫中獲取和利用知識。突然間,我們能夠在故事生成系統(tǒng)中生成更大的故事空間并涉及更多的主題。但是,我們也拋開了很多關于讀者心理,以及通過豐富知識結構推理以實現故事含義連貫性的能力。即使增加神經網絡語言模型的規(guī)模,也只是推遲了神經網絡生成的故事中不可避免的前后一致性的崩潰。
像這樣的入門材料使我們更容易記住以前走過的路,以防我們把嬰兒和洗澡水一起倒掉。這并不是說不應該追求基于機器學習或神經網絡的方法。如果有退步,那是因為這樣做給了我們一個強大的新工具,有可能帶我們走得更遠。在自動化故事生成方面工作的令人興奮之處在于,我們確實不知道前進的最佳路徑。還有很多新想法的空間。

日 | 落譯介計劃? 是媒介實驗室落日間對一些有助于思考游戲/電子游戲的外文文本翻譯和推薦/索引計劃。(請查看網站?xpaidia.com/sunset-project/)。?
E32 賽博文本中的幽靈作者
E21 Ghost x Shell 人工智能與游戲 [0]
Stephan Wolfram 作為多重計算系統(tǒng)的游戲和謎題 (2022)
感謝支持落日間的朋友們!
歡迎贊賞或贊助落日間 (xpaidia.com/donation/)