知識(shí)蒸餾(Knowledge Distillation):
知識(shí)蒸餾即將知識(shí)從「教師」模型遷移到「學(xué)生」模型,執(zhí)行方式為訓(xùn)練學(xué)生模型模仿教師模型的預(yù)測(cè)。
把一個(gè)大模型或者多個(gè)模型ensemble學(xué)到的知識(shí)遷移到另一個(gè)輕量級(jí)單模型上,方便部署;
即“用新的小模型去學(xué)習(xí)大模型的預(yù)測(cè)結(jié)果,改變一下目標(biāo)函數(shù)”。
1、為什么蒸餾可以 work
好模型的目標(biāo)不是擬合訓(xùn)練數(shù)據(jù),而是學(xué)習(xí)如何泛化到新的數(shù)據(jù)。
所以蒸餾的目標(biāo)是讓student學(xué)習(xí)到teacher的泛化能力,理論上得到的結(jié)果會(huì)比單純擬合訓(xùn)練數(shù)據(jù)的student要好。
另外,對(duì)于分類任務(wù),如果soft targets的熵比hard targets高,那顯然student會(huì)學(xué)習(xí)到更多的信息。
2、模型結(jié)構(gòu)

image.png
- 多任務(wù)模型主要基于BERT,因此該多任務(wù)模型能通過(guò)知識(shí)蒸餾學(xué)習(xí)到各單任務(wù)模型的語(yǔ)言知識(shí)。
- 模型會(huì)有一個(gè)教師退火的過(guò)程,即最開始由多個(gè)單任務(wù)模型教多任務(wù)模型學(xué)習(xí),而隨著訓(xùn)練的進(jìn)行,多任務(wù)模型將更多使用真實(shí)任務(wù)標(biāo)簽進(jìn)行訓(xùn)練(即圖中的λ從0慢慢變到1)
- https://zhuanlan.zhihu.com/p/71986772
- https://daiwk.github.io/posts/nlp-bam.html