知识蒸馏老鼻祖之Distilling the Knowledge in a Neural Network

11 篇文章 3 订阅
6 篇文章 0 订阅

Distilling the Knowledge in a Neural Network最重要的思想是提出用soft target辅助hard target组成loss,一起训练student model。
那soft target与hard target到底指的是什么?
它们之间有什么不同呢?

hard target:
hard target其实就是数据的标签,比如分类驴和马,识别马时,hard target只有马的index处的值为1,驴的标签则为0.

soft target:
soft target是来自于teacher model的检测结果。hard target包含的信息熵很低,同时,hard target容易引起过拟合。可以这么理解,假设model 推测该类别的置信度为0.6,而label是1,那么相较于软化后的label如0.8,硬标签计算出的loss就会更大,使得bp的幅度变大,这样容易引起模型对某些特征的偏好,从而降低泛化能力。为了让student model学习更多有价值的信息,作者软化了标签,如下式,增加温度参数T软化了label。
在这里插入图片描述
loss是两者的结合。代码如下,soft target部分是KL散度,hard target是交叉熵。

def distillation(y, teacher_scores, labels, T, alpha):
    p = F.log_softmax(y/T, dim=1)
    q = F.softmax(teacher_scores/T, dim=1)
    l_kl = F.kl_div(p, q, size_average=False) * (T**2) / y.shape[0]
    l_ce = F.cross_entropy(y, labels)
    return l_kl * alpha + l_ce * (1. - alpha)

这里想解释一下,为什么会用KL散度来衡量p,q的距离。

首先,熵被定义为:
在这里插入图片描述
对于离散事件我们定义事件A和B的差别为,即A,B的KL散度:
在这里插入图片描述
事实上交叉熵和KL散度的公式非常相近,其实就是KL散度的后半部分:A和B的交叉熵 = A与B的KL散度 - A的熵。
在这里插入图片描述
重点:当S(A)是常量时, D K L ( A ∣ ∣ B ) = H ( A , B ) D_{KL}(A||B)=H(A,B) DKL(AB)=H(A,B),也就是说KL散度和交叉熵在特定条件下等价。

所以在我们做分类时,label是固定的,S(A)是常数顾可以省略,直接用交叉熵做cost loss,但是在蒸馏时,soft label是由teacher model产生的,所以要用KL散度来衡量距离。当然平方差,交叉熵也同样work。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
将神经网络中的知识进行提取,是一种将模型的信息转化为更为简洁和易于理解形式的过程。 神经网络是一种由许多神经元组成的复杂计算模型,它们通过学习和调整权重来解决各种问题。然而,神经网络通常具有大量的参数和复杂的结构,这使得它们难以解释和应用到其他领域。因此,我们需要一种方法来提取和总结神经网络中的知识,以便更好地理解和应用这些模型。 在进行神经网络知识提取时,有几种常见的方法。一种常见的方法是使用可视化技术,如热力图、激活图和网络结构图等,来可视化网络中不同层的活动模式。这些可视化技术能够帮助我们发现网络中的模式和特征,并从中推断出网络的知识。 另一种方法是使用特征提取技术,如卷积神经网络(CNN)的滤波器、自动编码器的隐藏层和循环神经网络(RNN)的隐状态等,来提取网络学习到的重要特征。这些重要特征可以帮助我们更好地理解网络学习到的信息,并将其应用到其他问题中。 此外,还有一种被称为知识蒸馏的技术,它通过训练一个较小的模型来提取大型模型中的知识。知识蒸馏通过引入目标函数和额外的训练策略,使小模型能够学习到大模型中的重要知识,并在不损失太多性能的情况下将其应用到实际问题中。 总而言之,提取神经网络中的知识是一项重要任务,它能够帮助我们更好地理解和应用这些复杂的模型。通过可视化、特征提取和知识蒸馏等方法,我们能够从神经网络中提取出有用的信息,并将其应用到其他领域或解决其他问题中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值