大資料文摘授權轉載自夕小瑤科技說
作者:ZenMoore、Wangchunshu Zhou
顯然不是,至少在今天我們所讨論的長文本生成上,ChatGPT 可以說是幾乎完全不太可能生成長篇小說。
在某種程度上,這是 Transformer 模型的固有局限,因為 Transformer 核心元件 self-attention 的
複雜度注定讓它不能處理太長的輸入,也是以不太适合産生太長的輸出。
為了解決這個問題,很多研究試圖将 RNN 的那種循環機制引入到 Transformer 裡面,比如著名的Transformer-XL[1], Block-Recurrent Transformer[2].
然而,這些方法存在一個很關鍵的、又很現實的問題:需要修改模型架構,不相容 ChatGPT 等閉源大模型,因為 ChatGPT 的模型參數、結構是不會公開給使用者的,我們能做的,僅僅是喂給它一些 Prompt.
正是因為這些大模型的閉源屬性,導緻我們在使用它們的時候,不得不以一整個模型作為最小機關,而無法進一步拆解模型内部的子產品,将其修改以适配長文本生成的需要。
那麼,在這種情況下,我們還怎麼把循環機制引入到閉源大模型當中去呢?
今天讨論的這篇文章實作了一個絕妙的想法:僅用自然語言 Prompt,我們就可以模拟 LSTM 機制,而完全不需要修改 ChatGPT 的内部結構!
論文位址:
https://arxiv.org/abs/2305.13304論文機構:
蘇黎世聯邦理工大學項目位址:
https://github.com/aiwaves-cn/RecurrentGPT線上Demo一:
https://www.aiwaves.org/recurrentgpt (長篇小說寫作)線上Demo二:
https://www.aiwaves.org/interactivefiction (互動式小說)
基本原理
RecurrentGPT 的整體架構基于模型與其自身進行的互動(可參考文獻 Interactive Natural Language Processing[3] )。
如上圖所示,在每個時間步上,ChatGPT 會接受四個部分的輸入:
- 上一個時刻的輸出:
- 梗概(Plan):
- 短期記憶(Short-Term Memory):
- 長期記憶(Long-Term Memory):
ChatGPT 在生成内容的時候,會執行三種類型的操作:
- 更新梗概:生成下一步的内容梗概,這個生成的梗概可能有多種備選參考,可以使用一個額外的“使用者模拟器”對這些參考進行篩選,選出最合适的那個梗概;
- 更新短期記憶:記錄最近生成的内容的摘要;
- 更新長期記憶:儲存曆史生成内容中與目前時間步最相關的内容
在具體實作上,作者采用了如下圖所示的 Prompt:
▲RecurrentGPT 使用的具體 Prompt
作者們利用這個 Prompt 訓示語言模型在更新短期記憶的時候,不僅新增最新生成内容中的有用部分,還要删除掉與之後内容生成無關的過往記憶。
除此之外,作者在 Prompting 的過程中,也着重強調了小說寫作場景的重制,以使 ChatGPT 生成的内容更具備像小說那樣的細節,防止其快速地完成情節的叙述。
實驗結果
作者們使用了人工逐對評測的方式:
在多種多樣的小說風格、類型等方面,人類讀者普遍認為 RecurrentGPT 的表現更具趣味性和連貫性。
實際效果
用法一:内容創作者輸入場景設定和需求,RecurrentGPT 就可以自動産生長文本,而不需要人類過多的幹預。
用法二:在生成梗概的時候,使用者也可以對梗概進行選擇或者編輯等操作,以控制長文本的生成過程。
用法三:類似于互動視訊那樣,RecurrentGPT 不僅可以服務于内容創作者,還能直接給内容消費者提供新的體驗,作者稱之為 "AI as Content"("AI即内容")。内容消費者不僅可以讀小說,還能與小說直接進行互動,跳過内容創作者使用AI進行内容創作的步驟。
總結
本文介紹了一種名為 RecurrentGPT 的方法,通過使用自然語言的 Prompt,模拟了 LSTM 的循環機制,進而在閉源大模型(如 ChatGPT)中實作了長文本生成的能力,而無需修改模型的内部結構。
RecurrentGPT 的整體架構基于模型與其自身的互動,通過更新梗概、短期記憶和長期記憶來生成内容。作者通過人工評測和實驗結果展示了 RecurrentGPT 在多樣的小說風格和類型方面的表現優勢。實際應用中,RecurrentGPT 可用于自動産生長文本、讓内容創作者選擇或編輯梗概以控制生成過程,并可以為内容消費者直接提供互動式體驗,将 AI 作為内容呈現給消費者。
參考資料
[1]Transformer-XL: https://arxiv.org/pdf/1901.02860.pdf[2]Block-Recurrent Transformer: https://arxiv.org/abs/2203.07852[3]Interactive Natural Language Processing: https://arxiv.org/abs/2305.13246