如何將ChatGPT的能力蒸餾到另一個(gè)大模型,是當(dāng)前許多大模型研發(fā)的研發(fā)范式。當(dāng)前許多模型都是采用chatgpt來生成微調(diào)數(shù)據(jù),如self instruct,然后加以微調(diào),這其實(shí)也是一種數(shù)據(jù)蒸餾的模擬路線。
不過,這種數(shù)據(jù)蒸餾的方式,只是單向的,并沒有進(jìn)行數(shù)據(jù)反饋。
最近的一篇文章《Lion: Adversarial Distillation of Closed-Source Large Language Model》 提出了一個(gè)將知識從一個(gè)復(fù)雜的、閉源的大型語言模型(LLM)轉(zhuǎn)移到一個(gè)緊湊的、開源的LLM的做法,其中加入了數(shù)據(jù)反饋的閉環(huán)機(jī)制,將蒸餾的指令分成困難和簡單兩類指令,并且逐步來生成困難指令有偏的引導(dǎo)開源LLM模型的學(xué)習(xí),取得了較好的效果。
論文地址:https://arxiv.org/pdf/2305.12870.pdf
整體框架AKD的工作如圖2所示,在一個(gè)迭代中分成三個(gè)階段:1)模仿階段,使學(xué)生的反應(yīng)與教師的反應(yīng)保持一致;2)辨別階段,識別困難指令;3)生成階段,產(chǎn)生新的困難指令,以升級對學(xué)生模型的挑戰(zhàn)。
該對抗性知識蒸餾框架可以被解釋為一個(gè)動態(tài)的最小-最大游戲:在模仿階段,對學(xué)生進(jìn)行微調(diào),使其與教師在硬樣本上的模型差異最小;在辨別和生成階段,根據(jù)學(xué)生模型的學(xué)習(xí)進(jìn)度,制作新的困難樣本,使模型差異最大化。
從教育的角度上來看,這種框架推動了學(xué)生模型去發(fā)現(xiàn)原本隱藏的知識,為完全理解鋪平道路,隨著訓(xùn)練的進(jìn)行,經(jīng)過幾次迭代,系統(tǒng)能夠最好能達(dá)到平衡狀態(tài)。這時(shí),學(xué)生模型已經(jīng)掌握了所有的硬樣本,裁判員R不再能夠區(qū)分學(xué)生S和教師T的模型。
為了驗(yàn)證方法的有效性,該框架將ChatGPT的知識轉(zhuǎn)移到LLaMA上,選擇Alpaca的訓(xùn)練數(shù)據(jù)(僅由175條手動選擇的種子指令生成)作為初始訓(xùn)練指令,并執(zhí)行三次AKD的迭代,總共訓(xùn)練了70K數(shù)據(jù),最終得到模型Lion,實(shí)驗(yàn)結(jié)果表明,7B模型Lion都表現(xiàn)出較好的性能。
本文對該工作的具體算法思想進(jìn)行介紹,供大家一起參考,其中關(guān)于各種prompt,包括打分prompt,指令擴(kuò)充prompt都是可以關(guān)注的點(diǎn)。
一、算法思想方法
利用一個(gè)復(fù)雜的教師模型T(x; θT)的知識,目標(biāo)是制作一個(gè)更輕便的學(xué)生模型S(x; θS)。
理想情況下,如果模型差異的期望值(表示教師T和學(xué)生S之間的預(yù)測差異)在統(tǒng)一數(shù)據(jù)分布上達(dá)到最小,那么學(xué)生模型就是最優(yōu)的。
受對抗性知識提煉(AKD)的啟發(fā),該框架轉(zhuǎn)向優(yōu)化期望值的上限--"難樣本 "上的模型差異期望值,其中教師T和學(xué)生S的表現(xiàn)差距相對較大。
這些 "難樣本 "傾向于主導(dǎo)模型差異的期望值。因此,通過在這些 "難樣本 "上對學(xué)生模型S進(jìn)行優(yōu)化,可以有效和高效地重新控制整體預(yù)期模型差異。
其基本原理是相當(dāng)直接,可以類比于現(xiàn)實(shí)世界的教育場景:持續(xù)關(guān)注學(xué)生認(rèn)為難以掌握的 "難 "知識,是提高學(xué)生能力的最有效方法。
圖2描述了對抗性知識蒸餾的整個(gè)框架,它包含了一個(gè)迭代的三個(gè)階段:
1)模仿階段,使學(xué)生的反應(yīng)與教師的反應(yīng)相一致;
2)辨別階段,識別難樣本;
3)生成階段,產(chǎn)生新的硬樣本,以升級學(xué)生模型所面臨的挑戰(zhàn)。
1、初始化
如圖2所示,框架中建立了四個(gè)角色和兩個(gè)數(shù)據(jù)池,并使用使用LLaMA來初始化學(xué)生模型S。
通過使用ChatGPT來初始化教師模型T、裁判員R和生成器G,
該框架從一個(gè)給定的初始Train Pool XA = {xAi }i∈[1,NA]開始迭代,其中xAi是XA中的第i條指令,NA是XA中的樣本數(shù)。
Cache Pool XB的初始化與XA相同,由評估S和T性能的指令組成。
注意,這里的指令是由指令提示和實(shí)例輸入組成的,如下表所示:
2、模仿階段
損失函數(shù)采用Kullback-Leibler Divergence,即KL散度,用于量化教師模型T和學(xué)生模型S的輸出概率分布的差異。
因此,為了將教師的知識傳遞給學(xué)生,通過教師T向前傳播訓(xùn)練池XA中的指令,構(gòu)建訓(xùn)練數(shù)據(jù){xAi, T (xAi )}i∈[1,N A]。
有了這些訓(xùn)練數(shù)據(jù),其中xAi作為輸入,T(xAi )作為目標(biāo),通過最小化交叉熵?fù)p失來微調(diào)我們的學(xué)生模型S。
3、識別階段
圖2展示了從緩存池開始的判別階段,表示為XB。
大型語言模型如ChatGPT,有可能作為無偏見的裁判來衡量兩個(gè)不同的人工智能助手產(chǎn)生的回復(fù)質(zhì)量,也就是使用chatgpt進(jìn)行打分。
在具體實(shí)現(xiàn)上,將緩存池XB中的每條指令xBi通過教師T和學(xué)生S反饋,分別產(chǎn)生輸出T(xBi)和S(xBi)。然后要求裁判員R量化教師的響應(yīng)T(xBi)和學(xué)生的響應(yīng)S(xBi)之間的質(zhì)量差異,di用來表示這兩個(gè)分?jǐn)?shù)之間的差異。di的計(jì)算公司如下:
上述過程是通過使用表2的提示模板來完成,該模板要求LLM考慮兩個(gè)回答的有用性、相關(guān)性、準(zhǔn)確性和詳細(xì)程度,并輸出兩個(gè)分?jǐn)?shù)。
兩個(gè)分?jǐn)?shù)之差,就是di,可以通過設(shè)置一個(gè)閾值τ(在實(shí)驗(yàn)中使用的是1.0),將困難的指令劃分為那些di≥τ的指令,而其他的則被識別為簡單的指令。
圖3直觀地展示了在第一次迭代中哪些類型的指令被識別為困難指令。與cache池中的指令相比,被識別的羅曼指令的分布是非常不同的,它們更側(cè)重于復(fù)雜的任務(wù),如數(shù)學(xué)、編碼等。
4、生成階段
在仔細(xì)識別了困難指令之后,生成階段的目標(biāo)是產(chǎn)生反映這些困難指令所對應(yīng)的數(shù)據(jù)分布的樣本。
這個(gè)過程通過使用復(fù)雜的LLM作為生成器G來實(shí)現(xiàn),并從困難指令中隨機(jī)抽取一條指令,并提示生成器G生成一條新指令。新生成的指令需要與同一領(lǐng)域有關(guān),并與抽樣指令的任務(wù)類型相匹配,如下表3顯示了用于該提示的模板。
如圖3所示,指令要求新生成的硬性結(jié)構(gòu)的分布似乎與先前確定的硬性指令的分布相類似。為了減輕災(zāi)難性遺忘的問題并增加生成指令的多樣性,還從簡單指令中隨機(jī)抽出一條指令,并提示生成器G生成一條新的指令,該指令與抽出的指令屬于同一領(lǐng)域,但也呈現(xiàn)出更多的長尾分布,使用的指令模板如下所示:
為了控制迭代的比率,在每個(gè)迭代中,將N定義為新生成指令的總數(shù)量,然后在生成的困難指令和簡單指令之間保持1:1的比例。
為了保證多樣性,只有當(dāng)一條新指令與緩存池中任何現(xiàn)有結(jié)構(gòu)的ROUGE-L重疊度低于0.7時(shí),才會被視為有效。
最后,將對Train Pool進(jìn)行更新,用新生成的指令替換現(xiàn)有指令。同時(shí)通過加入這些新生成的指令來擴(kuò)充緩存池。
在具體訓(xùn)練過程中,該學(xué)生模型是用預(yù)先訓(xùn)練好的LLaMA 7B進(jìn)行初始化。Train Pool和Cache Pool用Alpaca的52K in-struction數(shù)據(jù)集進(jìn)行初始化。迭代總次數(shù)設(shè)置為3次,每次迭代增加6K新生成的指令,最終形成訓(xùn)練了70K數(shù)據(jù)。
在花費(fèi)方面,學(xué)生模型在8個(gè)A100 GPU上訓(xùn)練了3個(gè)epochs,請求使用gpt-3.5-turbo API大約36萬次,這個(gè)數(shù)字大約是WizardLM使用量624k的一半,產(chǎn)生了相當(dāng)大的費(fèi)用,接近500美元。
二、測試數(shù)據(jù)集與實(shí)驗(yàn)?zāi)P?/p>
1、數(shù)據(jù)集
評估LLM在各種任務(wù)中的功效是一個(gè)相當(dāng)大的挑戰(zhàn),因?yàn)椴煌娜蝿?wù)需要相當(dāng)不同的專業(yè)知識,而且許多任務(wù)不能用自動指標(biāo)來評估,在實(shí)驗(yàn)中采用了兩個(gè)著名的數(shù)據(jù)集:
Vicuna-Instructions:一個(gè)由GPT-4合成的數(shù)據(jù)集,包含80個(gè)基線模型認(rèn)為具有挑戰(zhàn)性的問題。該數(shù)據(jù)集橫跨九個(gè)不同的類別,即通用、知識、角色扮演、常識、費(fèi)米、反事實(shí)、編碼、數(shù)學(xué)和寫作。以用戶為導(dǎo)向的指導(dǎo)。
User oriented Instructions:一個(gè)人工組裝的數(shù)據(jù)集,包括252個(gè)結(jié)構(gòu),其動機(jī)是71個(gè)面向用戶的應(yīng)用,如Grammarly、StackOverflow、Overleaf。
2、對比模型
對比實(shí)驗(yàn)選用五個(gè)模型:
LLaMA:一個(gè)基礎(chǔ)語言模型的集合,參數(shù)范圍從7B到65B。它在公開可用的數(shù)據(jù)集上訓(xùn)練了數(shù)萬億個(gè)標(biāo)記,并被證明在多種基準(zhǔn)中優(yōu)于較大尺寸的LLM,如GPT-3(175B)。使用LLaMA 3的7B參數(shù)版本。
Alpaca:以LLaMA為基礎(chǔ),通過查詢OpenAI的text-davinci-003模型產(chǎn)生的52K個(gè)指令跟隨實(shí)例進(jìn)行微調(diào)。使用Alpaca 4的7B參數(shù)版本。
Vicuna:以LLaMA為基礎(chǔ),并根據(jù)從ShareGPT收集的7萬個(gè)用戶共享對話進(jìn)行了微調(diào)。使用FastChat 5的7B參數(shù)版本。
WizardLM:使用Evol-Instruct方法,將Alapca的52000條指令的例子引導(dǎo)到250000條更復(fù)雜的指令集中。使用WizardLM 6中的7B參數(shù)版本。
ChatGPT:通過監(jiān)督和強(qiáng)化學(xué)習(xí)技術(shù)進(jìn)行微調(diào),由人類培訓(xùn)師提供必要的反饋和指導(dǎo)。使用ChatGPT3.5 turbo版本。
3、評測結(jié)果
首先看自動化評估,使用GPT-4的方式進(jìn)行模型自動打分,用于評價(jià)在給定封閉集合上的性能表現(xiàn),對應(yīng)的prompt如下,采用與識別困難樣本的prompt一致。
實(shí)現(xiàn)結(jié)果如下,GBS評測來看,Lion除了與ChatGPT有差距外,均好于其他模型。
再看使用人工評價(jià)的方式,進(jìn)行對齊能力,如果一個(gè)聊天助手的特點(diǎn)是樂于助人、誠實(shí)和無害(HHH),則被認(rèn)為是一致的。這些標(biāo)準(zhǔn)被用來衡量人工智能(AI)系統(tǒng)與人類價(jià)值觀一致的程度。結(jié)果如下:
我們可以看到,Lion也能得到一個(gè)與自動化評測一致的效果。
下面再看一個(gè)具體的模型預(yù)測效果,這是個(gè)比較好的case:
總結(jié)
本文對《Lion: Adversarial Distillation of Closed-Source Large Language Model》這一工作進(jìn)行了介紹。
與Alpaca和WizardLM這樣只對學(xué)生模型進(jìn)行一次微調(diào)的方法相比,該工作提出的對抗性知識蒸餾方法采用了對學(xué)生模型的迭代更新,得到了更好的效果。
不過這種迭代方法也有一些現(xiàn)實(shí)問題,例如:
首先,不可避免地導(dǎo)致了較慢的迭代速度。
其次,與傳統(tǒng)的對抗性知識蒸餾方法不同的是,該方法使用一個(gè)黑箱和參數(shù)凍結(jié)的ChatGPT來扮演這個(gè)角色,LLM的質(zhì)量在新指令的生成中相當(dāng)重要。
另外,在評估方面,盡管利用GPT-4進(jìn)行的自動評估在評估聊天機(jī)器人的表現(xiàn)方面展示了良好的前景,但該技術(shù)尚未達(dá)到成熟和準(zhǔn)確的水平,特別是考慮到大型語言模型容易產(chǎn)生不存在的或 "幻覺 "的信息。此外,缺乏一個(gè)統(tǒng)一的標(biāo)準(zhǔn)來評估大型語言模型,這降低了基于人類的評估的說服力。
最后,為聊天機(jī)器人創(chuàng)建一個(gè)全面的、標(biāo)準(zhǔn)化的評估系統(tǒng)是一個(gè)普遍的研究挑戰(zhàn),需要進(jìn)一步的探索和研究。當(dāng)前,已經(jīng)出現(xiàn)了很多魚龍混雜的各類榜單,而且排名的結(jié)果還不不一樣,這其實(shí)又是另一個(gè)混沌狀態(tài),這需要引起我們的重視,并擦亮眼睛。
責(zé)任編輯:彭菁
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7224瀏覽量
90194 -
模型
+關(guān)注
關(guān)注
1文章
3418瀏覽量
49482 -
ChatGPT
+關(guān)注
關(guān)注
29文章
1579瀏覽量
8305
原文標(biāo)題:如何更好地蒸餾ChatGPT模型能力:Lion閉源大型語言模型的對抗性蒸餾模型原理及實(shí)驗(yàn)工作介紹
文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論