大型語言模型(LLM)的推理能力在自然語言處理(NLP)領域中扮演著至關重要的角色。近期研究顯示,使用程式碼提示(Code Prompting)可以顯著提升LLM在條件推理任務中的表現。本篇文章將解釋何謂程式碼提示,並透過具體例子比較其與一般提示(Text Prompting)的不同。
什麼是 Code Prompting?他如何提升 LLM 的推理能力?
條件推理是智能的基本方面,無論是在人類還是人工智能系統中。它是根據特定條件或前提做出決策或得出結論的過程。在我們的日常生活中,我們經常不自覺地使用條件推理。例如,決定是否帶傘取決於天氣預報的情況。同樣,人工智能(AI),特別是大型語言模型(LLM),也試圖模仿這種基本的人類能力。
儘管像 GPT-3.5 這樣的 LLM 在各種自然語言處理任務中表現出了卓越的能力,但其在條件推理方面的能力卻相對有限且探索較少。這正是這篇新研究論文的切入點,引入了一種被稱為“程式碼提示”的創新方法,以增強受訓於文本和程式碼的 LLM 的條件推理能力。
程式碼提示是一種有趣的技術,其中將自然語言問題轉換為程式碼,然後呈現給 LLM。這些程式碼不僅僅是一堆命令和語法,而是巧妙地保留了原始文本作為註解,基本上在程式碼的結構中嵌入了文本邏輯。這種方法在利用受訓於文本和程式碼的 LLM 的優勢方面具有革命性意義,可能開啟新的推理能力。
研究結果顯示,程式碼提示對多種 LLM 在多個條件推理數據集上的性能提升顯著。例如,在 GPT-3.5 上提升了22.52%,在 Mixtral 上提升了7.75%,在 Mistral 上提升了16.78%
除此之外的主要收穫
- 程式碼提示在性能上穩定地超越了一般的文本提示,改進範圍從2.6到7.7分不等。
- 程式碼的格式和語義至關重要,不僅僅是對程式碼的暴露,而是其與文本的有意整合。
- 程式碼提示的兩大主要優點是效率和改進的狀態追蹤能力。
- 在程式碼中保留原始自然語言文本對於上下文理解至關重要。
程式碼提示與一般提示的比較
為了更好地理解程式碼提示的優勢,我們可以透過一個具體例子來比較程式碼提示與一般提示之間的差異。
一般提示(Text Prompting)例子
問題:
John 可以申請退休金嗎?
背景資訊:
John 是一位65歲的退休人士。他在過去的10年中一直在一家私人公司工作。他已經繳納了所有必要的社會保險費用。
一般提示的輸入:
問題:John 可以申請退休金嗎?
背景資訊:John 是一位65歲的退休人士。他在過去的10年中一直在一家私人公司工作。他已經繳納了所有必要的社會保險費用。
讓我們一步一步思考。
一般提示的輸出:
John 是65歲的退休人士。
他在過去的10年中一直在工作。
他已經繳納了所有必要的社會保險費用。
因此,John 可以申請退休金。
程式碼提示(Code Prompting)例子
使用相同的問題和背景資訊,但這次我們將其轉換為程式碼格式:
程式碼提示的輸入:
# 問題:John 可以申請退休金嗎?
# 背景資訊:
# John 是一位65歲的退休人士。
john_age = 65
is_retired = True
# 他在過去的10年中一直在一家私人公司工作。
years_worked = 10
works_in_private_company = True
# 他已經繳納了所有必要的社會保險費用。
paid_social_security = True
# 讓我們一步一步思考。
if john_age >= 65 and is_retired and years_worked >= 10 and paid_social_security:
answer = "Yes, John 可以申請退休金。"
else:
answer = "No, John 不可以申請退休金。"
程式碼提示的輸出:
Yes, John 可以申請退休金。
總結兩種提示詞的差異
- 表達方式:
- 一般提示:以自然語言形式逐步推理,依賴於模型對自然語言的理解來進行推理。
- 程式碼提示:將自然語言轉換為結構化的程式碼,使用邏輯條件和變量來明確地描述推理過程。
- 推理過程:
- 一般提示:模型需要自己解析和理解自然語言中的邏輯關係。
- 程式碼提示:模型直接使用明確的邏輯結構進行推理,這有助於模型更好地理解和追踪條件和變量的狀態。
- 效率:
- 一般提示:可能需要多次嘗試才能找到正確的推理路徑,特別是在複雜情況下。
- 程式碼提示:通過結構化的程式碼,通常可以更高效地進行推理,減少模型的錯誤率。
程式碼提示方法尤其適合需要複雜條件推理的任務,能顯著提升模型的性能。通過將自然語言問題轉換為程式碼,我們可以更有效地利用 LLM 的推理能力,並提高推理任務的精確度和效率。這種方法在未來有望成為提升AI推理能力的重要工具。
原始研究論文與完整引用
Puerto, H., Tutek, M., Aditya, S., Zhu, X., & Gurevych, I. “Code Prompting Elicits Conditional Reasoning Abilities in Text+Code LLMs.” arXiv preprint arXiv:2401.10065 (2024).