精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
一文讀懂「Chain of Thought,CoT」思維鏈

前言: 思維鏈,在人工智能領域,是一個非常非常新的概念。強大的邏輯推理是大語言模型“智能涌現”出的核心能力之一,好像AI有了人的意識一樣。而推理能力的關鍵在于——思維鏈(Chain of Thought,CoT)。

相關概念:

  • 語言智能可以被理解為“使用基于自然語言的概念對經驗事物進行'理解’以及在概念之間進行'推理’的能力”,隨著參數量的飛升,以Transformer 為基礎架構的大規模語言模型以 “Chat”的方式逐漸向人們展現出了它的概念理解與概念推理的能力;
  • 推理一般指根據幾個已知的前提推導得出新的結論的過程,區別于理解,推理一般是一個“多步驟”的過程,推理的過程可以形成非常必要的“中間概念”,這些中間概念將輔助復雜問題的求解。

一、什么是思維鏈CoT?

Chain-of-Thought(CoT)是一種改進的Prompt技術,目的在于提升大模型LLMs在復雜推理任務上的表現,對于復雜問題尤其是復雜的數學題大模型很難直接給出正確答案。如算術推理(arithmetic reasoning)、常識推理(commonsense reasoning)、符號推理(symbolic reasoning)。COT通過要求模型在輸出最終答案之前,顯式輸出中間逐步的推理步驟這一方法來增強大模型的算數、常識和推理能力。簡單,但有效。

2022 年,在 Google 發布的論文《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》中首次提出思維鏈(Chain of Thought),思維鏈就是一系列中間的推理步驟(a series of intermediate reasoning steps)。通過讓大模型逐步參與將一個復雜問題分解為一步一步的子問題并依次進行求解的過程可以顯著提升大模型的性能。


區別于傳統的 Prompt 從輸入直接到輸出的映射 <input——>output> 的方式,CoT 完成了從輸入到思維鏈再到輸出的映射,即 <input——>reasoning chain——>output>。如果將使用 CoT 的 Prompt 進行分解,可以更加詳細的觀察到 CoT 的工作流程。
一個完整的包含 CoT 的 Prompt 往往由指令(Instruction),邏輯依據(Rationale),**示例(Exemplars)**三部分組成。

  • 指令:用于描述問題并且告知大模型的輸出格式;
  • 邏輯依據:指 CoT 的中間推理過程,可以包含問題的解決方案、中間推理步驟以及與問題相關的任何外部知識;
  • 示例:指以少樣本的方式為大模型提供輸入輸出對的基本格式,每一個示例都包含:問題,推理過程與答案。

是否包含示例為區分,可以將 CoT 分為 Zero-Shot-CoT 與 Few-Shot-CoT:

  • Zero-Shot-CoT 不添加示例而僅僅在指令中添加一行經典的“Let’s think step by step”,就可以“喚醒”大模型的推理能力。
  • Few-Shot-Cot 則在示例中詳細描述了“解題步驟”,讓模型照貓畫虎得到推理能力。

CoT 大幅度提高了 LLM 在復雜推理任務上的表現,并且輸出的中間步驟方便使用者了解模型的思考過程,提高了大模型推理的可解釋性。目前,思維鏈推理已經成為大模型處理復雜任務的一個常用手段。

二、CoT原理和結構

2.1 原理

關于 CoT 為什么會生效,目前尚且沒有一套被大家廣泛接受的普遍理論。但是,有許多論文對 CoT 與大模型的互動進行了一系列實驗,類似物理實驗與物理理論的關系,在實驗中一些有意思的現象或許可以幫助我們理解 CoT 的工作原理:

  1. 模型規模小會導致 CoT 失效;
  2. 簡單的任務 CoT 不會對模型性能帶來提升;
  3. 訓練數據內部彼此相互聯結程度的增加可以提升 CoT 的性能;
  4. 示例中的錯誤,或者無效的推理步驟不會導致 CoT 性能的下降;
    如果我們對這些現象做一些總結與延申,或許可以認為:首先,CoT 需要大模型具備一些方面“最基礎”的知識,如果模型過小則會導致大模型無法理解最基本的“原子知識”,從而也無從談起進行推理;其次,使用 CoT 可以為一些它理解到的基礎知識之間搭起一座橋梁,使得已知信息形成一條“鏈條”,從而使得大模型不會中途跑偏;最后,CoT 的作用,或許在于強迫模型進行推理,而非教會模型如何完成推理,大模型在完成預訓練后就已經具備了推理能力,而 CoT 只是向模型指定了一種輸出格式,規范模型讓模型逐步生成答案。

什么時候使用CoT?
CoT 應當被用于 20B 以上參數規模的模型之中,并且模型的訓練數據應當于任務問題相關且彼此相互有較強的聯結。
首從工程的角度而言,CoT 的適用場景抽象一下可以被歸納為三點,分別是使用大模型(1),任務需要復雜推理(2),參數量的增加無法使得模型性能顯著提升(3)。此外,現有的論文實驗也表明,CoT 更加適合復雜的推理任務,比如計算或編程,不太適用于簡單的單項選擇、序列標記等任務之中,并且 CoT 并不適用于那些參數量較小的模型(20B以下),在小模型中使用 CoT 非常有可能會造成機器幻覺等等問題。

而從理論角度,一篇來自斯坦福的論文《Why think step-by-step? reasoning emerges from the locality of experience》揭示了**當大模型的訓練數據表現出了變量的局部簇結構(Local Clusters of Variables)**時,CoT 將會展現極好的效果。而變量的局部簇主要指訓練數據中變量之間有著強的相互作用,相互影響的關系。

此外,也有研究指出,當給予大模型的示例之間彼此之間互相區分并不相同時,也有助于提升 CoT 的性能。同時,邏輯依據是否與問題相關,邏輯推理步驟的順序也會顯著影響 CoT 的性能。另外一個有趣的發現是,使用代碼數據訓練大模型,或者使用符合 CoT 格式的數據訓練模型也有助于提升 CoT 的性能。總結一下:CoT 應當被用于 20B 以上參數規模的模型之中,并且模型的訓練數據應當于任務問題相關且彼此相互有較強的聯結。

2.2 COT結構

1、人工構造:質量高,但人力成本大,不好優化、不好跨任務遷移,如Few-shot CoT;
2、自動構造:分為 Zero-shot CoT和 Auto CoT等。
但自動的質量一般沒有人工的好,導致大模型幻覺問題嚴重。

人工構建

案例:Few-shot CoT:一個復雜的推理任務,其可以有多種推理路徑(即解題思路),最終都能夠得到正確的答案。故Self-Consistency在解碼過程中,拋棄了greedy decoding的策略,而是使用采樣的方式,選擇生成不同的推理路徑,每個路徑對應一個最終答案。


缺點:需要大量人工成本投入。

自動構建

案例1:Zero-shot CoT
前者通過特定的提示文本激發模型在沒有示例的情況下生成推理鏈條;


零樣本思維鏈(Zero Shot Chain of Thought,Zero-shot-CoT)提示過程是對 CoT prompting 的后續研究,引入了一種非常簡單的零樣本提示。他們發現,通過在問題的結尾附加“Let’s think step by step”這幾個詞,大語言模型能夠生成一個回答問題的思維鏈。從這個思維鏈中,他們能夠提取更準確的答案。
其實 Zero-shot-CoT 是一個 pipeline。也就是說“Let’s think step by step”這句話,只是通過這個 prompt 讓LLM 盡可能生成一些思考過程,然后再將生成的 rationale(理由) 和 question 拼在一起,重新配合一個answer 指向的 prompt 如“The answer is ”來激勵模型生成答案。

從技術上講,完整的零樣本思維鏈(Zero-shot-CoT)過程涉及兩個單獨的提示/補全結果。在下圖中,左側生成一個思維鏈,而右側接收來自第一個提示(包括第一個提示本身)的輸出,并從思維鏈中提取答案。這個第二個提示是一個自我增強的提示。


缺點:不穩定

案例2:Auto-CoT


案例2: Auto CoT
使用前者零樣本生成的推理鏈條,并結合示例選擇策略,通過少樣本學習的方式生成推理鏈條。

三、優缺點

優點

CoT 的能力已經被無數工作所驗證,歸納為以下四點:

  1. 增強了大模型的推理能力:CoT 通過將復雜問題分解為多步驟的子問題,相當顯著的增強了大模型的推理能力,也最大限度的降低了大模型忽視求解問題的“關鍵細節”的現象,使得計算資源總是被分配于求解問題的“核心步驟”;
  2. 增強了大模型的可解釋性和可信度:對比向大模型輸入一個問題大模型為我們僅僅輸出一個答案,CoT 使得大模型通過向我們展示“做題過程”,使得我們可以更好的判斷大模型在求解當前問題上究竟是如何工作的,同時“做題步驟”的輸出,也為我們定位其中錯誤步驟提供了依據;
  3. 增強了大模型的可控性:通過讓大模型一步一步輸出步驟,我們通過這些步驟的呈現可以對大模型問題求解的過程施加更大的影響,避免大模型成為無法控制的“完全黑盒”;
  4. 增強了大模型的靈活性和創造性:僅僅添加一句“Let’s think step by step”,就可以在現有的各種不同的大模型中使用 CoT 方法,同時,CoT 賦予的大模型一步一步思考的能力不僅僅局限于“語言智能”,在科學應用,以及 AI Agent 的構建之中都有用武之地。

缺點

  1. 思維鏈提示需要用戶提供一些自然語言形式的推理過程,這可能對用戶有一定的負擔和要求。
  2. 思維鏈提示可能不適用于所有類型的問題,特別是一些需要專業知識或常識的問題。
  3. 思維鏈提示可能導致ChatGPT過度依賴于給定的推理過程,而忽略了其他可能的解決方案或角度。

四、應用場景

思維鏈提示適用于哪些領域?思維鏈提示主要適用于需要復雜推理的領域,例如數學、常識和符號推理等。思維鏈提示可以幫助大語言模型生成一系列推理步驟,從而解決多步驟的問題,提高準確率和可解釋性。思維鏈提示也可以與其他技術結合,例如行動指令、檢索、組裝等,讓大語言模型具備更強的執行能力和知識生成能力。

4.1 多模態 CoT

具有很大的應用前景,在 CoT 中,多模態可以分為兩類:輸入多模態與輸出多模態。


其中,MM-CoT 是輸入多模態研究的第一篇工作,MM-CoT 側重使用微調方法嵌入 CoT,通過將語言和圖像合并在一個包含推理生成與答案推理的兩階段的框架中,使用微調大模型賦予輸入多模態 CoT 的能力。基于 MM-CoT,GoT-Input 方法通過對 CoT 生成的思維圖進行抽取構建三元組,并使用 GNN 將文本、圖像與 CoT 統一,從而生成包含 CoT 信息的最終答案。而區別于輸入多模型,VCoT 解決了一個輸出多模態的問題,VCoT 通過以生成圖片的“標題”以及識別核心關注點作為圖像生成的啟動過程,通過遞歸的方式填充圖像信息,從而實現輸出多模態。

4.2 其他領域

除了多模態 CoT 以外,CoT 目前也已經用于如文本摘要(SumCoT),開放域問答(Self-Prompting LLMs),機器翻譯(MAPS),化學(ChemCrow)、醫學(Med-PaLM)等等領域

4.3 結合Agent

我們期望通過各種AI 技術構建的 Agent 事實上是一類擁有“自主智能的實體”,可以自主的發現問題、確定目標、構想方案、選擇方案、執行方案、檢查更新?;诖竽P徒鉀Q問題的“通用性”與預訓練得到的“先天知識”,構建的大模型智能體可以被認為具有如下圖的結構:


上圖中大模型智能體主要由三部分組成,分別是 Agent 主體,工具與環境。當人類指令輸入 Agent 主體后,Agent 主體通過一系列計劃、決策與控制,使用工具與外部環境互動。作為 Agent 主體的大模型是模擬人類智能決策流程的核心,在許多 Agent 需要處理的任務中,Agent 的“先天知識”并不包含解決任務的直接答案,因此 Agent 需要在一系列與外部環境的交互循環中,制定計劃,做出決策,執行行動,收到反饋……在一整個計劃、決策與控制的循環中,大模型需要具備“感知”,“記憶”與“推理”的能力,如下圖所示, CoT 恰恰可以從這三個方面來“賦能” Agent。

感知 CoT
無論是環境的反饋,還是人類的指令,Agent 都需要完成一個對接收到的信息進行“理解”,并依據得到的理解進行意圖識別,轉化為下一步任務的過程。而使用 CoT 可以大大幫助模型對現有輸入進行“感知”,譬如,通過使用“Answer: Let’s think step by step. I see $$, I need to …”的 Prompt,可以讓模型逐步關注接收到的信息,對信息進行更好的理解,再如,在機器人控制的場景下,Agent 的決策不可避免的會出現錯誤,而接受到錯誤信息的反饋讓 Agent 理解錯誤的原因調整自己的行動也是 Agent 應用于動態場景下的多輪決策任務中的關鍵能力,感知 CoT 也將加強模型自我糾錯的能力。
記憶 CoT
一般而言,大模型智能體通常同時擁有短期記憶與長期記憶的能力。短期記憶一般作為一種時間信息,可以在 Agent 的多輪交互中靈活的改變(因此也被稱為工作記憶),短期記憶為大模型提供更加直接的上下文信息支持,因此很自然的可以被建模為一條歷史動作鏈。

相比于短期記憶的“動態性”,長期記憶更多的提供歷史事件中的靜態信息的記錄,是對歷史知識更加宏觀與抽象的理解,長期記憶可以依賴于大模型中的可訓練參數進行構建,也可以通過外部維護的記憶庫進行構建。

推理 CoT

除了感知與記憶,借鑒 CoT 的思路讓智能體分解任務逐步進行計劃與決策以增強智能體解決問題的可靠性。在 Agent 中,CoT 主要的功能在于將計劃、行動與觀察相互結合,彌合推理與行動之間的差距,顯然,推理可以幫助模型制定行動計劃處理異常情況,而行動則允許大模型在與外部環境進行交互的同時,收集附加信息支持模型的推理。

譬如,AgentBench 強迫大模型智能體通過“思考”+“行動”步驟完成任務,而行動鏈技術通過一系列行動歷史與未來行動計劃幫助智能體進行決策,從而將決策問題轉化為 CoT 推理問題。

五、未來發展

5.1 發展路徑

CoT 從最簡單的“Let’s think step by step”慢慢進化,其發展方向有三條主要的路徑,分別是 “Prompt 模式”,“推理結構”以及“應用場景”。

1. Prompt 模式

Prompt 模式主要研究“向大模型輸入怎樣的 Prompt 可以使得大模型獲得更好的推理能力”,關于 Prompt 模式的研究也可以分為兩類,分別是指令生成與范例生成。

  • 對于指令生成問題,又可以分為手動指令生成與自動指令生成,

    • 手動指令生成模式:① “Let’s think step by step”;② Plan-and-Solve的主要思想在于讓模型制定一個將任務分為更小子任務的計劃,再讓模型一步一步執行計劃、解決問題,其 Prompt 為“Let’s first understand the problem and devise a plan to solve the problem. Then, let’s carry out the plan and solve the problem step by step”。
    • 自動指令生成:① 自動 Prompt 工程(APE);② 提示優化(OPRO);APE 與 OPRO 的核心思想都在于設計了一套機制讓大模型通過觀察各個候選的 Prompt 的實際任務中的表現,通過最大化表現得分來自動選擇最優的 Prompt 。
  • 范例生成也可以分為手動范例生成與自動范例生成;

    • 手動范例生成方法:① Few-Shot-CoT;② ActivePrompt一種讓大模型使用手動生成的范例多次回答問題,再從其中依據如熵、方差等的不確定性度量選擇“最不確定”的問題,通過手動注釋來加強范例生成的 ActivePrompt 方法,成為了一種介于手動范例生成與自動范例生成之間的范例生成方法。
    • 自動范例:Auto-CoT ,Auto-CoT 分為兩個階段:(1)問題聚類,對任務數據集進行聚類(2)示例采樣:從每個聚類中心中選擇一個代表性問題使用 Zero-Shot-CoT 生成思維鏈作為示例。

2. 推理結構

除了研究“什么樣的 Prompt 會誘導出更好的 CoT 能力以外”,還有很大一部分研究者關注于 CoT 本身的結構問題,主要的研究思路包含 “CoT 構造”、“推理聚合”以及 “CoT 驗證”。

CoT構造

CoT 構造主要將傳統線形,鏈式的 CoT 轉化為如表格、樹狀、圖狀格式,代表工作有非常出名的 PoT,Tab-CoT,ToT 以及 GoT-Rationale,下面這張圖非常清晰的展示了這四種方法的異同:

- PoT,其中 P 指 Programm 即程序,PoT 的思想也非常簡單,對思維鏈中大模型有可能出錯的一些計算問題,讓大模型生成出編程語言在解釋器中運行,以將復雜計算與模型的文本生成解耦。

  • Tab-CoT,其中 Tab 指 Tabular 表格,在 ToT 中,研究者迫使大模型在每一步的推理中記錄一個“∣步數∣子問題∣過程∣結果∣”的推理表格,并讓大模型在推理時從生成的表格中提取答案,從而增強大模型的推理能力。

  • ToT,其中 T 指 Tree 即思維樹,簡單理解就是將 CoT 的鏈式結構擴展為樹形結構。ToT 讓大模型在解決子問題時生成多個不同的答案選擇,通過此建立的樹形結構讓大模型可以展望未來確定下一步的決策并且通過追溯來糾正歷史決策。

  • GoT,GoT 系統的核心在于一個“控制器”,控制器處理對圖的操作(GoO)以及圖狀態推理(GRS),其中 GoO 用于將一個給定的任務進行圖分解,將一個任務分解為相互連接的節點-邊關系,而 GRS 則負責維護大模型在 GoO 生成的圖上的推理過程,記錄當前步的狀態,決策歷史等等信息。

推理聚合

除了各種 XoT 以外,對于推理過程的“解碼”問題,也有一些工作進行了研究。其中,推理聚合的代表性工作是 Self-consistency CoT。Self-consistency CoT 使用手動設計的 Prompt 生成采樣一組不同的推理路徑,再通過“多數投票”找到推理步驟中“最一致”的路徑,使用這條解碼路徑驅動原始的貪心解碼方式來提示 CoT 性能。

CoT 驗證

最后,在針對推理結構的研究,還有一類是 CoT 驗證,CoT 驗證開始側重于通過多輪提問,讓大模型進行“自我驗證”,在前向后向的反復問答中讓大模型可以驗證自己的回答,而伴隨著 CoT 驗證的發展,也有工作開始引入“外部工具”對 CoT 中的信息進行驗證,例如信息檢索、計算器、計算機程序等等。

CoT 驗證最經典的工作即是自我驗證(Self-Verification),自我驗證有兩個步驟,分別是(1)對多個候選的推理路徑進行采樣;(2)給定問題結論讓大模型驗證條件是否滿足結論,并根據驗證分數對候選結論進行排序。

而引入外部工具的 CoT 驗證的代表性工作譬如 CRITIC 框架,CRITIC 使得大模型可以交互式的引入外部工具來驗證與修改自己的答案輸出,經過大模型輸出,外部工具驗證,驗證結果反饋,反饋修改四個循環的步驟加強 CoT 輸出的可靠性。而將 CRITIC 的思想進一步推向機制,即出現了任務自適應與流程自動化的 AuRoRA,AuRoRA 從多個來源提取相關知識,將不同來源的知識進行組合、檢查與提煉來修改初始 CoT,以提示 CoT 的準確性與邏輯性。

5.2 局限性

  1. 思維鏈必須在模型規模足夠大時才能涌現。
    在 Jason Wei 等的研究中,PaLM 在擴展到 540B 參數時,與思維鏈提示結合,才表現出了先進的性能。一些小規模模型,思維鏈并沒有太大的影響,能力提升也不會很大。

谷歌大腦的研究人員認為,策略問題需要大量的世界知識,而小型模型沒有足夠的參數來記憶這些世界知識,所以也不太可能產生正確的推理步驟。

但問題是,能落地到產業的模型,規模必然不會太大,思維鏈拆解了更多的步驟、用到更多的計算資源,相當于更加耗費腦力,很多研究機構和企業是負擔不起 175B 參數以上的大模型。

所以思維鏈必須要探索,如何在較小的模型中進行推理,降低實際應用的成本。
2. 思維鏈的應用領域是有限的
目前,思維鏈只是在一些有限的領域,比如數學問題,五個常識推理基準(CommonsenseQA,StrategyQA,Date Understanding 和 Sports Understanding 以及 SayCan)上顯現出作用,其他類型的任務,像是機器翻譯,性能提升效果還有待評估。

而且,相關研究用到的模型(GPT-3 API)或數據集,都是半公開或不公開的,這就使其難以被復現和驗證。嚴謹來看,思維鏈的效果還需要被進一步探索,才能下定論。

  1. 即使有思維鏈提示,大語言模型依然不能解決小學水平的數學問題。

沒有思維鏈,數學推理是指定不行。但有了思維鏈,大語言模型也可能出現錯誤推理,尤其是非常簡單的計算錯誤。Jason Wei 等的論文中,曾展示過在 GSM8K 的一個子集中,大語言模型出現了 8% 的計算錯誤,比如6 * 13 = 68(正確答案是78)。

這說明,即使有了思維鏈,大語言模型還是沒有真正理解數學邏輯,不知道加減乘除的真實意義,只是通過更精細的疊加來“照葫蘆畫瓢”,所以,對于有精確要求的任務,還要進一步探索新的技術。

思維鏈確實增強了大語言模型的能力,但邏輯推理仍然是大語言模型的弱項,等待著更多突破。

六、拓展閱讀

  1. CoT 開山之作:《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》
  2. 論文綜述:A Survey of Chain of Thought Reasoning: Advances, Frontiers and Future :https://github.com/zchuz/CoT-Reasoning-Survey
  3. Zero-Shot-CoT:Large language models are zero-shot reasoners. NeurIPS2022
  4. AuTo-CoT:Automatic Chain of Thought Prompting in Large Language Models,ICLR2023
  5. 多維度了解ChatGPT思維鏈提示的原理、方法、使用和發展的22個問題
  6. https://zhuanlan.zhihu.com/p/668914454
  7. https://blog.csdn.net/Neleuska/article/details/131510678
本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
從 CoT 到 Agent,最全綜述來了!上交出品
GraphLLM || 圖引導的CoT—>>大模型的多跳回答
一文看懂大模型
有了Fine-tune-CoT方法,小模型也能做推理,完美逆襲大模型
中科院 AI 團隊最新研究發現,大模型可通過自我驗證提高推理性能
思維鏈如何釋放語言模型的隱藏能力?最新理論研究揭示其背后奧秘
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 福建省| 澄城县| 政和县| 朝阳区| 乌拉特后旗| 墨江| 浦江县| 平邑县| 惠来县| 都兰县| 宜州市| 五常市| 嘉峪关市| 贡嘎县| 邵阳县| 宜章县| 和林格尔县| 边坝县| 宜川县| 禹城市| 庄河市| 宜州市| 墨竹工卡县| 白朗县| 南投市| 天气| 疏附县| 乐昌市| 兴业县| 延吉市| 宣城市| 崇文区| 云阳县| 绥阳县| 台中县| 白沙| 麦盖提县| 临沭县| 康平县| 富民县| 兴仁县|