(2020.6.15)知识蒸馏

参考资料:https://www.youtube.com/watch?v=9CCn9uPfJ64

说实话,BERT出来以后我就想过knowledge distillation的思路压缩BERT,当时我甚至都不知道已经有这个名词了,自己发明的名词也是知识蒸馏。看来我还是很厉害的。不过这给我的启示就是在想到idea以后务必先调研一下是不是已经有相关工作了,不要闭门造车。

模型压缩:

  • Network Pruning
  • Knowledge Distillation
    • 通常只用在分类,而且学生只能从头学起
    • 最近几年用在GAN上
  • Architecture Design(pointwise/depthwise CNN)
  • Parameter Quantization(计算精度低一点)

学习soft label可以学到标签之间的关系。

Label refinery:同一个模型不断自己distill也有机会上升,原因是标签存在不全面和不一致问题。

logits distillation

baseline: \(\lambda L_{g}+(1-\lambda)\frac{L_{pred}}{T}\)

Deep Mutual Learning:同时训练大小两个网络,分类loss再加上相互学习(KL散度)的loss。实际训练的时候有点像GAN,固定其中一个网络训练另一个,不断迭代。

Born Again Neural Networks:初始的模型的KD来的;迭代使用交叉熵,最终ensemble所有的student model。

TAKD:助教作为中间人学习大佬。

feature distillation

FitNet:先学习中间feature,再学习输出。(中间loss用l2-norm)但是存在的问题:student的capacity不足以学习teacher的中间特征;teacher的中间特征也许有冗余。解决方法是学习attention。

relational distillation

以sample之间的关系做知识蒸馏。

你可能感兴趣的:((2020.6.15)知识蒸馏)