AI Agent系列(七) -思維鏈(Chain of Thought,CoT)

AI Agent系列【七】

  • 前言
  • 一、CoT技術詳解
    • 1.1 CoT組成
    • 1.2 CoT的特點
  • 二、CoT的作用
  • 三、CoT的好處
  • 四、CoT適用場景
  • 五、CoT的推理結構


前言

思維鏈(Chain of Thought,CoT),思維鏈就是一系列中間的推理步驟(a series of intermediate reasoning steps),通過要求模型在輸出最終答案之前,顯式輸出中間逐步的推理步驟這一方法來增強大模型的算數、常識和推理能力。

一、CoT技術詳解

COT方式通過讓大模型逐步參與將一個復雜問題分解為一步一步的子問題并依次進行求解的過程可以顯著提升大模型的性能。

如下圖所示的對比,CoT 完成了從輸入到思維鏈再到輸出的映射,即<input——>reasoning chain——>output>,完全區別于之直接到輸出的映射 <input——>output> 。

在這里插入圖片描述
這個實例很好的解釋了再沒有CoT的情況下和增加了相應的邏輯思維過程后相應的計算結果的差異,思維鏈提示給出了正確答案,而直接給出答案的傳統提示學習,結果是錯的。
CoT思維鏈提示在給出答案之前,還給出相應的推理過程如下:
“羅杰先有 5 個球,2 罐 3 個網球等于 6 個,5 + 6 = 11”
“食堂原來有 23 個蘋果,用 20 個做午餐,23-20=3;又買了 6 個蘋果,3+6=9”

1.1 CoT組成

一個完整的包含 CoT 的提示詞一般由指令(Instruction,告訴模型需要干什么),邏輯依據(Rationale,告訴模型怎么干),示例(Exemplars,給模型舉例說明指令和邏輯依據)三部分組成。

1)指令:用于描述問題并且告知大模型的輸出格式;

2)邏輯依據:指 CoT 的中間推理過程,可以包含問題的解決方案、中間推理步驟以及與問題相關的任何外部知識;

3)示例:指以少樣本的方式為大模型提供輸入輸出對的基本格式,每一個示例都包含:問題,推理過程與答案。

1.2 CoT的特點

有效的思維鏈應該具有以下特點:

  • 邏輯性:思維鏈中的每個思考步驟都應該是有邏輯關系的,它們應該相互連接,從而形成一個完整的思考過程。

  • 全面性:思維鏈應該盡可能地全面和細致地考慮問題,以確保不會忽略任何可能的因素和影響。

  • 可行性:思維鏈中的每個思考步驟都應該是可行的,也就是說,它們應該可以被實際操作和實施。

  • 可驗證性:思維鏈中的每個思考步驟都應該是可以驗證的,也就是說,它們應該可以通過實際的數據和事實來驗證其正確性和有效性。

二、CoT的作用

1、CoT允許模型把一個復雜問題拆解成多個步驟,也就是說需要更多推理步驟的問題可以多分點計算量。

2、CoT提供了一個觀察模型為何會犯錯的窗口,因此也就提供了一個debug模型的機會。

3、CoT能用在數學應用題、常識推理和符號操作上,也就有可能用在任何人類通過語言能解決的問題上。

4、CoT支持任何語言模型使用,加在 few-shot的樣例中就能生效。省去了重新訓練模型的功夫。

三、CoT的好處

CoT 的能力已經被無數工作所驗證,對使用 CoT 的好處可以歸納為以下四點:

增強了大模型的推理能力:CoT 通過將復雜問題分解為多步驟的子問題,相當顯著的增強了大模型的推理能力,也最大限度的降低了大模型忽視求解問題的“關鍵細節”的現象,使得計算資源總是被分配于求解問題的“核心步驟”;

  • 增強了大模型的可解釋性:對比向大模型輸入一個問題大模型為我們僅僅輸出一個答案,CoT 使得大模型通過向我們展示“做題過程”,使得我們可以更好的判斷大模型在求解當前問題上究竟是如何工作的,同時“做題步驟”的輸出,也為我們定位其中錯誤步驟提供了依據;

  • 增強了大模型的可控性:通過讓大模型一步一步輸出步驟,我們通過這些步驟的呈現可以對大模型問題求解的過程施加更大的影響,避免大模型成為無法控制的“完全黑盒”;

  • 增強了大模型的靈活性:僅僅添加一句“Let’s think step by step”,就可以在現有的各種不同的大模型中使用 CoT 方法,同時,CoT 賦予的大模型一步一步思考的能力不僅僅局限于“語言智能”,在科學應用,以及 AI Agent 的構建之中都有用武之地。

四、CoT適用場景

在非符號推理類別和數據集上,特別是那些主要包含常識(CSQA、PIQA、SiQA)、語言理解(WinoGrande)和閱讀理解(AGI LSAT、ARC-Easy、ARC-Challenge)的問題上,零樣本 CoT 和零樣本直接回答的性能幾乎沒有區別。盡管這些數據集涉及推理,但 CoT 并沒有帶來增益。

相比之下,數學和符號類別(以及符號和半符號數據集)獲得了更大的提升。CoT 在 MATH 和 GSM8k 上帶來的增益分別高達 41.6% 和 66.9%。在 ContextHub 和 MuSR Murder Mysteries 等半符號數據集上,CoT 表現出了中等程度的增益。這些數據集需要應用邏輯規則才能得出答案,例如從簡單的自然語言(ContextHub)或更復雜的常識性陳述(MuSR Murder Mysteries)中解析得到的一階邏輯。

五、CoT的推理結構

CoT 構造主要將傳統線形,鏈式的 CoT 轉化為如表格、樹狀、圖狀格式,如 PoT,Tab-CoT,ToT 以及 GoT-Rationale,四種方法可通過如下圖獲取對應的異同。
在這里插入圖片描述
PoT: P 指 Programm 即程序,PoT 的思想也非常簡單,對思維鏈中大模型有可能出錯的一些計算問題,讓大模型生成出編程語言在解釋器中運行,以將復雜計算與模型的文本生成解耦。

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

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

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

參考文件
https://zhuanlan.zhihu.com/p/670907685

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74063.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74063.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74063.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【一起來學kubernetes】21、Secret使用詳解

Secret 的詳細介紹 Secret 是 Kubernetes 中用于存儲和管理敏感信息&#xff08;如密碼、令牌、密鑰等&#xff09;的資源對象。Secret的設計目的是為了安全地存儲和傳輸敏感信息&#xff0c;如密碼、API密鑰、證書等。這些信息通常不應該直接硬編碼在配置文件或鏡像中&#x…

opencv中stitch圖像融合

openv版本: opencv249 vs &#xff1a;2010 qt : 4.85 #include "quanjing.h"#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <open…

1201. 【高精度練習】蜜蜂路線

題目描述 一只蜜蜂在圖5.1-2所示的數字蜂房上爬動&#xff0c;已知它只能從標號小的蜂房爬到標號大的相鄰蜂房&#xff0c; 現在問你&#xff1a;蜜蜂從蜂房M開始爬到蜂房N&#xff0c;l≤M 輸入 M&#xff0c;N的值。 輸出 一個數表示爬行路線種數。 樣例輸入 1 14 樣…

linux下基本命令和擴展命令(安裝和登錄命令、文件處理命令、系統管理相關命令、網絡操作命令、系統安全相關命令、其他命令)歡迎補充噢

基本命令 ls: 列出目錄內容 ls&#xff1a;列出當前目錄內容ls -l&#xff1a;以長格式列出&#xff08;顯示詳細信息&#xff09;ls -a&#xff1a;顯示隱藏文件ls -lh&#xff1a;以易讀格式顯示文件大小 pwd: 顯示當前工作目錄 pwd&#xff1a;顯示當前目錄的絕對路徑 cd:…

《C++11 基于CAS無鎖操作的atomic原子類型》

count; count--; 我們知道&#xff0c;/--操作并不是原子性的&#xff0c;其實對應三條匯編指令來完成的。 讀取&#xff1a;從內存中把變量的值讀取到寄存器修改&#xff1a;在寄存器里將變量的值1/-1寫入&#xff1a;把修改后的值寫入到內存 在單線程環境下&#xff0c;這…

C++常用多線程模式

文章目錄 1. Fork - Join模式2. Producer - Consumer模式3. Readers - Writers模式4. Work Thread模式5. Actor模式6、 Pipeline模式概述應用場景C實現示例代碼解釋 1. Fork - Join模式 原理&#xff1a;將一個大任務分解為多個子任務&#xff0c;這些子任務在不同的線程中并行…

【時時三省】(C語言基礎)習題2 scanf函數

山不在高&#xff0c;有仙則名。水不在深&#xff0c;有龍則靈。 ----CSDN 時時三省 用下面的scanf函數輸入數據&#xff0c;使a 3&#xff0c;b 7&#xff0c;x 8.5&#xff0c;y 71.82&#xff0c;c1 A&#xff0c;c2 x在鍵盤上應如何輸入? 分析第一個 scanf 函數&…

微信小程序計算屬性與監聽器:miniprogram-computed

小程序框架沒有提供計算屬性相關的 api &#xff0c;但是官方為開發者提供了拓展工具庫 miniprogram-computed。 該工具庫提供了兩個功能&#xff1a; 計算屬性 computed監聽器 watch 一、安裝 miniprogram-computed 在項目的根目錄下&#xff0c;使用如下命令&#xff0c;…

SOFAStack-00-sofa 技術棧概覽

SOFAStack 前言 大家好&#xff0c;我是老馬。 sofastack 其實出來很久了&#xff0c;第一次應該是在 2022 年左右開始關注&#xff0c;但是一直沒有深入研究。 最近想學習一下 SOFA 對于生態的設計和思考。 &#x1f31f; 核心項目 ?? SOFABoot GitHub: sofastack/sofa…

企業模板(QiMoban)是一個專注于企業官網搭建的高效平臺

企業模板(QiMoban.com )是一個專注于為企業提供高效、低成本網站建設解決方案的平臺&#xff0c;主要面向中小企業和創業者。其核心優勢在于幫助用戶快速搭建企業官網&#xff0c;提升品牌形象并拓展業務渠道。以下是關于企業模板(QiMoban.com )的詳細分析&#xff1a; 適用場…

Oracle 數據庫安全評估(DBSAT)簡明過程

下載DBSAT 從這里下載。 實際是從MOS中下載&#xff0c;即&#xff1a;Oracle Database Security Assessment Tool (DBSAT) (Doc ID 2138254.1)。 最新版本為3.1.0 (July 2024)&#xff0c;名為dbsat.zip&#xff0c;近45MB。 $ ls -lh dbsat.zip -rw-rw-r-- 1 oracle oins…

【Linux 維測專欄 1 -- Hung Task 分析與驗證】

文章目錄 Linux Hung Task 簡介1. Hung Task 概述2. D 狀態與 Hung Task3. Hung Task 的工作原理4. Hung Task 的配置5. Hung Task 的典型輸出6. Hung Task 的應用場景7. kernel 配置7.1 編譯選項7.2 參數控制7.3 驗證方法4. 擴展接口 8. 注意事項 Linux Hung Task 簡介 1. Hu…

GCC 預定義宏:解鎖編譯器的隱藏信息

GCC 預定義宏&#xff1a;解鎖編譯器的隱藏信息 在 GCC 編譯器中&#xff0c;有許多內置的預定義宏&#xff0c;它們可以提供編譯環境的信息&#xff0c;如文件名、行號、時間、版本等。這些宏在調試、日志記錄、條件編譯等場景中非常有用。本文將介紹常見的 GCC 預定義宏&…

公鏈開發費用及其構成內容詳析

在區塊鏈技術迅速發展的今天&#xff0c;公鏈&#xff08;Public Blockchain&#xff09;作為去中心化、不可篡改、高安全性的重要應用之一&#xff0c;在金融、供應鏈、游戲等多個領域得到了廣泛應用。然而&#xff0c;開發一條公鏈并非易事&#xff0c;它不僅需要高度專業技能…

Java求101-200之間有多少素數

Java學習筆記 今天看教程看到了這個題&#xff0c;對于一名打過算法競賽的選手還是很簡單的&#xff0c;但由于之前是c組的&#xff0c;所以用java寫一下&#xff0c;練一下手。 代碼&#xff1a; package com.itheima.hello;public class Test1 {public static void main(S…

DM 達夢上的日志挖掘 DBMS_LOGMNR

適用場景 在 DM 中&#xff0c;用戶可以使用 DBMS_LOGMNR 包對歸檔日志進行挖掘&#xff0c;重構出 DDL 和 DML 等操作&#xff0c;并通過獲取的信息進行更深入的分析&#xff1b;同樣&#xff0c;可以對歸檔日志文件進行恢復被誤操作的數據&#xff0c;并進行故障跟蹤&#x…

JavaWeb之WebSocket

目錄 一、 websocket 概念二、WebSocket原理三、WebSocket特點四、WebSocket應用場景五、Websocket基本使用1、創建Websocket對象2、Websocket事件3、Websocket方法4、前端服務程序 六、聊天室案例1、Tomcat版本&#xff1a;8.0.442、Maven 依賴&#xff1a;3、前端代碼4、后端…

Unity Shader編程】之透明物體渲染

以下是針對您提出的關于 Unity Shader 渲染 Pass 的查看方法、多個 Pass 的影響、Pass 的含義&#xff0c;以及 Unity 渲染物體的流程和處理多個透明/半透明/不透明物體的詳細解答。 1. Unity Shader 渲染 Pass 的查看方法 查看 Pass 的方法 通過 Shader 代碼&#xff1a; 打開…

字符指針的三道例題+算法改進

目錄 一.楊氏矩陣 1.初級 2.想把下標帶回來 二.字符串左旋 算法改進 三.判斷是否為字符串旋轉結果 算法改進 四. 3個字符函數 1.strcat 2.strncat 3.strstr 一.楊氏矩陣 數字矩陣&#xff0c;每行從左到右遞增&#xff0c;每列從上到下遞增&#xff0c;編寫程序在矩…

VSCode中搜索插件顯示“提取擴展時出錯。Failed to fetch”問題解決!

大致的問題如下&#xff0c;在VSCode的插件商店搜索插件時提示如下&#xff1a; 導致的情況有以下幾點&#xff1a; 1、代理問題&#xff0c;如果是代理引起的&#xff0c;可以繼續使用代理后也能搜索和安裝插件。 2、還有可能是你的所連接的網絡設置了防火墻&#xff0c;比較…