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