Few Shot:最少的樣本,最大的可能

0 評(píng)論 1912 瀏覽 3 收藏 12 分鐘

在LLM提示工程中,鏈?zhǔn)酵评硎且环N方法,少樣本提示也是一種。如何能讓“少樣本”發(fā)揮出最大的價(jià)值,這篇文章提供了多種思路。

前兩周我們探討了LLM 提示工程中的一個(gè)關(guān)鍵方法:鏈?zhǔn)酵评恚–hain of Thought)在實(shí)際產(chǎn)品開(kāi)發(fā)中的應(yīng)用和注意要點(diǎn)。這篇文章我們會(huì)分享少樣本提示(few shot)的概念和應(yīng)用。

一、概念:零樣本提示(Zero shot)與少樣本提示(Few shot)

想象一下,你有一位非常聰明的助手。

很多時(shí)候,你只需要告訴他你想要做什么,他就能立刻理解并正確無(wú)誤地替你辦完。比如,你告訴他“請(qǐng)幫我找最近3個(gè)月AIGC的最新研究發(fā)現(xiàn)”,他就能快速又貼心地給你想要的。但如果,你要他做的任務(wù)是“給客戶寫一封正式的邀請(qǐng)函”,且這類邀請(qǐng)函自帶獨(dú)特的排版格式、語(yǔ)言要求。你的助手縱然天賦異稟,也得知道邀請(qǐng)函怎么寫才行。那么,你會(huì)怎么做?

第一種方法,絮叨半小時(shí),把規(guī)則一條條說(shuō)清楚:“請(qǐng)給我寫一封客戶的邀請(qǐng)函,第一行必須是客戶抬頭,而且要頂格;第二行是……;日期的格式要這樣,結(jié)尾的格式要那樣……”。

第二種方法,簡(jiǎn)單指示+參考:“這次的活動(dòng)要請(qǐng)XX公司的張總參加,客戶名片、活動(dòng)時(shí)間在這里。你來(lái)草擬正式的邀請(qǐng)函,具體的格式和語(yǔ)言風(fēng)格按照以前的邀請(qǐng)函來(lái),這里有一些好的例子,你拿去參考。

如果助手夠聰明,也有具備寫作能力,第二種方法對(duì)你和助手來(lái)說(shuō),顯然都是輕松又高效的。

這兩種“提要求”的方法,恰恰就是prompt兩種不同的技術(shù):零樣本提示(Zero Shot)和少樣本提示(Few Shot)樣本。

  1. 零樣本提示(Zero Shot):是一種在沒(méi)有任何相關(guān)示例的情況下,直接對(duì)模型進(jìn)行提問(wèn)的方法。
  2. 少樣本提示(Few Shot):在提示中提供少量的示例,以幫助模型更好地理解任務(wù)的目標(biāo)和輸出要求。

如果你的提示直接明確,或者想獲得開(kāi)放性的回答,零樣本提示(Zero Shot)足矣。但如果需要模型從事特定的模式或結(jié)構(gòu),就需要少樣本提示(Few Shot)了。

二、應(yīng)用:Few Shot的舉例方式

嚴(yán)格來(lái)說(shuō),F(xiàn)ew Shot重在“舉例”,對(duì)提示的形式幾乎沒(méi)有特別要求。常見(jiàn)的寫法有以下兩種:

1. 用“輸入-輸出”的示例結(jié)構(gòu),讓LLM理解你要的結(jié)果:

(Few Shot 部分)

情感分析任務(wù)。

示例1:

輸入:這個(gè)餐廳的服務(wù)太棒了,強(qiáng)烈推薦!

輸出:正面

示例 2:

輸入:我對(duì)我購(gòu)買的耳機(jī)感到非常失望,音質(zhì)很差。

輸出:負(fù)面

(任務(wù)要求)

新任務(wù):

輸入:這部電影的演員表現(xiàn)非常出色,劇情緊湊,值得一看。

輸出:

LLM回答:

正面。

這類要求適合對(duì)輸出的格式有嚴(yán)格要求的內(nèi)容。

2. 給示例+語(yǔ)言描述輸出要求:

示例1:

長(zhǎng)江悲已滯,萬(wàn)里念將歸。

況屬高風(fēng)晚,山山黃葉飛。

示例2:

江曠春潮白,山長(zhǎng)曉岫青。

他鄉(xiāng)臨睨極,花柳映邊亭。

示例3:

城闕輔三秦,風(fēng)煙望五津。

與君離別意,同是宦游人。

海內(nèi)存知己,天涯若比鄰。

無(wú)為在歧路,兒女共沾巾。

請(qǐng)模仿示例中的3首詩(shī)歌風(fēng)格,寫一首五言絕句。

LLM回答:

碧波漾秋意,孤舟載夢(mèng)回。

遠(yuǎn)山銜落日,歸鳥(niǎo)入林催。

三、進(jìn)階:如何用好Few Shot

Few shot既然是Prompt技術(shù)的一種,自然也和其他技術(shù)一樣,有放大優(yōu)勢(shì)的“妙招”和限制發(fā)揮的“昏招”。我們?cè)谶@里,為你做了總結(jié):

1. 量不在多,有用就好

很多人也許會(huì)好奇“

樣本”的數(shù)量到底多少合適。一般來(lái)說(shuō),F(xiàn)ew shot通常指2到20個(gè)示例之間。在實(shí)踐中,使用3-shot、5-shot 或 10-shot 的情況較多。而超過(guò)20個(gè)示例通常不再被認(rèn)為是“few-shot”了。另外,已經(jīng)有大量研究證明few shot并不是越多越好,更多的示例并不能提升輸出的結(jié)果。因此,提供高質(zhì)量的示例才是更好的方法。

2. 如果有標(biāo)簽,“全面”比“貼對(duì)”更重要

用“輸入-輸出”方式所做的few shot示例集,往往會(huì)為輸出定義一個(gè)分類或者內(nèi)容,比如在上面的情感分析中“正面”、“負(fù)面”、“積極”和“消極”等。這樣的分類在few shot技術(shù)中被稱為“標(biāo)簽”。這類標(biāo)簽?zāi)軒椭P屠斫馐纠⑶叶x可能輸出的范疇。

有意思的是,有人做了對(duì)比研究:讓人類專家給示例集貼上正確的標(biāo)簽(后稱為“黃金標(biāo)簽”),和讓機(jī)器自己在標(biāo)簽范圍內(nèi)(比如消極、積極)隨機(jī)選擇,對(duì)示例集貼上標(biāo)簽(后稱為“隨機(jī)標(biāo)簽”)。研究后發(fā)現(xiàn),即使隨機(jī)標(biāo)簽會(huì)出錯(cuò),但“隨機(jī)標(biāo)簽”的做法并不影響最終的輸出。反而,這些標(biāo)簽給得夠不夠全面,決定了LLM的輸出范疇。如果標(biāo)簽范疇有明顯的缺漏,那會(huì)明顯影響輸出的準(zhǔn)確性。

所以,當(dāng)few shot示例集需要用標(biāo)簽的方式時(shí),準(zhǔn)備全面且準(zhǔn)確的標(biāo)簽分類,比思考給每個(gè)示例貼上正確標(biāo)簽更重要。

3. 既“相似”又“多樣”

在選擇few shot上,最理想的示例集是“相似性”與“多樣性”兼顧。

相似性:

指的是few shot和輸出任務(wù)在主題、概念或情感上相似,這樣可以幫助模型更快地理解和適應(yīng)新任務(wù)。比如,你的輸出任務(wù)是讓LLM模型來(lái)分析人們對(duì)餐館/食物的點(diǎn)評(píng)是積極還是消極的。那么,示例應(yīng)該與點(diǎn)評(píng)相關(guān)。

相關(guān):

這家飯店真是太好吃了,我強(qiáng)烈推薦?。?biāo)簽:積極)

我非常喜歡這家飯店,食物非常出色。(標(biāo)簽:積極)

非相關(guān):

這部電影讓我很失望,劇情平淡無(wú)奇。(標(biāo)簽:消極)

消極:我對(duì)這部電影不太滿意,角色的發(fā)展不夠深入。(標(biāo)簽:消極)

多樣性:

指的是few shot之間,要在風(fēng)格、結(jié)構(gòu)或語(yǔ)義上有差異,這樣可以確保模型接觸到不同的語(yǔ)境,提高泛化能力。來(lái)對(duì)比一下“多樣”和“非多樣”之間的差別。

非多樣的示例集:

正面:這家餐廳的食物非常好吃。

正面:我非常喜歡這家餐廳的服務(wù)。

正面:餐廳的環(huán)境很棒。

負(fù)面:我不太喜歡這家餐廳的食物。

負(fù)面:這家餐廳的服務(wù)不太好。

負(fù)面:餐廳的環(huán)境讓我感到不舒服。

多樣性的示例集:

正面:這家餐廳的食物讓我印象深刻,每一道菜都烹飪得恰到好處。

正面:雖然價(jià)格不菲,但這家餐廳的服務(wù)和氛圍絕對(duì)值得。

正面:餐廳的裝潢很有特色,讓人用餐時(shí)心情愉悅。

負(fù)面:我對(duì)這家餐廳的體驗(yàn)感到失望,期待的菜肴并沒(méi)有達(dá)到預(yù)期。

負(fù)面:昨晚的餐廳之旅并不理想,服務(wù)生似乎很忙,忽略了我們的需求。

負(fù)面:餐廳的布局有些擁擠,影響了我們的用餐體驗(yàn)。

可以看到,非多樣的示例中,示范示例在語(yǔ)義上過(guò)于相似,都是直接表達(dá)對(duì)食物、服務(wù)和環(huán)境的正面或負(fù)面評(píng)價(jià)。而多樣性示例,在內(nèi)容上更加豐富(食物、裝潢、價(jià)格),語(yǔ)言風(fēng)格的表達(dá)也有不同,這可以幫助模型學(xué)習(xí)到更廣泛的語(yǔ)言模式和情感表達(dá),提高性能。

4. 實(shí)驗(yàn)、實(shí)驗(yàn),還是實(shí)驗(yàn)

在實(shí)踐過(guò)程中,你可能會(huì)發(fā)現(xiàn)在不同的任務(wù)中,相似性和多樣性的重要性不同,有些任務(wù)中,強(qiáng)調(diào)多樣性的示例集表現(xiàn)更好,有些任務(wù)則恰恰相反。已經(jīng)有研究證明了這一點(diǎn),在《IN-CONTEXT LEARNING WITH ITERATIVE DEMON- STRATION SELECTION》中研究者就發(fā)現(xiàn),在他們的訓(xùn)練集的研究中,常識(shí)問(wèn)答的任務(wù)中多樣性維度優(yōu)于相似性維度,而在新聞報(bào)道類的任務(wù)中相似性維度優(yōu)于多樣性維度。

因此,即使是有了相似性和多樣性的策略,在真實(shí)實(shí)踐中,也需要我們不斷“調(diào)試”,找到最合適任務(wù)的雙維度“配比”。

5. 最后的最后:選擇合適的模型

如果以上方法都不奏效,那么,你得看看現(xiàn)在的模型到底合適不合適了。

模型在預(yù)訓(xùn)練階段接觸到的輸入數(shù)據(jù)會(huì)有一定的特征,比如詞匯的使用頻率、句子的結(jié)構(gòu)、主題等等。在Few Shot的應(yīng)用中,模型是需要根據(jù)給定的示例集來(lái)理解特定任務(wù),并據(jù)此對(duì)新的輸入做出預(yù)測(cè)。如果示例集中的數(shù)據(jù)與模型在預(yù)訓(xùn)練階段接觸到的數(shù)據(jù)特相匹配,那么模型更有可能準(zhǔn)確地理解和執(zhí)行任務(wù)。這是因?yàn)槟P湍軌蚶闷湓陬A(yù)訓(xùn)練階段學(xué)到的知識(shí),來(lái)推斷和生成與示例集一致的輸出。

比如:如果一個(gè)模型在預(yù)訓(xùn)練階段主要接觸到的是科技領(lǐng)域的文本,那么它在處理科技相關(guān)的上下文學(xué)習(xí)任務(wù)時(shí)可能會(huì)表現(xiàn)得更好,因?yàn)樗鼘?duì)這類文本的輸入分布已經(jīng)有了很好的理解。相反,性能可能會(huì)下降。因此,到最后你真的無(wú)計(jì)可施了,emmm,也許問(wèn)題并不在few shot詞身上。

本文由 @AI 實(shí)踐干貨 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載

題圖來(lái)自 Unsplash,基于CC0協(xié)議

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒(méi)評(píng)論,等你發(fā)揮!