為什么SFT之后感覺LLM傻了? 如何降低這種現(xiàn)象?
作者:Goldma
SFT的重點在于激發(fā)大模型的能力,SFT的數(shù)據(jù)量相比于預訓練的數(shù)據(jù)還是太少了。如果抱著灌注領(lǐng)域知識而不是激發(fā)能力的想法,去做SFT的話,可能確實容易把LLM弄傻。
1、為什么感覺傻
簡單來講,SFT的重點在于激發(fā)大模型的能力,SFT的數(shù)據(jù)量相比于預訓練的數(shù)據(jù)還是太少了。如果抱著灌注領(lǐng)域知識而不是激發(fā)能力的想法,去做SFT的話,可能確實容易把LLM弄傻。具體來說:
SFT的目標與數(shù)據(jù)量的矛盾
- SFT的核心目標:SFT的主要目的是通過少量的標注數(shù)據(jù)來激發(fā)語言模型的潛力,而不是完全重新訓練模型。它希望模型能夠更好地適應(yīng)特定的任務(wù)或領(lǐng)域,同時保留其預訓練階段學到的通用知識。
- 數(shù)據(jù)量的限制:SFT的數(shù)據(jù)量通常較小,例如Alpaca數(shù)據(jù)集的52k量級。相比預訓練階段使用的海量數(shù)據(jù)(通常是數(shù)十億甚至數(shù)千億的token),這樣的數(shù)據(jù)量確實微不足道。如果SFT的目標是通過如此少量的數(shù)據(jù)來“灌注”大量領(lǐng)域知識,而不是激發(fā)模型的潛力,可能會導致以下問題:
過度擬合:模型可能會過度擬合這少量的SFT數(shù)據(jù),從而在其他未見過的任務(wù)或數(shù)據(jù)上表現(xiàn)變差。
災(zāi)難性遺忘:模型可能會在學習新任務(wù)的過程中忘記之前學到的通用知識,導致整體性能下降。
誤解SFT的作用
- 激發(fā)能力 vs. 灌注知識:SFT的核心作用是激發(fā)模型的潛力,而不是直接“灌注”領(lǐng)域知識。預訓練模型已經(jīng)具備了強大的語言理解和生成能力,SFT的目的是通過少量標注數(shù)據(jù)來引導模型更好地適應(yīng)特定任務(wù),而不是讓模型從頭學習新的知識。
- 如果錯誤地將SFT當作一種“灌注知識”的手段,可能會對模型進行過度的調(diào)整,從而破壞其原有的通用能力。例如,如果用少量的、特定領(lǐng)域的數(shù)據(jù)對模型進行微調(diào),模型可能會變得過于專注于這些特定數(shù)據(jù),而失去了在其他任務(wù)上的泛化能力。
指令微調(diào)的真正作用
- 指令微調(diào)的優(yōu)勢:指令微調(diào)(Instruction Fine-Tuning)是SFT的一種特殊形式,其核心目的是通過少量的指令數(shù)據(jù)來增強模型對任務(wù)的理解能力。它讓模型學會如何根據(jù)指令來完成任務(wù),而不是直接灌輸特定的知識。
- 泛化能力的提升:指令微調(diào)后,大語言模型展現(xiàn)出卓越的泛化能力,能夠更好地適應(yīng)未見過的任務(wù),甚至在多語言場景下也能有不錯的表現(xiàn)。這是因為指令微調(diào)幫助模型學會了如何根據(jù)指令來調(diào)整自己的行為,而不是依賴于具體的領(lǐng)域知識。
- 如果SFT偏離了這一目標,可能會導致模型在特定任務(wù)上表現(xiàn)較好,但在其他任務(wù)上表現(xiàn)變差,從而給人一種“變傻”的感覺。
2、如何降低這種現(xiàn)象
SFT數(shù)據(jù)比較多或者epoch比較大時,可能會導致SFT后大模型的通用能力下降,導致災(zāi)難性遺忘,這要根據(jù)實際場景判斷,如果只關(guān)注特殊領(lǐng)域的性能,通用能力下降也不需要過度關(guān)注,如果想要不失去通用的生成能力,可以考慮以下幾點:
- 多任務(wù)微調(diào):如果希望模型保持多任務(wù)泛化能力,可以一次性對多個任務(wù)執(zhí)行微調(diào)。良好的多任務(wù)微調(diào)可能需要包含許多任務(wù)的50-100,000個示例。
- 考慮PEFT的方法:也就是保留了原始LLM的權(quán)重,不采用全參數(shù)微調(diào)的方法。通過訓練少量特定于任務(wù)的適配器層和參數(shù)。PEFT對災(zāi)難性遺忘表現(xiàn)出更大的魯棒性,因為大多數(shù)預訓練的權(quán)重保持不變。
- 數(shù)據(jù)配比:在SFT數(shù)據(jù)中,增加一些通用生成的數(shù)據(jù),避免SFT過度學習單一訓練集內(nèi)容。
責任編輯:龐桂玉
來源:
小白學AI算法