最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

人工智能大語言模型微調(diào)技術(shù):SFT 、LoRA 、Freeze 監(jiān)督微調(diào)方法

2023-07-17 00:07 作者:汀丶人工智能  | 我要投稿

人工智能大語言模型微調(diào)技術(shù):SFT 監(jiān)督微調(diào)、LoRA 微調(diào)方法、P-tuning v2 微調(diào)方法、Freeze 監(jiān)督微調(diào)方法

1.SFT 監(jiān)督微調(diào)

1.1 SFT 監(jiān)督微調(diào)基本概念

SFT(Supervised Fine-Tuning)監(jiān)督微調(diào)是指在源數(shù)據(jù)集上預(yù)訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)模型,即源模型。然后創(chuàng)建一個新的神經(jīng)網(wǎng)絡(luò)模型,即目標(biāo)模型。目標(biāo)模型復(fù)制了源模型上除了輸出層外的所有模型設(shè)計及其參數(shù)。這些模型參數(shù)包含了源數(shù)據(jù)集上學(xué)習(xí)到的知識,且這些知識同樣適用于目標(biāo)數(shù)據(jù)集。源模型的輸出層與源數(shù)據(jù)集的標(biāo)簽緊密相關(guān),因此在目標(biāo)模型中不予采用。微調(diào)時,為目標(biāo)模型添加一個輸出大小為目標(biāo)數(shù)據(jù)集類別個數(shù)的輸出層,并隨機(jī)初始化該層的模型參數(shù)。在目標(biāo)數(shù)據(jù)集上訓(xùn)練目標(biāo)模型時,將從頭訓(xùn)練到輸出層,其余層的參數(shù)都基于源模型的參數(shù)微調(diào)得到。

1.2 監(jiān)督微調(diào)的步驟

具體來說,監(jiān)督式微調(diào)包括以下幾個步驟:

  • 預(yù)訓(xùn)練:?首先在一個大規(guī)模的數(shù)據(jù)集上訓(xùn)練一個深度學(xué)習(xí)模型,例如使用自監(jiān)督學(xué)習(xí)或者無監(jiān)督學(xué)習(xí)算法進(jìn)行預(yù)訓(xùn)練;

  • 微調(diào):?使用目標(biāo)任務(wù)的訓(xùn)練集對預(yù)訓(xùn)練模型進(jìn)行微調(diào)。通常,只有預(yù)訓(xùn)練模型中的一部分層被微調(diào),例如只微調(diào)模型的最后幾層或者某些中間層。在微調(diào)過程中,通過反向傳播算法對模型進(jìn)行優(yōu)化,使得模型在目標(biāo)任務(wù)上表現(xiàn)更好;

  • 評估:?使用目標(biāo)任務(wù)的測試集對微調(diào)后的模型進(jìn)行評估,得到模型在目標(biāo)任務(wù)上的性能指標(biāo)。

1.3 監(jiān)督微調(diào)的特點(diǎn)

監(jiān)督式微調(diào)能夠利用預(yù)訓(xùn)練模型的參數(shù)和結(jié)構(gòu),避免從頭開始訓(xùn)練模型,從而加速模型的訓(xùn)練過程,并且能夠提高模型在目標(biāo)任務(wù)上的表現(xiàn)。監(jiān)督式微調(diào)在計算機(jī)視覺、自然語言處理等領(lǐng)域中得到了廣泛應(yīng)用。然而監(jiān)督也存在一些缺點(diǎn)。首先,需要大量的標(biāo)注數(shù)據(jù)用于目標(biāo)任務(wù)的微調(diào),如果標(biāo)注數(shù)據(jù)不足,可能會導(dǎo)致微調(diào)后的模型表現(xiàn)不佳。其次,由于預(yù)訓(xùn)練模型的參數(shù)和結(jié)構(gòu)對微調(diào)后的模型性能有很大影響,因此選擇合適的預(yù)訓(xùn)練模型也很重要。

1.4 常見案例

  • 樣例 1

在計算機(jī)視覺中,低層的網(wǎng)絡(luò)主要學(xué)習(xí)圖像的邊緣或色斑,中層的網(wǎng)絡(luò)主要學(xué)習(xí)物體的局部和紋理,高層的網(wǎng)絡(luò)識別抽象的語義,如下圖所示。因此,可以把一個神經(jīng)網(wǎng)絡(luò)分成兩塊:

  • 低層的網(wǎng)絡(luò)進(jìn)行特征抽取,將原始信息變成容易被后面任務(wù)使用的特征;

  • 輸出層的網(wǎng)絡(luò)進(jìn)行具體任務(wù)的預(yù)測。輸出層因?yàn)樯婕暗骄唧w任務(wù)沒辦法在不同任務(wù)中復(fù)用,但是低層的網(wǎng)絡(luò)是具有通用型的,可以應(yīng)用到其他任務(wù)上。

  • 下圖表示的是將預(yù)訓(xùn)練模型的前 L-1 層的參數(shù)復(fù)制到微調(diào)模型,而微調(diào)模型的輸出層參數(shù)隨機(jī)初始化。在訓(xùn)練過程中,通過設(shè)置很小的學(xué)習(xí)率,從而達(dá)到微調(diào)的目的。

  • 樣例 2

BERT 模型是 Google AI 研究院提出的一種預(yù)訓(xùn)練模型,通過預(yù)訓(xùn)練 + 微調(diào)的方式于多個 NLP 下游任務(wù)達(dá)到當(dāng)時最先進(jìn)水平,如實(shí)體識別、文本匹配、閱讀理解等。與樣例 1 一樣,BERT 模型微調(diào)時,將預(yù)訓(xùn)練好的模型參數(shù)復(fù)制到微調(diào)模型,而輸出層參數(shù)隨機(jī)初始化。

1.5 SFT 監(jiān)督微調(diào)的主流方法

隨著技術(shù)的發(fā)展,涌現(xiàn)出越來越多的大語言模型,且模型參數(shù)越來越多,比如 GPT3 已經(jīng)達(dá)到 1750 億的參數(shù)量,傳統(tǒng)的監(jiān)督微調(diào)方法已經(jīng)不再能適用現(xiàn)階段的大語言模型。為了解決微調(diào)參數(shù)量太多的問題,同時也要保證微調(diào)效果,急需研發(fā)出參數(shù)高效的微調(diào)方法(Parameter Efficient Fine Tuning, PEFT)。目前,已經(jīng)涌現(xiàn)出不少參數(shù)高效的微調(diào)方法,其中主流的方法包括:

  • LoRA

  • P-tuning v2

  • Freeze

2. LoRA 微調(diào)方法

2.1 LoRA 微調(diào)方法的基本概念

LoRA(Low-Rank?Adaptation of Large Language Models),直譯為大語言模型的低階自適應(yīng)。LoRA 的基本原理是凍結(jié)預(yù)訓(xùn)練好的模型權(quán)重參數(shù),在凍結(jié)原模型參數(shù)的情況下,通過往模型中加入額外的網(wǎng)絡(luò)層,并只訓(xùn)練這些新增的網(wǎng)絡(luò)層參數(shù)。由于這些新增參數(shù)數(shù)量較少,這樣不僅 finetune 的成本顯著下降,還能獲得和全模型參數(shù)參與微調(diào)類似的效果。

隨著大語言模型的發(fā)展,模型的參數(shù)量越來越大,比如 GPT-3 參數(shù)量已經(jīng)高達(dá) 1750 億,因此,微調(diào)所有模型參數(shù)變得不可行。LoRA 微調(diào)方法由微軟提出,通過只微調(diào)新增參數(shù)的方式,大大減少了下游任務(wù)的可訓(xùn)練參數(shù)數(shù)量。

2.2 LoRA 微調(diào)方法的基本原理

神經(jīng)網(wǎng)絡(luò)的每一層都包含矩陣的乘法。這些層中的權(quán)重矩陣通常具有滿秩。當(dāng)適應(yīng)特定任務(wù)時,預(yù)訓(xùn)練語言模型具有低的 “內(nèi)在維度”,將它們隨機(jī)投影到更小的子空間時,它們?nèi)匀豢梢杂行У貙W(xué)習(xí)。

在大語言模型微調(diào)的過程中,LoRA 凍結(jié)了預(yù)先訓(xùn)練好的模型權(quán)重,并將可訓(xùn)練的秩的分解矩陣注入到 Transformer 體系結(jié)構(gòu)的每一層。例如,對于預(yù)訓(xùn)練的權(quán)重矩陣W0,可以讓其更新受到用低秩分解表示后者的約束:

$W0+△W=W0+BA$

其中:

$W0∈Rd×k,B∈Rd×r,A∈Rr×k$

而且,秩r?min(d,k),
此時,修正后的正向傳播計算公式就變成:

$h=W0x+△Wx=W0x+BAx$

在模型微調(diào)時,W0被凍結(jié),不接受梯度更新,只微調(diào)參數(shù)AB。與所有參數(shù)參與模型微調(diào)相比,此時該步驟模型微調(diào)的參數(shù)量由d×k變成d×r+r×k,而r?min(d,k),因此微調(diào)參數(shù)量大量減少了。

如下圖所示,LoRA 微調(diào)時,對A使用隨機(jī)高斯初始化,對B使用零初始化,因此ΔW=BA在訓(xùn)練開始時為零。

對 Transformer 的每一層結(jié)構(gòu)都采用 LoRA 微調(diào)的方式,最終可以使得模型微調(diào)參數(shù)量大大減少。當(dāng)部署到生產(chǎn)環(huán)境中時,只需要計算和存儲W=W0+BA,并像往常一樣執(zhí)行推理。與其它方法相比,沒有額外的延遲,因?yàn)椴恍枰郊痈嗟膶印?/p>

在 Transformer 體系結(jié)構(gòu)中,自注意力機(jī)制模塊中有四個權(quán)重矩陣 (Wq、Wk、WvWo), MLP 模塊中有兩個權(quán)重矩陣。LoRA 在下游任務(wù)微調(diào)時,只調(diào)整自注意力機(jī)制模塊的權(quán)重,并凍結(jié) MLP 模塊。所以對于大型 Transformer,使用 LoRA 可減少高達(dá) 2/3 的顯存(VRAM)使用量。比如在 GPT-3 175B 上,使用 LoRA 可以將訓(xùn)練期間的 VRAM 消耗從 1.2TB 減少到 350GB。

2.3 LoRA 微調(diào)方法的主要優(yōu)勢

  1. 預(yù)訓(xùn)練模型參數(shù)可以被共享,用于為不同的任務(wù)構(gòu)建許多小的 LoRA 模塊。凍結(jié)共享模型,并通過替換矩陣 A 和 B 可以有效地切換任務(wù),從而顯著降低存儲需求和多個任務(wù)切換的成本。

  2. 當(dāng)使用自適應(yīng)優(yōu)化器時,由于不需要計算梯度以及保存太多模型參數(shù),LoRA 使得微調(diào)效果更好,并將微調(diào)的硬件門檻降低了 3 倍。

  3. 低秩分解采用線性設(shè)計的方式使得在部署時能夠?qū)⒖捎?xùn)練的參數(shù)矩陣與凍結(jié)的參數(shù)矩陣合并,與完全微調(diào)的方法相比,不引入推理延遲。

  4. LoRA 與其它多種微調(diào)方法不沖突,可以與其它微調(diào)方法相結(jié)合,比如下節(jié)實(shí)訓(xùn)將要介紹的前綴調(diào)優(yōu)方法等。

3. P-tuning v2 微調(diào)方法

3.1 P-tuning v2 微調(diào)方法的相關(guān)技術(shù)

傳統(tǒng)的微調(diào)方法需要微調(diào)整個預(yù)訓(xùn)練語言模型,對于大語言模型的微調(diào)需要大量的資源和時間,急需更加高效的微調(diào)方法。理解 P-tuning v2 微調(diào)方法,首先需要了解 prefix-tuning 微調(diào)方法和 P-tuning v1 微調(diào)方法。

3.1.1 Prefix-tuning 微調(diào)方法

Prefix-tuning 微調(diào)方法在模型中加入 prefix,即連續(xù)的特定任務(wù)向量,微調(diào)時只優(yōu)化這一小段參數(shù)。對于條件生成任務(wù),如下圖所示,其輸入是文本x,輸出是序列y。

在上圖中,z=[x;y]xy的拼接,XidxYidx表示序列的索引,hi∈Rd表示每個時刻i下的激活值,hi=[hi(1);...;hi(n)]表示當(dāng)前時刻所有層輸出向量的拼接,hi(j)是時刻i的第j層 Transformer 的輸出,于是自回歸語言模型計算每一時刻的輸出hi即:

$hi=LM?(zi,h<i)$

hi的最后一層用來計算下一個詞的分布:

$p?(zi+1∣h≤i)=softmax(W?hi(n))$

其中?是語言模型的參數(shù)。在自回歸語言模型前添加 prefix 后,z=[PREFIX;x;y]或者z=[PREFIX;x;PREFIX;y],Pidx表示 prefix 的索引,|Pidx|表示 prefix 的長度。Prefix-tuning 通過初始化可訓(xùn)練矩陣(維度為∣Pidx×dim(hi)∣) 來存儲 prefix 參數(shù):

$hi={Pθ[i,:],ifi∈PidxLM?(zi,h<i),otherwise$

訓(xùn)練對象與 Fine-tuning 相同,但語言模型的參數(shù)?固定,僅 prefix 參數(shù)θ是可訓(xùn)練的參數(shù)。因此hi是可訓(xùn)練的的函數(shù)。

3.1.2 P-tuning v1 微調(diào)方法

P-tuning v1 微調(diào)方法是將 Prompt 加入到微調(diào)過程中,只對 Prompt 部分的參數(shù)進(jìn)行訓(xùn)練,而語言模型的參數(shù)固定不變。如下圖所示:

P-tuning v1 設(shè)計一個自動的生成連續(xù) prompt 的方法來提升模型的微調(diào)效果。由上圖,P-tuning v1 的模版可以用下面公式表示:

${h0,…,hi,e(x),hi+1,…,hm,e(y)}$

其中h代表 P-tuning v1 的連續(xù) prompt 表征,e代表一個預(yù)訓(xùn)練的語言模型,x代表數(shù)據(jù)的原始輸入,y代表數(shù)據(jù)的標(biāo)簽。在面對下游任務(wù)微調(diào)是,通過優(yōu)化h的參數(shù)來進(jìn)行模型微調(diào):

$h^0:m=arghminL(M(x,y))$

3.1.3 存在不足

P-tuning v1 微調(diào)方法缺少普遍性。實(shí)驗(yàn)表明,當(dāng)模型規(guī)模超過 100 億個參數(shù)時,P-tuning v1 可以與全參數(shù)微調(diào)方法相媲美,但對于那些較小的模型,P-tuning v1 方法和全參數(shù)微調(diào)方法的表現(xiàn)有很大差異,效果很差。同時,P-tuning v1 缺少跨任務(wù)的通用性,在序列標(biāo)注任務(wù)中的有效性沒有得到驗(yàn)證。序列標(biāo)注需要預(yù)測一連串的標(biāo)簽,而且大都是無實(shí)際意義的標(biāo)簽,對于 P-tuning v1 微調(diào)方法極具挑戰(zhàn)。此外,當(dāng)模型層數(shù)很深時,微調(diào)時模型的穩(wěn)定性難以保證。模型層數(shù)越深,第一層輸入的 prompt 對后面的影響難以預(yù)估。

3.2 P-tuning v2 微調(diào)方法的原理

P-tuning v2 微調(diào)方法是 P-tuning v1 微調(diào)方法的改進(jìn)版,同時借鑒了 prefix-tuning 微調(diào)的方法。如下圖所示:

與 P-tuning v1 微調(diào)方法相比,P-tuning v2 微調(diào)方法采用了 prefix-tuning 的做法,在輸入前面的每一層都加入可微調(diào)的參數(shù)。在 prefix 部分,每一層的 transformer 的 embedding 輸入都需要被微調(diào),而 P-tuning v1 只在第一層進(jìn)行微調(diào)。同時,對于 prefix 部分,每一層 transformer 的輸入不是從上一層輸出,而是隨機(jī)初始化的 embedding 作為輸入。

此外,P-Tuning v2 還包括以下改進(jìn):

  • 移除 Reparamerization 加速訓(xùn)練方式;

  • 采用多任務(wù)學(xué)習(xí)優(yōu)化:基于多任務(wù)數(shù)據(jù)集的 Prompt 進(jìn)行預(yù)訓(xùn)練,然后再適配的下游任務(wù)。

  • 舍棄詞匯 Mapping 的 Verbalizer 的使用,重新利用 [CLS] 和字符標(biāo)簽,跟傳統(tǒng)微調(diào)方法一樣利用 cls 或者 token 的輸出做自然語言理解,以增強(qiáng)通用性,可以適配到序列標(biāo)注任務(wù)。

3.3 P-tuning v2 微調(diào)方法優(yōu)點(diǎn)

P-tuning v2 微調(diào)方法解決了 P-tuning v1 方法的缺陷,是一種參數(shù)高效的大語言模型微調(diào)方法。

  • P-tuning v2 微調(diào)方法僅精調(diào) 0.1% 參數(shù)量(固定 LM 參數(shù)),在各個參數(shù)規(guī)模語言模型上,均取得和 Fine-tuning 相比肩的性能,解決了 P-tuning v1 在參數(shù)量不夠多的模型中微調(diào)效果很差的問題。如下圖所示(橫坐標(biāo)表示模型參數(shù)量,縱坐標(biāo)表示微調(diào)效果):

  • 將 Prompt tuning 技術(shù)首次拓展至序列標(biāo)注等復(fù)雜的 NLU 任務(wù)上,而 P-tuning v1 在此任務(wù)上無法運(yùn)作。

4. Freeze 監(jiān)督微調(diào)方法

4.1 Freeze 微調(diào)方法的概念

Freeze 方法,即參數(shù)凍結(jié),對原始模型部分參數(shù)進(jìn)行凍結(jié)操作,僅訓(xùn)練部分參數(shù),以達(dá)到在單卡或不進(jìn)行 TP 或 PP 操作,就可以對大模型進(jìn)行訓(xùn)練。在語言模型模型微調(diào)中,F(xiàn)reeze 微調(diào)方法僅微調(diào) Transformer 后幾層的全連接層參數(shù),而凍結(jié)其它所有參數(shù)。

4.2 Freeze 微調(diào)方法的原理

Freeze 微調(diào)方法為什么只微調(diào) Transformer 后幾層的全連接層參數(shù)呢?下面對其原因進(jìn)行展開講述。

Transformer 模型主要由自注意力層和全連接層(FF 層)構(gòu)成。對于 Transformer 的每一層結(jié)構(gòu),自注意力層的參數(shù)量為4?d2,即WQ、WQ、WQWQ?∈Rd×d;FF 層的參數(shù)量為8?d2,即W1∈Rd×4d,W2∈Rd×4d。因此 FF 層占據(jù)了模型的32的參數(shù),具有重要的研究價值。Transformer 的全連接層網(wǎng)絡(luò)結(jié)構(gòu)圖如下圖所示:

Transformer 的 FF 層可以視為一個 key-value memory,其中每一層的 key 用于捕獲輸入序列的特征,value 可以基于 key 捕獲的特征,給出下一個 token 的詞表分布。Transformer 每一層的 FF 層是由多個 key-value 組合而成,然后結(jié)合殘差連接對每層結(jié)果細(xì)化,最終產(chǎn)生模型的預(yù)測結(jié)果。FF 層的公式可以表示為:

$FF(x)=f(x?KT)?V$

其中K,V∈Rdm×d是可訓(xùn)練的參數(shù)矩陣,f是非線性激活函數(shù),如 ReLU。

此外,實(shí)驗(yàn)表明,Transformer 的淺層傾向于提取出淺層特征,深層傾向于提取語義特征,如下圖所示。層數(shù)越深提取的語義特征所占的比例越重。

對于各類不同的 NLP 任務(wù),淺層特征往往是具有 “共性”,而主要區(qū)別在于各自深層次的語義特征。因此,通過僅微調(diào) Transformer 后幾層的全連接層參數(shù),在保證參數(shù)高效微調(diào)的前提下,可以最大程度的發(fā)揮大語言模型的微調(diào)作用。

4.3 Freeze 微調(diào)方法的優(yōu)勢

  • 大量減少了大語言模型的微調(diào)參數(shù),是一種參數(shù)高效的微調(diào)方法;

  • 由于只需微調(diào)高層特征,加快了模型的收斂,節(jié)約了微調(diào)的時間;

  • 最大程度地保留了大語言模型預(yù)訓(xùn)練所學(xué)習(xí)到的語言的 “共性”,可解釋性較強(qiáng)。

5.關(guān)鍵知識點(diǎn)總結(jié)

  1. SFT監(jiān)督微調(diào)時監(jiān)督微調(diào)時,學(xué)習(xí)率通常會設(shè)置得很小

常見誤區(qū):1.監(jiān)督微調(diào)需要大量的訓(xùn)練時間和數(shù)據(jù) 2.監(jiān)督微調(diào)將復(fù)制源模型的所有參數(shù)至目標(biāo)模型 3.監(jiān)督微調(diào)只需要幾十條監(jiān)督數(shù)據(jù)即可

  1. 監(jiān)督微調(diào)常見任務(wù):1.用中文預(yù)訓(xùn)練BERT模型完成中文實(shí)體識別任務(wù) 2.訓(xùn)練語言模型GPT3 3.UIE模型在垂直領(lǐng)域的數(shù)據(jù)集上微調(diào)

常見誤區(qū):在ImageNet上的預(yù)訓(xùn)練的模型再來訓(xùn)練目標(biāo)檢測任務(wù) (則不是)

  1. 目前,主流的SFT監(jiān)督方法包括:LoRA、P-tuning v2、Freeze

  2. LoRA微調(diào)方法預(yù)訓(xùn)練的模型參數(shù)不參與微調(diào),LoRA微調(diào)方法一般會在各層新增參數(shù),LoRA微調(diào)方法的核心思想是利用高階矩陣秩的分解來減少微調(diào)參數(shù)量

  3. LoRA微調(diào)方法的優(yōu)勢:減少大語言預(yù)訓(xùn)練模型微調(diào)的參數(shù)量、節(jié)省成本、能取得與全模型微調(diào)類似的效果

  4. LoRA微調(diào)方法不會?對Transformer的每個權(quán)重矩陣采用秩分解。

  5. P-tuning v2微調(diào)方法是在P-tuning v1的基礎(chǔ)上引入了prefix-tuning的思想

常見誤區(qū):1.P-tuning v1微調(diào)方法能微調(diào)實(shí)體識別的任務(wù)、2.P-tuning v1微調(diào)方法在效果上可以媲美全參數(shù)微調(diào)的方式 3.P-tuning v2微調(diào)方法在自然語言理解任務(wù)上表現(xiàn)不佳

  1. P-tuning v2微調(diào)方法原理方面:1.P-tuning v2微調(diào)方法在transformer的每一層都加入了prefix、2.P-tuning v2微調(diào)方法采用了多任務(wù)學(xué)習(xí)、3.P-tuning v2微調(diào)方法prefix部分的參數(shù)不是由上一層的prefix輸出來輸入

常見誤區(qū):P-tuning v2微調(diào)方法微調(diào)的參數(shù)對象是每一層離散表示的prefix

  1. P-tuning v2微調(diào)方法解決了P-tuning v1微調(diào)方法中序列標(biāo)注任務(wù)不佳、普遍性很差等問題。

  2. Freeze微調(diào)優(yōu)點(diǎn):1.Freeze微調(diào)方法是一種參數(shù)高效的微調(diào)方法 2.大語言模型的后幾層網(wǎng)絡(luò)主要提取的是語義特征,前幾層主要提取的是文本的表層特征 3.Transformer的全連接層參數(shù)量多于自注意力層參數(shù)量


人工智能大語言模型微調(diào)技術(shù):SFT 、LoRA 、Freeze 監(jiān)督微調(diào)方法的評論 (共 條)

分享到微博請遵守國家法律
罗源县| 逊克县| 铅山县| 泉州市| 连城县| 米易县| 大余县| 城口县| 礼泉县| 抚松县| 吉木萨尔县| 大丰市| 江陵县| 通辽市| 龙里县| 曲水县| 常德市| 和平县| 钟祥市| 资溪县| 高青县| 吴旗县| 天津市| 全椒县| 丽水市| 苍南县| 丹东市| 岐山县| 诸城市| 遂昌县| 巴塘县| 蒙阴县| 阿鲁科尔沁旗| 扎赉特旗| 崇礼县| 奉节县| 台中县| 四川省| 洛川县| 德州市| 肇庆市|