Distilling the Knowledge in a Neural Network 论文笔记

论文:https://arxiv.org/abs/1503.02531


一、简介

    对于几乎所有的机器学习算法,一种简单的提高性能的方法,就是使用同样的数据集训练多个不同的模型,测试时取他们的各自预测值的加权平均作为整个算法的最终输出结果。然而,这样做的缺点也是非常明显的,多个模型的集合体积庞大,且运算需求极大,难以部署在大量用户的机器上。

    因此,本文主要做出了以下两点贡献:

  1. 提出一种 知识蒸馏(Knowledge Distillation)方法,从大模型所学习到的知识中学习有用信息来训练小模型,在保证性能差不多的情况下进行模型压缩
  2. 提出一种新的 集成模型(Ensembles of Models)方法,包括一个通用模型(Generalist Model)和多个专用模型(Specialist Models),其中,专用模型用来对那些通用模型无法区分的细粒度(Fine-grained)类别的图像进行区分

二、Knowledge Distillation

图 1

    Knowledge Distillation 的整体框架如图 1 所示,下面介绍一下图中的几个概念

  • cumbersome model:复杂的大模型
  • distilled model:经过knowledge distillation后学习得到的小模型
  • hard targets:输入数据所对应的label    例:[0,0,1,0]
  • soft targets:输入数据通过大模型(cumbersome model)所得到的softmax层的输出    例:[0.01,0.02,0.98,0.17]

            soft targets 在训练过程中可以提供更大的信息熵,将已训练模型的知识更好地传递给新模型

  • softmax:

        其中 qi 表示第 i 类的输出概率,zi、zj 表示 softmax 层的输入(即 logits),T 为温度系数,用来控制输出概率的soft程度。
        温度系数 T 的意义可以用如下图 2 来理解,图中绿分别对用同一组z在T为(5,25,50)下的值,可以看出,T越大,值之间的差就越小(折线更平缓,即更加的 soft),但是相对的大小关系依然没变

图 2

    实现流程:

  1. 使用一个较大的 T 和 hard targets 训练一个大模型(cumbersome model),生成soft targets
  2. 使用 soft targets 训练一个简单的小模型(distilled model)(在测试时,T = 1)
        distilled model 的 目标函数由以下两项的加权平均组成:
  • soft targets 和小模型的输出数据的交叉熵(保证小模型和大模型的结果尽可能一致
  • hard targets 和小模型的输出数据的交叉熵(保证小模型的结果和实际类别标签尽可能一致


三、Training ensembles of model

    当数据集非常巨大以及模型非常复杂时,训练多个模型所需要的资源是难以想象的,因此提出一种新的集成模型方法,包括:
  • 一个 Generalist model :使用全部数据进行训练
  • 多个 Specialist models :对某些易混淆的类别进行专门训练的专有模型
         Specialist models 的训练集中,一半是初始训练集中某些特定类别的子集(special subset),另一半由剩余初始训练集中随机采样组成

    在该方法中,只有 generalist model 耗时较长,剩余的 specialist model 由于训练数据较少,且相互独立,可以并行训练,因此整体运算量少了非常多。


    但是,specialist model由于只使用特定类别的数据进行训练,因此模型对别的类别的判断能力几乎为0,导致非常容易过拟合,我们可以采用如下方法来解决

  • specialist model 通过 hard targets 训练完成后,再使用由 generalist model 生成的 soft targets 进行 finetune,这样做是因为 soft targets 保留了一些对于其他类别数据的信息,因此模型可以在原来基础上学到更多知识,有效避免了过拟合

    实现流程:

        训练阶段:
  1. 训练一个 generalist model
  2. generalist model 生成的 confusion matrix 确定出每一个 specialist model 所对应的类别的子集
  3. 对每个类别子集独立训练每一个 specialist model可并行训练

        测试阶段:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值