Prompt是什么
NLP發(fā)展的四個(gè)階段
(1)完全有監(jiān)督機(jī)器學(xué)習(xí):word本質(zhì)是特征,主要在做特征工程
(2)完全有監(jiān)督深度學(xué)習(xí):開(kāi)始搞卷積和Attention
(3)預(yù)訓(xùn)練:預(yù)訓(xùn)練 --> 微調(diào) --> 預(yù)測(cè):無(wú)監(jiān)督方法比如BERT+finetune適應(yīng)下游任務(wù)
(4)提示學(xué)習(xí):預(yù)訓(xùn)練 --> 提示 --> 預(yù)測(cè):讓下游任務(wù)來(lái)適應(yīng)語(yǔ)言模型。
使用Prompt的原因:盡可能在下游任務(wù)中使用模型時(shí)與pretrain階段的任務(wù)一致。所以重新定義下游任務(wù),統(tǒng)一為pretrain語(yǔ)言模型任務(wù)。實(shí)現(xiàn)下游任務(wù)標(biāo)數(shù)據(jù)驅(qū)動(dòng)。
Prompt思想
上下游任務(wù)一致。
由此衍生出auto prompt、soft prompt、連續(xù)Prompt等。
比較BERT和GPT
(1)BERT在finetune讓數(shù)據(jù)驅(qū)動(dòng)參數(shù)變化
(2)GPT使用Prompt讓語(yǔ)言通順,pretrain也是使用通順的語(yǔ)料。預(yù)訓(xùn)練語(yǔ)言模型的知識(shí)當(dāng)當(dāng)豐富,沒(méi)有必要為利用它而重構(gòu)。
Cloze Prompt VS Prefix Prompt
Cloze Prompt:對(duì)應(yīng)Prompt在句中,pretrain用自回歸語(yǔ)言模型解決生成任務(wù)。
Prefix Prompt:對(duì)應(yīng)Prompt在句末,pretrain用自編碼語(yǔ)言模型解決掩碼任務(wù)。
Hard Prompt: Discrete Prompt
(1)搜索空間是離散的。需要算法工程師在下游任務(wù)上具備豐富的經(jīng)驗(yàn)以及了解原預(yù)訓(xùn)練模型的底層概念。
(2)一般的hard prompt準(zhǔn)確率會(huì)不如fine-tuning的SOTA,不同的Prompt對(duì)模型的影響非常大(提示的長(zhǎng)度、詞匯的位置,一點(diǎn)Prompt的微笑差異也能造成效果的巨大差異)
需要如下的要求:
- 設(shè)計(jì)一個(gè)合適的提示模板,創(chuàng)造一個(gè)完形填空的題目。
- 設(shè)計(jì)一個(gè)合適的填空答案,創(chuàng)造一個(gè)完形填空的選項(xiàng)。
Step1:構(gòu)造Prompt。
Step2:構(gòu)造MASK token映射。
AutoPrompt
Motivation:由于Prompt的設(shè)計(jì)強(qiáng)依賴于人為因素,Prompt幾個(gè)字都能導(dǎo)致模型效果有巨大變化。為了減少人工設(shè)計(jì)的去『構(gòu)造Prompt』和『構(gòu)造MASK token映射』,提出了AutoPrompt。
分類
(1)Prompt Mining:從巨大的語(yǔ)料庫(kù)中進(jìn)行挖掘,比如輸入與輸出之間的高頻詞作為模板構(gòu)建元素。
(2)Prompt Paraphrasing:參考文本數(shù)據(jù)增強(qiáng)方法,可以做seed Prompt的同義詞替換,跨語(yǔ)種翻譯等。
(3)Gradient-based Search:從候選詞中選擇一些作為Prompt并參與訓(xùn)練,根據(jù)梯度下降對(duì)選擇詞重新排列組合。?
(4)Prompt Generation:通過(guò)文本生成模型直接生成一個(gè)Prompt
(5)Prompt Scoring:根據(jù)語(yǔ)言模型對(duì)所有候選Prompt打分,選擇一個(gè)最高分的Prompt使用上述Hard Prompt方法會(huì)輸出可被人類理解的句子。
步驟
去除人工設(shè)計(jì)帶來(lái)的變數(shù),自動(dòng)執(zhí)行下面兩步?!緵](méi)看懂】
Step1: 構(gòu)造Prompt,選擇loss下降最大的Prompt token,先給定mask映射詞,也就是:[CLS] {sentence} [T] [T] [T] [MASK]. [SEP],先用假設(shè)的[T],獲取[MASK],再用得到的[MASK]映射,用數(shù)據(jù)驅(qū)動(dòng)選擇[T]。
Step2:構(gòu)造MASK token映射,使用上下文的MASK token的output embedding作為x,與label訓(xùn)練一個(gè)logistic,logistic得分高的向量更能表示label。使用上下文MASK token的output token的embedding給打分函數(shù),取得分top-k。
舉個(gè)例子
- 關(guān)系抽取任務(wù)
- 預(yù)測(cè)
Dante was born in [T] [T] [T] [T] [Mask]中[MASK]的遮蔽部分。[T]是用來(lái)引導(dǎo)模型的觸發(fā)詞(trigger word)。觸發(fā)詞就是 Prompt 信息,這些觸發(fā)詞可以提升語(yǔ)言模型的分類能力。 - 【掩碼】直接追加到文本后面、讓語(yǔ)言模型去預(yù)測(cè)。預(yù)測(cè)多個(gè)詞語(yǔ)比較困難,因此將所有的類別表示為單個(gè)token;只預(yù)測(cè)客體(Dante was born in [Mask]),不預(yù)測(cè)主體(In [Mask] Dante was born)和關(guān)系。
- 【觸發(fā)詞】trigger word:Prompt信息,觸發(fā)詞可以直接提升語(yǔ)言模型在下游任務(wù)中的能力。
代表論文
https://arxiv.org/pdf/2010.15980
AUTOPROMPT: Eliciting Knowledge from Language Models with Automatically Generated Prompts
https://gitcode.com/ucinlp/autoprompt
Main points
預(yù)訓(xùn)練語(yǔ)言模型(LMs)在預(yù)訓(xùn)練后能夠捕獲多種知識(shí)類型,但直接評(píng)估這些知識(shí)存在難度。
AUTOPROMPT是一個(gè)自動(dòng)化的提示生成方法,用于評(píng)估預(yù)訓(xùn)練LMs中的知識(shí)。
AUTOPROMPT使用梯度引導(dǎo)搜索來(lái)創(chuàng)建有效的提示,無(wú)需手動(dòng)努力。
該方法通過(guò)結(jié)合原始輸入和觸發(fā)詞,并使用模板來(lái)形成提示。
通過(guò)邊緣化相關(guān)的標(biāo)簽詞,可以從MLMs中提取類別概率。
在情感分析和自然語(yǔ)言推理(NLI)任務(wù)中,AUTOPROMPT生成的提示在沒(méi)有微調(diào)的情況下表現(xiàn)出色。
在事實(shí)檢索任務(wù)中,AUTOPROMPT生成的提示比手動(dòng)和挖掘方法創(chuàng)建的提示更有效。
在關(guān)系提取任務(wù)中,MLMs使用AUTOPROMPT生成的提示可以比現(xiàn)有的監(jiān)督關(guān)系提取模型更有效地提取知識(shí)。
AUTOPROMPT在低數(shù)據(jù)環(huán)境下可能比微調(diào)更有效,并且在實(shí)際應(yīng)用中具有存儲(chǔ)和部署上的優(yōu)勢(shì)。
盡管AUTOPROMPT是一個(gè)有用的工具,但它在某些情況下可能難以提取特定的現(xiàn)象,并且生成的提示可能缺乏可解釋性。
問(wèn)題與方案
問(wèn)題:
- 文檔主要解決的問(wèn)題是如何有效地從預(yù)訓(xùn)練語(yǔ)言模型(LMs)中提取知識(shí)。盡管這些模型在預(yù)訓(xùn)練后表現(xiàn)出色,但直接評(píng)估它們?cè)陬A(yù)訓(xùn)練階段學(xué)到的知識(shí)類型(如語(yǔ)言知識(shí)、事實(shí)知識(shí)、常識(shí)或特定任務(wù)知識(shí))存在難度。
方案:
- 為了解決這個(gè)問(wèn)題,研究者們開(kāi)發(fā)了AUTOPROMPT,一個(gè)自動(dòng)化方法,用于為多種任務(wù)創(chuàng)建提示(prompts),這些提示基于梯度引導(dǎo)搜索來(lái)生成。
核心步驟
AUTOPROMPT的核心步驟可以解釋如下:
- 任務(wù)輸入與模板結(jié)合:首先,確定任務(wù)的原始輸入數(shù)據(jù),并選擇一個(gè)模板來(lái)構(gòu)建提示。例如,在情感分析任務(wù)中,原始輸入可能是電影評(píng)論。
- 觸發(fā)詞的初始化與學(xué)習(xí):在提示中,使用一組初始化為[MASK]的觸發(fā)詞。這些觸發(fā)詞在后續(xù)步驟中會(huì)被更新,以提高模型預(yù)測(cè)正確類別的概率。
- 梯度引導(dǎo)的搜索:利用基于梯度的搜索策略來(lái)迭代更新觸發(fā)詞。這個(gè)過(guò)程涉及到計(jì)算詞匯表中每個(gè)詞與當(dāng)前觸發(fā)詞交換后對(duì)標(biāo)簽似然性的影響,并選擇最有可能提高似然性的詞來(lái)替換觸發(fā)詞。
- 生成最終提示:通過(guò)上述步驟,最終生成一個(gè)能夠引導(dǎo)語(yǔ)言模型準(zhǔn)確預(yù)測(cè)任務(wù)類別的提示。
舉例來(lái)說(shuō),如果任務(wù)是情感分析,原始輸入可能是一句電影評(píng)論。AUTOPROMPT會(huì)使用一個(gè)模板,比如“[sentence] is really [MASK].”,并將觸發(fā)詞如“atmosphere”、“dialogue”等嵌入到模板中,形成如“[sentence] is really atmosphere dialogue [MASK].”的提示。然后通過(guò)梯度引導(dǎo)搜索來(lái)優(yōu)化這些觸發(fā)詞,最終得到一個(gè)能夠準(zhǔn)確預(yù)測(cè)情感類別的提示。
結(jié)論
- 研究結(jié)果表明,使用AUTOPROMPT生成的提示可以有效地從預(yù)訓(xùn)練的掩碼語(yǔ)言模型(MLMs)中提取知識(shí),而且與手動(dòng)創(chuàng)建的提示相比,不需要額外的參數(shù)或微調(diào),有時(shí)甚至能達(dá)到與最新監(jiān)督模型相當(dāng)?shù)男阅?。此外,研究還發(fā)現(xiàn)AUTOPROMPT在低數(shù)據(jù)環(huán)境下比微調(diào)有更好的性能,并且在實(shí)際應(yīng)用中提供了一些優(yōu)勢(shì),比如不需要存儲(chǔ)大量的模型檢查點(diǎn)。
關(guān)鍵論述
"These tokens are initialized to [MASK] tokens, and then iteratively updated to maximize the label likelihood over batches of examples." 這句話說(shuō)明了觸發(fā)詞最初被設(shè)置為[MASK]標(biāo)記,然后通過(guò)迭代更新以最大化標(biāo)簽似然性。
"Formally, at each step, we compute a first-order approximation of the change in the log-likelihood that would be produced by swapping the jth trigger token with another token in the vocabulary." 這里描述了計(jì)算過(guò)程,即在每一步中計(jì)算交換第j個(gè)觸發(fā)詞與詞匯表中的另一個(gè)標(biāo)記所產(chǎn)生的對(duì)數(shù)似然變化的一階近似。
"Then we identify a candidate set of the top-k tokens estimated to cause the greatest increase:" 這句話指出了如何確定一組候選詞,這組詞是預(yù)計(jì)能帶來(lái)最大增加的前k個(gè)標(biāo)記。
"In this paper, we introduce AUTOPROMPT—an automated method for generating prompts for any task, illustrated in Figure 1. Given a task, e.g., sentiment analysis, AUTOPROMPT creates a prompt by combining the original task inputs (e.g. reviews) with a collection of trigger tokens according to a template." 這句話概述了AUTOPROMPT自動(dòng)化生成任務(wù)提示的方法,它通過(guò)結(jié)合原始任務(wù)輸入和觸發(fā)詞來(lái)創(chuàng)建提示。
"The same set of trigger tokens is used for all inputs, and is learned using a variant of the gradient-based search strategy proposed in Wallace et al. (2019)." 這里提到了觸發(fā)詞集合對(duì)所有輸入都是相同的,并且是使用基于梯度的搜索策略的變體學(xué)習(xí)的。
"The prompt is constructed by taking the original task inputs—a collection of one or more sequences of tokens (e.g., the review in Figure 1)—and mapping them to a sequence of tokens using a template." 這句話說(shuō)明了提示的構(gòu)建過(guò)程,它涉及將原始任務(wù)輸入(一個(gè)或多個(gè)token序列)映射到使用模板的token序列。