【自然語言處理與大模型】模型壓縮技術之蒸餾

????????知識蒸餾是一種模型壓縮技術,主要用于將大型模型(教師模型)的知識轉移到更小的模型(學生模型)中。在大語言模型領域,這一技術特別重要。

????????知識蒸餾的核心思想是利用教師模型的輸出作為軟標簽(soft labels),來指導學生模型的訓練。與傳統的硬標簽(hard labels)不同,軟標簽包含了更多的信息,不僅告訴學生模型每個樣本屬于哪個類別,還提供了關于不同類別之間相似性的額外信息。通過學習這些軟標簽,學生模型可以更好地捕捉到數據中的潛在規律和特征,從而提高其性能。

一、知識蒸餾的基本框架

? ? ? ? 三個核心組成部分:知識蒸餾算法以及師生架構

  1. 知識:代表從教師模型中提煉出的有效信息,這可能包括輸出層的概率分布(通常稱為軟標簽)、中間層的特征表示等;
  2. 蒸餾算法:關注的是如何高效地將這些寶貴的知識從教師模型轉移到學生模型的具體方法與策略;
  3. 師生架構:則定義了教師模型和學生模型之間的互動方式。這樣的結構確保了學生模型不僅能學習到教師模型的精髓,還能在保持較低復雜度的同時實現性能的提升。

知識蒸餾能夠在保持高性能的同時,降低模型的復雜性和計算需求。

二、知識的來源

????????知識蒸餾中的知識來源方式有很多種,常見的幾種有從軟標簽中獲取,還有從特征表示里面獲取還可以從注意力機制中獲取。

(1)軟標簽

????????借用子豪哥的圖來說明什么是軟標簽,一個圖形分類模型在訓練的時候,想讓他學會分辨什么是馬。軟標簽是一組概率分布,反映了教師模型對輸入屬于各個類別的置信度。這些概率值不僅顯示了最可能的類別,還揭示了其他類別的可能性。

圖像分類

????????硬標簽是分類任務中的一組離散值,表示每個類別的絕對歸屬情況。通常是一個one-hot向量,其中正確類別的位置標記為1,其余類別標記為0。硬標簽只傳達了模型預測的最終結果,沒有提供關于其他類別的任何信息。

類別硬標簽 (Hard Targets)軟標簽 (Soft Targets)
10.7
00.25
汽車00.05

????????軟標簽不僅能指出最有可能的類別(如“馬”),還能指示出其他類別(如“驢”和“汽車”)的可能性,幫助學生模型學習到更多的背景知識。由于軟標簽包含了更多關于數據分布的信息,它們可以幫助學生模型更好地泛化到未見過的數據上。

讓學生模型直接模仿教師模型的最終預測

(2)特征表示

????????特征表示是指教師模型中某一層的激活值或特征向量,這些特征向量捕捉了輸入數據的高級語義信息。特征表示通常包含了豐富的語義信息,可以幫助學生模型學習到更抽象、更高級的特征。可以選擇教師模型中不同層次的特征表示進行蒸餾,從而提供多層次的知識轉移。

????????由于教師和學生的網絡結構可能不同,采用特征表示來得到知識要注意維度對齊,它包括通道數對齊和空間分辨率對齊。

三、蒸餾溫度T

????????蒸餾溫度(Temperature, T)是一個重要的超參數,用于調節教師模型輸出的軟標簽的平滑程度。通過調整溫度參數,可以控制軟標簽中不同類別概率的分布,從而影響學生模型的學習重點和蒸餾效果。

????????在知識蒸餾中,溫度參數?T?通常用于調整教師模型輸出的Logits(即未經Softmax處理的輸出值)。具體來說,使用溫度參數調整后的Softmax函數可以表示為:

q_i=\frac{exp(z_i/T)}{\sum_{j}^{}exp(z_j/T) }

其中:

  • q_i表示調整后第i個類別的概率。
  • z_i表示第i個類別的原始Logits值。
  • T表示溫度參數。

????????當?T=1?時,上述公式即為標準的Softmax函數。當?T>1?時,概率分布會變得更加平滑;當?T<1?時,概率分布會變得更加尖銳。過高的溫度值可能導致模型過于關注于那些概率值較小的類別,從而降低模型的判別能力;而過低的溫度值可能導致模型過于關注于那些概率值較大的類別,從而降低模型的泛化能力

四、知識蒸餾的方式

????????就只介紹一下最常常見的知識蒸餾方式——離線知識蒸餾。其基本流程是先訓練好一個大型、復雜的教師模型,然后利用該教師模型的輸出來指導小型、簡單的學生模型的訓練。在學生模型的訓練過程中,教師模型的參數是凍結的,即教師模型的參數不再更新。

離線知識蒸餾示意圖

結合上面這個圖來介紹一下,離線知識蒸餾的主要步驟:

第一步:訓練教師模型

????????首先,使用大量的訓練數據和適當的損失函數(如交叉熵損失)訓練一個高性能的教師模型。教師模型通常是一個大型、復雜的模型,具有較多的參數和較高的計算復雜度。

第二步:生成軟標簽

????????在教師模型訓練完成后,使用該模型對訓練數據進行預測,得到每個樣本的軟標簽。軟標簽是教師模型輸出的概率分布,通過調整蒸餾溫度可以控制其平滑程度。

第三步:訓練學生模型

????????使用教師模型生成的軟標簽作為目標,訓練一個小型、簡單的學生模型。在訓練過程中,教師模型的參數保持不變(凍結狀態),僅更新學生模型的參數。學生模型的訓練目標包括硬標簽(真實類別標簽)和軟標簽(教師模型的輸出),通常使用KL散度(Kullback-Leibler Divergence)來衡量學生模型輸出與教師模型軟標簽之間的差異。

KL散度,也稱為相對熵(Relative Entropy),是信息論中用于衡量兩個概率分布之間差異的一種度量方式。它量化了從一個概率分布?P?轉換到另一個概率分布?Q?時所損失的信息量。

  • 在知識蒸餾中,KL散度用于衡量學生模型的輸出概率分布與教師模型的軟標簽之間的差異。通過最小化KL散度,學生模型可以更好地學習教師模型的知識。
  • 具體來說,學生模型的訓練目標包括最小化KL散度和硬標簽損失(如交叉熵損失)。

第四步:評估和優化

????????使用獨立的驗證集對學生模型進行評估,比較其性能與教師模型的差異。如果性能不理想,可以嘗試調整溫度參數、改變學生模型的結構或進行微調等操作,以優化蒸餾效果。

參考知識蒸餾開山之作:Distilling the Knowledge in Neural Network

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/80496.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80496.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80496.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PHP CURL發送POST請求(支持HEADER參數配置)

/** POST請求(raw數據請求,支持HEADER參數配置) * @param $url * @param $datas 支持數組或字符串 * # $CURLOPT_HTTPHEADER = [ X-AjaxPro-Method:ShowList, Content-Type: application/json; charset=utf-8, Content-Length: . strlen($data_string)]; …

利用JMeter代理服務器方式實現高效壓測

前言 在當今快節奏的互聯網時代&#xff0c;確保Web應用和服務能夠在高負載下穩定運行變得至關重要。無論是電子商務平臺、社交媒體網絡還是在線教育服務&#xff0c;用戶對網站響應速度和穩定性的期望從未如此之高。因此&#xff0c;性能測試不再是一個可選項&#xff0c;而是…

【JavaWeb后端開發04】java操作數據庫(JDBC + Mybatis+ yml格式)詳解

文章目錄 1. 前言2. JDBC2.1 介紹2.2 入門程序2.2.1 DataGrip2.2.2 在IDEA執行sql語句 2.3 查詢數據案例2.3.1 需求2.3.2 準備工作2.3.3 AI代碼實現2.3.4 代碼剖析2.3.4.1 ResultSet2.3.4.2 預編譯SQL2.3.4.2.1 SQL注入2.3.4.2.2 SQL注入解決2.3.4.2.3 性能更高 2.4 增刪改數據…

力扣-240.搜索二維矩陣 II

題目描述 編寫一個高效的算法來搜索 m x n 矩陣 matrix 中的一個目標值 target 。該矩陣具有以下特性&#xff1a; 每行的元素從左到右升序排列。每列的元素從上到下升序排列。 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, in…

Spark-Streaming(三)

一. kafka和flume的整合 任務需求一:利用flume監控某目錄中新生成的文件&#xff0c;將監控到的變更數據發送給kafka&#xff0c;kafka將收到的數據打印到控制臺 1. 在flume/conf/目錄下添加flume-kafka.conf文件 配置文件如下 2. 啟動flume和kafka消費者 3. 傳入數據 查看fl…

Spring Boot 啟動生命周期詳解

Spring Boot 啟動生命周期詳解 1. 啟動階段劃分 Spring Boot 啟動過程分為 4個核心階段&#xff0c;每個階段涉及不同的核心類和執行邏輯&#xff1a; 階段 1&#xff1a;預初始化&#xff08;Pre-initialization&#xff09; 目標&#xff1a;準備啟動器和環境配置關鍵類&am…

《深入理解 AOP》

一、AOP 是什么 AOP&#xff08;Aspect Oriented Programming&#xff09;&#xff0c;即面向切面編程&#xff0c;是軟件開發中一種重要的編程范式。它通過橫向抽取機制&#xff0c;將那些與業務邏輯本身無關、卻為業務模塊所共同調用的邏輯或責任&#xff08;如事務處理、日…

Python【協程(Coroutine)和線程的關系】

協程(Coroutine)和線程都是實現并發編程的技術&#xff0c;但它們在實現方式、使用場景和性能上有顯著區別。理解它們的關系與差異有助于在實際應用中選擇合適的并發模型&#xff0c;以下是它們的核心關系與對比分析&#xff1a; 一、核心關系 互補關系 協程和線程可以結合使用…

Springboot——Redis的使用

在當今的軟件開發領域&#xff0c;緩存技術是提升應用性能的關鍵手段之一。Redis 作為一款高性能的鍵值對存儲數據庫&#xff0c;憑借其出色的讀寫速度和豐富的數據結構&#xff0c;在緩存場景中得到了廣泛應用。Spring Boot 作為一款簡化 Spring 應用開發的框架&#xff0c;與…

BEVPoolv2:A Cutting-edge Implementation of BEVDet Toward Deployment

背景 該論文是在BEVDet的基礎上進行了一個調整優化&#xff0c;傳統的方法是將特征圖與深度預測進行外積得到視椎特征圖&#xff0c;再將它與預處理好的體素索引結合&#xff0c;將每個視椎特征分類到每個voxel中進行累加和的操作。BEVFusion與BEVDepth等方法是避免了累加和&a…

藍橋杯常考的找規律題

目錄 靈感來源&#xff1a; B站視頻鏈接&#xff1a; 找規律題具有什么樣的特點&#xff1a; 報數游戲&#xff08;Java組&#xff09;&#xff1a; 題目描述&#xff1a; 題目鏈接&#xff1a; 思路詳解&#xff1a; 代碼詳解&#xff1a; 階乘求和&#xff08;Java組…

使用ffmpeg 將圖片合成為視頻,填充模糊背景,并添加兩段音樂

1.輸入3張圖片,每張播放一次,播放兩秒,視頻分辨率設置為1920:1080,每張圖片前0.3秒淡入,后0.3秒淡出,圖片寬高比不變,用白色填充空白區域 ffmpeg -loop 1 -t 2 -i "img1.jpg" \-loop 1 -t 2 -i "img2.jpg" \-loop 1 -t 2 -i "img3.jpg" \-filte…

PostgreSQL技術內幕29:事件觸發器tag原理解析

文章目錄 0.簡介1.概念說明2.tag的生成和存儲2.1 tag合法性校驗2.2 內存中存儲2.3 持久化存儲 3.tag的觸發 0.簡介 在上一篇文章中中&#xff0c;我們介紹了PG中的兩種觸發器&#xff0c;即適合于DML的普通觸發器和對于DDL的事件觸發器&#xff0c;其中事件觸發器與常規的 DML…

mysql 導入很慢,如何解決

精選 原創 碼出財富2025-04-14 17:35:14博主文章分類&#xff1a;數據庫©著作權 文章標簽mysql數據庫用戶名文章分類MySQL數據庫yyds干貨盤點閱讀數184 導入大型 SQL 文件到 MySQL 數據庫時&#xff0c;速度可能會受到影響。以下是一些優化方法和建議&#xff0c;幫助你…

多物理場耦合低溫等離子體裝置求解器PASSKEy2

文章目錄 PASSKEy2簡介PASSKEY2計算流程PASSKEy2 中求解的物理方程電路模型等離子體模型燃燒模型 PASSKEy2的使用 PASSKEy2簡介 PASSKEy2 是在 PASSKEy1 的基礎上重新編寫的等離子體數值模擬程序。 相較于 PASSKEy1&#xff0c; PASSKEy2 在具備解決低溫等離子體模擬問題的能力…

保姆級zabbix監控jmx、數據庫和網絡監控(SNMP)

前言 在當今數字化時代&#xff0c;企業IT基礎設施的穩定性與性能直接關系到業務連續性和用戶體驗。隨著系統復雜性的不斷增加&#xff0c;單一維度的監控已難以滿足全面運維需求。Zabbix作為一款功能強大的開源監控解決方案&#xff0c;通過整合JMX&#xff08;Java Manageme…

復雜地形越野機器人導航新突破!VERTIFORMER:數據高效多任務Transformer助力越野機器人移動導航

作者&#xff1a; Mohammad Nazeri 1 ^{1} 1, Anuj Pokhrel 1 ^{1} 1, Alexandyr Card 1 ^{1} 1, Aniket Datar 1 ^{1} 1, Garrett Warnell 2 , 3 ^{2,3} 2,3, Xuesu Xiao 1 ^{1} 1單位&#xff1a; 1 ^{1} 1喬治梅森大學計算機科學系&#xff0c; 2 ^{2} 2美國陸軍研究實驗室&…

SharpMap與TerraLib:C#與C++開源GIS庫

大家好&#xff0c;今天為大家介紹的軟件是SharpMap&#xff1a;一款專為了C#&#xff08;.NET&#xff09;環境設計的開源地圖和空間數據處理庫&#xff1b;TerraLib&#xff1a;一款由C編寫、支持多種數據庫的開源的GIS軟件庫。 下面&#xff0c;我們將從兩個開源軟件的主要…

音視頻學習 - MP3格式

環境 JDK 13 IDEA Build #IC-243.26053.27, built on March 16, 2025 Demo MP3Parser MP3 MP3全稱為MPEG Audio Layer 3&#xff0c;它是一種高效的計算機音頻編碼方案&#xff0c;它以較大的壓縮比將音頻文件轉換成較小的擴展名為.mp3的文件&#xff0c;基本保持源文件的音…

Unity中數據和資源加密(異或加密,AES加密,MD5加密)

在項目開發中&#xff0c;始終會涉及到的一個問題&#xff0c;就是信息安全&#xff0c;在調用接口&#xff0c;或者加載的資源&#xff0c;都會涉及安全問題&#xff0c;因此就出現了各種各樣的加密方式。 常見的也是目前用的最廣的加密方式&#xff0c;分別是&#xff1a;DE…