天天看點

大模型從入坑到精通(第12話):提示工程

作者:UTC人工智能

在人工智能的黃金時代,我們擁有前所未有的強大算力,這使得高度複雜的機器學習模型如GPT、BERT等成為可能。然而,任何工具的真正能力在于如何使用它們。“提示工程”作為一個新興領域嶄露頭角,它專注于如何與這些模型互動,使其生成更高品質、更有深度和更相關的輸出。

為什麼提示如此重要?想象一下,你正在與一個高度知識淵博的專家交談。你問的問題和提供的資訊決定了你得到的答案。相同的原理也适用于機器學習模型。通過優化和精心設計我們的輸入提示,我們可以引導模型向我們提供更加精确、有價值的答案,進而最大化我們從模型中獲得的價值。今天我們重要要介紹的是思維鍊提示(Chain-of-Thought Prompting, CoT)和化繁為簡提示(Least-to-Most Prompting, LTM)。

01 思維鍊提示(CoT)

大模型從入坑到精通(第12話):提示工程

思維鍊提示,是一種鼓勵LLM解釋其推理過程的方法,先通過提供一些示例讓大模型明白其中的推理過程,然後期望LLM在回答提示時遵循類似的推理過程,這種技術顯著提高了模型在需要複雜推理的任務上的性能。思維鍊提示的一個關鍵優點是它能夠增強LLM在需要算術、常識和符号推理的任務上的性能。對于大約1000億參數的模型,這種技術可以提高性能,較小的模型會産生不合邏輯的思維鍊,導緻精度低于标準提示。

本質上,思維鍊提示是指導LLM逐漸思考的方法。這是通過為模型提供一個明确概述推理過程的幾次示例來實作的,然後期望模型在回答提示時遵循類似的思維鍊。這種方法對于需要經過一系列推理步驟才能生成回應的複雜任務特别有效。思維鍊提示也可以在零樣本提示設定中使用。比如在原始提示中添加一個短語,“讓我們逐漸思考”,這也可以與少樣本提示一起使用,這個簡單的添加能夠改善模型在提示中沒有太多示例的任務上的性能。2個最簡單的例子如下:

大模型從入坑到精通(第12話):提示工程

圖:思維鍊提示使大型語言模型能夠處理複雜的算術、常識和符号推理任務

大模型從入坑到精通(第12話):提示工程

圖:零樣本及少樣本思維鍊提示

02 思維鍊提示的操作步驟

1 定義問題

首先明确定義希望語言模型解決的問題,問題應該是一個需要模型在最終得出答案之前經過一系列中間步驟來思考的多步推理任務。

2 分解問題

将問題分解成更小、更易管理的步驟,确定解決問題所必需的關鍵元件或中間步驟,每個步驟應代表整體推理過程中的邏輯進展。

3 開發一條思維鍊

建立一系列結構化提示,這些提示對應于前一步驟中确定的中間步驟,每個提示應該以清晰而簡明的方式表達,以引導語言模型進行思維過程,確定提示保持邏輯流,從一個步驟過渡到下一個。

4 準備示例

對于少樣本提示,準備一組示例,示範類似問題的期望思維鍊,這些示例應該展示中間步驟和最終解決方案,為語言模型提供在解決給定問題時遵循的模闆。對于大多數現代LLM來說,所需示例的數量往往比原始顯示的要少。再次,根據使用的每個LLM進行實驗,找到最佳點。

5 将提示整合到模型中

将思維鍊提示和示例輸入到語言模型中,可以将它們作為輸入文本的一部分串聯起來,或者使用特定模型支援的任何其他方法,確定提示的格式一緻,準确地代表了預期的中間步驟。

6 測試模型

使用鍊條思維提示方法評估模型在問題上的性能,分析模型産生的中間步驟,確定它遵循了預期的思維過程,評估模型提供的最終解決方案的準确性和效率。

7 疊代和改進

根據評估結果,改進鍊條思維提示和示例,以提高模型的性能,這可能涉及重新表述提示,調整步驟順序,或提供額外的示例以更有效地引導模型,重複測試和改進過程,直到達到所需的性能水準。

8 應用于新問題

一旦鍊條思維提示方法得到細化,将該方法應用于相同領域或相關領域的新問題,結構化的問題解決方法可以幫助模型處理各種多步推理任務,提高其整體性能和多功能性。

03 自動思維鍊提示

雖然思維鍊提示可以有效,但它通常涉及手工制作示例,這可能耗時且可能導緻次優解決方案。為了解決這個問題,研究人員提出了一種稱為自動思維鍊提示(Auto-CoT)的方法。這種方法利用LLM自動生成示範的推理鍊,進而消除了手動工作的需要。自動思維鍊提示包括兩個主要階段:問題聚類和示範抽樣。在問題聚類階段,給定資料集的問題被分成幾個聚類。在示範抽樣階段,從每個聚類中選擇一個代表性問題,并使用簡單的啟發式方法使用零樣本提示生成其思維鍊,這個過程鼓勵模型使用簡單而準确的示範。

大模型從入坑到精通(第12話):提示工程

04 化繁為簡提示(LTM)

思維鍊提示在各種自然語言推理任務中表現出卓越的性能。然而,在需要解決比提示示例更難的問題時,它往往表現不佳。為了克服這種較難的泛化問題,化繁為簡提示應運而生。這種政策的關鍵思想是将複雜問題分解成一系列更簡單的子問題,然後按順序解決它們,同時解決每個子問題都得到了先前已解決的子問題答案的幫助。化繁為簡提示通過将複雜問題分解為一系列更簡單的子問題來教導語言模型如何解決問題。它包括兩個連續的階段:分解和子問題解決。分解是指提示包含示範分解的固定示例,然後是要分解的具體問題。子問題解決由三個部分組成:(1) 示範如何解決子問題的固定示例;(2) 可能為空的先前回答的子問題和生成的解決方案清單;以及 (3) 下一個要回答的問題。

大模型從入坑到精通(第12話):提示工程

思維鍊提示在提升大型語言模型的推理能力方面提供了許多優勢,通過使用這種方法,模型被鼓勵遵循結構化的問題解決方法,模仿人類思維過程。例如它能夠将複雜的多步問題分解成更小、更易管理的步驟,這種分解允許模型為每個步驟配置設定更多的計算資源,最終得到更準确和高效的問題解決。另一個重要優勢是它适用于各種任務,包括數學題、常識推理和符号操作,這種方法适用于可以通過語言解決的任何任務,進而成為增強語言模型在各種領域中問題解決能力的強大工具。思維鍊提示可以輕松地內建到現有的大型語言模型中,無需對其體系結構進行重大修改,通過利用少樣本提示并包括思維鍊序列作為示例,模型可以迅速學習将這種結構化的問題解決方法應用于新任務,進而提高其整體性能和推理能力。

05 參考文章

《Large Language Models are Zero-Shot Reasoners》

《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》

《AUTOMATIC CHAIN OF THOUGHT PROMPTING IN LARGE LANGUAGE MODELS》

《LEAST-TO-MOST PROMPTING ENABLES COMPLEX REASONING IN LARGE LANGUAGE MODELS》

繼續閱讀