更多實(shí)時(shí)面試題總結(jié)請(qǐng)關(guān)注我的公眾號(hào)"算法狗" 或移步至 https://pica.zhimg.com/80/v2-7fd6e77f69aa02c34ca8c334870b3bcd_720w.webp?source=d16d100b
這里說(shuō)的微調(diào)主要是指參數(shù)微調(diào),參數(shù)微調(diào)的方法主要有以下幾種:
- Adapter
在預(yù)訓(xùn)練模型每一層(或某些層)中添加Adapter模塊(如上圖左側(cè)結(jié)構(gòu)所示),微調(diào)時(shí)凍結(jié)預(yù)訓(xùn)練模型主體,由Adapter模塊學(xué)習(xí)特定下游任務(wù)的知識(shí)。每個(gè)Adapter模塊由兩個(gè)前饋?zhàn)訉咏M成。具體使用了Adapter的模型結(jié)構(gòu)如下所示:
<img src="https://upload-images.jianshu.io/upload_images/6363811-e9e3504ebc924693.png" align="center" width="60%"/>
給每個(gè)任務(wù)定義了自己的Prompt,拼接到輸入數(shù)據(jù)一起作為輸入,同時(shí)freeze預(yù)訓(xùn)練模型進(jìn)行訓(xùn)練 - Prefix-tunning
前綴微調(diào)將一個(gè)連續(xù)的特定于任務(wù)的向量序列添加到輸入,稱之為前綴,如下圖中的紅色塊所示。與提示(prompt)不同的是,前綴完全由自由參數(shù)組成,與真正的token不對(duì)應(yīng)。相比于傳統(tǒng)的微調(diào),前綴微調(diào)只優(yōu)化了前綴。因此,我們只需要存儲(chǔ)一個(gè)大型Transformer和已知任務(wù)特定前綴的副本,對(duì)每個(gè)額外任務(wù)產(chǎn)生非常小的開(kāi)銷(xiāo)。
<img src="https://upload-images.jianshu.io/upload_images/6363811-714833b3d326f5ac.png" align="center" width="60%"/> - P-tuning/P-tuning V2
P-tuning V1直接對(duì)embedding層進(jìn)行優(yōu)化存在兩個(gè)挑戰(zhàn):embedding層已經(jīng)經(jīng)過(guò)預(yù)訓(xùn)練,如果直接對(duì)輸入的prompt embedding進(jìn)行隨機(jī)初始化訓(xùn)練,容易陷入局部最優(yōu);沒(méi)法捕捉到prompt embedding之間的相關(guān)性。
P-Tuning V2是升級(jí)版本,主要解決P-Tuning V1在小參數(shù)量模型上表現(xiàn)差的問(wèn)題。V2在每一層上都加了一個(gè)殘差連接,每一層都加上prompts,使特征更充分。
P-tuning模型加入embedding位置不固定,可以加在整個(gè)輸入的前面或者后面,用法比較靈活,且其通過(guò)MLP+LSTM的方式對(duì)加入的embedding進(jìn)行了學(xué)習(xí),以提高收斂性。整體框架如下圖所示:
image - LORA
采用低秩矩陣近似的思想,凍結(jié)一個(gè)預(yù)訓(xùn)練模型的矩陣參數(shù),并選擇用A和B矩陣來(lái)替代,在下游任務(wù)時(shí)只更新A和B。流程如下:
<img src="https://upload-images.jianshu.io/upload_images/6363811-bebf429888053cef.png" align="center" width="40%"/>
參考:
[1] https://zhuanlan.zhihu.com/p/636481171
[2] https://zhuanlan.zhihu.com/p/709376189
本文由mdnice多平臺(tái)發(fā)布
