來自:AI部落聯盟
最近又出了個比較吸引人眼球的Prompt Learning,甚至該方法還被稱之為NLP的“第四范式”,具體有哪幾項請參考以下鏈接:
綜述文章:https://arxiv.org/pdf/2107.13586.pdf
相關資源:http://pretrain.nlpedia.ai
從BERT誕生開始,使用下游任務數據微調預訓練語言模型 (LM)已成為 NLP 領域的通用做法。直到GPT-3模型首先將自然語言的提示信息(prompt)和任務示例(demonstration)作為上下文輸入給GPT-3,使得GPT-3只需要少數的幾個樣本,不需要訓練底層的參數便能夠處理任務。應該是受到這一做法的啟發,目前很多研究聚焦在Prompt Learning上,只為了更好的激發語言模型的潛能。
在了解Prompt Learning之前,首先我們要知道什么是prompt。prompt是提示的意思,也就是說需要提示模型我們想讓它干什么。通常在GPT-3中,我們輸入一段描述,再加上“翻譯”或者“問答”的prompt,那么GPT-3會生成相應的結果。最近該玩法在NLU中也得到了應用,比如情感分類任務,給定一句話“I missed the bus today.”,在其之后添加一個prompt:“I felt so __”,之后讓語言模型用一個情感類的詞進行完型填空,再將填空的詞語映射到標簽,這樣一來就能夠解決分類任務了。
大家發現沒有,這樣一來減少了訓練和測試階段之間的gap,因為我們在預訓練的時候使用的MLM任務就是一個完型填空任務,通常使用分類任務fine-tuning模型的時候需要加一個hidden_size * label_size的FFN,還得專門去訓練這個FFN的參數。但是如果使用Prompt Learning的方式,就省略了這一步了。這樣一來豈不是不用花大力氣訓練模型了?哈哈是的,很多研究證明Prompt Learning在小樣本(few-shot)場景下很有效。
論文標題:Making Pre-trained Language Models Better Few-shot Learners
論文來源:ACL2021
論文鏈接:https://arxiv.org/pdf/2012.15723.pdf
論文代碼:https://github.com/princeton-nlp/LM-BFF
本文主要有兩個貢獻點:
之前說過GPT-3模型基于prompt生成文本。受到該啟發本文提出了一種可以應用于任意預訓練模型的prompt learning模型——LM-BFF(小樣本微調預訓練模型)。
從上圖可以看出在預訓練的時候使用的MLM任務就是一個完型填空任務,在分類任務中微調的時候需要加一個hidden_size * label_size的FFN,微調的過程需要訓練這個FFN的參數。在使用Prompt Learning的方式的時候省略了這一步。這樣一來就不用花大力氣訓練模型了,而且該方法減少了訓練和測試階段之間的gap,在小樣本(few-shot)場景下很有效。
在具體的實驗過程中,作者發現使用不同的模板或不同的標簽詞進行微調得到的效果是不同的,如下圖所示:
比如對于同一個標簽詞,如果使用的prompt的模板不同(替換了某個單詞或者刪除某一個標點符號),得到的結果會有較大的波動;而且當選擇不同的標簽詞時,對預測的結果也會產生影響。這是由于人工設計模板和標簽詞時候和模型本身具有的gap帶來的缺陷。因此作者提出一種自動創建模板的方法。
Prompt的自動生成又分為了兩個部分(label的生成和模板的生成):
這個部分主要分成3步:
模板的生成則是使用的T5模型,固定標簽詞,生成固定模板。
整體過程如下所示:
在GPT-3中,微調的時候從訓練集中隨機抽取32個示例,以上下文的形式添加到每個輸入中;
這種方式的缺陷在于:樣本示例的數量會受到模型最大輸入長度的限制;不同類型的大量隨機示例混雜在一起,會產生很長的上下文,不利于模型學習。
LM-BFF采用2種簡單的方式進行了改進:
本文提出了一種簡單而又有效的小樣本微調方法——LM-BFF。主要包括2部分: