megvii-research / mdistiller

The official implementation of [CVPR2022] Decoupled Knowledge Distillation https://arxiv.org/abs/2203.08679 and [ICCV2023] DOT: A Distillation-Oriented Trainer https://openaccess.thecvf.com/content/ICCV2023/papers/Zhao_DOT_A_Distillation-Oriented_Trainer_ICCV_2023_paper.pdf
807 stars 123 forks source link

关于DKD和CE的权重问题 #19

Closed zhufeijuanjuan closed 2 years ago

zhufeijuanjuan commented 2 years ago

论文附录的A.4 basic setting中提到了KD和CE两个损失的权重都设置为1.0的问题。我理解最终的损失函数是这个样子的: LOSS = 1.0 (alpha TCKD + beta NCKD) + 1.0 CE 如果alpha=1, beta=8,那么KD损失其实是放大了很多倍的,如果CE本身很小,那么CE几乎就不起作用了? 所以想了解下文中实验中,CE和KD损失的量级是否有比较大的差别? 谢谢!

Zzzzz1 commented 2 years ago

在CIFAR-100上面确实有一些pair的权重差别很大,但是不用CE肯定还是会掉点的。 另外KD loss前面有一个T**2作为权重,本来这两个loss的scale可能就有比较大的差别。

wutaiqiang commented 1 year ago

论文附录的A.4 basic setting中提到了KD和CE两个损失的权重都设置为1.0的问题。我理解最终的损失函数是这个样子的: LOSS = 1.0 (alpha TCKD + beta NCKD) + 1.0 CE 如果alpha=1, beta=8,那么KD损失其实是放大了很多倍的,如果CE本身很小,那么CE几乎就不起作用了? 所以想了解下文中实验中,CE和KD损失的量级是否有比较大的差别? 谢谢!

确实有类似的效应,DKD 其实另外一个方面把 loss 放大了很多倍。我在 resnet32x4 蒸馏到 resnet8x4 上做实验,发现讲 常规的 KD 的 loss 简单地乘 4 或者乘 8,效果也能提高很多。