type
status
date
slug
summary
tags
category
icon
password
comment_flag
SLUGS
昨天和舍友讨论关于这个的问题,当时我也很懵逼。先看下KL散度的定义式:
在知识蒸馏模型中是教师网络的输出分布,是学生网络的输出分布。由于一般优化学生网络参数,那么教师网络的输出分布可以视为常数,因此有以下推断:
因此,减小散度就是优化式(3)的第二项。如果教师网络fc输出为,学生网络fc输出为,那么度量两者分布的代码为:
总结:
- 单看当不进行softmax时,直接由得来,则可能小于1,那么无法保证非负。
- 从式(3)的第二项看,当取最大时,也取最大时;取最小时,也取最小时,才会变小。而从式(6)取等号的条件看出,即两者分布十分靠近时,散度达到最小为0。
- 由于代码错误,导致batch里的一些样本的全为0,这时不是一个分布,但此时KL散度为0,梯度也为0,即不贡献梯度,但会对batch的平均loss“贡献分母”。
随记而已,如有错欢迎指正 🤣。