Distilling the Knowledge in a Neural Network阅读笔记

文章背景知识

文章就是将大网络的知识想办法迁移到小网络。所以背景知识就是普通的机器学习知识,包括神经网络,softmax函数等等。

1.介绍文章来源

第一作者是Geoffrey Hinton,号称人工智能三大创始人(Geoffrey Hinton、Yann LeCun与YoshuaBengio)之一,神经网络之父,谷歌高级专家,谷歌学术引用达到了24w。

第二作者Oriol Vinyals:年少成名,《星际争霸》游戏第一。后来后参与了tensorflow和mapreduce的开发,同是谷歌研究院。学术引用67000。

第三作者Jeff Dean:谷歌研究员,tensorflow和mapreduce的主要研究者,谷歌引用95000。

2.作者要完成什么

作者最主要的工作就是提出了模型蒸馏并验证。

“蒸馏”(distillation):把大网络的知识压缩成小网络的一种方法。

再在第三个实验的地方,又提出了专家网络。

3.作者怎样完成的

这里一个可行的办法是使用大模型生成的模型类别概率作为“soft targets”(使用蒸馏算法以后的概率,相对应的 head targets 就是正常的原始训练数据集)来训练小模型,由于 soft targets 包含了更多的信息熵,所以每个训练样本都提供给小模型更多的信息用来学习,这样小模型就只需要用更少的样本,及更高的学习率去训练了。

4.论文中的关键数学推导、算法

关键的部分就是模型蒸馏,就是改造了softmax,能让概率输出的差距不是那么大。



 

其中T就是温度。当 T = 1 是就是常规的 Softmax,而升温T,对softmax进行蒸馏,函数的图像会变得越来越平滑。

5.文章的实验部分是怎么设计的?

实验有四个部分,很详细的验证了作者的思想。

第一个:

第一个实验很简单,用了MINST数据集做实验,作者自己定义了两个网络,效果如下:



 

接着以net1作为教师网络,net2作为学生网络,训练结果如下:



 

第二个:

这是在 Automatic Speech Recognition(ASR)上的实验。其中basline的配置为8 层,每层2560个relu单元,softmax层的单元数为14000,训练样本大小约为700M,2000个小时的语音文本数据。

10XEnsemble是对baseline训练10次(随机初始化为不同参数)然后取平均;

蒸馏模型的配置为使用的候选温度为{1,2, 5, 10}, 其中T为2时表现最好



 

第三个:



作者在这里提到了专家网络,先来看看数据集JST,这是谷歌内部的一个数据集,有1亿张图片,15000个label,谷歌曾今为了训练他弄了六个月。训练一个大的集成模型可以利用并行计算来训练,训练完成后把大模型蒸馏成小模型,但是另一个问题就是,训练本身就要花费大量的时间,这一节介绍的就是如何学习专用模型集合,集合中的每个模型集中于不同的容易混淆的子类集合,这样可以减小计算需求。效果如下:



 

第四个:

这个又回归了类似前两个的实验。主要是为了对比soft target和hard target的效果。其中3%指的是作者在小模型中只用了3%的训练样本。



 

6.读后感

这篇文章还是听牛掰的,引用量已经到了3000,也是模型蒸馏的创始paper。现在比较热门的联邦学习,或者说是需要在移动设备上训练的小模型,蒸馏可能会有大用处。文章偏开创性工作,可以作为以后应用的一部分。

7.参考文献

文章原创性比较强,我在引用它的文献中找了几个:

Howard A G, Zhu M, Chen B, et al. Mobilenets: Efficient convolutional neural networks for mobile vision applications[J]. arXiv preprint arXiv:1704.04861, 2017.

Carlini N, Wagner D. Towards evaluating the robustness of neural networks[C]//2017 ieee symposium on security and privacy (sp). IEEE, 2017: 39-57.

Wu J, Leng C, Wang Y, et al. Quantized convolutional neural networks for mobile devices[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 4820-4828.

8.源码

作者没有提供源码,但是github上面很多三方的实现的demo。因为作者给的就是一个思想,所以实现的还是蛮多的。比如:

https://github.com/a7b23/Distilling-the-knowledge-in-neural-network

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值