惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog
大猫的无限游戏
大猫的无限游戏
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
腾讯CDC
S
Securelist
Know Your Adversary
Know Your Adversary
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - 【当耐特】
V2EX - 技术
V2EX - 技术
J
Java Code Geeks
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
Cisco Talos Blog
Cisco Talos Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
W
WeLiveSecurity
S
SegmentFault 最新的问题
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
宝玉的分享
宝玉的分享
博客园 - Franky
S
Security Affairs
博客园 - 司徒正美
V
V2EX
K
Kaspersky official blog
T
Threatpost
NISL@THU
NISL@THU
博客园 - 叶小钗
Help Net Security
Help Net Security
PCI Perspectives
PCI Perspectives
IT之家
IT之家
小众软件
小众软件
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Last Week in AI
Last Week in AI
Jina AI
Jina AI
爱范儿
爱范儿
罗磊的独立博客
N
News and Events Feed by Topic
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
P
Proofpoint News Feed
L
LINUX DO - 热门话题
Google Online Security Blog
Google Online Security Blog
雷峰网
雷峰网
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint

机核

游戏性能旗舰最强之选,一加 Ace 6 至尊版国补到手价2999元起 6元钱自己更换电动车刹车线 《生化危机9:安魂曲》编剧Haris Orkin专访 摸金游戏?音乐游戏!暗区新赛季这把能弹的琴有何来历? 好评国产武侠SRPG《息风谷战略》免费DLC现已推出 | 机核 GCORES 碎片 《生化危机:安魂曲》将于5月实装首个免费更新内容 | 机核 GCORES 新锐东方游戏,谱写世界新章! 沉浸式恋爱视觉小说游戏《心象演算》免费试玩版现已正式上线 | 机核 GCORES 互动影游《代号三国:龙起》上线!穿越三国与曹操并肩、与佳人同行、与权谋博弈! 《老头收集梦想生活》,游戏酒桌会6,录音笔VOL.689 | 机核 GCORES 破界·共生——《白日梦:无限世界》五大核心游戏特点解析 价格已到史低,锐龙5 9600X/锐龙7 9700X正适合抄底 时间循环之旅即刻启程!《归环》一周目测试今日开启 热门在线韩游变魂游,洛奇衍生作能否打破“花瓶”魔咒? LG UltraGear evo 全新高端显示器系列:当“5K”遇见“AI”,不止强大,更懂热爱 反套路三国互动影游《代号三国:龙起》今日上线! 愿望单登记人数突破10万!备受瞩目的“女儿养成游戏” 《梦幻魔法公主》今日于Steam平台上线!限时八折优惠中 《黑神话:悟空》全球音乐会2026巡演将于4月29日12时开票 | 机核 GCORES “Snowguelike”生存肉鸽挖矿新作《蛙穿雪境》公布发售日期,5月7日正式上线 | 机核 GCORES 重塑移动办公、AI创作新境!全新华硕灵耀Air系列、ProArt 骁龙版震撼首发,创芯未来 均分88:《Saros》媒体评分汇总 | 机核 GCORES 上海烛龙公布合作遗迹探险游戏《吉时已到》首支预告片 | 机核 GCORES 首个独立游戏《萝薇日记》已上线Steam! 烛龙新IP《吉时已到》首曝,打造国内首款中式合作遗迹探险游戏 喜加一:《暗黑破坏神Ⅳ》国服现已开启限时免费领取本体活动 | 机核 GCORES 新版《生化危机》电影定于9月18日上映,官方网站现已上线 | 机核 GCORES 《冲就完事模拟器2》“星球大战”联动DLC正式宣布 | 机核 GCORES SteamController将于5月4日发售,售价99美元 | 机核 GCORES 事已至此,内存这么用也算省钱了,“2+1”非对称双通道应用实测 505游戏母公司现已收购《明末:渊虚之羽》IP | 机核 GCORES 基石 手动杂谈12|格斗游戏也能讲好故事 | 机核 GCORES I Love You Mr Snowball 我的向日葵小姐 会比GTA6先发售吗?最硬核的生存游戏《DAYZ》要推新DLC了 周记02:在2026遇到新怪谈 什么硬件,能让游戏Loading界面快速消失? | 机核 GCORES GadioSpec《百年风云世界杯》免费试听集 | 机核 GCORES 百年风云世界杯Vol.1丨足球崛起 | 机核 GCORES 100年前,一群人提前替我们经历了AI恐惧 | 机核 GCORES 《呼啸山庄》2026 ——一辆当代艺术的大卡车冲撞了我的大脑 手游《天穗之咲稻姬:日之香巡灵传》宣布将于7月27日停服 | 机核 GCORES 集结梦之队,征战世界杯,《最佳球会ONLINE》上线Steam 山水绝景随心拼 休闲建造游戏《千里山河录》Steam商店页公开 巫师帽、法袍、魔杖,为什么它们是影视、游戏里的法师必备三件套? 《无鞘信使》-第一章 复古风自动战斗肉鸽《终结之终结》Steam商店页面现已上线 电脑里有一款不破不立的MMO,录音笔VOL.688 | 机核 GCORES 《生化危机》30周年纪念周边发售,这次是真的“保护伞” 可靠耐用+AI全能,惠普战66 2025锐龙版深度体验 《时之书:无尽终章》关卡“大航海时代”全球首次公开 经典名作《乌龙派出所》改编经营模拟游戏《乌龙派出所~阿两的商店街物语~》正式宣布支持简体中文 明日开冲,解锁反套路三国互动影游《代号三国:龙起》即将上线 独立游戏《这是我的宝藏!》已发售~ 降低难度不是唯一解,无压力死亡也是好体验 Netflix官宣新片《普通人》:讲述韩国现代史上的权力风暴 《生化危机:安魂曲》全球销量现已突破700万份 《绝地鸭卫》PC版5月15日正式发售 亡妻回忆录?女性向情感叙事游戏《S-mail》现已正式发售 全新酷黑风格,酷睿Ultra 200S PLUS的高性价比搭档!七彩虹BATTLE-AX B860M-PLUS S WIFI7 V20 超级黑刃主板测评 胖狗 索尼发布了港台地区PS5产品价格调整公告,将于5月1日起实施 二次元怪猎+性感美女!《碧蓝幻想:无尽黄昏》开启Beta公测 这款怪谈类型中式恐怖游戏居然更新了?! 《百日战纪 -最终防卫学园-》改编漫画将于今年冬季开启连载 《如被附身,请致电我们》:匈牙利黑色幽默恐怖小说 《竹屿山房杂部卷五》(译文) 大树 超越引擎 摄影分享丨四月 碎片杂记vol.72 当老式FPS与老式动画技术碰撞出新时代的火花—《神探杰克鼠》 想做独游,如何避免首个项目就褒姒? 在线多人动作游戏《OCTOPinbs》将于5月12日上线Steam! 《酒鬼女神的酒诡》确定将于2026年登陆Steam 《CRYMELIGHT》将于11月5日(周四)正式发售!4月25日开始预购! 钢铁国度MKI部落Evolution,蛮兵部分 【钢铁国度】部落-Primal MK I,蛮兵部分 这是一个高中生用ai跑出来的作品,我自称他为物理神话 钢铁国度MKI部落Metamorphosis,蛮兵部分上 钢铁国度MKI部落Metamorphosis,蛮兵部分下 INDIE Live Expo于4月25日举办:首发9款新作,超200款独立游戏亮相 暗黑卡牌策略新作《魔忌:穷鼠啮狸》发布全新中文试玩版和发售预告片,4月30日正式上线在即 战锤40K长篇小说:变节者・苦难主宰(三)(全书完) 战锤40K长篇小说:变节者・苦难主宰(二) 战锤40K长篇小说:变节者・苦难主宰(一) 英语语言学习丨短语专题1:短语的特点 唯一的EVE战争 【少前同人】【M200】战术人形会梦见音乐会吗 【昏迷3】即将发售,前作主角悉数到场!“恶灵”宋老师化身可操控角色 业内人士:游戏公司“十有八九”使用生成式AI,包括卡普空 欢庆一周年:《光与影:33号远征队》全新纪念艺术图、超值折扣与免费更新同步上线 才刚刚开始呢 【抽奖】《星际卡车司机》推出免费大型更新,四折平史低折扣进行中 四人合作FPS游戏《佣兵猎手》抢先体验重大更新 1 现已上线 Raw Fury新作《深馅地牢 Deep Dish Dungeon》将于今秋加入 XGP 塔防幸存者游戏《魔怪来袭》推出首个 DLC 《饿狼传说:群狼之城》1周年纪念!新DLC“沃尔夫冈·克劳萨”今日参战 猫狗相伴 欢乐闯关 双人合作平台跳跃游戏《猫狗同行》上线Steam商店页 《同行:月球逃脱》(Together: Moon Escape)上线将于明日上线Steam
基于大数据的语言模型与程序化叙事生成(下)
低多边形厌氧菌 · 2023-01-20 · via 机核

基于大数据的语言模型与程序化叙事生成(上)中,我们介绍了通过语言模型生成文本叙事的基本原理。其中我们简单地引出了这种叙事方法存在的可控性问题、言之无物问题和前后一致性问题。

这一章,我们来具体讨论这几个问题和可能的解决方案,以及基于语言模型的文本叙事生成与2018年的文章故事工程学:人工智能与程序化叙事生成所介绍的那些方法之间的关系。

如何控制语言模型生成的叙事

一直以来在我们的概念中,指挥计算机做事的方法就是通过编程,我们要去学习一整套有严格的语法和语义的编程语言,了解这些编程语言中的指令是如何在计算机的运作过程中起作用,设计好想要计算机执行任务的整个过程后,再翻译成能够实现这个过程的代码,最后编译成程序。

这是一个容错性非常低的任务,程序必须完全准确无误,才能让计算机做我们想让它做的事,因此对用户的专业技能要求也很高。

这个特征也反映在传统的叙事生成方法中。传统的叙事生成方法非常依赖于一个故事域的定义,这个故事域要定义清楚所有可能发生的事件,每个事件发生的前置条件是什么,发生之后又会对世界状态产生什么影响。有了这个故事域的定义,算法才能去搜索满足用户要求的事件序列。

这也是一个容错性极低的过程,故事域的定义完全不能模棱两可、不能存在信息缺失,否则生成的故事就会产生各种荒谬的错误。我在过去的文章《Cybertext》读书笔记(六):文本创作机器中介绍过著名的童话故事生成程序Tale-spin由于故事域的定义问题产生的一些掉链子的故事。

而跟机器交代任务的这种方式,跟与人类交接任务的情况非常不一样。想象我们现在是在委托一个职业写手来帮我们写一段“某个对玩家团队非常忠诚的NPC最后却背叛了大家”的中世纪背景下的跑团剧情。

首先,我们肯定不会把所有中世纪背景下的跑团故事所有可能发生的事件全部列成一个清单交给对方——我们一般认为只需跟对方说“中世纪背景下的跑团”,对方就应该对哪些事件可以发生、那些事件不会发生有了基本的概念。 我们也不会跟对方精确定义“背叛”的概念,因为对方应该也对这个概念有自己的理解了。我们只需要用自然语言跟对方描述,这个故事中应该有“某个对玩家团队非常忠诚的NPC最后却背叛了大家”的桥段。

因为自然语言也是对方熟悉的语言,而且我们与对方身处相近的文化环境和社会环境中,从小到大的经历有相当多的共通之处,对自然语言中的各种各样的概念的理解,应该大致上是相通的,这构成了我们沟通的基础。

而大数据语言模型,事实上也是想要通过从超庞大语料库中的学习,来模拟这样一个“对自然语言中的概念与人类有相当多的相通之处”的人工智能系统。

虽然这个模拟与真实之间还存在很大差异,在“究竟有多少相通之处”这一点上也有非常多的争议:比如我们可能会问,并未与我们身处同一个文化环境和社会环境、也没有从小到大与世界互动的经历的AI,它对语言的理解跟我们究竟能相似到什么程度?

但从原则上说,如果我们接受“它是对一个说着自然语言的人的模拟”,就应该像与一个说着自然语言的人交代工作那样,用自然语言对它说,“写一段某个对玩家团队非常忠诚的NPC最后却背叛了大家的中世纪跑团故事桥段”。 于是,我在ChatGPT中输入:

写一段某个对玩家团队非常忠诚的NPC最后却背叛了大家的中世纪跑团故事桥段。

ChatGPT的回答是:

NPC叫做亨利,是玩家团队的一名非常忠诚的成员。他总是在战斗中率先冲锋,并且从不犹豫地为团队成员提供援助。玩家们都非常信任他,并且深信他永远不会背叛他们。然而,当玩家们被一支强大的敌人围攻时,亨利突然变卦了。他开始与敌人合作,并且帮助他们攻击玩家团队。玩家们感到震惊和愤怒,试图解释亨利的行为。但是,亨利冷酷地告诉他们,他只是为了自己的利益而背叛了他们,并且不会为此感到羞愧。玩家们被迫不得已自己逃脱,并且永远不会忘记亨利的背叛。

这个故事确实跟我的指示非常符合,但似乎过于空洞、缺少细节,于是我指示说:

改写上面的故事,加入更多细节。

ChatGPT给出的第二版故事是:

NPC叫做亨利,是玩家团队的一名非常忠诚的成员。他总是在战斗中率先冲锋,并且从不犹豫地为团队成员提供援助。他的勇气和冒险精神令人敬佩,而他的忠诚和友好态度也让团队成员们都非常信任他。团队成员们和亨利一起经历了许多冒险,他们共同解决了各种各样的难题,并且在战斗中取得了巨大的胜利。在这些冒险中,亨利总是是团队中最可靠的成员之一。所以,当团队面对着一支强大的敌人围攻时,没有人会想到亨利会背叛他们。然而,亨利突然变卦了。当敌人围攻时,他开始与敌人合作,并且帮助他们攻击玩家团队。 玩家们感到震惊和愤怒,试图解释亨利的行为。但是,亨利冷酷地告诉他们,他与敌人签订了一项协议,换取金钱和地位上的提升。他不顾及团队成员的生命安全,只为了自己的利益而背叛了他们。玩家们被迫不得已自己逃脱,并且永远不会忘记亨利的背叛。在此之后,团队成员们决定抵制亨利,并在之后的冒险中不再与他合作。亨利因此孤立无援,最终被敌人所杀。然而,对于团队成员来说,他的背叛带给了他们巨大的心理创伤,使得他们在之后的冒险中更加谨慎,并且永远不会再相信任何人。这次的事件也教会了他们,在冒险的道路上,真正的忠诚和信任是非常珍贵的,而背叛则会带来永恒的痛苦。

这段话确实更具体了,但我还是觉得不满意。因为NPC的背叛显得很突然,没什么来由。我突然想到一个点子,如果NPC其实是个很善良的人,但还是背叛了,整个故事会更有戏剧性。于是我又对ChatGPT指示说:

改写上面的故事,突出亨利其实很善良,但迫不得已还是背叛了大家。

这次得到的第三版故事是:

NPC叫做亨利,是玩家团队的一名非常忠诚的成员。他总是在战斗中率先冲锋,并且从不犹豫地为团队成员提供援助。他的勇气和冒险精神令人敬佩,而他的忠诚和友好态度也让团队成员们都非常信任他。团队成员们和亨利一起经历了许多冒险,他们共同解决了各种各样的难题,并且在战斗中取得了巨大的胜利。在这些冒险中,亨利总是是团队中最可靠的成员之一。所以,当团队面对着一支强大的敌人围攻时,没有人会想到亨利会背叛他们。然而,亨利突然变卦了。当敌人围攻时,他开始与敌人合作,并且帮助他们攻击玩家团队。 玩家们感到震惊和愤怒,试图解释亨利的行为。亨利深感内疚,他告诉他们,他被迫害者威胁到了,他必须为了保护自己的家人而做出了这样的事情。亨利表示他很抱歉背叛了大家,并祈求他们的原谅。玩家们虽然对此感到失望,但他们也能理解亨利的处境,最终还是决定原谅了亨利。然而,这次的背叛对团队来说是一次巨大的打击,他们不得不重新建立起对彼此的信任。亨利意识到自己的错误,决定为自己的行为付出代价,并努力重新赢得团队成员的信任。他再次成为了团队中最可靠的成员之一,并在之后的冒险中为团队作出了巨大贡献。这次的事件也教会了团队成员,在冒险的道路上,信任是可以重建的,而人性有时也会让我们做出错误的决定。

故事渐渐丰满了起来,但我还是觉得NPC的背叛缺少铺垫,于是我又指示说:

重写上面的故事,给亨利的背叛更多铺垫。

ChatGPT给出第四版故事:

NPC叫做亨利,是玩家团队的一名非常忠诚的成员。他总是在战斗中率先冲锋,并且从不犹豫地为团队成员提供援助。他的勇气和冒险精神令人敬佩,而他的忠诚和友好态度也让团队成员们都非常信任他。亨利来自一个贫穷的家庭,他的父亲早早失去了生计,母亲带着他们生活着。亨利希望能够改变自己的家庭状况,于是他加入了这支冒险队伍,希望能够掌握更多的技能并赚取到更多的财富。然而在一次冒险中,亨利意外得知他母亲生病了,医疗费用非常昂贵,而他手头上的钱不够。他陷入了绝望之中,不知该怎么是好。就在这个时候,他被敌人所控制,要求他为了换取足够的钱去背叛自己的队友。亨利犹豫了许久,最终还是因为对家人的担忧而做出了背叛的决定。 当玩家们发现亨利的背叛时,他们感到震惊和愤怒,试图解释亨利的行为。亨利深感内疚,向他们坦露了自己的窘境,并祈求他们的原谅。玩家们意识到亨利的处境,也能理解他为了家人而做出的决定。但是同时,这次背叛对团队来说是一次巨大的打击,他们不得不重新建立起对彼此的信任。亨利为此感到内疚和痛苦,并决定离开队伍,去寻找自己的道路。这次的事件让团队成员意识到,在冒险的道路上,人性有时会让我们面临极端的选择,而背叛并不一定是出自恶意,有时也是出自无奈。同时,这次事件也教会了他们,在冒险的道路上,信任是可以重建的,而人性有时也会让我们做出错误的决定。

这个版本已经很接近一个我想要的故事骨架。这个修改的过程还可以继续下去,来增加更多的细节信息。

可以看到,上面这个与ChatGPT合作迭代故事版本的过程,其实已经很接近跟一个人类写作者的合作方式:委托方提出需求,然后写手根据需求写出一个草稿,委托方看到草稿后会意识到一开始需求的问题——需求可能不够具体、可能不切实际、可能让对方产生误解、可能并没有准确反映出自己想要的东西等等——于是修改需求,然后写手根据新的需求写出新版本,如此迭代下去,直到最后得到委托方满意的作品。

在这个过程中,不仅仅需求和作品得到修正和迭代,委托方与写手之间的沟通方式也在得到修正和迭代。虽然双方使用的都是自然语言,但是这个世界上不可能有两个人的生活和文化经历完全相同。这些经历上的不同导致两个人对自然语言表述的概念(尤其含义较为抽象的概念),难以避免地会有偏差。而这些偏差,只有双方在不断的沟通尝试之中加深对对方的了解,才能逐渐克服,使自己的沟通方式更加适用于对方。

而与一个基于语言模型的AI沟通也是这样。AI虽然使用着同样的自然语言,但是不像人类通过实实在在的生活经历获得对语言中各种概念的理解,AI对语言的理解完全只来自于训练时接触到的语料库。这意味着AI对语言的理解必然与我们存在偏差,我们也需要通过不断的沟通尝试,来掌握到对AI更有效的说话方式。

比如说,如果对方是一个跟我们交情足够深的人类写手,我们可能会在交谈中提起对方之前经历过的某一次痛彻心扉的出轨,然后指示说在作品中写出这种被背叛的感觉,以此来引导作品内容变得更加有血有肉。

没有真正与社会互动过的AI,不可能有这种经历可以诉诸。而更重要的是,在近乎整个互联网的语料库上训练出来的AI,如果一定要拟人化,那么它的“人格”比起某个特定的人来,更像是一个“所有互联网上的人格的平均值”。这样的AI,如果要让它写出个人风格较强的故事,可以在提示中要求它代入某个特定的广为人知(有足够训练数据)的情境,比如,在上面的ChatGPT写故事的例子中,我可以进一步指示:

请以《悲惨世界》的作者维克多·雨果的风格完整地重写上面的故事。

如此就能得到这样的风格性更强的故事:

在这个悲惨而残酷的世界里,亨利是一个忠诚的队员,他虽然来自贫穷的家庭,但他满怀着希望和渴望加入这支冒险队伍,改变自己和家人的命运。他在队伍中是最勇敢的一员,总是第一个冲锋陷阵,而且永远没有犹豫地为队友提供援助。然而,命运总是充满曲折,当亨利得知他母亲生病,医疗费用巨高时,他陷入了绝望之中。在这个充满痛苦和无助的时刻,敌人伸出了援手,要求他为了换取足够的钱去背叛自己的队友,亨利虽然犹豫了许久,但最终还是为了拯救自己的家人而做出了背叛的决定。 当队友发现了他的背叛时,他们感到震惊和愤怒。亨利深感内疚和痛苦,知道自己已经失去了他们的信任和友谊。他选择离开队伍,孤独地面对着自己的过错和罪恶。这次的背叛不仅毁了亨利的人生,也撕裂了队伍的团结。在这个悲惨的世界里,忠诚和信任是如此珍贵,而背叛却是如此残酷。亨利知道自己将永远不能挽回自己在队伍中的地位,也永远不能挽回自己曾经拥有的友谊。他在这个悲惨的世界里独自前行,承受着无尽的痛苦和责任,这就是他为了拯救家人而付出的代价。

于是,怎样的沟通方式更适用于大数据语言模型这个问题,就变得像是如何训练猫狗、如何教育小孩、如何跟领导汇报工作一样,变成了一门深刻的学问,我们称之为是“提示工程”(Prompt Engineering)。

这是一种与机器的交互方式的根本性变革。在机器这种事物被发明出来初期,人们需要为每一个特定的任务去设计专门的硬件——某种意义上是“编程”的最早期形式。通用计算机的出现,实现了靠输入特定的指令来改变机器的行为,从而适应不同的任务——也就是设计算法。深度学习被广泛应用之后,我们发现机器能够模仿训练数据集的行为,因此设计数据集也成为指导机器去完成特定任务的方式。而今天,随着大数据驱动的语言模型的出现,我们看到了构建一个功能普适性的统计模型的可能性,这个统计模型理论上可以蕴含我们想要的任何计算功能,而我们需要去做的只是用恰当的自然语言去激发正确的功能——这将我们引向软件工程的最新时代:提示设计时代。

在这样的时代,交代机器执行任务,将与交代人执行任务,不再有根本性的差别。不知道这样的未来什么时候会到来。

叙事背后的那个故事在哪里

我们说了那么久的“叙事生成”,但究竟什么是叙事?

维基百科上的“Narrative(叙事)”词条,有这么一个简单的定义:

A narrative is a telling of some true or fictitious event or connected sequence of events. 一个叙事是对某个真实的或虚假的事件或相连的事件序列的讲述。

当我们人类在进行叙事时,我们往往先在脑海中想到要去讲述的这个事件或者事件序列,然后再去思考怎样去讲述它。而叙事的观众,也只有在能够根据叙事者的讲述,在他们自己的脑海中还原出了这个事件或者事件序列,才能被认为是“理解”了这个叙事。先有能够被讲述的事件,再有对这些事件的讲述,这一直是我们脑中的常理。

因此传统的叙事生成技术,也沿用这样的思路。让程序先去生成一个能够被讲述的事件/事件序列,然后再去生成讲述这个事件/事件序列的文本。

如何生成一个有趣的事件序列,成为“如何生成一个有趣的叙事”这个问题的核心。人们想到了图搜索、自动化逻辑推理、遗传算法、社会关系模拟等等方法。计算的瓶颈也往往在这里。

而大数据驱动的语言模型,却彻彻底底绕过了这一步。它不在事件序列上做任何预先的思考或者说计算,而直接去生成“讲述”本身。这个讲述被读者读到之后,也许能够在读者的脑中被提取出事件,但对于完全没有生活经历的语言模型来说,这些事件在它脑中多半并无对应物。这种情况下,事件和对事件的讲述之间的先后关系被彻底颠倒了。

事件和对事件的讲述之间的关系颠倒,以及讲述者和观众的“脑内模型(Mental Model)”之间的不一致,被很多学者认为是语言模型在叙事生成上的根本性缺陷。

既然如此,要解决这个问题,首要的任务就是在语言模型的背后引入“事件”的概念。

2017年的论文《Event Representations for Automated Story Generation with Deep Neural Nets (基于深度神经网络的自动化故事生成中的事件表示)》提出了一种思路。

上篇中我们提到了,语言模型可以是一种“从序列到序列(seq2seq)”的模型,其中的序列指的是单词或者字组成的序列。这个序列显然跟文本叙事背后的事件没有直接联系。

但是,叙事背后的事件序列不也是一种“序列”吗?能不能将事件序列也看做是一种“语言”,用生成式语言模型来生成事件序列呢?

文章首先将一个事件定义为一个4元组<动作,主语,对象,附加信息>。这样就可以将用一句自然语言很松散地描述的事件,转换为更加结构化的表示形式。比如

哈利认识了莱姆斯·卢平,一个黑魔法防御术教授——最后被发现其实是一个狼人。

所描述的事件,可以用这种结构化的方式表示为两个事件组成的序列

<认识,哈利,莱姆斯·卢平, N/A> <发现,大家,莱姆斯·卢平,是狼人>

语言模型的训练需要大量的语料库,要训练这个事件序列的语言模型,我们也需要大量的像上面这样的事件序列来作为语料库。

这篇论文从大量电影在维基百科中的情节描述所组成的语料库中,利用现有的自然语言处理技术(Stanford’s Core NLP),从句子中提取出这样的结构化的事件序列表示,组成了一个事件序列的语料库,来训练这个能够生成事件序列的语言模型。这个语言模型被称为是Event2Event模型。

能够生成事件序列之后,论文作者又引入一个从结构化的事件表示来生成对应的自然语言句子的语言模型,称之为是Event2Sentence。将两个模型组合,我们就得到一个先生成事件序列、再生成这个事件序列的自然语言描述的叙事生成工作流。这个工作流就非常接近于“先思考要讲什么故事,再思考怎么讲这个故事”的人脑叙事生成工作流。

这个方法为语言模型叙事引入了一个被叙述的事物,使得语言模型产生的文本看起来更加“言之有物”了。但它也还只是一个开始。作为一个四元组的事件表示,显然是一个过于简化的形式化定义,在将句子转换为这种表示的过程中,会有大量信息损失,也就意味着使用这种方法来进行叙事,只能对相对来说非常基本的事件言之有物。

而如果要人为去扩展这个事件的结构化表示,使得它能够适应现实中的事件的复杂程度,就成为一个更加复杂而庞大的工作——因为现实中的事件实在是太复杂了。而且,这种做法也不符合机器学习的理念——应该尽可能让机器自己从数据中学到解决问题需要的信息,而不是人为地灌输。

在2020年提出的另一种方法《PlotMachines: Outline-Conditioned Generation with Dynamic Plot State Tracking(PlotMachine:以情节梗概为条件的叙事生成,支持动态情节状态追踪)》就尝试在不去人为定义事件的结构化表示的基础上,通过设计神经网络的结构,让语言模型自己去建立事件的概念。

这篇论文所提出的叙事生成工作流支持用户输入一个故事大纲,其中甚至能够包含多个角色的行动。

实现的方法是在GPT语言模型中加入一个记忆模块,在此基础上让模型学习到对当前段落和叙事的当前状态的特征向量表示。这些特征向量旨在让机器在叙述过程中建立起自己对“事件”概念的表示,通过训练将所叙述的“事件”和对这个“事件”的叙述语言风格描述区分开,并通过事件概念来控制叙述内容的前后一致性。

本篇论文提出的PlotMachine工作流一个段落一个段落地生成叙事,不同于一般的语言模型只是简单地在给定前置文本的条件概率分布中采样得到后续文本,PlotMachine在生成下一个段落时,还会考虑到用户一开始给出的整个故事大纲、机器用特征向量所表达的对当前叙述状态以及对上下文的理解。

控制故事的走向

一旦在语言模型叙事中引入事件的概念,就跟2018年之前的那些传统的方法相通了起来,且更有了可比性。传统的叙事生成方法中一个经典的思路是将事件序列的生成看作一个“自动规划(Automatic Planning)问题”:每一个事件的发生都要求当下的世界状态满足一定的前序条件,发生之后则会改变世界状态,为新的事件的发生创造可能的条件,故事生成需要产生这样的一个事件序列,最后能够达成用户所指定的故事走向这个目标。正是这个事件序列的环环相扣,保证了最后生成的故事读起来是前后一致、合情合理的。

在语言模型的方法背后也引入事件的概念,就很自然地产生如何去规划这些事件、使得它们之间环环相扣前后一致、还能向用户指定的故事走向发展的问题。传统的方法在生成这样的事件序列上存在一定的技术瓶颈,因为生成这样的序列潜在地可能要去考虑到所有可能的事件序列——而这样的事件序列的数量是庞大到令人叹为观止的。

如果继续贯彻机器学习的思路,那么我们能否在规划事件这一步也设法绕过这个技术瓶颈?2019年的论文《Controllable Neural Story Plot Generation via Reinforcement Learning(通过强化学习实现可控的神经网络故事情节生成)》提出了一种基于强化学习(Reinforcement Learning)的方法。

强化学习是机器学习的一种范式,它模拟一个个体在某种环境中有目的地行动,目的是训练出一个让个体能够有效达到目的的行动策略(Policy),方法则是让环境给与个体数值上的惩罚和奖励,让这些惩罚和奖励反映出个体与它所要达到的目标之间的距离,然后再根据奖惩数值来调整策略模型的参数,使得策略更倾向于获得奖励、避免惩罚。

我们因此就可以把故事生成的问题也看作是一个强化学习问题:个体以生成一个合理且符合用户指定的故事走向的事件序列为目标,一步一步地选择事件加入到序列中,要训练出一个根据前序事件来选择下一个事件的策略。如果事件之间不能合理衔接,就受到惩罚,事件的走向越接近用户指定的走向,就得到越多的奖励。

在传统的自动规划方法中,程序要实实在在地去模拟世界状态的变化,来验证事件的衔接是否合理,之所以能这么做,是因为所有的事件都是在故事域中人为清晰定义好的。而当我们实际上是使用了语言模型从数据中提取出了事件的时候,我们就没有事件的前序条件和后果的清晰定义,合理性也不再能够非黑即白地判断,而成为一个模糊的概念。 这篇论文为事件序列的合理性和与用户指定故事走向的相符程度提供了一个简单粗暴的统计性估计。合理性就体现在当前事件所对应的动词,在给定前序事件的条件下,出现的概率要足够大,否则它就不会被采样成为下一个事件。而用户指定的故事走向则简单地就是一个动词,当前事件选择与这个故事走向的相近程度,也简单粗暴地用动词之间的相似程度(由语言模型给出)以及动词再语料库中共同出现的概率来衡量。

因此机器就不再需要真正去模拟世界状态的改变——其背后假定是语料库已经提供了足够多的世界状态改变的例子。策略模型的训练虽然需要时间,但一旦训练完成,执行生成一个事件序列不需要去考虑所有序列的可能性,效率非常高。这种方法如此绕过了传统自动规划方法的计算瓶颈,代价是对故事合理性和故事走向采取了极其简单粗暴的近似,牺牲了结果的质量。

建立读者模型

上篇中,我提到一段体验AI Dungeon的经历,说到语言模型的输出一切只存在于语言层面,由于前后一致性的问题,作为读者的我很难建立起一个关于文本所描述的那个虚拟世界的脑内模型(Mental Model)。

读者在读到一段文本之后(比如“X杀了Y”),会在脑中尝试为这段文本所描述的事件建立上下文(比如“X跟Y有仇”),而如果文本后续的走向违背了这个脑内建立的上下文(比如“X其实深爱着Y”),我们会尝试去调整脑内上下文再次去符合文本——但如果很难调整,我们就会感到困惑。这种困惑积累到一定程度,我们就会放弃去建立这个脑内模型,并继而放弃去理解文本,失去阅读的代入感和沉浸感。

自动叙事生成领域的著名学者Mark Riedl在一篇Blog中,提到这一点背后的一个原因

The shift from symbolic systems to neural language models shifted the focus from the modeling of the reader to the modeling of the corpus. This makes sense because data in the form of story corpora is readily available but data in the form of the mental models readers form is not readily available. 从符号系统转移到基于神经网络的语言模型,将叙事生成的关注点从对读者的建模转移到了对语料库的建模。这是因为叙事语料库的数据容易得到,而读者脑内模型的数据却没法得到。

(注:其中所说的“符号系统”就对应于传统的基于故事域搜索的叙事生成方法) 2022年出自Riedl的一篇论文《Inferring the Reader: Guiding Automated Story Generation with Commonsense Reasoning(推理出读者:用常识性推理来引导自动故事生成)》尝试用自动化推理的方式来解决这个问题。在他们所提出的文本叙事生成框架中,文本的生成不是单纯地从语言模型所定义的概率分布中采样,而是会对采样得到“候选文本”进行评分,再选出评分较高的样本。

这个评分的机制反映了文本在读者脑中与上下文的一致性。这个框架使用了叫做COMET_20^20的常识性推理模型,来模拟读者在读到文本之后会在脑内建立起的语义网络。给定一个事件,比如“X修好了他的车”,COMET_20^20 能够推理出可能作为这个事件的上下文的各种假设,比如“X需要开这辆车”、“修车应该没有X承担不起的巨大花销”、“X去了修车店”、“X付了钱”等等。

在叙事生成的过程中,作者使用COMET_20^20来为前一个句子和用语言模型采样得到的下一个句子的候选分别生成这样的上下文语义网络,然后去比较这两个网络的一致性,根据一致性程度来确定下一个句子的候选的得分,最后选择得分高的句子作为下一个句子,以这种方式来保证读者能够建立起脑内的上下文。

这种方法首次将读者脑内模型的概念也引入到了语言模型叙事生成的技术之中,虽然这里考虑的只是简单的脑内模型的一致性问题,但它开启了不少新的可能性:比如,有没有可能通过控制读者脑内模型的演变序列生成叙事,来实现各种各样的叙事诡计?

结语

生成文本叙事,对于AI来说,是一件很特殊的任务。在一般的人工智能任务中,比如自动驾驶、图像识别、自动装配等,AI都只需要完成任务,而不太需要在完成任务的过程中与人类沟通。这些情形下,它就不太需要突破它的“黑盒子”特性——它尽可以用任何在人类概念中毫无对应物的、无法向人类解释的逻辑完成任务——只要任务完成了,它就是成功的。它的成功可以完全只由结果得到衡量。

而生成文本叙事,却迫使AI去模仿人类思考问题的方式。它被要求生成的内容本身就是人类进行抽象的思考和交流的媒介,训练的目的实际上是迫使它在它不同于人脑的思考回路基础之上,形成对语言含义的与人类一致的理解,继而让语言这个向来只能运行在人脑这个“硬件”上的“软件”,被“移植到全新的硬件平台上“。

为了能够进行这样的“移植”,我们势必要面对这样一个问题:促成一个人对语言的理解的条件是什么?或者换句话说,语言的含义究竟来自哪里?

将互联网上的庞大文本数据作为训练数据集投喂给模型,指望训练出一个能够跟人类有沟通基础的AI,实际上是在表达这样的一个语言学假设:语言的含义有相当大一部分是来自于语词所出现的文本环境。

尽管按照我们的常识来看,我们对很多概念(比如“幸福”、“痛苦”、“爱情”)的理解,都是扎根于实实在在的生活经历和大脑中的情绪化学反应的,其含义很难说完全存在于单纯的文本环境。但是从现在大数据驱动的语言模型的表现来看,即使剥离掉所有这些生活经历和情绪机制,似乎也能得到一个跟人类有一定沟通基础的AI了。

这无疑是一个颠覆性的认知。

然而,剥离掉了生活经历和情绪基础、目的也单纯只是为人类服务的AI,所产生的文本作品,比起人类作家写出的作品,就缺少了丰富的自我表达。我们不能像阅读传统的文学作品那样,将阅读的过程看作也是在解读作者想要传达的某种讯息、甚至解读作者的人生。文本的含义甚至在作者一方是相对单薄而浅层次的,含义更多的是在读者这里被丰富化并被赋予意义。这是一种不进行自我表达的艺术,或者说一种“表达先于意义”的后现代主义艺术。

这样的艺术,对我们来说也不是陌生的。拥有几百上千人制作团体的商业电影、根据大数据分析决定剧情走向来迎合观众喜好的电视剧、单纯为了配合游戏机制而编出的剧情、用公式演算出的分形艺术,不都是这样的“艺术”吗?

它可以是资本家割韭菜的手段,也可以是超越人类创意的通灵自然的媒介,全看怎么被使用。

关于计算机与艺术,欢迎阅读我的另一个文章系列:计算创意学

作者公众号: junjunstorytelling

参考文献

[2] Calderwood, Alex, Noah Wardrip-Fruin, and Michael Mateas. "Spinning Coherent Interactive Fiction through Foundation Model Prompts."

[3] 维基百科条目“叙事(Narrative):wikipedia:Narrative[4] Martin, Lara, et al. "Event representations for automated story generation with deep neural nets." Proceedings of the AAAI Conference on Artificial Intelligence. Vol. 32. No. 1. 2018.

[5] Rashkin, Hannah, et al. "Plotmachines: Outline-conditioned generation with dynamic plot state tracking." arXiv preprint arXiv:2004.14967 (2020).

[6] Tambwekar, Pradyumna, et al. "Controllable neural story plot generation via reinforcement learning." arXiv preprint arXiv:1809.10736 (2018).

[7] Peng, Xiangyu, et al. "Inferring the reader: Guiding automated story generation with commonsense reasoning." arXiv preprint arXiv:2105.01311 (2021).

[8] Hwang, J. D., Bhagavatula, C., Le Bras, R., Da, J., Sakaguchi, K., Bosselut, A., & Choi, Y. (2021). On symbolic and neural commonsense knowledge graphs.

[9] Wei, Jason, et al. "Chain of thought prompting elicits reasoning in large language models." arXiv preprint arXiv:2201.11903 (2022).

[11] Reynolds, Laria, and Kyle McDonell. "Prompt programming for large language models: Beyond the few-shot paradigm." Extended Abstracts of the 2021 CHI Conference on Human Factors in Computing Systems. 2021.