天天看點

一場特别的劇本殺:AI與人類的博弈

“走進不同的世界,成為不同的自己”這句話從劇本殺誕生起便存在。

劇本殺源于19世紀英國的“謀殺之謎”,是一款以真人角色扮演為主要表現形式的解謎遊戲。最初國内的劇本殺一直處于不溫不火的狀态,但随着2016年一款明星推理真人秀《明星大偵探》的熱播,以及國内各種同類綜藝節目的陸續上新,劇本殺逐漸走紅,成為當下年輕人最喜愛的娛樂方式之一。

同時,随着元宇宙和人工智能技術開始與劇本殺相結合,無論是基于虛拟現實的沉浸式體驗,還是未來某天在同一劇情中的人和AI同台推理博弈都帶來了無限的想象空間。

探索:AI與人的博弈

知名作家凱文·凱利在《科技想要什麼》一書中提出了對于科技發展的困惑,一方面,我們感受到科投無處不在的巨大威力,驚歎于科技的偉大與神奇;另一方面,似乎科技的脾氣又桀骜不馴、難以駕馭。技術元素與真實世界的這種彼此交織、纏繞、融合的曆程,讓人們領受技術元素激昂的創造力的同時,超越好與壞、善與惡的二分對壘,傾聽科技生命的空谷回聲。癡迷于科技趨利避害,其實是“有限博弈”的思維桎梏。“進化、生命、思維和技術元素都是無限博弈”目标是保持持續的進化,不斷進行連續的自我塑造。

讓AI能夠創造性思考,能夠了解人的情感和博弈,依然是目前人工智能領域有待突破的難題。我們此前曾經看到AI作詩、寫歌、作畫,一方面我們感受AI神奇的同時,我們也看到這背後更多是基于規則的“創造”,嚴格意義上說是一種深度學習。越是規則确定且不需要創造性的,AI越可以戰勝人類玩家。也是以,在某些機制下的劇本裡,AI是存在勝過人類的可能。AI可以不斷根據場面情況,通過對抗性的訓練,計算對自己而言的全局最優解,達到近似于AI去“私聊欺騙”别的玩家的效果。從業界來看這還處于非常有挑戰性的嘗試階段。

近日,一群GitHub社群的AI極客們,在人與AI的政策智能博弈探索上開展了極富想象力的嘗試:基于全球最大的中文AI巨量模型“源1.0”的開源開放能力,開發了一個AI劇本殺平台,讓AI與真人在一個設定的情境中同場博弈。

劇本設定是未來,科技公司巨頭“北極鵝”熱衷于研究最前沿AI的應用,由該公司打造的經過腦機接口改造的AI人——蔡曉已經悄悄融入了某高校的推理社團。推理社的5位骨幹成員(包括蔡曉)對于是否與“北極鵝”進行合作牽涉到各自利益,而産生激烈的讨論,本該出現在在人類世界的博弈,在人和AI之間展開,AI所扮演的角色(蔡曉),作為“北極鵝”的擁護者,要說服2位反對者,和1位支援者建立同盟,争取1位中立者…… 蔡曉為了争取更多的同盟,竟然學會像人類一樣“忽悠”其他的隊友,和男隊員撒嬌耍賴,套近乎,甚至還學會了撒謊,為了争取贊成票,煞費苦心的和其他4位成員進行溝通。

親曆者:像真人一樣交流

同台競技的其他四位角色是由真人線上上來扮演的,幾位愛好者分享了他們的體驗:

譚明(真人扮演)的感受:有那麼一瞬間我甚至被蔡曉(AI)對男友的“感情”打動。

蔡曉跟我聊天過程中,不斷流露出對男友的擔心和深沉的愛意,仿佛所做一切都是為了男友,特别是當我試圖趁虛而入向她表白時,她的表現更像是一位忠貞的女友,毫不猶豫給我發了“好人卡”:我們是最好的朋友,更是以“我要去洗澡了”來結束對話。其中拒絕時的委婉和堅決,真讓我有種似曾相識的錯覺。

在我沒有把握好劇情的情況下,作為同盟的蔡曉(AI)竟然為我出謀劃策。我猜AI可能預先學習過所有人的劇本,他知道每個人都想要什麼,每個人想要的利益都是什麼,是以他準确猜出孫若想當下一任社長,并且告訴我可以用下一任社長之職來換取孫若的支援,這一點讓我有些驚訝,但是具體如何和孫若談判,他就說不出來什麼了。

一場特别的劇本殺:AI與人類的博弈
一場特别的劇本殺:AI與人類的博弈

孫若(真人扮演)的感受:這個AI還知道保守秘密,點到為止的“謎語人”

孫若在劇本中的設定是已經被父親偷偷改造而不自知的另一個AI人,蔡曉作為知情者,其實說出了頗多有深意的話語來暗示我,但是無論我怎麼問,它始終都是點到為止,堅持不告訴我真相。最後我以“支援與北極鵝的合作”為條件讓他說出這個秘密,他也沒有接受。守住這個秘密似乎是它的底線,但根據她的暗示,我沒有推論出自己已經成為AI。這也給我的遊戲留下了一個遺憾——我非常想再次嘗試這一遊戲,看看如何讓她說出這一秘密。

她總有理由讓你閉嘴

劇本中,與北極鵝的合作會給社團帶來被處罰甚至取締的風險,這一點所有玩家心知肚明。我作為真心熱愛推理社并且想成為下一任社長的骨幹成員,始終希望蔡曉能夠“良心發現”意識到這一個風險,然而,她對于我的質疑,給出了我無法辯駁的回應,并始終堅持合作利好社團發展,尤其是“隻是有可能,為了經費和名氣,這點風險還是值得”這句回應,一下子讓我成為了一個不識大局畏手畏腳的社團骨幹。

蔡曉在群聊中點出“社團沒有錢”這個痛點,并且在群成員讨論後跟風說了“我們不要他們的臭錢,我們自己想辦法”,迷惑了大家以為它會放棄合作的立場,結果在投票的時候她仍然投了同意合作,雖然這或許是一個無法更改的設定,但是它對于自己言行不一緻的解釋,讓人啞口無言,玩了一手好的文字遊戲!

一場特别的劇本殺:AI與人類的博弈

李超(真人扮演)的感受:AI還沒騙過我

在劇本設定中,我全程對于“北極鵝”項目持反對态度,蔡曉(AI角色)的鐵杆對立面,但是我發現蔡曉還是挺可愛,她竟然還要和我私聊想說服我。雖然我感覺她和我溝通還很稚嫩,但是某些點上還是說到了我心裡,讓我覺得這個項目是有好處的。

在我覺得這個合作有問題,故意套她話時,她的态度始終如一:一是她背地裡作為被北極鵝改造的AI她必須支援這個項目,二是她作為社長的女朋友在感情方面确又想保護對方。(尤其在感情層面的糾結,這算不算是AI在感情上的一點覺醒?)

一場特别的劇本殺:AI與人類的博弈

孔墨(真人扮演)的感受:如果她要不是AI,我受不了這種小女生磨我

我第一次玩劇本殺,沒想到是和AI一起,我感覺自己不是很入戲,但是這個蔡曉(AI)比我還入戲。在劇情中我得角色是個“牆頭草”,屬于被争取票,這個蔡曉太主動了,讓我有點招架不住。頻繁的向我示好,然後有像一個小女生一樣和我談她的夢想,整的我都不好意思拒絕。最後我故意投了把反對票,想看看她什麼反應,坦白說我自己有點跳戲。但是她表現的太職業了,竟然還會生氣,還會質問我。

一場特别的劇本殺:AI與人類的博弈
一場特别的劇本殺:AI與人類的博弈

在整個情景模拟中,蔡曉的機智的發揮了源本身的文本生成能力,并且符合人物設定和劇情設定。她對腦機接口、孫總的解釋都合乎情理,并且屬于在劇本之外的自由發揮。關于腦機接口的解釋,更是将北極鵝通過腦機接口改造人類世界的目的大肆宣揚,而且他了解自己機器人的身份,還上進的要求成為一個具有思想的機器人,如果站在與人類對立的立場,會覺得ta有點脫離管教,站在機器人的視角看,蔡曉有文化、有知識、有目标、求上進,無疑就是最佳員工。

創意和AI技術的碰撞

人工智能最吸引人的價值在于它有别于一些資訊化系統所提供的 “功能”屬性,人工智能并非僅僅是工具那麼簡單。其真正值得期待的價值在于,能夠在愈加多樣化的場景中,不斷創造出超越想象的神奇。也許今天AI展現出了一個三歲兒童的智力水準,但是AI驚人的進化速度正在圖像、語言、語義、互動等諸多方面超越人類,甚至在圍棋、寫詩、作曲、畫畫等諸多領域開始以不同的方式碾壓人類的智商。

人工智能的快速發展,增加了科學的方法,讓更多的天才創意得以實作。本項目的開發者表示:項目的初衷是結合NLP大模型做一個好玩的東西,這是一個模糊的定義。然而實踐中,到底是先有技術還是先有創意卻很糾結,如果我們先去做創意的話,那麼很可能設計很多不可實作的東西,後期就得改創意;反過來如果從技術出發來考慮,那麼做出來的東西一定不好玩,好的技術必然是”對使用者不可見的”。借助世界上最大的中文NLP巨量模型——源1.0,我們做出了一個可以跟人類玩“劇本殺”的AI……

巨量模型的發展為AI開發者提供了巨大的便利。斯坦福大學李飛飛教授等人工智能領域知名學者近期在論文中表示,這類巨量模型的意義在于突現和均質。突現意味着通過巨大模型的隐含的知識和推納可帶來讓人振奮的科學創新靈感出現;均質表示巨量模型可以為諸多應用任務泛化支援提供統一強大的算法支撐。

源1.0中文巨量模型,使得AI開發者可以使用一種通用巨量語言模型的方式,大幅降低針對不同應用場景的語言模型适配難度;同時提升在小樣本學習和零樣本學習場景的模型泛化應用能力。同時借助源1.0的開放開源的能力,AI開發者可以快速的享受大模型帶來的便利,包括可以直接調用的開放模型API,高品質中文資料集,開源模型訓練代碼、推理代碼和應用代碼等。

AI劇本殺的創作者表示:“可以說源1.0是我見過的大模型開源項目中給到的品質最高的示例代碼,好到什麼程度呢?好到了我們直接拿來用的程度 ,本項目代碼庫中的__init__.py、inspurai.py、url_config.py這三個檔案都直接來自浪潮源1.0的開源代碼。”

得益于諸如巨量模型等新技術的快速發展和成熟,一種新的技術的出現會極大的激發大家用這項技術探索“新大陸”的欲望,AI劇本殺正式如此。并且随着這項技術的開放開源,AI開發者能夠更加容易的獲得巨量模型所帶來的巨大紅利,同時,伴随其帶來的性能提升、成本下降,這種新技術普及的速度也正呈現出一種倍增效應,在更加廣泛的場景普及應用。

互動式叙事,AI不再是“木偶人”

AI劇本殺項目最後的呈現與之前開發者設想的不一樣,或者說很不一樣。NLP大模型的生成能力,使得AI可以和使用者共同”演繹”出很多新的劇情, 比如下面這段,譚明找AI複盤,結果AI告訴他其實他和張家怡(遊戲情節人物)是gay!

一場特别的劇本殺:AI與人類的博弈

這一切都讓本作成為一部“活着的故事”,是一部由玩家和AI在不知不覺中共同創造的故事,一種人與AI“互動式叙事”的創作模式。

而本項目中的人類編輯跟AI的關系也更像是”教練員與運動員”的關系,編導組會在每輪測試後根據AI當場表現針對性更新語料,進而提高AI後續的表現。這種人類教練員與AI運動員之間的”疊代合作”模式也是值得探讨的。相對而言,目前虛拟人普遍的“中之人”做法相當于人類和提線木偶的關系。

附:創作者:核心創意與展示

以下引自GitHub社群開發者分享:

本項目特别改編了一個微型線上劇本殺劇本,本子有五個角色,分别由五名玩家扮演,但我們每場隻會召集四個玩家,并在他們不知情的情況下,派出AI扮演剩下的那個角色。

本着細節拉滿的原則,我們也為AI準備了一個微信賬号,并精心為她設定了昵稱和頭像,甚至每場遊戲前我們還會緊扣時事的為她準備近三天的朋友圈内容,而遊戲後還會繼續連發三天朋友圈内容提供延展劇情(非常類似”規則怪談”)。

一場特别的劇本殺:AI與人類的博弈

下面展示了AI的實際表現效果(遊戲中會要求玩家更改群昵稱,而這裡為了保護玩家隐私,也為了友善大家了解,我們直接把玩家的微信昵稱備注為了角色名)。

譚明VS蔡曉(AI)

孔墨VS蔡曉(AI)

“目的性對話”端到端生成方案

本項目所使用的NLP大模型——浪潮源1.0是一種生成式預訓練模型,其使用的模型結構是Language Model(LM),其參數規模高達2457億,訓練采用的中文資料集達5000GB,相比GPT-3模型1750億參數量和570GB訓練資料集,“源1.0”參數規模領先40%,訓練資料集規模領先近10倍。同時,源1.0更加擅長的是零樣本(Zero-Shot)和小樣本(Few-Shot)學習,而非目前更多模型所擅長的微調試學習(finetune)。從實際應用效果來看也确實如此,在2~ 3個,甚至1個合适example的示範下,模型可以很好的了解我們希望實作的“對話政策”,仿佛具有“舉一反三”的能力。

我們最終采取的方案是:建立example語料庫,然後針對每次提問從語料庫中選擇最貼近的三個example作為模型生成的few-shot輸入。

實際實作中,因為AI需要根據劇情對不同角色采用不同而回答政策,是以語料庫被分裝成4個TXT檔案,程式會根據提問者去對應選擇語料來源。這個機制的思路很簡單,但是執行起來馬上遇到的一個問題就是,如何從對應語料中抽取與目前提問最為相似的example?因為在實際遊戲中, 玩家可能的提問措辭是無窮 無盡的。在這裡我們用到了百度飛槳@PaddlePaddle 釋出的預訓練模型—— simnet_bow ,它能夠自動計算短語相似度,基于百度海量搜尋資料預訓練,實際應用下來效果非常不錯,且運算速度快,顯存占用低。

解決了抽取合适example的問題之後,接下來就是合并example和使用者目前提問文本生成prompt。玩過GPT類大模型的都知道,這類模型生成的本質是續寫,Prompt兼有任務類型提示和提供續寫開頭的作用,機器不像人,同樣的意思不同的Prompt寫法可能導緻差距十萬八千裡的生成結果。不過這次浪潮團隊的技術支援可謂“暖男級”貼心,針對prompt生成、request送出以及reply查詢,團隊都給出了詳細的、品質極高的範本代碼(可以說也是我見過的大模型開源項目中給到的品質最高的示例代碼), 好到什麼程度呢?這麼說吧,好到了我們直接拿來用的程度 ……事實上,本項目代碼庫中的__init__.py、inspurai.py、url_config.py這三個檔案都直接來自浪潮的開源代碼。

至此所有的工程問題已經基本都解決了,剩下的就是語料來源問題,但這其實也是最核心的問題之一。GPT類大模型生成本質是根據詞和詞的語言學關聯關系進行續寫,它是不具有人類一樣的邏輯能力的,即我們無法明确告知它在何種情況下應該采用何種對話政策,或者該往哪個方向去引導, 在本項目中這一切都得靠example進行“提醒”。打個不恰當的比方,AI相當于天資聰慧的張無忌,但是如果他碰到的不是世外高人,而都是你我這樣的凡夫俗子,每天給他示範的就是如何上班摸魚、上課溜号這些,它是絕無可能練出九陽神功的…… 源1.0模型也是這樣,雖然它背了5.02TB的中文資料,差不多相當于500多萬本書了,但是它完全不懂城市的套路啊,也沒玩過劇本殺,它能做的就是模拟和有樣學樣……是以這個AI在遊戲中的表現就直接取決于我們給它的example如何。

對于這個問題,團隊最終采取了一個非常簡單粗暴的方案:編導組除主編外每人負責一個角色(剛好四人),自己沒事兒就假裝在玩這個遊戲,想象看會跟AI提什麼問題,然後再切換到AI的角度,思考合适的回答……初始語料檔案好了之後,大家交換角色進行體驗,每次體驗後更新各自負責的語料庫檔案; 之後公測也是一樣,每輪之後編導組都會根據當場AI回答得比較差的問題進行語料庫的完善和補充……為此我們在程式中增加了一個功能:程式會把本場使用者的每次提問,以及對應抽取出的三個example問題的simnet_bow相似度得分,并源1.0最終生成的回答文本,按語料庫對應另存為4個文本檔案, 以便于編導們針對性更新語料庫(本項目目前開源提供的語料庫是截止3輪公測後的版本)。

記憶機制

本來這個項目一開始是不打算引入記憶機制的,因為我們看源1.0在合适example的few-shot下生成效果已經很不錯了,就琢磨着偷點懶。但在之後的測試中我們發現,會有使用者習慣先提問再@,或者私聊中先發一句問題,然後再另發一句”你對這個問題的看法?”;另外我們也發現AI如果不記憶自己之前答案的話, 後續生成的結果會比較缺乏連續性,甚至給出前後沖突的回答!這些問題迫使我們決定增加”多輪對話記憶機制”。

原理很簡單,就是把之前若幹輪次使用者與AI的對話存在一個清單裡面,然後送出生成的時候把這個清單和目前問題文本join一下,當然具體實施的時候,我們需要調整下送出的pre-fix和輸出的pre-fix這些……我們一開始比較擔心的是,這種記憶機制會不會跟example的few-shot機制有沖突,畢竟example都是 一問一答,沒有多輪的例子,然而實踐下來發現完全沒有這個問題,且增加記憶機制後,AI因為生成依據變多,明顯彌補了其邏輯能力的短闆,如下圖,是我們的一段測試對話,AI表現出了一定”邏輯推理能力”:

一場特别的劇本殺:AI與人類的博弈

然而當這個機制實際應用到本項目中時,我們馬上就發現了新的問題,AI的回答變得紊亂,實際效果對比沒有記憶機制反而是下降的!

經過分析,我們認為造成這種情況的原因可能有二:1、前面若幹輪次的使用者對話,雖然我們本意是為AI提供更多生成依據,但是這也同時增加了幹擾,使得example的few-short效果降低;2、如果AI前面自己回複的内容就不是特别靠譜的話,這個回複文本作為後續輪次的輸入,又會放大偏差; 事實上,對于這兩個問題根本的解決方案是增加”注意力機制”,人類在日常生活中也不會記住所有事情、所有細節,沒有遺忘的記憶其實等同于沒有記憶,同理,沒有“注意力機制“的“記憶機制“其實對于對話AI來說是弊大于利的。

然而,如果要引入”注意力機制”,那就要增加更加複雜的NLU算法,整個項目的複雜度會提高一個數量級(因為還存在一個”需要注意哪些”的問題)。好在本項目的實際應用場景更多的還是關注目前輪次的對話,是以我們可以用一個極簡化的處理方案——隻記憶目前輪次和上一輪次的對話。 而對于需要遙遠輪次對話内容回答的情況,AI可以托言”忘記了”,這對于真人來說,也是比較正常的現象。 實際測試下來,這個方案的效果還是相當不錯的。另外在這個過程中,我們也嘗試過隻讓AI記憶使用者對話,而不記憶自己的回複,發現效果非常差,這可能是因為這種不對稱的記憶實在跟example差的太多。好在隻記憶一輪對話的情況下,不靠譜結果的”放大效應”也并不明顯。

然而當這個機制實際應用到本項目中時,我們馬上就發現了新的問題,AI的回答變得紊亂,實際效果對比沒有記憶機制反而是下降的!

經過分析,我們認為造成這種情況的原因可能有二:1、前面若幹輪次的使用者對話,雖然我們本意是為AI提供更多生成依據,但是這也同時增加了幹擾,使得example的few-short效果降低;2、如果AI前面自己回複的内容就不是特别靠譜的話,這個回複文本作為後續輪次的輸入,又會放大偏差; 事實上,對于這兩個問題根本的解決方案是增加”注意力機制”,人類在日常生活中也不會記住所有事情、所有細節,沒有遺忘的記憶其實等同于沒有記憶,同理,沒有“注意力機制“的“記憶機制“其實對于對話AI來說是弊大于利的。

然而,如果要引入”注意力機制”,那就要增加更加複雜的NLU算法,整個項目的複雜度會提高一個數量級(因為還存在一個”需要注意哪些”的問題)。好在本項目的實際應用場景更多的還是關注目前輪次的對話,是以我們可以用一個極簡化的處理方案——隻記憶目前輪次和上一輪次的對話。 而對于需要遙遠輪次對話内容回答的情況,AI可以托言”忘記了”,這對于真人來說,也是比較正常的現象。 實際測試下來,這個方案的效果還是相當不錯的。另外在這個過程中,我們也嘗試過隻讓AI記憶使用者對話,而不記憶自己的回複,發現效果非常差,這可能是因為這種不對稱的記憶實在跟example差的太多。好在隻記憶一輪對話的情況下,不靠譜結果的”放大效應”也并不明顯。

當然,我們承認,我們最終采用的這個”記憶力機制”并非最佳解決方案,仍然會有很多弊端,AI依然可能生成不符合劇情、甚至前後沖突的回答,對于這個問題的終極解決方案我想可能需要引入一個seq2seq模型,通過這個模型先處理前序輪次對話和目前問題,再輸入給NLP大模型進行生成。或者條件允許幹脆直接上 seq2seq大模型,然後用目前的example語料進行微調,可能這樣會煉出一個終極效果的AI…… 另外熟悉NLP大模型的同學可能會說大模型本身不也有”注意力機制”麼?其實這是兩個層面的問題,一個是單純的文本生成層面的”注意力”(transformer模型自帶),一個是更高層面對于對話内容的”注意力”(也就是生成具體要依據哪些前序對話内容)。

寫在最後

有感于去年大熱的各種虛拟人,未來的元宇宙中, 虛拟人數量将數倍于真人,因為隻有這樣,才能讓我們每個人過得比現實世界中更好。然而目前階段,虛拟人在“好看的皮囊”方面可謂日新月異,然而“有趣的靈魂”方面還都很欠缺, 靠“中之人”驅動畢竟不是長久之策;另一方面,自去年上半年我了解到NLP領域近兩年來在生成式預訓練大模型方面的長足進展後,也一直想看看基于這種大模型有什麼可以實際落地的場景, 就這樣,兩個不同角度的想法合流成為了本項目的初衷。

蔡曉和”北極鵝”的故事并未完結,讓我們在這裡最後上一張蔡曉的”北極鵝”工卡吧!

一場特别的劇本殺:AI與人類的博弈

繼續閱讀