【论文笔记】Distilling the Knowledge in a Neural Network

为什么出现知识蒸馏

集成模型和预训练好的模型效果会很好,但往往都会需要很大的内存空间和计算资源,这样对应用于工业界非常的不友好。所以我们希望压缩模型,使得小模型也能具有和大模型同样好的效果。为了达到这个目的,提出了知识蒸馏的做法。

蒸馏的概念

知识蒸馏使用的是Teacher-Student模型,原模型为老师(知识的输出者),新模型为学生(知识的学习者),我们的目标是让新模型近似于原模型。知识蒸馏分为2个过程:
1. 原模型的训练。原模型可能是参数多,结构复杂,也有可能为多个模型集合而成。先用hard target,数据集中正常的标签来训练原模型,得到一个映射关系。
2. 新模型的训练,参数较少,模型结构相对简单。利用训练好的原模型来计算soft target(也就是原模型经过softmax的输出),训练新模型,在新模型的基础上加了一个额外的soft target的损失。

蒸馏的解释

在进行知识蒸馏的时候,我们已经有了一个训练好的Teacher模型,我们用蒸馏的手段使Student去学习Teacher模型的泛化能力,属于一种迁移学习的方法。

用Teacher模型的输出(label probabilities)作为soft targets来训练Student模型。

hard target和soft target

soft target的输出信息量要大于hard target的信息量。举个简单例子来说,在句子分类的时候,对于该句子的类别可能为年龄的概率为0.3,性别的概率为0.2,身高概率为0.01…,我们会发现年龄和性别两种类别更容易被混淆错分。所以相比来说,soft target会包含类别之间的联系,所蕴含的信息量更大。而hard target,所有负类别的标签都是同一对待。

softmax函数:
在这里插入图片描述

将原模型的softmax的输出作为soft target,考虑到输出的概率分布熵相对较小(越混乱),负标签的值接近于0,对损失的贡献程度很小。所以引入了温度这个变量。

引入温度变量后的softmax函数:
在这里插入图片描述

随着T越大,概率分布的熵就越大,负标签的信息会被放大,使得模型更加关注负标签。温度的高低其实改变的就是新模型在训练过程中对负标签的关注程度,温度低,对负标签的关注,尤其是那些显著低于平均值的负标签的关注较小;而温度高时,负标签相关值会相对增大,会更加关注到负标签。

来自【经典简读】知识蒸馏(Knowledge Distillation) 经典之作

蒸馏的步骤

这两个图画的都很清晰漂亮
在这里插入图片描述
在这里插入图片描述

  1. 训练Teacher模型,输入X,利用得到的hard target来训练模型

  2. 计算soft target,利用Teacher模型来计算softmax 的输出

  3. 训练Student模型,输入X,在同等温度T下得到的softmax的输出和teacher模型得到的soft target输出的交叉熵为损失函数的第一部分L(soft),在温度T=1 的情况下得到的softmax的输出和teacher模型得到的soft target输出的交叉熵为损失函数的第二部分L(hard)

  4. L=L(soft)+L(hard)

    L(soft)的损失代表着Teacher模型和Student模型的差异,越小,代表Student模型学习得越好。加入L(hard)的损失,是考虑到teacher模型可能也会有错误的可能性,所以不能仅仅考虑Teacher模型,也要参考正确答案,所以加入了L(hard),防止老师出现错误,而学生被带偏的情况。

参考
Distilling the Knowledge in a Neural Network
如何理解soft target这一做法?
如何理解soft target这一做法?
【经典简读】知识蒸馏(Knowledge Distillation) 经典之作
Distilling the Knowledge in a Neural Network

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值