如何向ChatGPT提問以達到最佳答案?

ChatGPT使用一種叫做 自回歸 的技術來生成回答,這涉及到基於前面的詞來預測序列中最可能的下一個詞。然而,如果你嘗試使用ChatGPT,你很快就會發現,一個給定答案的_質量_也取決於問題的質量

我們在跟ChatGPT對話的時候,有時候想要簡潔明確的答案,ChatGPT卻給出了很「發散」的答案,或者有時候希望他的答案能更有「多樣性」和「創造性」一點。怎麼樣才能控制Chat‍GPT回答的規範性和多樣性呢?今天就來談談這個話題
Tips: 獲得最好可能 的答案的秘密是了解ChatGPT如何生成它,並相應地提出問題。

在本文中,我們將討論一些撰寫良好ChatGPT提示工程 (Prompt engineering) 優化的訣竅,以便你可以最大化其對你所需任務的結果。

⚠️ 術語回顧: 問題 的技術名稱是 提示,而我們對問題的思考以最大化ChatGPT的結果被稱為 提示工程 (Prompt Engineering)。

模型能力取決於上下文

在開始使用ChatGPT時,一個常見的錯誤是認為其能力在所有上下文中都是固定的。例如,如果ChatGPT能夠成功地回答一個具體的問題或完成某種任務,我們可能會認為它也可能能夠回答任何領域的問題,或者解決其他類型的任務。

但這並非真實情況 :(

📚 ChatGPT已經在一個巨大但有限的數據庫上進行了訓練,並且已經為某些任務進行了優化。

然而,使用正確的提示可以幫助ChatGPT在具體的未見過的領域找到正確的答案或者掌握一項新任務

模型能力也取決於時間

也可能發生的情況是,在解決複雜任務時ChatGPT給出錯誤的答案

就像人類一樣,如果你給一個人一個4位數的總和,他們需要一些時間來思考並回答出正確的答案。如果他們匆忙做出決定,他們可能很容易就計算錯誤。同樣,如果你給ChatGPT一個在計算下一個代碼的時間內過於複雜的任務,它可能會憑空創造出一個不正確的猜測。

🧠 然而,就像人類一樣,這並不一定意味著模型無法完成這項任務。給予一些時間來理清事情,模型仍然可能能夠可靠地回答

有一些方法可以_引導_ ChatGPT成功解決你的複雜任務。

讓我們探索這些技術!

零次提示

人們在使用ChatGPT時,大多數時候都在使用 零次提示。我們稱之為_零次_是因為人們直接提出問題。

在這些情況下,如果問題足夠簡單,模型將能夠提供一個連貫的回應。但是使用這種方法,用戶無法控制回應的準確性或格式。

以下是在ChatGPT中使用零次提示的一些例子:

在這些例子中,提示由一個簡單的問題或聲明組成,而ChatGPT即使沒有對特定任務或主題進行任何先前的訓練,也能提供正確的答案。

🙌🏼 這證明了零次提示的力量以及像ChatGPT這樣的大型語言模型生成人類般的答案並最終泛化到新任務和領域的能力。

提升你的零次提示 (Zero-Shot Prompts)

在使用零次提示時,有一些撰寫良好提示的訣竅,如提供更清楚的指示或將複雜任務分解成更簡單的子任務。然而,如果沒有具體的例子或了解背後的理論,這些訣竅可能有點空洞。

有一個好的標準句子可以包含在你的提示中,無論你正在問ChatGPT解決哪種複雜任務:

讓我們一步一步地思考

“讓我們思考”的訣竅

提示模型推理出答案的最簡單方法就是簡單地在答案前加上 **讓我們一步一步地思考**

這個簡單的語句可以幫助模型引導自己產生正確的輸出。由於它會一步一步地提示推理,這也是給模型生成正確答案所需時間的一種方式

讓我們一步一步地思考 的技巧對於像數學問題或需要一些推理的問題等複雜任務很有效,但也適用於一般問題:

讓我們一步一步地思考

如我們所見,當使用 讓我們一步一步地思考 語句時,ChatGPT只提供最新的答案。

💭 如果你將這種技術應用到你自己的任務中,不要害怕嘗試定制指令! 讓我們一步一步地思考 相當通用,所以你可能會發現使用更嚴格格式的指令,定制到你的使用案例,效果會更好。

例如,你可以嘗試更結構化的變體,如 首先,一步一步地思考為什麼X可能是真的。其次,一步一步地思考為什麼Y可能是真的。第三,一步一步地思考X或Y哪個更有道理,這也可能帶來顯著的改進。

這種技術基本上是強迫模型逐步推理出答案!

什麼是 Zero-Shot Prompting?

Zero-Shot Prompting 是一種技術,它利用預訓練的語言模型,這些模型可以在不需要任何訓練資料或範例的前提下,直接處理問題或任務。Zero-Shot Prompting 的優點是它不需要為每個任務訓練專門的模型,而是依靠模型自身的通用性和靈活性。Zero-Shot Prompting 的缺點是它的輸出有時可能不夠精確或不符合期望,這可能需要對模型進行微調或增加更多的提示文本來改善

Zero-Shot Prompting 缺點

Zero-Shot Prompting - 此技術是基於預訓練的語言模型的,這些模型可能會受到訓練資料集的限制和偏見。例如在使用 ChatGPT 的時候,它經常會在一些投資領域,用男性的「他」,而不是女性的「她」。這是因為訓練 ChatGPT 的資料裡,提到金融投資領域的內容,多是男性。 雖然 Zero-Shot Prompting 技術不需要為每個任務訓練單獨的模型,但要達到最佳效能,它需要大量的樣本資料進行微調。像 ChatGPT 就是一個例子,它的樣本數量是超過千億。 由於 Zero-Shot Prompting 技術的靈活性和通用性,它的輸出有時可能不夠準確,或不符合預期。這可能需要對模型進行進一步的微調或增加更多的提示文本來修正

Zero-Shot Prompting 優點

省去了繁瑣的模型訓練過程:傳統的模型訓練過程需要大量的範例數據,而 Zero-Shot Prompting 可以不需要這些範例,讓訓練過程更加簡單且省時。

提高了模型的泛化能力:由於 Zero-Shot Prompting 可以在未見過範例的情況下進行預測,因此能夠提高模型的泛化能力,使其能夠更好地應對多樣化的任務。

提高了系統的可擴展性:Zero-Shot Prompting 可以應用於各種主題和領域,讓系統更具可擴展性,並且能夠快速適應新的任務。

總之,Zero-Shot Prompting 是一種更加高效和靈活的自然語言處理技術,具有訓練過程簡單、提高泛化能力和可擴展性等優點,這使得它成為當今自然語言處理技術中的一個熱門方向。

最大化ChatGPT的“一步一步”結果: 一次提示 (One-shot prompting)

在某些情況下,向模型展示你想要的東西比告訴模型你想要的東西更容易。這尤其適用於你需要以特定格式或風格來回答問題的情況。在這種情況下,你可以使用一種稱為 一次提示 的技術。

一次提示 是一種你提供一個或多個完成的範例,並讓模型在這個基礎上生成更多內容的方法。這可以幫助模型了解你期望的格式或風格,並適應它。例如,如果你想要模型以特定格式生成一份報告,你可以先提供一個已完成的範例,然後讓模型在這個基礎上繼續:

One-shot prompting

從上圖中我們可以看到,模型成功地遵循了我們提供的範例,並生成了一份新的報告,與我們的範例格式相符。這種技術的美妙之處在於,它可以用於各種情況,包括故事寫作、生成特定風格的文本,甚至是創建程式碼!

💭 你可以嘗試不同的範例,看看哪一種最適合你的需要。有些情況下,可能需要多個範例才能讓模型完全理解你的期望。

什麼是One-shot prompting

One-shot prompting 是一種技術,利用預訓練的語言模型生成自然語言文本,僅需提供一個範例或模板即可。One-shot prompting 可以與其他自然語言處理技術如對話管理和上下文建模相結合,以創造更精細和有效的文本生成系統。在 prompt engineering 的情境下,One-shot prompting 可用來生成自然語言文本,並提供範例或模板以指導語言模型的輸出

One-shot prompting 缺點

One-shot prompting 的缺點是可能無法適應新的或複雜的任務,因為它只提供一個範例或模板來指導語言模型的輸出。為避免語言模型產生不準確或不相關的文本,One-shot prompting 也需要更多的時間和技巧來設計合適的範例或模板

One-shot prompting 的優點

快速適應新的任務:One-shot prompting 可以快速適應新的任務,僅需提供一個範例或模板即可生成與該任務相關的自然語言文本,從而提高系統的效率。提高文本生成的準確性:One-shot prompting 可以提供範例或模板來指導語言模型的輸出,從而提高文本生成的準確性和相關性。

一次提示: 利用範例提升ChatGPT的效果

如何有效利用一次提示: 調整模型參數

除了以上的提示技巧外,你也可以透過調整模型參數來改變模型的行為。這種方法對於有編程背景的使用者來說會比較容易。

你可以調整模型的 溫度最大輸出長度 這兩個參數。

溫度 參數影響模型生成輸出的隨機性。一個高的溫度值會讓模型生成更隨機和多元的輸出,而一個低的溫度值則會讓模型更傾向於生成最可能的輸出。

最大輸出長度 參數則決定了模型生成的輸出的最大長度。這個參數可以根據你的需求來調整。

這些參數的設定可以結合提示技巧來使用,以達到最佳的效果。

    提示: 問:流感的癥狀是什麼?
    答:流感是一種由流感病毒引起的呼吸道疾病。常見的癥狀包括髮燒、咳嗽、喉嚨痛、流鼻涕或鼻塞、身體疼痛、頭痛、發冷和疲倦。
    
    問:心臟病發作的癥狀是什麼?
    答:當流向心肌的血液受阻時,就會發生心臟病發作。常見的癥狀包括胸痛或不適、呼吸短促、頭暈、噁心,以及手臂、背部、頸部、下頜或腹部的疼痛或不適。
    
    問:中風的癥狀是什麼?
    答:當流向大腦的血液被破壞時,就會發生中風。常見的癥狀包括面部、手臂或腿部(尤其是身體的一側)突然無力或麻木,意識模糊,說話或理解語言有困難,視力問題,頭暈和嚴重頭痛。

例如,你可以結合 多次提示 和調整 溫度 參數的方式,來使模型生成更多元和創新的輸出。

Temperature

ChatGPT會根據同一個問題,利用大模型動態生成不同的答案,而這些答案在「可預測性」和「創造性」之間的平衡是由「溫度」參數來決定的。 「溫度」是一個0~1之間的數值,溫度越高,代表創造性越高,答案會更加多元化;溫度越低,代表可預測性越高,答案會更加單一確切。

OpenAI官方文檔中對於「溫度」參數的解釋

如你所見,當溫度設為0時,模型生成的內容變化最小,答案也較為固定。當溫度設為1時,模型生成的內容變化最大,答案也更多元。 在API中,我們可以直接用參數來控制「溫度」值的高低;在網頁和ChatGPT對話時,雖然無法直接控制溫度參數,但我們可以用Prompt技巧來讓ChatGPT調整結果的多樣性,如下圖示例:

注意
  1. 「溫度」和「Few Shot」是兩種不同的技巧,Few Shot技巧無法調整溫度。
  2. 在網頁上,如果你對某個答案不滿意,可以點擊「Regenerate response」讓ChatGPT選擇另一個答案給你。”

結論

以上就是提升ChatGPT效能的一些技巧和方法。希望這些方法可以幫助你更有效地使用ChatGPT,並從中獲得你想要的結果。我們已經講解了許多關於如何提升ChatGPT性能的提示技巧,包括了 零次提示一次提示多次提示、以及調整模型參數。藉由這些技巧,我們可以更有效地控制ChatGPT的輸出,並讓它更好地完成我們的任務。

最後,別忘了,這些技巧都需要透過實驗和嘗試來找出最適合你的方法。希望你可以透過這篇文章,更深入地了解如何使用ChatGPT,並從中獲得更好的結果。如果你有任何問題或想要進一步了解的主題,歡迎留言或訂閱我們的電子報!

Share this post