LLM基礎模型系列:Prompt-Tuning
大型預訓練語言模型的規模不斷擴大,在許多自然語言處理 (NLP) 基準測試中取得了最先進的結果。自GPT和BERT開發以來,標準做法一直是在下游任務上微調模型,這涉及調整網絡中的每個權重(即模型調優)。但是,隨著模型變得越來越大,為每個下游任務存儲和提供模型的優化副本變得不切實際。
一個有吸引力的替代方案是在所有下游任務中共享一個凍結的預訓練語言模型,其中所有權重都是固定的。凍結模型可以通過“上下文”學習來執行不同的任務。通過這種方法,用戶通過提示設計為給定任務啟動模型,即手工制作帶有手頭任務描述或示例的文本提示。例如,為了給模型進行情感分析,可以在輸入序列之前附加提示“下面的電影評論是正面的還是負面的?”,“這部電影太棒了!”。
在任務之間共享相同的凍結模型大大簡化了服務,并允許高效的混合任務推理,但不幸的是,文本提示需要手動設計,即使是精心設計的提示,也會影響精確性,而本文帶來的技術將破解手動的難題。
1.微調與轉移學習
Prompt Tuning是通過訓練一組提示參數來適應LLMs新任務的過程。這些提示被附加到輸入文本之前,以指導生成LLM所需的輸出。它在每個樣本之前加入了一些虛擬的Token,這些Token用于不同任務的Embedding。
為了更加直觀的簡述Prompt Tuning。之前先看下面的兩張圖,第一張圖是全微調,也就是說準備好的樣本數據,然后繼續二次微調模型的參數。
全微調
第二張圖是將大模型的參數凍結,然后針對不同的任務訓練前綴(粉紅色的部分)。下面的訓練一個批次是4條樣本。
?
Prompt Tuning
2.Prompt Tuning的超參數們
那么在樣本之前要填充多少的虛擬Token才是最為合適的呢?以T5為例,針對不同任務的標準模型微調實現了強大的性能,但需要為每個特定的任務準備分支副本。
假定使用T5系列的模型,每個調整后的模型副本需要11B參數。相比之下,采用Prompt Tuning技術之后,若填充的虛擬Token為5,那么每個任務只需要20480個參數,減少了5個數量級以上。
回頭看看采用Prompt Tuning技術的T5,隨著大模型規模的增加,表現不斷地提升,而且這個過程中基座模型是凍結的,只有一份。仔細觀察下圖會發現,其實這種技術在大參數模型還是比較合適的,而在小參數模型中的表現一般,注意黃色(模型微調)和綠色(Prompt Tuning)在不同參數規模的模型的間隙。
上面這幅圖是在各種不同的情況下研究一些超參數對這種技術的性能影響。值得注意的是,這種技術的質量隨著模型大小的增加而穩定提高。在所有研究中,特大號參數的模型對超參數選擇最為穩健。
- a圖說明增加到 20多個虛擬Token通常會帶來很大的提升,但是對于特大號的模型而言,增加一個虛擬的Token就足夠了。是不是很神奇!
- b表明隨機均勻初始化參數數值落后于使用采樣詞匯或類標簽嵌入的更“高級”初始化,但這種差異在特大號模型下消失。
- c表明LM Adaptation在跨領域的表現優越,即使在下游任務目標中添加了標記
- d展示較長的適應步伐(Step)通常會帶來更大的收益
3.Prompt Tuning的優點
采用prompt tuning技術的好處在于它可以自動從一個新的模型中學習最佳的Prompt,就是如何引導大模型能夠根據新的任務,給出針對性的回答。之前網上有很多教程,教讀者如何學會寫高效的Prompt,采用這種技術將自動化的訓練對應任務的虛擬Token,然后自動的找出最佳的引導方法。
Prompt 調優保留了模型調優的強大任務性能,同時保持預訓練模型的凍結狀態,從而實現高效的多任務服務。
本文轉載自 ??魯班模錘??,作者: 龐德公
