前一篇提到思維鏈(CoT)技法,用於處理邏輯推理、算述運算效果特別不錯,本篇延伸思維鏈(CoT)技法,介紹另一個進階技法Tree of Thoughts (ToT),思維樹。某種程度上可以當成是思維鏈(CoT)的進階版。其本質上仍是基於讓模型有思考空間,進而精進其生成的結果。同時表現在邏輯推理、算述運算具有明顯成效。
接下來的內容均以ChatGPT-4模型做為示範
首先什麼是思維樹(ToT)架構,根據這篇研究(https://arxiv.org/pdf/2305.08291.pdf) ,思維樹(ToT)架構,為模型提供一個探索多個推理分支的機會,同時隨著推理的進展進行自我評估。其原理是基於思維鏈(CoT)提示進行擴大的架構,通過多回合的對話,每回合的對話相互產生思考探索的過程,並鼓勵探索思考,作為使用語言模型解決問題的中間步驟,這種方法使模型能夠通過深思熟慮的推理過程,並且自我評估中間思路,讓模型自主糾正錯誤,藉以逐步的積累知識。思維樹(ToT)架構甚至將模型生成和評估思考的能力搭配幾種搜索策略,例如深度優先搜索(DFS)、廣度優先搜索(BFS),來探索和回溯不同的思考分支。
(來源:https://arxiv.org/pdf/2305.10601.pdf)
研究進行了多個實驗,其一就是24點算數遊戲(用加減乘除算24點,遊戲規則很簡單:在4個數字中使用加減乘除,計算出24點即可過關),將思考分解為3個步驟,每個步驟都有一個中間方程式,然後在每個樹節點,提取"左邊"的數字並提示模型提出一些可能的下一步,在每一步中,保留最佳的 5個候選項,接著在思維樹(ToT)中執行廣度優先搜索(BFS),並且提示語言模型根據達到24的可能性來評估每個思考的候選項,判定其結果為"正確/可能/不可能",基於"太大/太小"的常識來排除不可能的候選項,並保留其餘的"可能"的候選項,如下圖。
(來源:https://arxiv.org/pdf/2305.10601.pdf)
實驗結果顯示,思維樹(ToT)架構明顯優於其他提示方法,模型透過多輪對話及樹搜索可以解決複雜問題,如下圖。
(來源:https://arxiv.org/pdf/2305.10601.pdf)
而Dave Hulbert進一步將思維樹(ToT)架構轉化為tree-of-thought-prompting,用單一個prompt讓模型在評估中間思想過程。例如下列提示(來源:https://github.com/dave1010/tree-of-thought-prompting)
Imagine three different experts are answering this question.
All experts will write down 1 step of their thinking,
then share it with the group.
Then all experts will go on to the next step, etc.
If any expert realises they're wrong at any point then they leave.
The question is...
實際操作一個範例試試
請創作一首現代文學詩
創作過程中,有3位專家一起創作,每一位專家在創作每一個句子時,並且會相互分享彼此的創作過程,然後進行交叉評分,投票低的內容就會被捨棄,最後請完成一首現代文學詩
現在我們理解了思維樹(ToT)的概念,相較於過去的技法,思維樹(ToT)的概念是比較新的,目前尚未廣泛的被使用,但從研究結果中,確實相當程度的提升模型能力,當過去的技法無法讓模型生成理想的回應時,或許可以試試思維樹(ToT)的概念。
參考資料:
https://arxiv.org/pdf/2305.10601.pdf
https://arxiv.org/pdf/2305.08291.pdf
https://github.com/dave1010/tree-of-thought-prompting
嗨,我是Ian,我喜歡分享與討論,今年跟2位朋友合著了一本ChatGPT主題書,如果你是一位開發者,這本書或許會有些幫助,https://www.tenlong.com.tw/products/9786263335189
這次的鐵人賽文章也會同時發佈於個人blog,歡迎關注我的blog : https://medium.com/@ianchen_27500