思維鏈CoT進(jìn)化成思維圖GoT,比思維樹(shù)更優(yōu)秀的提示工程技術(shù)誕生了
要讓大型語(yǔ)言模型(LLM)充分發(fā)揮其能力,有效的 prompt 設(shè)計(jì)方案是必不可少的,為此甚至出現(xiàn)了 prompt engineering(提示工程)這一新興領(lǐng)域。
在各種 prompt 設(shè)計(jì)方案中,思維鏈(CoT)憑借其強(qiáng)大的推理能力吸引了許多研究者和用戶的眼球,基于其改進(jìn)的 CoT-SC 以及更進(jìn)一步的思維樹(shù)(ToT)也收獲了大量關(guān)注。
近日,蘇黎世聯(lián)邦理工學(xué)院、Cledar 和華沙理工大學(xué)的一個(gè)研究團(tuán)隊(duì)提出了更進(jìn)一步的想法:思維圖(GoT)。讓思維從鏈到樹(shù)到圖,為 LLM 構(gòu)建推理過(guò)程的能力不斷得到提升,研究者也通過(guò)實(shí)驗(yàn)證明了這一點(diǎn)。他們也發(fā)布了自己實(shí)現(xiàn)的 GoT 框架。
研究論文:https://arxiv.org/pdf/2308.09687v2.pdf
官方實(shí)現(xiàn):https://github.com/spcl/graph-of-thoughts
論文概覽
大型語(yǔ)言模型正在變成人工智能世界的主導(dǎo)技術(shù)。近些年高速發(fā)展的模型主要基于僅解碼器 Transformer 的變體,比如 GPT、PaLM 或 LLaMA。
而在解決不同的 LLM 任務(wù)時(shí),prompt 工程設(shè)計(jì)是一種能高效利用資源的方法。簡(jiǎn)單來(lái)說(shuō),就是在發(fā)送給 LLM 的輸入中包含對(duì)任務(wù)的描述。如果能以適當(dāng)?shù)男问矫枋鲈撊蝿?wù),那么 LLM 就能借助其用于生成文本的基于自回歸 token 的機(jī)制來(lái)解決該任務(wù)。這樣的 prompt 可能包含帶有解答的示例任務(wù)(少樣本 prompt 設(shè)計(jì),也被稱(chēng)為上下文學(xué)習(xí)(ICL),也可能完全不包含示例任務(wù)(零樣本 prompt 設(shè)計(jì))。近些年的研究和應(yīng)用表明,這一機(jī)制可用于解決涉及數(shù)學(xué)、常識(shí)或符號(hào)推理的多種類(lèi)型的任務(wù)。
思維鏈(CoT)便是一種用于設(shè)計(jì) prompt 的方法,即 prompt 中除了有任務(wù)的輸入和輸出外,還包含推理的中間步驟(中間思維)。研究表明,CoT 能極大地提升 LLM 的能力,使之無(wú)需任何模型更新便能解決一些難題。
也有研究者改進(jìn)了 CoT,提出了使用 CoT 實(shí)現(xiàn)自我一致的方法(CoT-SC);這個(gè)方案是生成多個(gè) CoT,再選出其中最佳的結(jié)果。
最近還有研究者更進(jìn)一步提出了思維樹(shù)(ToT),其做法是通過(guò)樹(shù)(tree)來(lái)建模 LLM 推理過(guò)程。這能讓模型使用不同的思維路徑,并能提供全新的功能,比如基于不好的結(jié)果反向回溯推理過(guò)程。不幸的是,由于 ToT 方法為思維過(guò)程強(qiáng)加了嚴(yán)格的樹(shù)結(jié)構(gòu),所以會(huì)極大限制 prompt 的推理能力。更多詳情請(qǐng)參閱機(jī)器之心文章《思考、思考、思考不停歇,思維樹(shù) ToT「軍訓(xùn)」LLM》。
蘇黎世聯(lián)邦理工學(xué)院、Cledar 和華沙理工大學(xué)的這個(gè)研究團(tuán)隊(duì)認(rèn)為,如果能將 LLM 的思維構(gòu)建成任意的圖結(jié)構(gòu),那么就能為 prompt 的能力帶來(lái)重大提升。他們表示,這一想法受到了多種現(xiàn)象的啟發(fā),比如人類(lèi)的推理方式、大腦結(jié)構(gòu)和算法的執(zhí)行方式。
在進(jìn)行思考時(shí),人類(lèi)不會(huì)像 CoT 那樣僅遵循一條思維鏈,也不是像 ToT 那樣嘗試多種不同途徑,而是會(huì)形成一個(gè)更加復(fù)雜的思維網(wǎng)。舉個(gè)例子,一個(gè)人可能會(huì)先探索一條思維鏈,然后回溯再探索另一條,然后可能會(huì)意識(shí)到之前那條鏈的某個(gè)想法可以和當(dāng)前鏈結(jié)合起來(lái),取長(zhǎng)補(bǔ)短,得到一個(gè)新的解決方案。類(lèi)似地,大腦會(huì)形成復(fù)雜的網(wǎng)絡(luò),呈現(xiàn)出類(lèi)似圖的模式,比如循環(huán)模式。算法執(zhí)行時(shí)也會(huì)揭示出網(wǎng)絡(luò)的模式,這往往可以表示成有向無(wú)環(huán)圖。
研究者表示,如果將這種對(duì)應(yīng)的圖使能的變換用于 LLM 思維,那么有望創(chuàng)造一種強(qiáng)大的設(shè)計(jì) prompt 的方法,但這種變換無(wú)法通過(guò) CoT 或 ToT 自然地表達(dá)出來(lái)。
然后他們觀察到:如果將 LLM 的推理過(guò)程建模成圖,那么就能自然地實(shí)現(xiàn)這些以及其它許多思維變換。基于這一觀察,他們提出了思維圖(GoT/Graph of Thoughts),這種方法可以通過(guò)網(wǎng)絡(luò)形式的推理來(lái)增強(qiáng) LLM 的能力。
在 GoT 中,一個(gè) LLM 思維會(huì)被建模成一個(gè)頂點(diǎn),頂點(diǎn)之間的依賴關(guān)系則建模為邊。使用 GoT,通過(guò)構(gòu)建有多于一條輸入邊的頂點(diǎn),可以將任意思維聚合起來(lái)。整體而言,GoT 使用的圖抽象方法可無(wú)縫地將 CoT 和 ToT 泛化到更復(fù)雜的思維模式,而且這個(gè)過(guò)程無(wú)需更新模型。
然而,要實(shí)際實(shí)現(xiàn) GoT,還需要解決一些設(shè)計(jì)上的挑戰(zhàn)。比如,對(duì)于不同的任務(wù),最佳的圖結(jié)構(gòu)是什么樣的?為了最大化準(zhǔn)確度和最小化成本,聚合思維的最好方法是什么?
為了解答這些問(wèn)題以及更多其它問(wèn)題,這些研究者設(shè)計(jì)了一種實(shí)現(xiàn) GoT 的模塊化架構(gòu)。該設(shè)計(jì)有兩大亮點(diǎn)。
一是可實(shí)現(xiàn)對(duì)各個(gè)思維的細(xì)粒度控制。這讓用戶可以完全控制與 LLM 進(jìn)行的對(duì)話并使用先進(jìn)的思維變換,比如將正在進(jìn)行的推理中兩個(gè)最有希望的思維組合起來(lái)得到一個(gè)新的。
二是這種架構(gòu)設(shè)計(jì)考慮了可擴(kuò)展性 —— 可無(wú)縫地?cái)U(kuò)展用于新的思維變換、推理模式(即思維圖)和 LLM 模型。這讓用戶可使用 GoT 快速為 prompt 的新設(shè)計(jì)思路構(gòu)建原型,同時(shí)實(shí)驗(yàn) GPT-3.5、GPT-4 或 Llama-2 等不同模型。
研究者也展現(xiàn)了 GoT 的一些用例(排序、摘要的關(guān)鍵詞計(jì)數(shù)、集合運(yùn)算、文檔合并),他們還詳細(xì)說(shuō)明了如何使用基于圖的范式來(lái)實(shí)現(xiàn)它們。他們通過(guò)實(shí)驗(yàn)評(píng)估了 GoT,展現(xiàn)了其相對(duì)于其它當(dāng)前最佳方法的優(yōu)勢(shì)。
研究者表示,整體而言,GoT 尤其適用于可自然分解成更小子任務(wù)的任務(wù),并且這些子任務(wù)可以分開(kāi)解決,然后融合成一個(gè)最終解答。在這方面,GoT 的表現(xiàn)優(yōu)于其它方案,比如在排序任務(wù)上,GoT 分別優(yōu)于 CoT 和 ToT 約 70% 和 62%,同時(shí)成本還比 ToT 低 31% 以上。
表 1 給出了 GoT 與其它 prompt 設(shè)計(jì)方案的定性比較。GoT 是唯一一種能在一個(gè) prompt 內(nèi)實(shí)現(xiàn)任意基于圖的思維變換的方案(比如聚合),從而能將之前的所有方案囊括進(jìn)來(lái)。
他們還有另一項(xiàng)貢獻(xiàn),即提出一種新的評(píng)估指標(biāo) —— 思維容量(the volume of a thought),可用于評(píng)估 prompt 設(shè)計(jì)策略。研究者表示,使用這一指標(biāo)的目標(biāo)是更好地理解 prompt 設(shè)計(jì)方案之間的差異。
對(duì)于一個(gè)給定的思維 v,v 的容量是指 LLM 思維的數(shù)量,用戶可以基于此使用有向邊得到 v。直觀上說(shuō),這些就是有望對(duì) v 做出貢獻(xiàn)的所有 LLM 思維。
作者通過(guò)研究表明,通過(guò)整合聚合等思維變換技術(shù),GoT 能讓思維容量比其它方案顯著更大。
GoT 框架
下面詳細(xì)介紹一下 GoT 框架。其示意圖見(jiàn)圖 1,圖中還給出了其它 prompt 設(shè)計(jì)策略的示意圖。
在數(shù)學(xué)形式上,GoT 可以建模為一個(gè)元組 (G, T, E, R),其中 G 是 LLM 推理過(guò)程(即上下文中的所有 LLM 思維及其關(guān)系),T 是可能的思維變換,E 是用于獲得思維分?jǐn)?shù)的評(píng)估器函數(shù),R 是用于選擇最相關(guān)思維的排序函數(shù)。
推理過(guò)程
這里,推理過(guò)程被建模為一個(gè)有向圖 G = (V, E),其中 V 是一組頂點(diǎn),E ? V × V 是一組邊。G 是有向的,因此邊是有序頂點(diǎn)對(duì) E ? V × V 的子集。一個(gè)頂點(diǎn)包含對(duì)當(dāng)前問(wèn)題的一個(gè)解答,不管這個(gè)問(wèn)題是最初的問(wèn)題、還是中間問(wèn)題或最后的問(wèn)題。這種思維的具體形式取決于用例;其可能是一段文本(在寫(xiě)作任務(wù)中),也可能是一個(gè)數(shù)值序列(在排序任務(wù)中)。有向邊 (t_1, t_2) 表示思維 t_2 的構(gòu)建方式是將 t_1 用作「直接輸入」,即通過(guò)明確指示 LLM 使用 t_1 來(lái)生成 t_2。
在某些用例中,圖節(jié)點(diǎn)屬于不同類(lèi)別。舉個(gè)例子,在寫(xiě)作任務(wù)中,某些頂點(diǎn)建模寫(xiě)出一段文本的計(jì)劃,其它節(jié)點(diǎn)則建模實(shí)際的文本段。在這種情況下,GoT 采用異構(gòu)圖 G = (V, E, c) 來(lái)建模 LLM 推理,其中 c 將頂點(diǎn) V 映射到各自的類(lèi) C(在上述案例中,C = {plan, par} )。這樣一來(lái),任何頂點(diǎn) v 都可以建模推理的不同方面。
于是 G 就與 LLM 推理過(guò)程關(guān)聯(lián)了起來(lái)。為了推進(jìn)這一過(guò)程,用戶可對(duì) G 使用思維變換。舉個(gè)這種變換的例子:將目前為止分?jǐn)?shù)最高的思維融合成一個(gè)新的。另一個(gè)例子是對(duì)一個(gè)思維進(jìn)行循環(huán),以對(duì)其增強(qiáng)。注意,這些變換嚴(yán)格擴(kuò)展了 CoT、CoT-SC 或 ToT 中可用轉(zhuǎn)換的集合。
思維變換
得益于將基于圖的模型用于推理,GoT 能實(shí)現(xiàn)全新的思維變換。研究者稱(chēng)之為圖使能的變換(graph-enabled transformation)。比如,在寫(xiě)作任務(wù)中可以將多篇輸入文章組合成一篇連貫一致的摘要。在排序時(shí),可將多個(gè)已排序的數(shù)值子數(shù)組合并為一個(gè)最終已排序數(shù)組。圖 2 給出了聚合和生成的示例。
從數(shù)學(xué)形式上講,每個(gè)這樣的變換都可以建模成 T (G, p_θ),其中 G = (V, E) 是反映推理當(dāng)前狀態(tài)的圖,p_θ 是所使用的 LLM。T 修改 G 的方式通常是通過(guò)添加新頂點(diǎn)及其傳入邊。于是有 G′ = T (G, p_θ) = (V′, E′),其中 V′ = (V ∪ {V^+}) \ {V^?} 且 E′ = (E ∪ {E^+}) \ {E^?}。V^+ 和 E^+ 是注入到 G 中的新頂點(diǎn)和邊,它們分別建模的是新的思維和它們的依賴關(guān)系。
為了最大化 GoT 的表達(dá)能力,用戶還可以刪除思維,做法是指定要?jiǎng)h除的相應(yīng)頂點(diǎn)和邊(分別為 V^? 和 E^?)。在這里,確保集合 V^+、E^+、V^? 和 E^? 有一致的變換是用戶的責(zé)任(舉個(gè)例子,用戶不會(huì)嘗試刪除不存在的頂點(diǎn))。這使得 prompt 方案能無(wú)縫整合,其中用戶可以為了節(jié)省上下文中的空間而移除無(wú)法帶來(lái)提升的推理部分。
T 的具體形式及其影響 G 的方式取決于具體的變換。下面首先詳細(xì)介紹主要幾個(gè)圖使能的思維變換,然后會(huì)描述 GoT 何以囊括之前方案的變換。除非另有說(shuō)明,V^? = E^? = ?。
聚合變換:用戶可以使用 GoT 將任意思維聚合成新思維,實(shí)現(xiàn)取長(zhǎng)補(bǔ)短。這里看看只創(chuàng)建一個(gè)新頂點(diǎn)的基礎(chǔ)形式:V^+ = {v^+} 且 E^+ = {(v_1, v^+), ...,(v_k, v^+)},其中 v_1, ..., v_k 是被融合的 k 個(gè)思維。更一般而言,這能實(shí)現(xiàn)對(duì)推理路徑的聚合,即更長(zhǎng)的思維鏈,而不只是單個(gè)思維。使用圖模型,可以輕松實(shí)現(xiàn)聚合變換:通過(guò)添加來(lái)自建模了幾條鏈中最后思維的頂點(diǎn) v_1, ..., v_k 的傳出邊,使之指向組合這些鏈的單個(gè)思維 v^+。
細(xì)化變換:另一種思維變換是通過(guò)修改內(nèi)容對(duì)當(dāng)前思維 v 進(jìn)行細(xì)化:V^+ = {} 和 E^+ = {(v, v)}。圖中的這個(gè)循環(huán)表示與原始思維有同樣連接的迭代版思維。
生成變換:最后,用戶還可以基于已有的單個(gè)思維 v 生成一個(gè)或多個(gè)新思維。這一類(lèi)別中包含 ToT 或 CoT-SC 等更早期方案中的類(lèi)似推理步驟。從數(shù)學(xué)形式上講,有
對(duì)思維進(jìn)行評(píng)分和排名
對(duì)思維評(píng)分的目的是為了理解當(dāng)前的解答是否足夠好。分?jǐn)?shù)被建模為一個(gè)一般函數(shù) E (v, G, p_θ),其中 v 是所要評(píng)估的思維。為了盡可能讓 E 更普適通用,E 中還使用了推理的整個(gè)過(guò)程 (G),因?yàn)樵谀承┰u(píng)估場(chǎng)景中,分?jǐn)?shù)可能與其它思維相關(guān)。
GoT 也能排名。研究者使用了函數(shù) R (G, p_θ, h) 來(lái)建模,其中 h 指定了要被 R 返回的 G 中排名最高的思維的數(shù)量。雖然 R 的具體形式取決于用例,但最常使用一個(gè)簡(jiǎn)單而有效的方法是返回分?jǐn)?shù)最高的 h 個(gè)思維,即 v_1, ..., v_h = R (G, p_θ, h)。
E 和 R 的具體形式取決于用例。
系統(tǒng)架構(gòu)和擴(kuò)展能力
GoT 由一組交互式模塊構(gòu)成,見(jiàn)圖 3(藍(lán)色部分)。這些模塊是 Prompter(準(zhǔn)備用于 LLM 的消息)、Parser(解析器,提取 LLM 答復(fù)中的信息)、評(píng)分模塊(驗(yàn)證 LLM 答復(fù)并評(píng)分)、Controller(控制器,協(xié)調(diào)整個(gè)推理過(guò)程,并決定如何推進(jìn)推理)。Controller 中包含另外兩個(gè)重要組件:操作圖(GoO)和圖推理狀態(tài)(GRS)。GoO 是一個(gè)靜態(tài)結(jié)構(gòu),其指定了對(duì)給定任務(wù)的圖分解,即它規(guī)定了應(yīng)用于 LLM 思維的變換及其順序和依賴關(guān)系。GRS 是一個(gè)動(dòng)態(tài)結(jié)構(gòu),其維持著正在進(jìn)行的 LLM 推理過(guò)程的狀態(tài)(其思維及其狀態(tài)的歷史)。
用例示例
研究者描述一些 GoT 的一些用例,包括排序、集合運(yùn)算、關(guān)鍵詞計(jì)數(shù)、文檔合并;下圖 4 便是 GoT 的排序用例中一個(gè)圖分解示例。這里我們不對(duì)用例做詳細(xì)介紹,詳情參閱原論文。
延遲與容量的權(quán)衡
延遲(在思維圖中抵達(dá)給定最終思維的跳數(shù))和容量之間的權(quán)衡也非常重要,研究者表明:GoT 在這一權(quán)衡上也優(yōu)于之前的 prompt 設(shè)計(jì)方案。這篇論文定義了一個(gè)新指標(biāo) —— 思維容量,即可以影響給定思維 t 的之前 LLM 思維的數(shù)量。從數(shù)學(xué)上看,思維 t 的容量就是在思維圖中,與 t 之間存在路徑的思維的數(shù)量。研究者假設(shè)輸出單個(gè)思維的成本為 O (1),并將每個(gè)提示方案的總成本固定為 Θ(n)。
各種方案的結(jié)構(gòu)如下。CoT-SC 由源自單個(gè)起始思維的 k 條獨(dú)立鏈構(gòu)成。ToT 是一條完全 k 叉樹(shù)。而在 GoT 中,會(huì)在其葉節(jié)點(diǎn)處加入一個(gè)完全 k 叉樹(shù),并帶有一個(gè)「鏡像」k 叉樹(shù) —— 其大小一樣而邊是反向的。
詳細(xì)分析見(jiàn)表 2。CoT 的容量較大,最大可至 N,但也有 N 的高延遲成本。CoT-SC 將延遲降低了 k 倍(對(duì)應(yīng)于其分支因子),但同時(shí)其容量也會(huì)減小 k 倍。ToT 的延遲為 log_k N,但容量也很低。GoT 是唯一能做到低延遲 log_k N 和高容量 N 的方案。GoT 之所以能做到這一點(diǎn),是因?yàn)槠淅昧怂季S聚合,使其可從圖分解中任何其它中間思維得到最終思維。
評(píng)估
研究者通過(guò)實(shí)驗(yàn)展現(xiàn)了 GoT 相對(duì)于其它方案的優(yōu)勢(shì)。其中重點(diǎn)比較的是 GoT 和 ToT,因?yàn)?ToT 的表現(xiàn)已經(jīng)優(yōu)于其它方案了。當(dāng)然,他們也還是用 IO、CoT 和 CoT-SC 做了些實(shí)驗(yàn)。
圖 5(排序)、6(集合交集)、7(關(guān)鍵詞計(jì)數(shù))、8(文檔合并)展示了實(shí)驗(yàn)結(jié)果。
總體而言,在實(shí)驗(yàn)評(píng)估過(guò)的所有基準(zhǔn)上,GoT 的輸出質(zhì)量都優(yōu)于 ToT,并且還實(shí)現(xiàn)了更低的推理成本。