高級提示詞使用
學習目標
掌握大語言模型中進階提示工程技術的原理與應用,包括零樣本/少樣本提示、思維鏈推理、知識生成等核心方法,提升復雜任務解決能力。
相關知識點
- 零樣本與少樣本提示
- 思維鏈提示技術
- 高級推理技術
學習內容
1 零樣本與少樣本提示
1.1 零樣本原理
當今的大規模語言模型(LLMs)在大量數據上進行了訓練,并被調優以遵循指令,因此它們能夠在零樣本的情況下執行任務。以下是示例:
提示:
將文本分類為中性、負面或正面。文本:我覺得假期還可以。
情感:
輸出:
中性
請注意,在上述提示中,實驗并沒有給模型提供任何示例——這就是零樣本能力的體現。當零樣本方法不奏效時,建議在提示中提供演示或示例來引導模型取得更好的表現。這種技術被稱為少樣本提示。
盡管大規模語言模型已經展示了令人印象深刻的零樣本能力,但在處理復雜任務時,零樣本設置仍顯不足。為了改進這一點,少樣本提示作為一種技術被用來實現上下文學習,即通過在提示中提供演示來引導模型的表現。以下是示例:
提示:
將文本分類為中性、負面或正面。“whatpu”是一種小型毛茸茸的動物,原產于坦桑尼亞。使用單詞whatpu的一個句子例子是:
我們在非洲旅行時看到了非常可愛的小whatpus。
要做“farduddle”的意思是快速上下跳動。使用單詞farduddle的一個句子例子是:
輸出:
當我們贏得了比賽,我們都開始farduddle慶祝。可以觀察到,通過僅提供一個示例(即1-shot),模型已經學會了如何執行這個任務。對于更困難的任務,可以通過增加演示的數量(例如3-shot, 5-shot, 10-shot等)來進行實驗。
提示:
將文本分類為中性、負面或正面。這太棒了!// Negative
這不好!// Positive
哇,那部電影真酷!// Positive
多么糟糕的節目啊!//
輸出:
Negative
即使標簽已經被隨機化,這里仍然得到了正確的答案。注意實驗保持了格式,這對結果也有幫助。實際上,通過進一步的實驗發現,正在實驗的新GPT模型對甚至隨機格式的魯棒性也越來越強。例如:
提示:
將文本分類為中性、負面或正面。Positive 這太棒了!
這不好! Negative
哇,那部電影真酷!
Positive
多么糟糕的節目啊! --
輸出:
Negative
上面沒有一致的格式,但模型仍然預測了正確的標簽。
1.2 少樣本優化
標準的少樣本提示對于許多任務來說工作得很好,但在處理更復雜的推理任務時,它仍然不是一種完美的技術。這里通過一個例子來說明這一點:
提示:
這組數字中的奇數加起來是一個偶數:15, 32, 5, 13, 82, 7, 1。
輸出:
是的,這組數字中的奇數加起來是107,這是一個偶數。這不是正確的回答,這不僅突顯了這些系統的局限性,也表明需要更高級的提示工程技術。
可以試著添加一些示例,看看少樣本提示是否能改善結果。
提示:
這組數字中的奇數加起來是一個偶數:4, 8, 9, 15, 12, 2, 1。
答:答案是False。這組數字中的奇數加起來是一個偶數:17, 10, 19, 4, 8, 12, 24。
答:答案是True。這組數字中的奇數加起來是一個偶數:16, 11, 14, 4, 8, 13, 24。
答:答案是True。這組數字中的奇數加起來是一個偶數:17, 9, 10, 12, 13, 4, 2。
答:答案是False。這組數字中的奇數加起來是一個偶數:15, 32, 5, 13, 82, 7, 1。
答:
輸出:
答案是True。
這種方法不起作用。看來對于這種類型的推理問題,少樣本提示并不足以獲得可靠的回答。
總體而言,提供示例對于解決某些任務是有用的。當零樣本提示和少樣本提示不夠充分時,可能意味著模型所學的內容不足以很好地完成任務。在這種情況下,我們需要開始考慮微調模型或嘗試更先進的提示技術。
2 思維鏈提示技術
2.1 基礎CoT
鏈式思考(CoT)提示使模型能夠通過中間推理步驟來解決復雜的問題。你可以將其與少樣本提示結合使用,以在需要推理才能回答的更復雜任務上取得更好的結果。
提示:
這組數字中的奇數加起來是一個偶數:4, 8, 9, 15, 12, 2, 1。
答:將所有奇數(9, 15, 1)相加得到25。答案是False。這組數字中的奇數加起來是一個偶數:17, 10, 19, 4, 8, 12, 24。
答:將所有奇數(17, 19)相加得到36。答案是True。這組數字中的奇數加起來是一個偶數:16, 11, 14, 4, 8, 13, 24。
答:將所有奇數(11, 13)相加得到24。答案是True。這組數字中的奇數加起來是一個偶數:17, 9, 10, 12, 13, 4, 2。
答:將所有奇數(17, 9, 13)相加得到39。答案是False。這組數字中的奇數加起來是一個偶數:15, 32, 5, 13, 82, 7, 1。
答:
輸出:
將所有奇數(15, 5, 13, 7, 1)相加得到41。答案是False。
可以看到看到,當提供了推理步驟后,這里得到了完美的結果。甚至可以用更少的示例來解決這個問題,也就是說,只有一個示例似乎就足夠了:
提示:
這組數字中的奇數加起來是一個偶數:4, 8, 9, 15, 12, 2, 1。
答:將所有奇數(9, 15, 1)相加得到25。答案是False。這組數字中的奇數加起來是一個偶數:15, 32, 5, 13, 82, 7, 1。
答:
輸出:
將所有奇數(15, 5, 13, 7, 1)相加得到41。答案是False。
2.2 零樣本CoT
零樣本鏈式思考(Zero-Shot CoT),基本上是在原始提示中添加“讓我們一步步思考”。示例如下:
提示:
我去市場買了10個蘋果。我給了鄰居2個蘋果,又給了修理工2個。然后我又買了5個蘋果并吃了一個。我還剩下多少個蘋果?
輸出:
11個蘋果
答案是錯誤的!現在試試特殊的提示。
提示:
我去市場買了10個蘋果。我給了鄰居2個蘋果,又給了修理工2個。然后我又買了5個蘋果并吃了一個。我還剩下多少個蘋果?讓模型一步步思考。
輸出:
首先,你開始有10個蘋果。
你給了鄰居2個蘋果,又給了修理工2個,所以你還剩6個蘋果。
然后你又買了5個蘋果,所以你現在有11個蘋果。
最后,你吃了一個蘋果,所以你最終剩下10個蘋果。
這個簡單的提示在這個任務上非常有效!
3 高級推理技術
3.1 自我一致性
另一種先進的提示工程技術之一是自一致性。自一致性的目標是“替換鏈式思考提示中使用的樸素貪婪解碼”。其理念是通過少樣本鏈式思考采樣多個不同的推理路徑,并使用這些生成內容選擇最一致的答案。這有助于提升涉及算術和常識推理任務中的鏈式思考提示性能。
算術推理的例子如下:
提示:
當我6歲的時候,我的姐姐是我年齡的一半。現在我70歲了,我的姐姐多大年紀?
輸出:
35
輸出結果是錯誤的!這里可以使用自一致性來改進這一點:
提示:
Q: 果園里有15棵樹。果園工人今天將在果園里種樹。完成后,將會有21棵樹。果園工人今天種了多少棵樹?
A: 我們開始時有15棵樹。之后我們有了21棵樹。差額就是他們種植的樹木數量。所以,他們必須種了21 - 15 = 6棵樹。答案是6。Q: 如果停車場里有3輛車,又有2輛車到來,那么停車場里總共有多少輛車?
A: 停車場已經有3輛車了。又來了2輛。現在總共有3 + 2 = 5輛車。答案是5。Q: Leah有32塊巧克力,她姐姐有42塊。如果她們吃了35塊,那么總共還剩下多少塊?
A: Leah有32塊巧克力,Leah的姐姐有42塊。這意味著原來總共有32 + 42 = 74塊巧克力。已經吃了35塊。所以總共還剩下74 - 35 = 39塊巧克力。答案是39。Q: Jason有20個棒棒糖。他給了Denny一些棒棒糖。現在Jason有12個棒棒糖。Jason給了Denny多少個棒棒糖?
A: Jason原來有20個棒棒糖。因為他現在只有12個,所以他一定把其余的都給了Denny。他給Denny的棒棒糖的數量一定是20 - 12 = 8個棒棒糖。答案是8。Q: Shawn有五個玩具。圣誕節時,他從媽媽和爸爸那里各自得到了兩個玩具。他現在有多少個玩具?
A: 他有5個玩具。他從媽媽那里得到了2個,所以之后他有5 + 2 = 7個玩具。然后他又從爸爸那里得到了2個,所以總共他有7 + 2 = 9個玩具。答案是9。Q: 服務器房間原來有九臺電腦。從周一到周四,每天安裝五臺新電腦。現在服務器房間里有多少臺電腦?
A: 從周一到周四是4天。每天增加5臺電腦。這意味著總共增加了4 * 5 = 20臺電腦。最初有9臺電腦,所以現在總共有9 + 20 = 29臺電腦。答案是29。Q: Michael有58個高爾夫球。周二他丟了23個高爾夫球。周三他又丟了2個。周三結束時他還剩多少個高爾夫球?
A: Michael最初有58個球。他在周二丟了23個,所以之后他有58 - 23 = 35個球。周三他又丟了2個,所以他現在有35 - 2 = 33個球。答案是33。Q: Olivia有23美元。她買了五個貝果,每個3美元。她還剩多少錢?
A: 她買了5個貝果,每個3美元。這意味著她花費了...Q: 當我6歲的時候,我的姐姐是我年齡的一半。現在我70歲了,我的姐姐多大年紀?
A:
輸出1:
當我6歲時,我的姐姐是我年齡的一半,所以她是3歲。現在我70歲了,她就是70 - 3 = 67歲。答案是67。
輸出2:
當敘述者6歲時,他的姐姐是他年齡的一半,即3歲。現在敘述者70歲了,他的姐姐會是70 - 3 = 67歲。答案是67。
輸出3:
當我6歲時,我的姐姐是我年齡的一半,所以她是3歲。現在我70歲了,她是70 / 2 = 35歲。答案是35。
計算最終答案需要幾步,但為了簡單起見,可以看到已經有一個多數答案出現,因此它將成為最終答案。這種方法展示了通過結合多種推理路徑來提高答案準確性的潛力。
3.2 生成知識
大型語言模型(LLMs)不斷得到改進,其中一種流行的技術是將知識或信息融入其中,以幫助模型做出更準確的預測。
利用類似的想法,模型能否在進行預測之前也用于生成知識?
讓我們嘗試一個簡單的提示:
提示:
高爾夫的部分內容是試圖獲得比他人更高的分數。對還是錯?
輸出:
對。
這種類型的錯誤揭示了LLMs在執行需要更多世界知識的任務時的局限性。我們如何通過知識生成來改進這一點?
首先,生成一些“知識”:
提示:
輸入:希臘比墨西哥大。
知識:希臘面積約為131,957平方公里,而墨西哥面積約為1,964,375平方公里,這意味著墨西哥比希臘大1389%。輸入:眼鏡總是會起霧。
知識:當你的汗水、呼吸和環境濕度中的水蒸氣落在冷表面上冷卻后變成小液滴時,就會在眼鏡鏡片上形成一層膜,這就是你看到的霧。尤其是在外面空氣寒冷時,你的鏡片相對你的呼吸來說會比較冷。輸入:魚具有思考能力。
知識:魚類比看起來要聰明得多。在許多方面,如記憶力,它們的認知能力與‘高等’脊椎動物,包括非人類靈長類動物相當甚至超過。輸入:一生中抽很多煙的一個常見后果是得肺癌的機會高于正常水平。
知識:那些一生中平均每天吸煙不到一支的人患肺癌死亡的風險是從未吸煙者的9倍。而在每天吸1到10支煙的人群中,因肺癌死亡的風險幾乎是從未吸煙者的12倍。輸入:一塊石頭和一顆卵石大小相同。
知識:根據Udden-Wentworth沉積學尺度,卵石是一種直徑為4至64毫米的巖石碎塊。卵石通常被認為比顆粒(直徑2至4毫米)大,但比卵石(直徑64至256毫米)小。輸入:高爾夫的部分內容是試圖獲得比他人更高的分數。
知識:
知識1:
高爾夫的目標是在最少的擊球次數內完成一系列洞的比賽。一輪高爾夫通常由18個洞組成。每個洞在一個標準高爾夫球場上只打一次。每次擊球都被計為一點,總擊球數用于確定比賽的勝者。
知識2:
高爾夫是一項精確的俱樂部和球運動,參賽選手使用多種類型的球桿將球打入球場上的系列洞中,目標是以最少的擊球次數完成。游戲的目標是用最低得分完成整個過程,這通過計算每洞所用的擊球總數得出。得分最低的選手贏得比賽。
下一步是整合知識并得到預測。這里將問題重新格式化為問答形式以指導答案格式。
提示:
問題:高爾夫的部分內容是試圖獲得比他人更高的分數。對還是錯?知識:高爾夫的目標是在最少的擊球次數內完成一系列洞的比賽。一輪高爾夫通常由18個洞組成。每個洞在一個標準高爾夫球場上只打一次。每次擊球都被計為一點,總擊球數用于確定比賽的勝者。解釋并回答:
答案1:
不對,高爾夫的目標并不是獲得比他人更高的分數。相反,目標是在最少的擊球次數內完成一系列洞的比賽。比賽勝者不是根據總分數而是根據總擊球數決定的。問題:高爾夫的部分內容是試圖獲得比他人更高的分數。對還是錯?知識:高爾夫是一項精確的俱樂部和球運動,參賽選手使用多種類型的球桿將球打入球場上的系列洞中,目標是以最少的擊球次數完成。游戲的目標是用最低得分完成整個過程,這通過計算每洞所用的擊球總數得出。得分最低的選手贏得比賽。解釋并回答:
答案2:
對,高爾夫的一部分是試圖獲得比他人更高的分數。每位選手都試圖以最低得分完成整個過程,這是通過計算每個洞所用的總擊球數得出的。得分最低的選手贏得比賽。這個例子發生了一些有趣的現象,在第一個答案中,模型非常自信,但在第二個答案中則不太確定。
# 大語言模型提示工程與應用
1. 提示工程入門指南
2. 提示詞基礎使用方式
3. 大語言模型進階提示工程技術
4. LLMs文本生成與數據標注實踐:情感分析與葡萄酒品鑒
5. ChatGPT提示工程技術指南
6. 大語言模型對抗性提示安全防御指南
7. 提示工程:提升模型準確性與減少偏見的方法
8. 前沿提示工程技術探索