提示詞(Prompt)是指它通過向模型輸入特定的指令或問題,來增強(qiáng)模型的表現(xiàn),而無需對模型結(jié)構(gòu)本身進(jìn)行調(diào)整。這一概念隨著大型語言模型的發(fā)展而流行,并催生了一個新興的領(lǐng)域——提示詞工程(Prompt Engineering)。這一領(lǐng)域目前還處于早期探索階段,依賴于實踐和試錯來發(fā)現(xiàn)有效的提示詞策略,屬于經(jīng)驗科學(xué)的一種。
但是它對普通人不易讀,所以做出一些解讀還是很有必要的,提取一些關(guān)鍵點進(jìn)行分析。 整個系列的行文結(jié)構(gòu)參考今年6月份出的技術(shù)報告(Schulhoff, Sander, et al., 2024)。做了一些補(bǔ)充并加入了一些自己的理解。這篇論文很好,它對很多混亂概念進(jìn)行了梳理并重新定義。比如說Few Shot,在深度學(xué)習(xí)中通常是指少樣本學(xué)習(xí)(Few-Shot Learning)。Prompt工程中是指Few-Shot Prompting。兩者最大的差別就在于前者是會對模型進(jìn)行永久性修改(比如模型的參數(shù))而后者僅限于在一次對話中,重啟上下文后即會失效,對模型本身不會造成任何影響。 文章內(nèi)容還會參考網(wǎng)上的一些資料,由于參考過多無法一一引用。在此向所有研究Prompt領(lǐng)域的工作者致敬??,你們是大模型時代的先驅(qū)者。 三、適用讀者范圍下面幾種人都可以在文章中各取所需
四、提示詞的組成一個完整的提示詞通??梢杂芍噶?、示例、輸出格式、風(fēng)格、角色約定幾部分組成,它們并不需要同時存在,也并非所有場景都必須使用它們。 1. 指令指令即用戶直接下達(dá)給大模型的命令。通常分為顯式指令以及隱式指令兩種。 顯式指令:直接提出問題
模型回答:
隱式指令:給大模型一些示例,讓其自動判斷該輸出什么。隱式指令更像“找規(guī)律”,讓模型來自動判斷如何輸出。例如下面是一個將英語翻譯成西班牙語的場景 用戶輸入:
模型回答:
2. 示例通常會使用*-Shot來表示,即提供給大模型的完成任務(wù)的示例,幫助其更好理解你的任務(wù)。上面的示例就屬于一個One-Shot場景(即提供一個事例)。當(dāng)場景足夠簡單、事例充分的情況下,大模型不需要你為他提供明確的指令,就可以得到你想要的答案。(參考上面的隱式指令場景)。*-Shot通常分為如下幾種情況: 1)Many-Shot 多實例上下文學(xué)習(xí),指提供多個(沒有具體的標(biāo)準(zhǔn))示例來輔助大模型理解 2)Few-Shot 提供少量示例,比如1-3個輔助大模型理解。 3)Zero-Shot 不提供示例,讓模型直接回答問題。
五、輸出格式約定這一部分通常是指定模型的輸出格式,例如
這么想的話你倒是可以拿大模型做為一個格式刷:) 六、風(fēng)格約定風(fēng)格即指定大模型的輸出風(fēng)格,是一種非常常用的模型輸出優(yōu)化方式。
模型回答:
七、角色約定為大模型設(shè)置一個角色,這點與上一部分的風(fēng)格約定通常都被用來改善模型輸出的風(fēng)格。
模型回答:
八、少樣本提示(Few-Shot Prompting)大模型的記憶是有限的,它的記憶容量被稱為上下文窗口(Context Window),決定了模型能夠捕捉信息的范圍。例如,GPT-4 Turbo擁有128k個Token的上下文窗口,相當(dāng)于超過300頁的文本,這使得它能夠生成更符合對話語境的回復(fù)。而上下文學(xué)習(xí)(In-Context Learning,ICL)是指一種不需要對模型進(jìn)行訓(xùn)練,在Prompt中通過給予示例以及說明來讓模型提高模型的預(yù)測性能。但是這種性能提升其實并非“學(xué)習(xí)到的”,更像是一種激活。激活模型原有的記憶。 少樣本提示(Few-Shot Prompting)參考上面的*-Shot介紹。尤其需要注意這里和深度學(xué)習(xí)中的Few-Shot Learning存在本質(zhì)區(qū)別,F(xiàn)SP并不會對模型參數(shù)進(jìn)行調(diào)整,它的提升僅限于當(dāng)前的上下文窗口中。 1. 通用的示例設(shè)計/選取原則為大模型提供或構(gòu)建示例的方式對其性能有顯著影響。不當(dāng)?shù)氖纠赡軙?dǎo)致模型產(chǎn)生嚴(yán)重的誤解。以下是六個關(guān)鍵因素。 2. 示例數(shù)量通常我們直覺上認(rèn)為給大模型更多的示例,可以讓其性能更好。但是考慮到客觀條件,一方面大模型受到上下文長度限制。另一方面,不好的示例會成為噪音,從而將會降低大模型的性能。此外,在部分場景下過多的示例對性能提升并無幫助(Zhao et al., 2024)。 3. 示例順序事例的順序可能會影響模型的表現(xiàn),在某些極端場景下,不同的順序甚至?xí)鼓P突卮饻?zhǔn)確率從低于50%到90%+不等(Lu et al. , 2024)。這個地方可以使用人工排列組合,也可以采用下一小節(jié)樣本自動構(gòu)建技術(shù)中的一些方法。注意:該順序也可能是不具有泛用能力的,遷移到另一個大模型可能會導(dǎo)致性能下降。 4. 標(biāo)簽的分布標(biāo)簽(label)類似于傳統(tǒng)的機(jī)器學(xué)習(xí)中的概念。當(dāng)我們訓(xùn)練機(jī)器學(xué)習(xí)模型時,我們通常會給模型提供很多示例,每個示例都有一個標(biāo)簽,告訴模型這個示例屬于哪個類別。如果我們提供給大模型的示例中,某個類別的樣本數(shù)量很多,而另一個類別的樣本數(shù)量很少,那么大模型的回答將會更偏向于第一個類別。所以在進(jìn)行示例采樣時應(yīng)該綜合考慮。 5. 標(biāo)簽的準(zhǔn)確性這點的影響目前還不確定,但是可以確定的點在于較大的模型通常更擅長處理不正確或不相關(guān)的標(biāo)簽。能不錯還是不要錯。 6. 示例格式示例的格式會對模型的回答質(zhì)量造成影響,常用的格式例如“Q:{input},A:{label}”并沒有所謂的“最佳格式”,需要去根據(jù)具體場景進(jìn)行實驗。 7. 示例相似性提供的示例的相似性也會對模型回答質(zhì)量造成影響,但是具體的影響目前也不確定。有的場景下選擇更多相似的示例可能會提升回答質(zhì)量,而有的場景下多樣化的示例則表現(xiàn)更好。一般來講認(rèn)為多樣化的示例會使得模型表現(xiàn)更好。 九、樣本自動構(gòu)建技術(shù)目前,手動構(gòu)建樣本的方法還處于相對原始的階段,類似于“刀耕火種”,主要依賴于人的主觀判斷。為了提高樣本的質(zhì)量,可以參考前面提到的幾個關(guān)鍵因素,并進(jìn)行多次測試以優(yōu)化樣本。此外,目前也有一些研究致力于開發(fā)自動化構(gòu)建Few-Shot樣本的技術(shù)。 如果我們有一個示例庫,并希望從中動態(tài)構(gòu)建有效的提示詞(Prompt),這是一個非常實際且常見的應(yīng)用場景。例如,在法律文書編寫領(lǐng)域,我們需要為大模型提供與當(dāng)前案件相似的文書示例,以輔助模型進(jìn)行更準(zhǔn)確的分析。這要求我們能夠從示例庫中智能地選擇和構(gòu)建相關(guān)的樣本,以提高模型的理解和預(yù)測能力。 這里介紹幾個常用的樣本自動構(gòu)建技術(shù)。 1. K-NN(K-近鄰算法)非常經(jīng)典的聚類算法,每次在特征空間中選取k個與輸入樣本最接近的訓(xùn)練樣本。但其對計算資源的消耗以及時間需求都很高,如果在提升生成階段使用將會一定程度影響使用體驗。 2. Vote-K(Su et al., 2022)在第一階段通過嵌入模型(SBert)來構(gòu)建一個有向圖。其中每個節(jié)點都指向其k最近鄰。然后從一組選定的樣本開始計算評分。在第二階段對第一階段對結(jié)果進(jìn)行人工標(biāo)注,在進(jìn)行Prompt Retrieval時計算所有標(biāo)注樣本和測試樣本的余弦相似度即可。 3. SG-ICL(Kim et al., 2022)自生成上下文學(xué)習(xí) (Self-Generated In-Context Learning,SG-ICL)利用大模型本身來自動生成示例,效果嘛….不好說??紤]到大模型對指令的理解偏差,可能會進(jìn)一步放大誤差。讓我想到了前段時間Nature發(fā)的那篇論文,利用AI生成的數(shù)據(jù)繼續(xù)訓(xùn)練大模型會導(dǎo)致模型的迅速退化(Shumailov et al., 2024)。 其他還有基于Q-Learning、基于對比學(xué)習(xí)以及基于主動學(xué)習(xí)的樣本構(gòu)建技術(shù)。這些方法目前研究性仍然不足,暫不列舉出來。 簡單總結(jié)一下,F(xiàn)ew-Shot是一種常見的提示詞調(diào)優(yōu)技術(shù)。一般來說,示例選取最好保持多樣化,同時應(yīng)該具有較強(qiáng)的隨機(jī)性(順序,內(nèi)容…)以避免大模型發(fā)現(xiàn)了“規(guī)律”從而影響回答質(zhì)量。 參考文獻(xiàn)[1]Schulhoff, Sander, et al. “The Prompt Report: A Systematic Survey of Prompting Techniques.” arXiv preprint arXiv:2406.06608 (2024). https:///abs/2406.06608 [2]Zhao, Hao, et al. “Is In-Context Learning Sufficient for Instruction Following in LLMs?.” arXiv preprint arXiv:2405.19874 (2024). https:///abs/2405.19874 [3]Lu, Yao, et al. “Fantastically ordered prompts and where to find them: Overcoming few-shot prompt order sensitivity.” arXiv preprint arXiv:2104.08786 (2021). https:///abs/2104.08786 [4]Su, Hongjin, et al. “Selective annotation makes language models better few-shot learners.” arXiv preprint arXiv:2209.01975 (2022). https:///abs/2209.01975 [5]Kim, Hyuhng Joon, et al. “Self-generated in-context learning: Leveraging auto-regressive language models as a demonstration generator.” arXiv preprint arXiv:2206.08082 (2022). https:///abs/2206.08082 [6]Shumailov, Ilia, et al. “AI models collapse when trained on recursively generated data.” Nature 631.8022 (2024): 755-759. https://www./articles/s41586-024-07566-y 本文由@阿茶的AI之路 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。 題圖來自 Unsplash,基于CC0協(xié)議。 該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。 |
|
來自: 邸彥強(qiáng) > 《大模型》