# Week 30: Knowledge Distillation ###### tags: `技術研討` [paper] [Distilling the Knowledge in a Neural Network](https://arxiv.org/pdf/1503.02531.pdf) [李鴻毅老師講解] [Yotube連結](https://www.youtube.com/watch?v=mzZzn8fBvEs&t=23s) ## Knowledge Distillation 介紹 2015 年 Paper,作者為人稱「神經網路之父」、「深度學習鼻祖」的 <font color=#F6D55C>**Geoffrey Hinton**</font> ### Abstract 主要有兩點的貢獻: * 提出==知識蒸餾 (Knowledge Distillation) 的方法==,從大模型學習到的知識中,<font color=#20639B>學習其中的 knowledge 有用訊息來訓練小模型</font>,在成效差不多的情况下進行模型壓縮 * 過去為了有效提升模型準確率,常會使用集成模型 (Ensembles of Models) 的方法,透過知識蒸餾的方法即可==蒸餾出各個 ensemble 的知識到一個模型當中==,因此只要一個 model 也可以達到 ensembles 的效果 ### 1. Introduction :pushpin: 論文背景 > 過去為了有效提升 model 的準確率,常常會採用 ensemble 的方法集成模型,而 Knowledge Distillation 的概念就是<font color=#ED553B>將一個ensemble 中的知識資訊壓縮到一個小模型中</font>,讓最終的模型更易於部署,減少運算量 > 過去的模型都再想辦法最大化目標的 log probability,但<font color=#ED553B>相對的同時也會讓其他非正確目標也有機率值存在</font>,即便這些機率值很小 > <font color=#20639B>這些非正確答案的相對機率,其實也提供了不少的資訊</font> :pushpin: 看圖說故事 * 小的模型不是去學圖片,而是==學大模型產生的 Output!!== * 目標:小模型 output 的 distribution 可以越接近大模型的 distribution 越好~~ * 作者相信<font color=#20639B>大模型 (teacher model) 提供比 label data 更有用的資料</font>,如果是直接學 label data 只會告訴你這張圖是 1,但跟老師學的話還會順便跟你說 1 跟 7 & 9 長得很像  * 新的集成模型就是去學 ensemble model 跑出來的 output,所以只要一個 model 就可以達到 ensemble 的效果~  ### 2. Distillation #### 修改 Softmax 公式 左邊公式是傳統的 Softmax,右邊是這次提出來的修改概念 (<font color=#ED553B>原本的公式多除參數 T (Temperature)</font>) * softmax的exponential是為了強化 Y 之間的差距,讓結果趨近於1和0 * 為了平滑這個差距,多除上Temperature,希望能得到每個target之間的關係,例如:1跟7很像,跟8完全不像,所以不希望得到的結果只有1跟0 * 假設T=1(就是原softmax),最後 target Y 長得就是 [1, 0, 0],那這樣就沒有學到其他東西了 (直接跟 label data 學沒兩樣)   * x軸: logits y軸: prob,4張圖的T分別為 1, 5, 10, 20 * 當T越高,可以蒸餾出 ==非正確label== 帶出來的訊息,供student model學習,因此可以看到logits跟prob的關係越來越平滑 #### 蠻清楚的流程圖 * 當==未知資料集的 label 時== (拿別人的 pre-trained model),直接使用大模型的 soft target 來訓練小模型。訓練的損失函式是 cross-entropy * 若是==已知資料集的 label 時==,可以將 soft target 和小模型預測值的 cross-entropy 與 hard target 和小模型預測值的 cross-entropy 進行<font color=#20639B>加權求合 (𝛌)</font>  :::info :exclamation: Note 1. 大模型的 T 與小模型的 T 參數設定相同 2. hard target 的權重小一點效果比較好! ::: ### 實驗  * 這是 MNIST 資料及上的實驗 * Distilled model (Hard + Soft target) 加上**Temperature = 20**,Test errors逼近於Teacher model的成效! * 如果把 hidden units 調降成 300,高於 8 的 Temperature 也可以有還不錯的效果;如果再降成 30 個 hidden unit,介於 2.5~4 的 Temperature 效果會比這個範圍以上或以下的溫度效果好很多。(由此實驗得知,越大的 student 模型可以使用越高的溫度,因為對於雜訊的) * 作者有做一個實驗,就是在做知識蒸餾的時候,dataset 完全沒有提供 3 這個數字,但是在 test set 中有 1010 個 3,student 模型居然只預測錯其中的 133 張圖,表示模型真的是在學 teacher general 的資料分布資訊  * 使用 3% training data,出現overfitting * 使用 3% training data 搭配 soft target的 Test accuracy已逼近baseline 100% training data accuracy
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.