解密prompt系列26. 人類思考vs模型思考:抽象和發散思維

风雨中的小七發表於2024-03-10

在Chain of Thought出來後,出現過許多的最佳化方案例如Tree of thought, Graph of Thought, Algorithm of Thought等等,不過這些最佳化的出發點都更加"Machine Like",而非"Human Like", 哈哈不是說機器化不好,僅僅是對AGI的一些個人偏好而已。

所以如果我們從人類思考的角度出發,能否把當前模型的思考方式和人類的思考方式進行關聯呢? 我先問了下PPLX-70B人類思維有哪些分類(這個問題RAG真的不如模型壓縮後回答的效果)

解密prompt系列26. 人類思考vs模型思考:抽象和發散思維

我們再把之前已經聊過的一些引導模型推理思考的prompt模板,以及工具呼叫的一些prompt方案和上面的人類思維邏輯進行下不完全的類比:

Prompt策略 類比人類思維
Chain of Thought 邏輯思維中的演繹推理
Few Shot Prompt 類比思維
SELF-REFINE,Relfection 自省思維
ReAct,SelfAsk 後續性思維(線性思維?)
情感思維 哈哈誇誇模型會更好

和上面的人類思維模式相比,似乎還少了抽象思維和發散思維,這一章我們就聊聊這兩種思考方式如何透過prompt來引導。

抽象思維: Step Back Prompt

  • Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models
  • LARGE LANGUAGE MODELS CAN LEARN RULES

DeepMind提出的新Prompt方式,在思維鏈之前加了一步抽象(後退一步思考)。透過把原始問題抽象成更高層次的概括性、概念性問題,降低原始問題中的細節對推理的影響,如下

解密prompt系列26. 人類思考vs模型思考:抽象和發散思維

在RAG場景裡,這類prompt策略很適合解決使用者query過於細節,導致召回效果不佳的問題。使用者在大模型場景的提問往往比在搜尋框中的提問更加具體,包含更多條件和細節,舉個例子query = “哪些國家在經濟陷入低谷時,因為通貨膨脹嚴重,而不得不加息“,如果直接對以上query進行改寫,Decompose拆分,會發現都無法召回有效的內容,因為問題本身粒度已經太細了,這時不需要進一步拆分,相反需要更高層次的總結和抽象。我們只需要把問題修改成“哪些國家發生過被動加息”,這類更高層次的抽象概念,召回效果立刻起飛。

StepBack推理和COT推理相同,都是透過few-shot prompt來引導模型進行後退思考。
論文對三個不同領域的任務進行了評估,分別是STEM領域的推理任務,知識密集的QA任務,和multi-hop推理任務。其中前者和後兩者的prompt模板存在差異,前者是讓模型先抽象理論概念,後兩者是更通用的提出stepback問題,個人感覺是歸納推理從特殊到一般的推理抽象過程在不同領域的差異性

STEM推理的few-shot prompt模板如下

解密prompt系列26. 人類思考vs模型思考:抽象和發散思維

知識密集的QA任務和multi-hop推理任務都是使用的以下few-shot prompt模板

解密prompt系列26. 人類思考vs模型思考:抽象和發散思維

測試下了step back prompt中few-shot才是核心,因為在不同領域中歸納推理的思維是不同的,有需要對概念進行抽象,有需要對不同時間,實體進行抽象,有需要對條件進行放寬,以下是論文中在QA場景使用的一些few-shot案例

解密prompt系列26. 人類思考vs模型思考:抽象和發散思維

效果上在PaML-2的模型上進行試驗,各個任務上step-back都能相比COT有進一步的顯著提升,在多數任務上stepback + RAG都能超越GPT-4的效果。並且prompt效果和few-shot的個數無關,1-shot的效果就很好。

解密prompt系列26. 人類思考vs模型思考:抽象和發散思維

不過在我們的場景中測試,論文中提到的幾個stepback的問題其實一定程度上被放大了,導致當前看效果比較一般,主要有以下幾個問題

  1. Context Loss:在抽象問題的過程中,模型丟掉了核心的條件,導致問題丟失了核心資訊,後面的RAG也隨之錯誤
  2. Abstraction Error: 在垂直領域,模型的歸納推理效果有限,往往在第一步定位principle、concept就存在錯誤
  3. Timing:Step Back Prompt和Decompose其實是相對對立的關係,各自適合解決一部分問題,在RAG場景中Decompose更適合粗粒度Query,Step Back適合細粒度Query,但想讓模型自己決策不同的思考方式難度有點高哦

另一篇論文Large Language Models can Learn Rule思路也有些類似,也是先歸納推理再演繹推理,透過把抽象出的通用知識注入prompt,用來幫助下游推理。這裡就不細說了~

發散思維:Diversity of Thought

  • Diversity of Thought Improves Reasoning Abilities of Large Language Models

發散思維簡單說就是“一題多解“,“一物多用”, 其實在Self-Consistency這類Ensemble方案中就出現過。Self-Consistency透過讓模型隨機生成多個推理,從中Major Vote出機率最高的答案,更像是發散思維的對立收斂思維,重心放在從四面八方的各種嘗試中抽象問題的核心。

Self-Consistency的重心放在收斂,而Diversity of Thought的重心放在發散。這裡論文提出了兩個可以發散模型思維的prompt方式

  • Approaches:以XX方式思考,例如數學問題可以讓模型直接計算,化簡計算,視覺化,逆推等等
  • Persona:像誰誰一樣思考,例如金融問題可以像Buffett一樣思考,數學問題像Turing一樣思考,其實每個名人背後也是相關思維思維方式的一種抽象,例如沃倫巴菲特代表是價值投資。莫名出現了拘靈遣將的即視感......

基於以上的多個發散維度,論文給出了兩種prompt構建的方案

  • 多個approach拼成一個one-shot讓模型推理一次給出多個不同的結果
  • 1個approach作為one-shot讓模型推理多次

分別對應以下兩種prompt

解密prompt系列26. 人類思考vs模型思考:抽象和發散思維

解密prompt系列26. 人類思考vs模型思考:抽象和發散思維

那如何得到上面的這些approach呢?這裡論文也採用了大模型自動構建的方案,在某一類問題中隨機取樣query,使用以下prompt讓模型生成回答該問題可以使用的方案,最後每個領域選擇出現頻率最大的TopN個Approach用來構建prompt。挖掘approach的prompt如下

解密prompt系列26. 人類思考vs模型思考:抽象和發散思維

效果上,使用發散思維和COT進行配合,在GSM8K,AQUA等推理任務,CommenseQA等常識任務,和BlocksWorld等規劃任務上均有顯著提升。並且和Self-Consistency的結論相似,以上發散思維的Ensemble數量更多,效果越好。

解密prompt系列26. 人類思考vs模型思考:抽象和發散思維

整體上以上的兩種思維邏輯都還相對初步,對比已經比較成熟的演繹推理的COT還有再進一步探索的空間,以及如何在不同場景下讓模型選擇不同的思維模式,進行思考,並最終收斂到正確的結果也值得再進行嘗試。

想看更全的大模型相關論文梳理·微調及預訓練資料和框架·AIGC應用,移步Github >> DecryPrompt

相關文章