提示工程指南
😃 基礎
💼 基礎應用
🧙‍♂️ 進階
🤖 代理商
⚖️ 可靠性
🖼️ 圖像提示詞
🔓 提示駭客攻擊
🔨 工具
💪 提示微調
🎲 雜項
📙 Vocabulary Reference
📚 Bibliography
📦 Prompted Products
🛸 Additional Resources
🔥 Hot Topics
✨ Credits
🧙‍♂️ 進階🟦 最少到最多提示

最少到最多提示

🟦 This article is rated medium
Reading Time: 1 minute
Last updated on August 7, 2024

桑德舒爾霍夫

最少到最多提示 (Least to Most prompting, LtM)思維鏈提示 (CoT prompting) 進一步發展,首先將問題分解為子問題,然後逐個解決。它是受到針對兒童的現實教育策略的啟發而發展出的一種技術。

與思維鏈提示類似,需要解決的問題被分解成一組建立在彼此之上的子問題。在第二步中,這些子問題被逐個解決。與思維鏈不同的是,先前子問題的解決方案被輸入到提示中,以嘗試解決下一個問題。

LtM 的圖示

範例:回覆客戶諮詢

讓我們問一個稍微複雜的客服問題:


這個回答是錯誤的(目前還在退貨時間內),那我們來將問題分解為子問題試試:


讓我們試著解決第一個子問題:

僅僅透過解決第一個子問題,我們就能解決整個問題。如果 GPT-3 沒有立即給出答案,我們可以解決下一個子問題,直到它返回答案。值得注意的是,我們使用 讓我們一步一步來 的提示短語。這個提示不是必須的,但對於這個例子來說效果很好。

範例:字元連線

LtM 最初是使用 few-shot 提示的方式引入的,而不是顯式指令將問題分解為多個步驟(如上所示)。除此之外,有時也可以使用單一提示而不是提示鏈來實現它。讓我們來看看字元連線的尾字問題,例如給定輸入詞語 思考、機器,則輸出應為 考器

第一次嘗試:標準提示

即使使用更先進的模型(如 text-davinci-003),標準提示與 few-shot 範例的表現也非常糟糕。

第二次嘗試:思維鏈

思維鏈的表現比標準提示好得多。這是因為它現在允許模型考慮自己提取每個單詞的最後一個字母,將複雜性降低到分組已經收集的字母的行為。然而,這種方法在更長的輸入下也可能慢慢出現問題。

第三次嘗試:LtM

使用 LtM,我們透過重新表述先前串聯的結果來增強思維鏈的概念。這種做法使得每個步驟變的簡單,即每次只需要連線一個字元。這種方法帶來了非常好的效果,12 個乃至更多的詞都能得到正確結果。

這種方法看起來與思維鏈非常相似,但在概念上大有不同。在這裡,每一步都引入了上一步連線的結果。例如,在 "思考、機器、學習" 的這個例子,它不會單獨連線字元 "考","器","習",而是串連 "考" 和 "器",然後連線 "考器" 和 "習"。由於重新引入了上一步的結果,模型現在可以推廣到更長的鏈,因為它每一步都帶著增量結果,同時單步驟內只需要做很少的工作。

(譯註:該例子使用了 '|' 而非 ',',是因為中文的逗號經常不被識別為分隔符)。

結論

在具有 12 個詞的字元問題上,思維鏈的準確率為 34%,而 LtM 的準確率為 74%(該論文使用 text-davinci-002 作為模型)(譯註:上面的範例因為翻譯成了中文,所以準確率與原文中的值應該不同)。

範例:組合泛化問題 (compositional generalization)

SCAN 基準測試要求模型將自然語言轉換為動作序列。例如,句子 “run left and walk twice” 將被翻譯為 “TURN_LEFT + RUN + WALK * 2”。當面對訓練集中長度更長的序列時,語言模型的表現尤其差。

第一次嘗試:標準提示

使用簡單的標準提示,text-davinci-003 的表現非常出色,但仍然失敗了。

(譯註:該範例如果翻譯成中文,無法復現效果,因此保持原文)

第二次嘗試:LtM

第一步 - 縮減

在這裡,我們使用兩個不同的提示。第一個提示用於將輸入問題縮減為一個步驟序列。第二個提示用於將這個縮減後的步驟序列對映到實際的操作中。

這兩個提示都相當長,因而使用壓縮的 Python 符號表示操作,以節省標記(tokens)。

第一步將自然語言描述分解為更明確但仍類似人類的語言。這將有助於對映步驟按順序解決問題。 例如,“jump around left twice” 被簡化為 “jump left” -> TURN_LEFT + JUMP 和 “jump around left” -> (TURN_LEFT + JUMP) * 4。同樣,減少步驟是用來解釋重複概念(twice、thrice 等)的。

第二步 - 對映

在第二步中,我們使用縮減過的結果,並再次使用相當長的提示(14個案例)將簡化的自然語言描述轉換為一系列操作。

在這裡,我們注入第一步的輸出:

"jump around left twice" can be solved by: "jump left", "jump around left", "jump around left twice". "walk opposite left thrice" can be solved by: "walk opposite left", "walk opposite left thrice". So, "jump around left twice after walk opposite left thrice" can be solved by: "jump left", "jump around left", "jump around left twice", "walk opposite left", "walk opposite left thrice".

到 LLM 中。

結論

LtM 帶來了多項提升:

  • 相對於思維鏈提高了準確性
  • 在難度高於提示的問題上提升了泛化能力
  • 在組合泛化方面的效能得到了顯著提高,特別是在SCAN基準測試

使用 text-davinci-002(論文中使用的模型)的標準提示解決了 6% 的 SCAN 問題,而 LtM 提示則取得了驚人的 76% 的成功率。在 code-davinci-002 中,結果更為顯著,LtM 達到了 99.7% 的成功率。

Footnotes

  1. Zhou, D., Schärli, N., Hou, L., Wei, J., Scales, N., Wang, X., Schuurmans, D., Cui, C., Bousquet, O., Le, Q., & Chi, E. (2022). Least-to-Most Prompting Enables Complex Reasoning in Large Language Models.

  2. Wei, J., Wang, X., Schuurmans, D., Bosma, M., Ichter, B., Xia, F., Chi, E., Le, Q., & Zhou, D. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models.

  3. Lake, B. M., & Baroni, M. (2018). Generalization without Systematicity: On the Compositional Skills of Sequence-to-Sequence Recurrent Networks. https://doi.org/10.48550/arXiv.1711.00350 2