【AI】知識蒸餾-簡單易懂版

1 緣起

最近要準備升級材料,里面有一骨碌是介紹LLM相關技術的,知識蒸餾就是其中一個點,
不過,只分享了蒸餾過程,沒有講述來龍去脈,比如沒有講解Softmax為什么引入T、損失函數為什么使用KL散度,想再進一步整理細節部分分享出來,這是其一。
其二是,近3個月沒有寫文章了,重拾筆頭。
今年已經制定寫作計劃,后面會陸續分享出來。

2 原理

2.1 簡介

知識蒸餾是一種模型壓縮方法,其中一個小模型被訓練來模仿一個預訓練的大模型(或模型集合)。這種訓練設置有時被稱為“教師-學生”模式,其中大模型是教師,小模型是學生。
在這里插入圖片描述

該方法最早由Bucila等人在2006年提出,并由Hinton等人在2015年進行了推廣。Distiller中的實現基于后者的論文。在這里,我們將提供該方法的概述。更多信息,可以參考該論文https://arxiv.org/abs/1503.02531。
在這里插入圖片描述

2.2 為什么引入T

在蒸餾過程中,直接計算教師模型概率分布,即教師模型上的softmax函數的輸出,然而,在許多情況下,這個概率分布中正確類別的概率非常高,而其他類別的概率非常接近于0,導致學生模型學習到的信息并沒有提供比數據集中已經提供的真實標簽更多的信息。Softmax如下:
p i = e z i ∑ j N e z j p_{i}= \frac{e^{z_{i} } }{\sum_{j}^{N}e^{z_{j} } } pi?=jN?ezj?ezi??

為了解決這個問題,Hinton等人在2015年引入了“softmax溫度”的概念。類別i的概率pi從logits z計算得出,公式如下:
p i = e z i T ∑ j N e z j T p_{i}= \frac{e^{\frac{z_{i} }{T} } }{\sum_{j}^{N}e^{\frac{z_{j} }{T}} } pi?=jN?eTzj??eTzi???
?
其中,T是溫度參數,用于控制概率分布的平滑程度。當T較高時,概率分布會更加平滑,從而提供更多的信息,有助于學生模型更好地學習教師模型的知識。

2.3 蒸餾過程

為提升學生模型的性能,學些到更多的信息,引入T,最終的蒸餾過程如下圖所示,知識蒸餾有兩個Loss,即學生模型與教師模型的 L o s s d i s t i l l a t i o n Loss_{distillation} Lossdistillation?,學生模型與真實值的 L o s s s t u d e n t Loss_{student} Lossstudent?,其中,教師模型的預測值為軟標簽,學生模型溫度t的的預測值為軟預測值,學生模型T=1的預測值為硬預測值。

在這里插入圖片描述
學生損失函數:
L o s s s t u d e n t = ? ∑ i = 1 N y i l o g q i ( 1 ) Loss_{student}=-\sum_{i=1}^{N}y_{i}logq_{i}^{(1)} Lossstudent?=?i=1N?yi?logqi(1)?
蒸餾損失函數:
L o s s d i s t i l l a t i o n = ? t 2 ∑ i = 1 N p i ( t ) l o g q i ( t ) Loss_{distillation}=-t^{2} \sum_{i=1}^{N}p_{i}^{(t)}logq_{i}^{(t)} Lossdistillation?=?t2i=1N?pi(t)?logqi(t)?
最終損失函數:
L o s s t o t a l = ( 1 ? α ) L o s s s t u d e n t + α L o s s d i s i l l a t i o n Loss_{total}=(1-\alpha )Loss_{student}+\alpha Loss_{disillation} Losstotal?=(1?α)Lossstudent?+αLossdisillation?

2.4 LLM蒸餾損失函數

LLM蒸餾損失函數使用KL散度。
L o s s d i s t i l l a t i o n ? L L M = ? t 2 K L ( p ( t ) ∣ ∣ q ( t ) ) = ? t 2 ∑ i = 1 N p i ( t ) l o g p i ( t ) q i ( t ) Loss_{distillation-LLM}=-t^{2}KL(p^{(t)}||q^{(t)})=-t^{2}\sum_{i=1}^{N}p_{i}^{(t)}log\frac{p_{i}^{(t)} }{q_{i}^{(t)} } Lossdistillation?LLM?=?t2KL(p(t)∣∣q(t))=?t2i=1N?pi(t)?logqi(t)?pi(t)??

2.4.1 為什么使用KL散度

KL散度的概念來源于概率論和信息論中。KL散度又被稱為:相對熵、互熵、鑒別信息、Kullback熵、Kullback-Leible散度(即KL散度的簡寫)。KL 散度比交叉熵更適合作為蒸餾損失,因為當學生模型完美匹配教師模型時,蒸餾損失會為零,而交叉熵卻不為零,直接使用交叉熵作為蒸餾損失可能會導致損失隨著 batch 波動,所以使用KL散度作為蒸餾損失函數。

3 小結

(1)Softmax引入T用于計算學生和老師預測值概率分布。
(2)使用KL散度計算學生與老師損失;
(3)T=1計算學生模型預測值概率分布。

4 參考

https://zhuanlan.zhihu.com/p/692216196
https://blog.csdn.net/keeppractice/article/details/145419077
https://intellabs.github.io/distiller/knowledge_distillation.html
https://hsinjhao.github.io/2019/05/22/KL-DivergenceIntroduction/

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

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

相關文章

批量將PPT轉換成多張圖片

以下是一個使用Python將PowerPoint文件(PPT/PPTX)批量轉換為多張圖片的代碼示例。該方案通過comtypes庫調用本地Office的COM接口實現轉換,需確保已安裝Microsoft PowerPoint。 import os import comtypes.client from comtypes import COMEr…

單例模式的經典實現

單例模式(Singleton)是一種創建型設計模式,它確保一個類只有一個實例,并提供一個全局訪問點。在MyBatis、Redisson、AMQP等依賴包中,單例模式被廣泛應用。以下是這些框架中單例模式的經典實現及舉例: 1. My…

2024年數維杯數學建模B題生物質和煤共熱解問題的研究解題全過程論文及程序

2024年數維杯數學建模 B題 生物質和煤共熱解問題的研究 原題再現: 隨著全球能源需求的不斷增長和對可再生能源的追求,生物質和煤共熱解作為一種潛在的能源轉化技術備受關注。生物質是指可再生能源,源自植物和動物的有機物質,而煤…

靈茶山艾府基礎算法精講

day1 (1遍)167. 兩數之和 II - 輸入有序數組 https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/solution/san-shu-zhi-he-bu-hui-xie-xiang-xiang-sh-6wbq/ 15. 三數之和 https://leetcode.cn/problems/3sum/solution/shuang-zhi-zhen-…

圖解AUTOSAR_CP_LargeDataCOM

AUTOSAR LdCom模塊詳解 大型數據通信模塊的架構與實現 目錄 AUTOSAR LdCom模塊詳解 目錄1. 概述2. 模塊架構3. 數據流程 3.1 整體數據流3.2 數據發送流程3.3 數據接收流程4. 配置結構5. 總結1. 概述 LdCom(Large Data COM)是AUTOSAR中的輕量級通信模塊,專為高效傳輸大型或動…

Flink 自定義數據源:從理論到實踐的全方位指南

目錄 第一章:自定義數據源的基礎概念 數據源是什么?它在 Flink 中扮演什么角色? Flink 的內置數據源:開箱即用的 “標配” 為什么需要自定義數據源?它的殺手锏在哪? 第二章:自定義數據源的實現之道 接口選擇:從簡單到高級,選對工具事半功倍 SourceFunction:入門…

HarmonyOS Next~鴻蒙應用框架開發實戰:Ability Kit與Accessibility Kit深度解析

HarmonyOS Next~鴻蒙應用框架開發實戰:Ability Kit與Accessibility Kit深度解析 一、HarmonyOS應用框架設計理念 HarmonyOS作為全場景分布式操作系統,其應用框架設計遵循"一次開發,多端部署"的核心原則。通過創新的原…

Spring相關API

1是相對路徑 2 是絕對路徑 3 在注解時使用

Netty源碼—客戶端接入流程

1.關于Netty客戶端連接接入問題整理 一.Netty是在哪里檢測有新連接接入的? 答:boss線程第一個過程輪詢出ACCEPT事件,然后boss線程第二個過程通過JDK底層Channel的accept()方法創建一條連接。 二.新連接是怎樣注冊到NioEventLoop線程的&#x…

python全棧-前端

python全棧-前端 文章目錄 HTML標簽段落p、換行br、水平線hr圖片img路徑src超文本鏈接a超鏈接之錨點href#id文本有序列表ol無序列表ul自定義列表表格table表格屬性單元格合并 表單Forminput標簽HTML5新增type屬性HTML5新增常用屬性 實體字符塊元素與行內元素/內聯元素容器元素d…

領域驅動設計(DDD)實踐入門

文章目錄 1.認識領域驅動設計1.1 簡介1.2 發展歷史1.3 DDD 的興起 2.從一個簡單案例2.1 轉賬需求2.2 設計的問題2.3 違反的設計原則 3.使用 DDD 進行重構抽象數據存儲層抽象第三方服務抽象中間件封裝業務邏輯重構后的架構 4.小結參考文獻 1.認識領域驅動設計 1.1 簡介 領域驅…

nuxt3網站文章分享微信 ,QQ功能

1.安裝 npm install qrcode --save-dev 2.組件使用 <div class"share"><div style"line-height: 69px; color: #fff;width: 100px;"><p style"text-align: center;">分享:</p></div><div click"shareToMi…

VMWare Ubuntu 詳細安裝教程

VMWare Ubuntu 詳細安裝教程 一、下載安裝VMware二、下載 Ubuntu 鏡像文件三、安裝 Ubuntu四、開啟虛擬機 一、下載安裝VMware 官網下載地址https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion知乎大佬的博客原文&#xff0c;含下載地址https://zhua…

MySQL里的鎖有哪些

MySQL 的鎖機制是實現并發控制的核心&#xff0c;不同層級的鎖適用于不同場景&#xff0c;以下是對其鎖類型的系統分類及詳細說明&#xff1a; 一、按鎖粒度劃分 1. 全局鎖&#xff08;Global Lock&#xff09; 用途&#xff1a;鎖定整個數據庫實例&#xff0c;用于全庫備份。…

Spring WebFlux 教程

Spring WebFlux 教程 Spring WebFlux 是 Spring Framework 5 引入的一種新的響應式編程框架&#xff0c;旨在處理高并發、高性能和實時數據流應用。與傳統基于線程阻塞的 Spring MVC 不同&#xff0c;WebFlux 采用了非阻塞、事件驅動的編程模型&#xff0c;能夠更加高效地利用…

SCI英文論文Accepted后的第一步——Rights and Access

SCI英文論文Accepted后的第一步——Rights and Access 目錄 SCI英文論文Accepted后的第一步——Rights and AccessBased on information provided the embargo period/end date is 24 months. 因為選擇閉源**Rights and Access(版權與訪問權限)**環節是關鍵第一步,具體操作流…

Qt文件管理系統

引言 今天我將使用model/view模型視圖框架來完成一個簡單的Qt文件管理系統&#xff0c;主要使用到了QTreeView、QTabelView視圖和QFileSystemModel文件系統模型。 界面設計 使用Qt創建項目并勾選創建ui文件&#xff0c;打開ui文件&#xff0c;使用Tree View、Table View、St…

《可愛風格 2048 游戲項目:HTML 實現全解析》

一、引言 在如今的數字化時代&#xff0c;小游戲以其簡單易上手、趣味性強的特點深受大家喜愛。2048 游戲作為一款經典的數字合并游戲&#xff0c;擁有龐大的玩家群體。本文將詳細介紹一個用單文件 HTML 實現的可愛風格 2048 游戲項目&#xff0c;它不僅具備傳統 2048 游戲的基…

CSS3:深度解析與實戰應用

CSS3&#xff1a;深度解析與實戰應用詳解 1. 選擇器增強2. 盒模型擴展3. 漸變和背景4. 轉換和動畫總結 CSS3 是 CSS&#xff08;層疊樣式表&#xff09;的最新版本&#xff0c;它引入了許多新的特性和功能&#xff0c;使得網頁的樣式設計更加靈活、豐富和具有動態效果。在本文中…

C語言 —— 此去經年夢浪蕩魂音 - 深入理解指針(卷四)

目錄 1. 回調函數 2. qsort函數 2.1 使用qsort函數排序整型數據 2.2 使用qsort排序結構數據 2.3 使用冒泡排序模擬實現qsort函數 1. 回調函數 回調函數其實就是一個通過函數指針調用的函數&#xff0c;如果你把函數的指針作為參數傳遞給另一個函數&#xff0c;當這個指針被…