NLP 論文閱讀系列: P-Tuning
連結
論文
https://
arxiv。org/pdf/2103。1038
5。pdf
程式碼
https://
github。com/THUDM/P-tuni
ng
問題描述
GPT使用傳統的微調策略沒法在自然語言理解任務上取得較好結果,而透過新的調整策略,可以讓大小相似的GPT在NLU上取得比BERT相近或更好的結果。
方法細節
思路
自動化地尋找連續空間中的知識模板;訓練知識模板,但不fine-tune語言模型。
給定一個prompt
,傳統的離散prompt模板將其對映為
,其中的Pi所用的詞語是模型詞彙表中的詞。
P-tuning將[P_i]當成一個偽token(之所以叫偽token是因為後續還將進行更新),將其對映為
步驟
輸入一個句子,以及預先設計的一個離散的模板:
The Disney film is good! It was [MASK]。
;
對輸入的template中,挑選一個(或多個)token 作為pseudo token:
The Disney film is good! [pseudo] was [MASK]。
其初始化可以直接使用原本的token embedding;
對所有的pseudo token
,傳入一層LSTM,並獲得每個pseudo token輸出的隱狀態向量
(
就是一個可以訓練的連續的稠密的張量,從而促使模型可以找個更好的連續prompts)
P-tuning並不是隨機初始化這些pseudo tokens然後直接訓練,而是透過一個BiLSTM模型,加上一個使用ReLU作為啟用函式的雙層MLP,把這幾個Embedding算出來,並且將這個LSTM模型設為可學習的。避免了人工構建離散的template,而讓模型可以自動學習continuous embedding
只對Prompt部分的引數進行訓練,而語言模型的引數固定不變
使用BiLSTM+MLP本質上也是類似prefix-tuning中的重引數化作用
將整個句子傳入預訓練語言模型層,對於pseudo token傳入隱藏狀態
,對於原始詞和
[mask]
,則傳入embedding
效果
LAMA+SuperGLUE基準資料集
LAMA資料集,根據知識庫中結構化三元組(事實)構建的完形填空型別的資料。
Manual Prompt (MP): use original handcraft prompts from LAMA。(提供了人造的prompt)。
對於具有110億個引數的MegatronLM2,雖然微調幾乎不起作用,但P-tuning仍然可以進一步提高精度
結論
作者發現新增少量錨標記(anchor tokens)有助於SuperGLUE的一些NLU任務。例如在prompt模板“[PRE][prompt tokens][HYP]?[prompt tokens][MASK]”中的
“?”
就是一個錨節點,對效能影響很大。
在知識探測任務中:語言模型可以僅透過找到更好的prompt,不進行微調,就能捕捉到更多的知識。
P-tuning可以有效的提高BERT和GPT模型在NLU任務上的效能。並且使用P-tuning,可以讓相似代銷的GPT2實現比bert模型相當的甚至更好的結果,這個發現顛覆普遍認為的——雙向模型比單向模型在NLU任務中表現的更好。
當預訓練模型足夠大的時候,我們的裝置可能無法finetune整個模型,而P-tuning可以選擇只最佳化幾個Token的引數,因為最佳化所需要的視訊記憶體和算力都會大大減少,所以P-tuning實則上給了我們一種在有限算力下呼叫大型預訓練模型的思路。
結論部分大部分引用參考筆記中的總結。
問題
當預訓練語言模型的引數量低於100億時,Prompt-tuning會比傳統的Fine-tuning差;
像序列標註等對推理和理解要求高的任務,prompt-tuning效果會變差;
應用
在HUAWEI推出的盤古-\alpha模型中,P-tuning也被用於其的微調框架中
參考筆記
論文解讀:P-Tuning v2: Prompt Tuning Can Be Comparable to Finetuning Universally Across Scales and Tasks
P-tuning:自動構建模版,釋放語言模型潛能 (Highly recommended)