斯坦福和OpenAI提出meta-prompting,最強(qiáng)零樣本prompting技術(shù)誕生了
最新一代語言模型(尤其是 GPT-4、PaLM 和 LLaMa)已經(jīng)成功拓展了自然語言處理和生成的邊界。這些大規(guī)模模型可以解決許多不同任務(wù),從寫莎士比亞風(fēng)格的十四行詩到總結(jié)復(fù)雜的醫(yī)療報(bào)告和解決競賽級的編程問題。盡管這些模型可以解決多種多樣的問題,但它們并非總是正確的,有時(shí)候也會生成不準(zhǔn)確、誤導(dǎo)性或矛盾的響應(yīng)結(jié)果。
隨著這些模型的運(yùn)行成本越來越低,人們自然會問:是否可以使用腳手架系統(tǒng)(scaffolding system)并使用多個(gè)語言模型查詢來優(yōu)化并且提升這些模型輸出的準(zhǔn)確度和穩(wěn)健性。
斯坦福和 OpenAI 的這項(xiàng)研究提出了一種可用于提升語言模型的功能和性能的新技術(shù),稱為 meta-prompting。
- 論文標(biāo)題:Meta-Prompting: Enhancing Language Models with Task-Agnostic Scaffolding
- 論文地址:https://arxiv.org/abs/2401.12954
- 項(xiàng)目地址:https://github.com/suzgunmirac/meta-prompting
這種技術(shù)涉及構(gòu)建一個(gè)高層級的「元」 prompt,其作用是指示語言模型做到以下幾點(diǎn):
1. 將復(fù)雜的任務(wù)或問題分解成更小的容易解決的子任務(wù);
2. 使用適當(dāng)且詳細(xì)的自然語言指令將這些子任務(wù)分配給專業(yè)的「專家」模型;
3. 監(jiān)督這些專家模型之間的通信;
4. 通過這個(gè)過程應(yīng)用其自己的批判性思維、推理和驗(yàn)證技能。
對于可使用 meta-prompting 有效調(diào)用的語言模型,當(dāng)對其進(jìn)行查詢時(shí),該模型的作用是作為指揮員(conductor)。它會輸出一組消息歷史(或者稱為敘述(narrative)),其由多個(gè)專家模型的響應(yīng)構(gòu)成。這個(gè)語言模型首先會負(fù)責(zé)生成消息歷史中的指揮員部分,這其中包括專家的選取以及為它們構(gòu)建特定的指令。但是,同一個(gè)語言模型本身也會作為獨(dú)立專家,其會基于專業(yè)知識以及指揮員為每條具體查詢選取的信息生成輸出。
這種方法可讓單個(gè)統(tǒng)一的語言模型維持連貫一致的推理路線,同時(shí)還可以利用各種不同的專家角色。通過動態(tài)地為 prompting 選擇上下文,這些專家能為該過程引入全新的視角,同時(shí)指揮員模型還能保持對完整歷史的鳥瞰視角并維持協(xié)調(diào)。
因此,這種方法能讓單個(gè)黑箱語言模型既有效作為中心指揮員,同時(shí)又充當(dāng)一系列不同專家,這樣便可以得到更加準(zhǔn)確、可靠和連貫一致的響應(yīng)。
這里新提出的 meta-prompting 技術(shù)組合并擴(kuò)展了近期研究提出的多種不同的 prompting 思想,包括高層級規(guī)劃和決策、動態(tài)人設(shè)分配、多智能體辯論、自我調(diào)試和自我反思。
meta-prompting 的一個(gè)關(guān)鍵方面是其具有一個(gè)性質(zhì):不受具體任務(wù)影響。
傳統(tǒng)的腳手架方法需要針對每個(gè)任務(wù)調(diào)整具體的指令或示例,而 meta-prompting 則不同,其在多種任務(wù)和輸入上都采用了同一套高層級指令。對怕麻煩的用戶來說,這種通用性尤其有益,因?yàn)檫@樣就不必為每個(gè)具體任務(wù)提供詳細(xì)的示例或具體指示了。
舉個(gè)例子,對于「寫一首關(guān)于自拍的莎士比亞式十四行詩」這樣的一次性請求,用戶無需補(bǔ)充高質(zhì)量的新古典主義詩歌示例。
meta-prompting 方法能提供一種廣泛、靈活的框架,而又不會影響其特定性或相關(guān)性,從而可以提升語言模型的實(shí)用性。此外,為了展現(xiàn) meta-prompting 方法的通用性和整合能力,該團(tuán)隊(duì)還對其系統(tǒng)進(jìn)行了增強(qiáng),使其可以調(diào)用 Python 解釋器。如此一來,該技術(shù)就能支持更加動態(tài)和全面的應(yīng)用,從而進(jìn)一步提升其有效處理多種任務(wù)和查詢的潛力。
圖 2 展示了一個(gè) meta-prompting 的會話流程示例。
其描繪了元模型(Meta Model,即指揮員模型)使用輸入和來自多個(gè)不同的專業(yè)專家模型或代碼執(zhí)行的輸出解讀其自身輸出的過程。這樣的配置讓 meta-prompting 成為了一個(gè)近乎通用的工具。其允許將多個(gè)語言模型的交互和計(jì)算聚合成單一且連貫的敘述。meta-prompting 的不同之處在于其讓語言模型自己決定要使用哪些 prompt 或使用哪些代碼段。
該團(tuán)隊(duì)使用 GPT-4 作為基礎(chǔ)語言模型進(jìn)行了全面的實(shí)驗(yàn),比較了 meta-prompting 與其它無關(guān)任務(wù)型腳手架方法。
實(shí)驗(yàn)發(fā)現(xiàn),meta-prompting 不僅能提升整體性能,而且在多個(gè)不同任務(wù)上也往往能實(shí)現(xiàn)新的最佳結(jié)果。其靈活性尤其值得稱道:指揮員模型有能力調(diào)用專家模型(基本上就是其本身,只是指令不一樣)執(zhí)行多種不同的功能。這些功能可能包括點(diǎn)評之前的輸出、為特定任務(wù)選取特定 AI 人設(shè)、優(yōu)化生成的內(nèi)容、確保最終輸出在實(shí)質(zhì)和形式上都滿足所需標(biāo)準(zhǔn)。
如圖 1 所示,相比之前的多種方法,新方法的提升很明顯。
meta-prompting
直覺知識和抽象概述。meta-prompting 的工作方法是使用一個(gè)模型來協(xié)調(diào)和執(zhí)行多個(gè)獨(dú)立查詢,然后將它們的響應(yīng)綜合起來,進(jìn)而渲染得到一個(gè)最終響應(yīng)。從原理上講,該機(jī)制采用了一種集成方法,即借用獨(dú)立專業(yè)模型的力量和多樣性來協(xié)作解決和處理涉及多方面的任務(wù)或問題。
meta-prompting 策略的核心是其淺層的結(jié)構(gòu),其中使用一個(gè)單一模型(稱為元模型)作為權(quán)威的主實(shí)體。
這種 prompting 結(jié)構(gòu)類似于管弦樂隊(duì),其中指揮家的角色就由元模型充當(dāng),每位音樂演奏者都對應(yīng)一個(gè)不同的特定領(lǐng)域的模型。正如指揮家可以讓多種樂器協(xié)調(diào)彈奏出和諧的旋律一樣,元模型也可以將多個(gè)模型的解答和見解組合起來,為復(fù)雜的問題或任務(wù)給出準(zhǔn)確且全面的解答。
從概念上講,在這個(gè)框架內(nèi),特定領(lǐng)域的專家可以有多種多樣的形式,比如針對特定任務(wù)微調(diào)過的語言模型、用于處理特定類型查詢的專用 API,甚至還可以是計(jì)算器這樣的計(jì)算工具或用于執(zhí)行代碼的 Python 解釋器等代碼工具。這些功能各異的專家都在元模型的監(jiān)督下接受指示和統(tǒng)一,無法直接相互互動或交流。
Algorithmic Procedure. 算法 1 給出了新提出的 meta-prompting 方法的偽代碼。
簡單總結(jié)一下,首先是對輸入執(zhí)行變換,使其符合適當(dāng)?shù)哪0?;然后?zhí)行以下循環(huán):(a) 向元模型提交 prompt,(b) 如有需要,使用特定領(lǐng)域的專家模型,(c) 返回最終響應(yīng),(d) 處理錯(cuò)誤。
需要指出,該團(tuán)隊(duì)在實(shí)驗(yàn)中采用的元模型和專家模型都是 GPT-4。它們的角色差異是由各自收到的指令確定的;其中元模型遵循圖 3 提供的一組指令,而專家模型則遵從元模型在推理時(shí)間動態(tài)確定的指令。
實(shí)驗(yàn)設(shè)置
基準(zhǔn)
該團(tuán)隊(duì)比較了 meta-prompting 與以下 prompting 方法的無關(guān)任務(wù)型零樣本式版本:
- 標(biāo)準(zhǔn) prompting
- 零樣本思維鏈 prompting
- 專家 prompting
- 多人設(shè) prompting
數(shù)據(jù)集和任務(wù)
該團(tuán)隊(duì)在實(shí)驗(yàn)中采用了多種任務(wù)和數(shù)據(jù)集,它們需要多種不同能力,比如數(shù)學(xué)和算法推理、特定領(lǐng)域知識和文學(xué)創(chuàng)造力。這些數(shù)據(jù)集和任務(wù)包括:
- Game of 24:目標(biāo)是使用四個(gè)給定數(shù)值(每個(gè)只能使用一次)構(gòu)建一個(gè)結(jié)果為 24 的算術(shù)表達(dá)式。
- 三個(gè) BIG-Bench Hard(BBH)任務(wù):Geometric Shapes、MultiStep Arithmetic Two 和 Word Sorting;另外還有一個(gè)直接從 BIG-Bench 套件獲取的推理任務(wù) Checkmate-in-One。
- Python Programming Puzzles(P3),即 Python 編程題,包含多個(gè)難度。
- Multilingual Grade School Math,即多語言小學(xué)數(shù)學(xué),這是 GSM8K 數(shù)據(jù)集的一個(gè)多語言版本,包含孟加拉語、日語和斯瓦希里語等語言。
- Shakespearean Sonnet Writing,即莎士比亞式十四行詩寫作,這是該團(tuán)隊(duì)創(chuàng)建的一個(gè)新任務(wù),目標(biāo)是寫出按「ABAB CDCD EFEF GG」嚴(yán)格押韻的十四行詩,其中應(yīng)一詞不差地包含所提供的三個(gè)詞。
答案提取和評估協(xié)議
如圖 3 所示,對于新提出的 meta-prompting 方法,系統(tǒng)指令會鼓勵(lì)元模型以特定格式給出最終答案。
至于評估,則會根據(jù)任務(wù)的性質(zhì)和形式,采用以下三個(gè)指標(biāo)之一:
- Exact Match (EM),精確匹配
- Soft Match (SM),軟匹配
- Functionally Correct (FC),功能正確性
模型和推理
該團(tuán)隊(duì)的主要實(shí)驗(yàn)都使用了 GPT-4(gpt-4-32k)。一些補(bǔ)充實(shí)驗(yàn)則使用了 GPT-3.5(gpt-35-turbo)。不管是 GPT-3.5 還是 GPT-4,都使用了以下指令進(jìn)行微調(diào)。
在全部實(shí)驗(yàn)中,元模型使用的參數(shù)和系統(tǒng)指令都是一樣的。溫度值設(shè)置為 0,top-p 值設(shè)置為 0.95,最大 token 數(shù)為 1024。
主要結(jié)果和討論
表 1 總結(jié)了實(shí)驗(yàn)結(jié)果,新提出的 meta-prompting 的優(yōu)越性得到了體現(xiàn)。
觀察這些方法在所有任務(wù)上的總體性能,可以看到 meta-prompting 為準(zhǔn)確度帶來的顯著提升,尤其是使用了 Python 解釋器工具輔助時(shí)。
具體來說,meta-prompting 方法勝過標(biāo)準(zhǔn) prompting 方法 17.1%,超過專家(動態(tài)) prompting 17.3%,也比多人設(shè) prompting 優(yōu)秀 15.2%。
另外從圖 4 和 5 可以看到,相比于不使用 Python 解釋器的 meta-prompting,整合 Python 解釋器時(shí),在不同任務(wù)上的整體性能可獲得 11.5% 的提升。
該團(tuán)隊(duì)還在論文中深入討論了從實(shí)驗(yàn)中得到了關(guān)鍵見解,包括 meta-prompting 的性能優(yōu)越性、零樣本分解能力、錯(cuò)誤檢測、信息聚合和代碼執(zhí)行等。這里我們就不詳細(xì)說明了,但 Fresh Eyes 這一概念倒是值得介紹一番。
Fresh Eyes 也就是用另一雙眼睛看,這有助于緩解語言模型的一個(gè)眾所周知的問題:犯錯(cuò)時(shí)會一路錯(cuò)到底并且會表現(xiàn)出過度自信。
Fresh Eyes 是 meta-prompting 與多人設(shè) prompting 的一大關(guān)鍵差異,并且實(shí)驗(yàn)結(jié)果也證明了其具有優(yōu)勢。在 meta-prompting 中,可以使用專家(或人設(shè))來對問題進(jìn)行重新評估。這種方法有機(jī)會得到全新的見解,從而有望發(fā)現(xiàn)之前未被發(fā)現(xiàn)有誤的解答。
基于認(rèn)知心理學(xué),F(xiàn)resh Eyes 可以帶來更具創(chuàng)造性的問題求解和錯(cuò)誤檢測結(jié)果。
下面的例子展示了 Fresh Eyes 在實(shí)踐中的好處。假設(shè)任務(wù)是 Game of 24,提供的數(shù)值是 6、11、12 和 13,要求構(gòu)建一個(gè)能讓結(jié)果為 24 的算術(shù)表達(dá)式并且每個(gè)數(shù)只能用一次。其歷史過程可能會是這樣:
1. 元模型提議咨詢解答數(shù)學(xué)問題的專家模型和使用 Python 編程。它強(qiáng)調(diào)了對準(zhǔn)確度和遵守約束條件的必要性,并建議如有需要可讓另一個(gè)專家參與進(jìn)來。
2. 一個(gè)專家給出了一個(gè)解答,而另一個(gè)專家則認(rèn)為其不對,于是元模型建議寫一個(gè) Python 程序來尋找有效的解。
3. 咨詢一個(gè)編程專家,讓其寫一個(gè)程序。
4. 另一個(gè)編程專家在腳本中發(fā)現(xiàn)了一個(gè)錯(cuò)誤,然后對其進(jìn)行修改并執(zhí)行修改后的腳本。
5. 再咨詢一個(gè)數(shù)學(xué)專家,讓其驗(yàn)證該程序輸出的解。
6. 驗(yàn)證完成后,由元模型將其輸出作為最終答案。
這個(gè)示例展現(xiàn)了 meta-prompting 如何在每一步納入新觀點(diǎn),這樣不僅能找到解答,而且還能有效識別和糾正錯(cuò)誤。
該團(tuán)隊(duì)最后討論了一些與 meta-prompting 有關(guān)的其它問題,包括對所使用的專家類型的分析、獲得最終結(jié)果所需的對話輪數(shù)以及如何應(yīng)對無解問題等情況。詳情請參閱原論文。