LLM最全「怪癖」首曝光!馬里蘭OpenAI等30+學者祭出75頁提示報告
大語言模型提示中,竟有不少「怪癖」:重復某些內容,準確性就大大提高;人名變匿名,準確性就大大下降。最近,馬里蘭OpenAI等機構的30多位研究者,首次對LLM的提示技術進行了大規模系統研究,并發布75頁詳盡報告。
最近,來自馬里蘭大學、OpenAI、斯坦福、微軟等12所機構的30多名研究者,首次對LLM的提示技術進行了大規模的系統研究,并發布了一份長達75頁的詳盡報告。
大語言模型提示的「怪異世界」,首次如此詳盡地被暴露在我們眼前。
論文地址:https://arxiv.org/abs/2406.06608
如今,提示已經無處不在,然而在整個生成式AI行業,仍然缺乏對已出現的數百種技術系統和徹底的調查。
在這項工作中,研究者通過結合人工和AI的力量,從arXiv、Semantic Scholar和ACL數據庫中處理了4,797條記錄,并通過PRISMA審查過程篩選出1,565篇相關論文。
由此,他們得到一種分類法,建立了包含33個術語的綜合詞匯表,一個包含58種文本提示技術的分類體系,以及40種其他模態的提示技術等。
這篇有史以來最全的提示技術報告,紛紛得到了業內大佬們的鼎力推薦。
這里需要明確三個概念——
- 提示,是指向GenAI提供提示,然后生成響應的過程。
- 提示技術,是一個藍圖,描述如何構造一個提示或多個提示的動態排序。它可以結合條件或分支邏輯、并行性或涉及多提示的架構。
- 提示工程,是指通過修改或更改正在使用的提示技術,來開發提示的迭代過程。
一、奇奇怪怪的大語言模型
有趣的是,在這個過程中,研究者發現了大語言模型一些奇怪的現象。
1.?重復某些話,LLM會給你驚喜
研究者發現,如果重復部分提示,會顯著提高模型的性能。
比如,在一個關于自殺危機檢測的案例中,因為意外,導致一封包含案例背景的郵件在提示中出現了兩次,這就導致模型的性能大大提高。
刪除掉重復內容后,模型的準確性就顯著降低了。
這是什么原理?
對此,研究者也無法給出明確的解釋。
2. 說出你的名字!
研究者在測試中發現的另一件有趣的事,就是在提示中包含人名也很重要。
比如在上面的郵件中,如果名字被匿名,或者替換為隨機姓名時,模型的準確性也會下降。
為何LLM會對這種看似無關痛癢的細節如此敏感?
對此,研究者們也沒有答案。
往好處想,我們可以通過探索,來提供LLM的性能。
然而如果往壞處看,這也證明提示工廠目前仍然是我們人類難以理解的黑盒。
在我們人類看來毫不相干的細節,LLM卻出乎意料地敏感。
為此,研究者建議,知道如何控制模型的提示工程師,一定要和準確理解目標的專家之間密切合作。
因為,這些AI系統是被哄騙的,而非被編程的。它們除了對所使用的特定LLM非常敏感,對提示中的特定細節也很敏感,但我們實在找不出任何明顯理由,證明這些細節到底怎么重要了。
3.?示例的選擇和順序,LLM也很敏感
通常最有效的提示方法,就是少樣本提示了,也即在提示中直接舉例。
在語言理解MMLU基準測試中,帶有示例的提示取得了最佳效果,尤其是與CoT結合時
不過,這其中也有一些奇怪的陷阱:LLM對示例的選擇和順序,竟然非常敏感。
同一示例以不同順序出場,竟讓模型的效果大相徑庭,準確度可以低于50%,也可以高于90%。
4.?代碼輔助推理潛力巨大
目前在研究和行業中得到廣泛應用,只有一小部分提示技術,最常見的是就是few-shot和CoT。
但「思維程序」(Program-of-Thoughts)之類的技術(代碼被用作推理的中間步驟)也很有前途,但尚未廣泛使用。
而且,在案例中,自動化取得了最佳結果。
由于手動提示對我們往往是很大的挑戰,因此自動化顯然潛力巨大。不過在研究人員看來,人類微調和機器優化的結合,可能會是最有前途的方法。
二、三大提示技術
論文中,研究人員提出了全面的分類提示技術——基于文本、多語言、多模態三大類。
1. 文本提示
在文本提示類中,整整涵蓋了58種純文本提示技術,如下圖所示。
如下,將會列舉幾個基于文本提示技術的例子。
In-Context Learning(ICL)是指AI通過提示中的范例/相關指令,可以學習技能,無需更新權重再訓練的能力。
比如,你給出2+2=4,4+5=9,然后8+0這樣的提示之后,LLM便會從前兩個算式中學習推算,進而解決任務。
再比如,給出指令,從以下文本中提取包含3個同樣字母,以及至少有3個其他字母的所有單詞:{TEXT}。LLM通過理解指令,針對文本完成查找。
不過,「學習」一詞或許有些誤導。
ICL其實可以被視為「指定任務」,可能這些技能并非是真正的學習,而早已存在訓練數據之中。
就好比,你讓LLM去把一個單詞「奶酪」翻譯成法語。
上圖2.4中給出例子的提示,也稱為「少樣本」提示(Few-Shot Prompting),模型與此進行的是少樣本學習。
這里,樣本質量非常關鍵,決定著模型的輸出性能。而且,樣本的順序也會影響模型的行為,進而導致LLM輸出的準確率可能在50%以下,或90%以上不等。
對此,研究人員建議可以使用K-Nearest Neighbor(KNN)算法、Vote-K等方法,來提升樣本質量。
此外,還可通過AI自生成上下文學習(SG-ICL)方法,讓AI自動生成樣本。
作者表示,在訓練數據不可用的情況下,它的效果要好于零樣本場景。
作者總結了在設計少樣本提示時的六個主要設計決策,如下圖所示。
針對零樣本,有很多我們熟知的提示技術,比如:
- 角色提示:指定AI一個角色,作家、數學老師等。
- 風格提示:在提示中指定所需的風格、語氣或體裁。
- 情感提示:將與人類心理相關的短語納入提示,如「這對我的職業生涯非常重要」。
- 系統2 Attention(S2A):要求LLM重寫提示語,并刪除其中與問題無關的任何信息,然后,自動將新的提示傳遞給 LLM,以獲取最終響應。
- SimToM:涉及多人或多物的復雜問題時,LLM試圖確定一個人所知道的一系列事實,然根據這些事實回答問題。這是一個雙提示過程,有助于消除提示中無關信息的影響。
- 重述和回答(RaR):指示LLM在生成最終答案之前,重述和擴展問題。
- 重讀(RE2):在提示語中加上「再次閱讀問題」提示,可顯著提高大模型在復雜推理問題性能。
- 自我追問(Self-Ask):讓LLM先決定是否需要針對給定的提示提出后續問題。若需要,LLM會生成這些問題,然后回答這些問題,最后回答原始問題。
在「思維生成」上,CoT是其中最具代表性的方法,而「最純凈」的CoT是不需要任何示例,即零樣本CoT。
僅需在提示語中,添加一個誘導思考的短語——讓我們一步一步地思考,讓我們一步一步地解決這個問題……
此外,CoT還可以是少樣本CoT,顧名思義,就是為LLM提供一些樣本,可大幅提升模型性能。
我們還可以通過分解(Decomposition)的提示策略,明確將問題分解,以提升模型解決問題的能力,其中就包括:
- 從少到多提示法:提示LLM將給定的問題分解成子問題,但不求解這些子問題。分解完成后,再依次解決這些子問題,每次都將模型響應附加到提示中,直到得出最終結果。
- 分解提示(DECOMP):少量樣本會提示LLM如何使用某些函數,比如包括字符串分割或互聯網搜索等(單獨作為工具調用)。鑒于此,LLM將其原始問題分解為子問題,并將其發送給不同的函數。
- 「計劃-解決」提示:包括一個改進的零樣本CoT提示——讓我們先了解問題,并制定一個解決問題的計劃。然后,讓我們執行計劃,逐步解決問題。
- 思維樹(ToT):從初始問題開始,然后以思維的形式生成多個可能的步驟,從而創建一個樹狀搜索問題。并評估每一步在解決該問題上所取得的進展。
- Skeleton-of-Though:將一個復雜問題分解成多個子問題,并行地讓LLM分別回答,最后將結果合并就能得到整體回答。
與「分解」相對應地,還有「集合」(Ensembling)策略,是指使用多個提示來解決同一問題,然后將這些回答匯總為最終輸出的過程。
其中的方法包括,示例集合(DENSE)、推理混合專家(MoRE)、自洽、DiVeRSe、多種CoT元推理等等。
最后,還有自我批評(Self-Criticism)提示策略,包括以下幾種技術:自我校準、逆轉思維鏈 (RCoT)、自我驗證、驗證鏈 (COVE)、累積推理。
除了研究提示技術,研究人員還回顧了用于自動優化提示的「提示工程」技術。
提示工程過程包括三個重復步驟:
1)在數據集上進行推理,2)評估性能,3)修改提示模板。
這是一個用于標注任務的LLM輸出注釋結果,展示了答案工程(Answer Engineering)的三個設計決策:答案形狀的選擇、答案空間和提取器。
由于這是一個分類任務的輸出,答案形狀可以限制為單個token,答案空間可以限制為兩個token之一(「positive」或「negative」),盡管在這個圖像中它們沒有被限制。
最后,研究者總結發現,在所有的提示技術中,少樣本學習、零樣本推理、高質量上下文提示示例,自洽,提示順序敏感性使用率排在了前五。
與此同時,我們還可以通過數據集中論文引用的基準數據集和模型次數,來衡量提示技術的使用情況。
2. 多語種提示
在多語種提示技術中,研究人員主要介紹了CoT、Human-in-the-Loop、上下文學習、上下文示例選擇、翻譯提示、多語種技術、提示語言這幾大要點。
先翻譯后提示,是最簡單的策略。
不過,有些提示技術,要比翻譯性能速度來的要快。
比如CoT已經通過多種方法(XLT、CLSP),已擴展到了多語種環境中。
針對上下文學習的策略有:X-InSTA提示,以及跨語言翻譯上下文提示(In-CLT)。同時,上下文示例選擇對模型多語言性能也至關重要。
因此,需找與源文本語義相似的上下文示例,就成為一項技術活。
有研究者曾提出了,PARC(通過跨語言檢索增強提示)的方法。Human-in-the-Loop包含了交互鏈提示(ICP)以及迭代提示兩種方法。
另外,提示模板語言選擇會明顯影響模型的性能。
在多語言任務中,用英語構建提示模板,往往比用任務語言更加有效。這是由多數LLM在預訓練期間,使用了大量的英文數據決定的。
順便提一句,任務語言提示模板,則是針對特定語言使用情況來使用任務語言提示。
3. 多模態提示
隨著GenAI模型的發展,現今也出現了許多多模態提示技術。
1)圖像
比如圖像形態的提示,包括照片、圖畫、屏幕截圖等數據。
這個過程中,可以使用負面提示對某些提示中的某些術語進行數字加權,讓模型更多或更少地考慮它們。
比如,如果對「錯誤的手」或「多余的手指」進行負權重,模型更有可能生成解剖學上正確的手。
如今,CoT已經以各種方式擴展到了圖像領域。
比如一個簡單的例子,就是包含數學問題的圖像的提示,同時附有文本說明「一步步解決這個問題」。
另外,還有職責明確的思維鏈。
上面這道題,要求考慮每對磁鐵的磁力,來判斷以下陳述哪個是正確的。
這個例子證明了,輸入理由在多模態推理中是多么重要,以及理由在zero-shot和fine-tuning場景中的不同作用它可以把從最少到最多的提示擴展到多模態設置,創建子問題,然后解決它們,將答案組合成最終響應。
比如這項任務中,要求模型選出圖中的哺乳動物。
這項任務要求模型回答:哪種溶液中的藍色顆粒濃度更高?
請問:這種雜交產生的大鼠是侏儒的概率有多大?
多模態思維圖則是將Graph-of-Thought擴展到多模態設置中。在推理時,輸入提示會用于構建思維圖,然后和原始提示一起使用,來生成回答問題的基本原理。
當圖像與問題一起輸入時,圖像標注模型被用來生成圖像的文本描述,然后在思維圖構建之前,將其附加到提示中,以提供一種視覺的上下文。
圖像鏈(CoI)是思維鏈提示的多模態擴展,生成圖像是其思維過程的一部分。
用「讓我們逐個圖像思考」來生成SVG,模型就可以用它進行視覺推理了。
具體來說,CoI的首要步驟,就是逐步生成圖像。
不過要求SD XL或Dall-E遵循復雜指令生成圖像時,他們卻遇到了困難。因此,研究者引入符號多模態LLM。
當LLM提供各種文本提示時,它將生成不同格式(如SVG格式)的符號表示。
該圖展示了SDXL(中)和 DALL-E 3(右)使用原始圖像(左)中的標注生成新圖像的過程
「一個女人正在等電梯,但電梯里的人卻著火了。這種情況會在哪里發生?」可以看出,在解決相同問題時,與純文本推理相比,CoI的直覺性更強,能夠用視覺常識知識來補充文本中缺失的細節,從而輔助推理過程。
除了圖像之外,還有分解提示、視頻提示,以及3D提示技術,可以顯著提升多模態模型的響應性能。
三、案例研究:自殺危機綜合癥(SCS)的標注
在這項研究中,研究人者將提示技術應用于標注Reddit帖子是否表明自殺危機綜合癥(SCS)的任務。
通過這個案例研究,未來去展示提示工程在現實世界問題中的應用。
對此,研究人員使用了馬里蘭大學的Reddit自殺傾向數據集,并與一位專家提示工程師合作,記錄了他們將F1分數從0提升到0.53的過程。
不同提示技術的陷阱分數
隨著提示工程師的開發,不同提示技術的陷阱分數被繪制成圖
自動化技術(DSPy)能夠擊敗人類提示工程師
1. PRISMA審查過程
論文的數據收集過程,遵循了基于PRISMA方法的系統審查流程。
首先,通過關鍵詞搜索從arXiv、Semantic Scholar和ACL數據庫中抓取數據。
其中,包含44個術語,每個術語都與提示和提示工程密切相關。
然后,根據論文標題進行去重,通過人類和AI審查確定相關性,并通過檢查論文正文中是否包含「prompt」一詞自動刪除不相關的論文。
參考資料:
https://trigaten.github.io/Prompt_Survey_Site/
https://arxiv.org/abs/2406.06608
新智元報道 編輯:編輯部
本文由人人都是產品經理作者【新智元】,微信公眾號:【新智元】,原創/授權 發布于人人都是產品經理,未經許可,禁止轉載。
題圖來自Unsplash,基于 CC0 協議。
- 目前還沒評論,等你發揮!