1 簡介?????????
隨著大規(guī)模預(yù)訓(xùn)練語言模型(LLM)能力的不斷提升,in-context learning(ICL)逐漸成為自然語言處理領(lǐng)域一個(gè)新的范式。ICL通過任務(wù)相關(guān)的若干示例或者指令來增強(qiáng)上下文,從而提升語言模型預(yù)測效果,通過探索ICL的性能來評估跟推斷LLM能力也成為一種新的趨勢。
圖1: In-context learning示例
2 介紹
In-context learning是一種學(xué)習(xí)范式,它允許語言模型通過以演示形式組織的若干個(gè)示例或者指令來學(xué)習(xí)任務(wù)。In-context learning的核心在于從任務(wù)相關(guān)的類比樣本中學(xué)習(xí),ICL要求若干示例以特定形式進(jìn)行演示,然后將當(dāng)前輸入x跟上述示例通過prompt拼接到一起作為語言模型的輸入。本質(zhì)上,它利用訓(xùn)練有素的語言模型根據(jù)演示的示例來估計(jì)候選答案的可能性。簡單理解,就是通過若干個(gè)完整的示例,讓語言模型更好地理解當(dāng)前的任務(wù),從而做出更加準(zhǔn)確的預(yù)測。
從定義上可以發(fā)現(xiàn)in-context learning跟其他相關(guān)概念的差異,比如prompt learning跟few-shot learning。Prompt learning是通過學(xué)習(xí)合適的prompt來鼓勵模型預(yù)測出更加合適的結(jié)果,而prompt既可以是離散型,也可以是連續(xù)型。嚴(yán)格來講,in-context learning可以視為prompt learning中的一小部分,如果將in-context learning中的若干示例的演示視作prompt的話。Few-shot learning指的是在給定少量監(jiān)督數(shù)據(jù)下利用參數(shù)更新來學(xué)習(xí)最佳模型參數(shù)的訓(xùn)練方法,但in-context learning則不然,它不要求參數(shù)更新。
In-context learning有以下幾個(gè)優(yōu)勢,
a)若干示例組成的演示是用自然語言撰寫的,這提供了一個(gè)跟LLM交流的可解釋性手段,通過這些示例跟模版讓語言模型更容易利用到人類的知識。
b)類似于人類類比學(xué)習(xí)的決策過程,舉一反三。
c)相比于監(jiān)督學(xué)習(xí),它不需要模型訓(xùn)練,減小了計(jì)算模型適配新任務(wù)的計(jì)算成本,更容易應(yīng)用到更多真實(shí)場景。
3 方法????????
In-context learning可以分為兩部分,分為作用于Training跟inference階段
3.1 Training
在推理前,通過持續(xù)學(xué)習(xí)讓語言模型的ICL能力得到進(jìn)一步提升,這個(gè)過程稱之為warmup,warmup會優(yōu)化語言模型對應(yīng)參數(shù)或者新增參數(shù),區(qū)別于傳統(tǒng)的finetune,finetune旨在提升LLM在特定任務(wù)上的表現(xiàn),而warmup則是提升模型整理的ICL性能。
Supervised in-context training
通過構(gòu)建對應(yīng)的in-context的監(jiān)督數(shù)據(jù)跟多任務(wù)訓(xùn)練,進(jìn)行對應(yīng)的in-context finetune,從而縮小預(yù)訓(xùn)練跟下游ICL的差距。除此之外,instruct tuning通過在instruction上訓(xùn)練能提升LLM的ICL能力。
Self-supervised in-context training
根據(jù)ICL的格式將原始數(shù)據(jù)轉(zhuǎn)換成input-output的pair對數(shù)據(jù)后利用四個(gè)自監(jiān)督目標(biāo)進(jìn)行訓(xùn)練,包括掩碼語言,分類任務(wù)等。
Supervised training跟self-supervised training旨在通過引入更加接近于in-context learning的訓(xùn)練目標(biāo)從而縮小預(yù)訓(xùn)練跟ICL之間的差距。比起需要示例的in-context finetuning,只涉及任務(wù)描述的instruct finetuning更加簡單且受歡迎。另外,在warmup這個(gè)階段,語言模型只需要從少量數(shù)據(jù)訓(xùn)練就能明顯提升ICL能力,不斷增加相關(guān)數(shù)據(jù)并不能帶來ICL能力的持續(xù)提升。從某種角度上看,這些方法通過更加模型參數(shù)可以提升ICL能力也表明了原始的LLM具備這種潛力。雖然ICL不要求warmup,但是一般推薦在推理前增加一個(gè)warmup過程。
3.2 Inference
很多研究表明LLM的ICL性能嚴(yán)重依賴于演示示例的格式,以及示例順序等等,在使用目前很多LLM模型時(shí)我們也會發(fā)現(xiàn),在推理時(shí),同一個(gè)問題如果加上不同的示例,可能會得到不同的模型生成結(jié)果。
Demonstration Selection
對于ICL而言,那些樣本是好的?語言模型的輸入長度是有限制的,如何從眾多的樣本中挑選其中合適的部分作為示例這個(gè)過程非常重要。按照選擇的方法主要可以分為無監(jiān)督跟有監(jiān)督兩種。
其中無監(jiān)督的方法分為以下幾種,首先就是根據(jù)句向量距離或者互信息等方式選擇跟當(dāng)前輸入x最相似的樣本作為演示例,另外還有利用自使用方法去選擇最佳的示例排列,有的方法還會考慮到演示示例的泛化能力,盡可能去提高示例的多樣性。除了上述這些從人工撰寫的樣本中選擇示例的方式外,還可以利用語言模型自身去生成合適的演示示例。
至于監(jiān)督的方法也有幾種,第一種是先利用無監(jiān)督檢索器召回若干相似的樣本,再通過監(jiān)督學(xué)習(xí)訓(xùn)練的Efficient Prompt Retriever進(jìn)行打分,從而篩選出最合適的樣本。此外還有基于prompt tuning跟強(qiáng)化學(xué)習(xí)的方式去選擇樣本。
Demonstration ordering
挑選完演示示例后,如何對其進(jìn)行排序也非常重要。排序的方法既有不需要訓(xùn)練的,也有根據(jù)示例跟當(dāng)前輸入距離遠(yuǎn)近進(jìn)行排序的,也可以根據(jù)自定義的熵指標(biāo)進(jìn)行重排。
Demonstration Formatting
如何設(shè)計(jì)演示示例的格式?最簡單的方式就是將示例們的x-y對按照順序直接拼接到一起。但是對于復(fù)雜的推理問題,語言模型很難直接根據(jù)x推理出y,這種格式就不適用了。另外,有的研究旨在設(shè)計(jì)更好的任務(wù)指令instruction作為演示內(nèi)容,上述的格式也就不適用了。對于這兩類場景,除了人工撰寫的方式外,還可以利用語言模型自身去生成對應(yīng)的演示內(nèi)容。
4 總結(jié)????????????????
上面關(guān)于in-context learning的介紹可能會讓人感到些許困惑,instruction tuning也算是其中一種,但是instruction里不一定有演示示例,我個(gè)人想法也是如此,如果大多數(shù)instruction里也會提及對應(yīng)的任務(wù)示例,但是不排除部分instruction只涉及到任務(wù)定義,所以前面將in-context learning跟任務(wù)示例強(qiáng)綁定可能就不太嚴(yán)謹(jǐn)了。但是大家能理解其中的含義即可,也沒必要深究其中的某些表述。????
毋庸置疑,在大規(guī)模語言模型能力快速提升的今天,in-context learning的熱度還將持續(xù)一段時(shí)間,如何通過構(gòu)建合適的in-context來進(jìn)一步激發(fā)語言模型在特定任務(wù)下的表現(xiàn)是值得思考的問題,如果能讓語言模型自身去寫對應(yīng)的任務(wù)示例或者指令,讓模型自己指導(dǎo)自己執(zhí)行任務(wù),不就進(jìn)一步解放生產(chǎn)力了嘛。細(xì)品下autoGPT,不也是ai自己指導(dǎo)自己完成任務(wù)嘛。
審核編輯:劉清
-
icl
+關(guān)注
關(guān)注
0文章
28瀏覽量
17234 -
語言模型
+關(guān)注
關(guān)注
0文章
524瀏覽量
10277
原文標(biāo)題:In-context learning綜述篇
文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論