清華團隊開發寫古詩AI,開放圖靈測試迷惑了近一半人類玩家,你也可以試試!

作者:黃珊

比特幣

外挖無窮洞,機神猶未休。

卡中窺幣影,池裡驗沙流。

屢載吸金主,孤深漬盜求。

方知區塊鏈,本是古來遊。

這首詩歌來自一支清華團隊開發的古詩 AI。它的創作才華可不僅限於此。

再看下面兩首詩:

安克雷奇中美會談

特務狂聲振,朗官降虜庭。

普天皆竊笑,攻守幾無驚。

入市商人拜,國殤將士迎。

會同誅狡寇,世界定清明。

夜過虹橋機場

盧浦斜暉裡,西樓醉客行。

影侵雙塔晚,燈落一城明。

空客還頻顧,航燈未可驚。

空留城市夜,月映水簾星。

你仍可以在文采上對它有所挑剔,但不得不承認的是,這至少是一個不會離題萬里的 AI,尤其還是頗具難度的古詩生成。在這一點,它已經超越此前的作詩 AI。

論文名:

Controllable Generation from Pretrained Language Models via Inverse Prompting

論文:

https://arxiv。org/pdf/2103。10685。pdf

github:

https://github。com/THUDM/InversePrompting

新的詩歌圖靈測試

基於此次的研究成果,團隊還進行了一次有趣的詩歌圖靈測試實驗。

在這個詩歌圖靈測試實驗中,人類玩家需要對模型生成的詩歌和人類生成的詩歌進行分辨。

測試總共生成了 1500 首詩歌,併為每次測試隨機顯示在內的 5 對詩歌(真實古詩 + 生成古詩)。370 個玩家產生的 1,656 個遊戲記錄顯示,45。2% 的使用者難以辨別模型生成的詩歌。這一結果表明,結合了 Inverse Prompting 和 self-training 方法的詩歌生成質量,對於普通的線上使用者來說可能接近人類水平。

清華團隊開發寫古詩AI,開放圖靈測試迷惑了近一半人類玩家,你也可以試試!

現在,這個面向所有人開放的詩歌圖靈測試應用:

https://wudao。aminer。cn/turing-test/v1/

清華團隊開發寫古詩AI,開放圖靈測試迷惑了近一半人類玩家,你也可以試試!

這個詩歌圖靈測試中,你可以選擇不同的挑戰難度。

Easy 模式將會展現 5 組詩歌(包括標題、作者及內容),每組包括 1 首由詩人創作的詩歌和 1 首 AI 創作的詩歌,你需要選擇你認為的由人創作的詩歌。所有組選擇完成後,你將會得知有多少組結果正確。

此外還有 Hard、Lunatic、Extra,測試難度依次增加。例如,Hard 模式將會展現 10 組詩歌(包括標題及內容),每組包括 1 首由詩人創作的詩歌和 2 首 AI 創作的詩歌,且每組回答限時 60 (絕句)/90 (律詩) 秒。

這個過程或許能豐富你對於詩歌這一古老文藝創作的理解,甚至收穫 AI 作詩創造創造出來的新的審美情趣。

現有預訓練模型的通病:文章本天成,“可控” 偶得之?

人類的詩歌創作活動是否有規律可循,還是完全由靈感支配?有一派理論認為,“文章本天成,妙手偶得之”。即好的詩歌、好的文學創作好的文章本是天生而成,只是人靈感所至偶然所得罷。當然,很多情況下所謂靈感,也要那些文學素養高,有深厚的文學基礎的人才能抓得住。

對於 NLP 演算法來說,它們還遠遠未到達這個境界。如上文所言,僅僅是不要搞 “離題創作”,就已經十分艱難。

在自然語言處理領域,作詩這一任務被歸類為生成任務。目前,解決生成任務的 “當紅炸子雞” 非屬預訓練模型不可。

即便如此,此前的大部分預訓練模型在生成符合題意的句子上仍力不從心。

這支清華團隊同樣經歷過這種坎坷。有一次,他們從知乎摘了一個問題去提問模型 —— 說什麼瞬間讓你想留住這一刻?模型最終生成的句子非常通順,但是,如你所見,這些句子並未真正回答這個問題,也就是說,這個問題和答案關聯性非常弱。

我和男朋友在一起兩年。我去國外留學,他留在國內。一人在國外,寂寞心酸都是真的。唸書的時候,覺得常在一起沒什麼,兩個人一起努力,吵吵鬧鬧就過來了。我一直這樣想,以至於到了高中,到了最後幾個月,我都覺得他就是我行走的小弟。其實最快樂的時候,就是一起在外頭的 “孤兒院” 裡。

這是一個普遍存在於預訓練語言模型中的現象。

符合題意、答為所問的能力,正決定了一個 NLP 演算法能不能產生現實應用價值。因為你一定不想和一個 AI 進行一段雞同鴨講的對話。

為了解決這個問題,團隊成員提出了一個全新的文字可控生成方法 Inverse Prompting,顯著提升了對預訓練語言模型生成結果的控制能力,使得生成內容的質量大幅超越了一些傳統方法,在問答和詩歌等生成任務中接近人類水平,並首次實現根據現代題材創作古體詩。

透過這個方法最佳化以後,上面這個問題的回答有了立竿見影的改變:

一瞬間想到高二的時候,那天下午在操場曬了一中午太陽,和同學一起在樓下打球,下午的夕陽徐徐灑下來,我們三個人一起站在走廊上,倚著欄杆可以面對著夕陽。一直想留下那一瞬間,可惜我以後再也沒有遇到過那樣的時光。

Inverse Prompting 可以讓回答和問題關聯性更強,即更好地利用 Prompt 的資訊來控制所生成的內容。舉個簡單的例子,如果我們想知道如何在考試中取得好成績,我們可以將 “問題:如何在考試中取得好成績?答案:” 輸入給模型,讓模型去預測後面的語句,這裡輸入文字就稱作 Prompt (提示文字)。

這時,模型可能會給出 “認真複習很重要。”、“上課仔細做筆記。” 這樣的答案。為了評估這些答案的質量,Inverse Prompting 將這些答案反向輸入給模型,讓模型去預測問題的出現機率。比如將 “‘認真複習很重要。’回答了問題” 輸入給模型讓它計算‘如何在考試中取得好成績?’的出現機率。

Inverse Prompting 使用原始語言模型本身生成的內容來進行改善,使得原先預訓練模型在不需要進行引數精調的情況下就可以評估生成文字和 Prompt 之間的關聯性(Likelihood),進而提供了更好的可控性。

最終,團隊將 Inverse Prompting 應用在了多種預訓練模型上(包括擁有 30 億引數的大規模中文預訓練語言模型),實現了在多種生成任務(詩歌、問答)上對於基線模型演算法的大幅超越,並在圖靈測試中達到了接近人類的表現。

比如,在長篇問答任務(類似於 Quora 或知乎的問題回答)中, Inverse Prompting 方法在各個方面都比 Prompting 方法和此前最先進的漢語預訓練模型 CPM 模型得分高得多。除此以外,Inverse Prompting 方法可以大展拳腳的生成任務還包括宋詞的生成甚至影象的生成任務上。

Inverse Prompting 雖然可以用來計算 Prompt 與生成內容的關聯性,然而它依然依賴於從大量的生成內容中挑選高質量結果,比如為了生成一首質量不錯的詩歌,可能需要預先生成上千首詩歌,這意味著使用預訓練模型進行大量的計算。

Inverse Prompting + self-training,AI 寫詩上 “雙保險”

中國古典詩歌生成是特定領域長文字生成任務中的 “明珠”,它與現代漢語有著非常不同的表現形式和修辭用法。即便對於最先進的人工智慧模型來說,生成有意義的中國古典詩都是非常困難的。

在各種超大規模的預訓練文字語料中,詩詞都只佔其中非常小的一部分。因此,直接使用預訓練語言模型對輸入的 Prompt 進行計算,只有較小機率能夠產生詩詞類的輸出。

為了提高模型輸出中國詩歌機率,團隊找到的解決方案是:在生成詩詞語句的過程中,放鬆對於 Perplexity 得分的要求,增加 Beam Search 中的隨機性,然後採用詩詞規則及 Inverse Prompting 控制生成語句的格式及質量,使其滿足中國古典詩歌的格律規範。

清華團隊開發寫古詩AI,開放圖靈測試迷惑了近一半人類玩家,你也可以試試!

Inverse Prompting 原理示意圖

傳統的作詩模型大多基於古詩詞進行模型的訓練,因此它們雖然能夠像真實的古代詩人一樣作唐詩宋詞,但卻由於缺乏近現代的知識,難以將這種作詩能力應用在當今的現實場景之中。

然而基於 Inverse Prompting 的作詩則不同,它起到的作用更像是將預訓練語言模型中學習到的作詩能力調取出來,不會受限於題材,因此可以達到一些先前模型難以達到的能力,比如用古體詩為現代題材作詩。

比如開頭那篇虹橋機場,顯然,虹橋機場是非常現代的概念,從未出現在古詩中,但預訓練語言模型從新聞語料中學到了 “虹橋機場” 及其相關的核心特徵,進而結合 Inverse Prompting 將作詩的能力發揮出來,從而完成了這樣一個全新的作詩命題。

這其中,諸如虹橋、夜、燈、月映水簾星、盧浦這樣的意象已經到位了,細細讀來竟還有一種孤獨感和憂傷感。

清華團隊開發寫古詩AI,開放圖靈測試迷惑了近一半人類玩家,你也可以試試!

基於InversePrompting的開放域傳統中國詩詞的生成過程

上文中提到,Inverse Prompting 可以幫助一個語言模型無需精調就能控制文字的生成質量,在符合格式、穩定出詩的情況下得到一些佳句。比如說,透過計算關聯度從隨機生成的 1000 首詩歌中,挑選出其中質量最高的詩歌。

此時,如果要再改進優質詩歌生成的可能性呢?

這是該研究中的另一個重要貢獻:結合 self-training 的強化學習框架(類似於 AlphaGo-Zero 中所採用的方法),將高質量詩歌的生成結果反饋給模型並加以調整,相當於讓模型自己朝著生成優質詩歌的方向去訓練。

如此循壞,便能在 Inverse Prompting 的基礎上進一步提高優質詩句的生成機率,降低所需的計算量和候選內容生成量。

清華團隊開發寫古詩AI,開放圖靈測試迷惑了近一半人類玩家,你也可以試試!

基於搜尋的強化學習框架原理示意圖,如上圖所示,其中,生成器會負責生成大量的詩句

candidate,用 scorer 去判斷這些詩句的好壞、search 出比較好的詩歌之後,能夠得到的較優質的詩歌 sample,它們會比經過比生成器直接生成的要好,再用這些優質的詩歌 sample 去重新 finetune 生成器。

但是,基於搜尋的強化學習框架之下,有一個難點在於,如何評判什麼樣的詩歌算 “好詩”?

團隊認為,如果符合格律要求的情況下,能夠反映詩歌主旨的詩,便可認為是一首好詩。即,使用詩歌內容去預測標題、能夠從內容反推出標題的詩歌,以及在判斷兩句詩歌是否屬於同一首詩、詩內的詩句相互之間被判斷屬於同一首詩,而詩內詩句與其他詩歌的詩句判斷不屬於同一首詩的,都算好詩。

最終,結合了 Inverse Prompting 和 self-training 為模型贏得了 4。40 的平均總分。

清華團隊開發寫古詩AI,開放圖靈測試迷惑了近一半人類玩家,你也可以試試!

當然,正如人類作詩的水平也不能說到達頂峰一樣,Inverse Prompting 方法的奏效,不會是作詩 AI 的終點。

雖然 Inverse Prompting 的預訓練模型能夠很好地理解題材內容,並用詩詞的方式將其表現出來,但它能否真正學習到人類對於詩歌韻律乃至意境的形而上的思考與追求?

這仍是一個未解之謎。

至少在著名科幻作家劉慈欣的筆下,情況不太樂觀。他寫過一篇名為《詩云》的科幻短篇故事,探討的是技術和藝術,尤其是技術對藝術的解構問題 —— 即人類文明中的美學追求是可以用計算來實現的嗎?

故事描述了一種神級文明,人類在這種神級文明眼中好比雜草塵埃。

正當人類主角在某種垃圾焚化裝置中拼命掙扎時,口袋裡掉出了幾篇古詩抄錄紙,精巧而工整的字元矩陣意外引發神的注意。神藉此學習了漢語的資料庫以及有關地球歷史的一切知識,很快邊製作出了 “詩云”—— 一個可以統計出來符合審美的最優解的強大計算機器,但最後,由於無法鑑別出有價值的詩歌,所有的詩歌在詩云中盤旋。

體驗過詩歌圖靈測試之後,你又會如何書寫 “詩云” 故事的新結尾?

相關文章