精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何將ChatGPT的能力蒸餾到另一個大模型

深度學習自然語言處理 ? 來源:深度學習自然語言處理 ? 2023-06-12 15:06 ? 次閱讀

如何將ChatGPT的能力蒸餾到另一個大模型,是當前許多大模型研發的研發范式。當前許多模型都是采用chatgpt來生成微調數據,如self instruct,然后加以微調,這其實也是一種數據蒸餾的模擬路線。

不過,這種數據蒸餾的方式,只是單向的,并沒有進行數據反饋。

最近的一篇文章《Lion: Adversarial Distillation of Closed-Source Large Language Model》 提出了一個將知識從一個復雜的、閉源的大型語言模型(LLM)轉移到一個緊湊的、開源的LLM的做法,其中加入了數據反饋的閉環機制,將蒸餾的指令分成困難和簡單兩類指令,并且逐步來生成困難指令有偏的引導開源LLM模型的學習,取得了較好的效果。

論文地址:https://arxiv.org/pdf/2305.12870.pdf

fc6930ae-08ea-11ee-962d-dac502259ad0.png

整體框架AKD的工作如圖2所示,在一個迭代中分成三個階段:1)模仿階段,使學生的反應與教師的反應保持一致;2)辨別階段,識別困難指令;3)生成階段,產生新的困難指令,以升級對學生模型的挑戰。

該對抗性知識蒸餾框架可以被解釋為一個動態的最小-最大游戲:在模仿階段,對學生進行微調,使其與教師在硬樣本上的模型差異最小;在辨別和生成階段,根據學生模型的學習進度,制作新的困難樣本,使模型差異最大化。

從教育的角度上來看,這種框架推動了學生模型去發現原本隱藏的知識,為完全理解鋪平道路,隨著訓練的進行,經過幾次迭代,系統能夠最好能達到平衡狀態。這時,學生模型已經掌握了所有的硬樣本,裁判員R不再能夠區分學生S和教師T的模型。

為了驗證方法的有效性,該框架將ChatGPT的知識轉移到LLaMA上,選擇Alpaca的訓練數據(僅由175條手動選擇的種子指令生成)作為初始訓練指令,并執行三次AKD的迭代,總共訓練了70K數據,最終得到模型Lion,實驗結果表明,7B模型Lion都表現出較好的性能。

本文對該工作的具體算法思想進行介紹,供大家一起參考,其中關于各種prompt,包括打分prompt,指令擴充prompt都是可以關注的點。

一、算法思想方法

利用一個復雜的教師模型T(x; θT)的知識,目標是制作一個更輕便的學生模型S(x; θS)。

理想情況下,如果模型差異的期望值(表示教師T和學生S之間的預測差異)在統一數據分布上達到最小,那么學生模型就是最優的。

受對抗性知識提煉(AKD)的啟發,該框架轉向優化期望值的上限--"難樣本 "上的模型差異期望值,其中教師T和學生S的表現差距相對較大。

這些 "難樣本 "傾向于主導模型差異的期望值。因此,通過在這些 "難樣本 "上對學生模型S進行優化,可以有效和高效地重新控制整體預期模型差異。

其基本原理是相當直接,可以類比于現實世界的教育場景:持續關注學生認為難以掌握的 "難 "知識,是提高學生能力的最有效方法。

fc79b1c2-08ea-11ee-962d-dac502259ad0.png

圖2描述了對抗性知識蒸餾的整個框架,它包含了一個迭代的三個階段:

1)模仿階段,使學生的反應與教師的反應相一致;

2)辨別階段,識別難樣本;

3)生成階段,產生新的硬樣本,以升級學生模型所面臨的挑戰。

1、初始化

如圖2所示,框架中建立了四個角色和兩個數據池,并使用使用LLaMA來初始化學生模型S。

通過使用ChatGPT來初始化教師模型T、裁判員R和生成器G,

該框架從一個給定的初始Train Pool XA = {xAi }i∈[1,NA]開始迭代,其中xAi是XA中的第i條指令,NA是XA中的樣本數。

Cache Pool XB的初始化與XA相同,由評估S和T性能的指令組成。

注意,這里的指令是由指令提示和實例輸入組成的,如下表所示:

fc92bb40-08ea-11ee-962d-dac502259ad0.png

2、模仿階段

損失函數采用Kullback-Leibler Divergence,即KL散度,用于量化教師模型T和學生模型S的輸出概率分布的差異。

因此,為了將教師的知識傳遞給學生,通過教師T向前傳播訓練池XA中的指令,構建訓練數據{xAi, T (xAi )}i∈[1,N A]。

有了這些訓練數據,其中xAi作為輸入,T(xAi )作為目標,通過最小化交叉熵損失來微調我們的學生模型S。

3、識別階段

圖2展示了從緩存池開始的判別階段,表示為XB。

大型語言模型如ChatGPT,有可能作為無偏見的裁判來衡量兩個不同的人工智能助手產生的回復質量,也就是使用chatgpt進行打分。

在具體實現上,將緩存池XB中的每條指令xBi通過教師T和學生S反饋,分別產生輸出T(xBi)和S(xBi)。然后要求裁判員R量化教師的響應T(xBi)和學生的響應S(xBi)之間的質量差異,di用來表示這兩個分數之間的差異。di的計算公司如下:

fcab5c36-08ea-11ee-962d-dac502259ad0.pngfcc29842-08ea-11ee-962d-dac502259ad0.png

上述過程是通過使用表2的提示模板來完成,該模板要求LLM考慮兩個回答的有用性、相關性、準確性和詳細程度,并輸出兩個分數。

兩個分數之差,就是di,可以通過設置一個閾值τ(在實驗中使用的是1.0),將困難的指令劃分為那些di≥τ的指令,而其他的則被識別為簡單的指令。

fcd02ad4-08ea-11ee-962d-dac502259ad0.png

圖3直觀地展示了在第一次迭代中哪些類型的指令被識別為困難指令。與cache池中的指令相比,被識別的羅曼指令的分布是非常不同的,它們更側重于復雜的任務,如數學、編碼等。

4、生成階段

在仔細識別了困難指令之后,生成階段的目標是產生反映這些困難指令所對應的數據分布的樣本。

這個過程通過使用復雜的LLM作為生成器G來實現,并從困難指令中隨機抽取一條指令,并提示生成器G生成一條新指令。新生成的指令需要與同一領域有關,并與抽樣指令的任務類型相匹配,如下表3顯示了用于該提示的模板。

fcf065ba-08ea-11ee-962d-dac502259ad0.png

如圖3所示,指令要求新生成的硬性結構的分布似乎與先前確定的硬性指令的分布相類似。為了減輕災難性遺忘的問題并增加生成指令的多樣性,還從簡單指令中隨機抽出一條指令,并提示生成器G生成一條新的指令,該指令與抽出的指令屬于同一領域,但也呈現出更多的長尾分布,使用的指令模板如下所示:

fd112480-08ea-11ee-962d-dac502259ad0.png

為了控制迭代的比率,在每個迭代中,將N定義為新生成指令的總數量,然后在生成的困難指令和簡單指令之間保持1:1的比例。

為了保證多樣性,只有當一條新指令與緩存池中任何現有結構的ROUGE-L重疊度低于0.7時,才會被視為有效。

最后,將對Train Pool進行更新,用新生成的指令替換現有指令。同時通過加入這些新生成的指令來擴充緩存池。

在具體訓練過程中,該學生模型是用預先訓練好的LLaMA 7B進行初始化。Train Pool和Cache Pool用Alpaca的52K in-struction數據集進行初始化。迭代總次數設置為3次,每次迭代增加6K新生成的指令,最終形成訓練了70K數據。

在花費方面,學生模型在8個A100 GPU上訓練了3個epochs,請求使用gpt-3.5-turbo API大約36萬次,這個數字大約是WizardLM使用量624k的一半,產生了相當大的費用,接近500美元。

二、測試數據集與實驗模型

1、數據集

評估LLM在各種任務中的功效是一個相當大的挑戰,因為不同的任務需要相當不同的專業知識,而且許多任務不能用自動指標來評估,在實驗中采用了兩個著名的數據集:

Vicuna-Instructions:一個由GPT-4合成的數據集,包含80個基線模型認為具有挑戰性的問題。該數據集橫跨九個不同的類別,即通用、知識、角色扮演、常識、費米、反事實、編碼、數學和寫作。以用戶為導向的指導。

User oriented Instructions:一個人工組裝的數據集,包括252個結構,其動機是71個面向用戶的應用,如Grammarly、StackOverflow、Overleaf。

2、對比模型

對比實驗選用五個模型:

LLaMA:一個基礎語言模型的集合,參數范圍從7B到65B。它在公開可用的數據集上訓練了數萬億個標記,并被證明在多種基準中優于較大尺寸的LLM,如GPT-3(175B)。使用LLaMA 3的7B參數版本。

Alpaca:以LLaMA為基礎,通過查詢OpenAI的text-davinci-003模型產生的52K個指令跟隨實例進行微調。使用Alpaca 4的7B參數版本。

Vicuna:以LLaMA為基礎,并根據從ShareGPT收集的7萬個用戶共享對話進行了微調。使用FastChat 5的7B參數版本。

WizardLM:使用Evol-Instruct方法,將Alapca的52000條指令的例子引導到250000條更復雜的指令集中。使用WizardLM 6中的7B參數版本。

ChatGPT:通過監督和強化學習技術進行微調,由人類培訓師提供必要的反饋和指導。使用ChatGPT3.5 turbo版本。

3、評測結果

首先看自動化評估,使用GPT-4的方式進行模型自動打分,用于評價在給定封閉集合上的性能表現,對應的prompt如下,采用與識別困難樣本的prompt一致。

fd31651a-08ea-11ee-962d-dac502259ad0.png

實現結果如下,GBS評測來看,Lion除了與ChatGPT有差距外,均好于其他模型。fd496106-08ea-11ee-962d-dac502259ad0.png

再看使用人工評價的方式,進行對齊能力,如果一個聊天助手的特點是樂于助人、誠實和無害(HHH),則被認為是一致的。這些標準被用來衡量人工智能(AI)系統與人類價值觀一致的程度。結果如下:

fd61e35c-08ea-11ee-962d-dac502259ad0.png

我們可以看到,Lion也能得到一個與自動化評測一致的效果。

下面再看一個具體的模型預測效果,這是個比較好的case:

fd8698aa-08ea-11ee-962d-dac502259ad0.png

總結

本文對《Lion: Adversarial Distillation of Closed-Source Large Language Model》這一工作進行了介紹。

與Alpaca和WizardLM這樣只對學生模型進行一次微調的方法相比,該工作提出的對抗性知識蒸餾方法采用了對學生模型的迭代更新,得到了更好的效果。

不過這種迭代方法也有一些現實問題,例如:

首先,不可避免地導致了較慢的迭代速度。

其次,與傳統的對抗性知識蒸餾方法不同的是,該方法使用一個黑箱和參數凍結的ChatGPT來扮演這個角色,LLM的質量在新指令的生成中相當重要。

另外,在評估方面,盡管利用GPT-4進行的自動評估在評估聊天機器人的表現方面展示了良好的前景,但該技術尚未達到成熟和準確的水平,特別是考慮到大型語言模型容易產生不存在的或 "幻覺 "的信息。此外,缺乏一個統一的標準來評估大型語言模型,這降低了基于人類的評估的說服力。

最后,為聊天機器人創建一個全面的、標準化的評估系統是一個普遍的研究挑戰,需要進一步的探索和研究。當前,已經出現了很多魚龍混雜的各類榜單,而且排名的結果還不不一樣,這其實又是另一個混沌狀態,這需要引起我們的重視,并擦亮眼睛。
責任編輯:彭菁

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    6715

    瀏覽量

    88321
  • 模型
    +關注

    關注

    1

    文章

    3032

    瀏覽量

    48375
  • ChatGPT
    +關注

    關注

    28

    文章

    1517

    瀏覽量

    6955

原文標題:如何更好地蒸餾ChatGPT模型能力:Lion閉源大型語言模型的對抗性蒸餾模型原理及實驗工作介紹

文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    請問如何將例程中的includes中的文件夾,拷貝另一個工程的includes下面?怎么操作?

    本帖最后由 只耳朵怪 于 2018-6-14 08:48 編輯 如圖所示,請問如何將例程中的includes中的文件夾,拷貝另一個工程的includes下面
    發表于 06-13 12:57

    如何將PIC引腳的合成頻率輸出到另一個設備?

    執行數學來轉換比率。我把輸入的TMR1H,TMR1L值乘以1000,然后DIVID。E 24位的結果是1787。數字在LCD顯示器上都OK,但是如何將另一個PIC引腳(0~111.88 88赫茲
    發表于 10-23 15:55

    怎么7系列收發器同步另一個

    嗨,如何將7系列收發器轉移到另一個7系列收發器?我正在使用12G SDI視頻收發器,它在
    發表于 10-30 18:03

    如何將信號從示意頁面另一個

    如何將信號從示意頁面另一個?我知道我可以使紙張更大,但是我知道連接器的符號,所以我想知道如何使用它。肖恩 以上來自于百度翻譯 以下
    發表于 03-22 12:51

    CAL數據復制另一個頻道

    CAL數據復制另一個頻道
    發表于 07-03 10:25

    如何將MHC設置從項目復制/傳輸到另一個項目?

    我有三套PCB代碼:生產、工廠測試和實驗。這三套都應該有相同的MHC設置。我如何將MHC設置從項目復制/傳輸到另一個項目?我試著導出/導入,但是似乎只傳遞了
    發表于 07-23 06:28

    如何將數據從總線傳輸到另一個總線?

    大家好, 我數據從總線傳輸到另一個總線,雖然它是直接映射,但它沒有正確傳輸,存在誤碼。任何人都可以給我這個問題的解決方案嗎?問候,
    發表于 11-06 09:47

    如何將數據從SDI通道路由另一個SDI通道

    嗨,KC705評估板中有4SDI通道。我想知道如何將通道上的SDI數據作為RX通過MGT收發器引腳路由
    發表于 05-20 14:52

    如何將Virtex 5 LVPECL_25連接到另一個設備的3.3v lvpecl?

    如何將Virtex 5 LVPECL_25連接到另一個設備的3.3v lvpecl?謝謝!
    發表于 06-12 09:07

    可以TouchGFX項目之間的屏幕、對象和交互復制另一個項目嗎?

    您可以 TouchGFX 項目之間的屏幕、對象和交互復制另一個項目嗎?我嘗試了 Ctrl + C 對象,但它們似乎只在同
    發表于 01-10 06:08

    如何將yocto從版本升級另一個版本?

    ),您將如何逐步完成?我是否需要從版本另一個版本手動執行?(必須有更有效的方法)。應用程序呢。如果需要,將如何更新它們?并查看所需的依賴項。
    發表于 03-23 07:52

    怎樣CAD圖插到另一個CAD圖中?

    要將CAD圖插入另一個圖中,我估計有幾種不同需求,種是整圖插入,種是部分插入,
    發表于 10-24 15:38 ?2.5w次閱讀

    GPU礦機的用戶很快就能尋求另一個有利可圖的用途

    目前的熊市用GPU礦機挖礦的礦工受到了很大的打擊 。但是,擁有GPU礦機的用戶可能很快就能將產能較低的GPU礦機硬件用于另一個有利可圖的用途:挖礦顯卡高性能的渲染能力出租給那些希望在低功耗電腦上體驗高質量PC游戲的用戶。
    發表于 03-19 15:00 ?1315次閱讀

    若干蒸餾方法之間的細節以及差異

    以往的知識蒸餾雖然可以有效的壓縮模型尺寸,但很難teacher模型能力蒸餾
    的頭像 發表于 05-12 11:39 ?1341次閱讀

    盤古大模型ChatGPT4的區別

    中表現出色的模型。但是,這兩模型之間存在著些區別,這些區別可能使其中
    的頭像 發表于 08-30 18:27 ?5479次閱讀