知识蒸馏(Knowledge Distillation)详细深入透彻理解重点
知識蒸餾是一種模型壓縮方法,是一種基于“教師-學生網絡思想”的訓練方法,由于其簡單,有效,在工業界被廣泛應用。這一技術的理論來自于2015年Hinton發表的一篇神作:
論文鏈接
?chrome-extension://ibllepbpahcoppkjjllbabhnigcbffpi/content/web/viewer.html?file=https%3A%2F%2Farxiv.org%2Fpdf%2F1503.02531.pdf
arxiv.org
Knowledge Distillation,簡稱KD,顧名思義,就是將已經訓練好的模型包含的知識(”Knowledge”),蒸餾(“Distill”)提取到另一個模型里面去。今天,我們就來簡單讀一下這篇論文,力求用簡單的語言描述論文作者的主要思想。在本文中,我們將從背景和動機講起,然后著重介紹“知識蒸餾”的方法,最后我會討論“溫度“這個名詞:
溫度: 我們都知道“蒸餾”需要在高溫下進行,那么這個“蒸餾”的溫度代表了什么,又是如何選取合適的溫度?
MNIST任務
假設某個輸入的“2”更加形似"3",softmax的輸出值中"3"對應的概率為0.1,而其他負標簽對應的值都很小,而另一個"2"更加形似"7","7"對應的概率為0.1。這兩個"2"對應的hard target的值是相同的,但是它們的soft target卻是不同的,由此我們可見soft target蘊含著比hard target多的信息。并且soft target分布的熵相對高時,其soft target蘊含的知識就更豐富。
這就解釋了為什么通過蒸餾的方法訓練出的Net-S相比使用完全相同的模型結構和訓練數據只使用hard target的訓練方法得到的模型,擁有更好的泛化能力。
TextBrewer
5. 參考
深度壓縮之蒸餾模型 - 風雨兼程的文章 - 知乎 https://zhuanlan.zhihu.com/p/24337627
知識蒸餾Knowledge Distillation - 船長的文章 - 知乎 https://zhuanlan.zhihu.com/p/83456418
https://towardsdatascience.com/knowledge-distillation-simplified-dd4973dbc764
https://nervanasystems.github.io/distiller/knowledge_distillation.html
bert 本身就以市面上公布的小模型參數作為student 模型
總結
以上是生活随笔為你收集整理的知识蒸馏(Knowledge Distillation)详细深入透彻理解重点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: logits的理解
- 下一篇: openpyxl.utils.excep