当前位置:   article > 正文

《Distilling the Knowledge in a Neural Network》论文总结_distilling the knowledge in a neural network.

distilling the knowledge in a neural network.

目录

零、前言

一、模型压缩概述

二、知识蒸馏的思想

三、知识蒸馏中的知识定义

1、基于response/logits的知识

2、基于feature的知识

3、基于relation的知识

 四、本文提出的传统基于response的知识的蒸馏方法

1、soft target与hard target、温度因子T与推广的softmax:

2、知识蒸馏的流程: 

五、Q&A:

1、大模型、小模型的定义,以及其结构是否相同; 为什么要用大模型来辅助小模型的训练?

2、大模型是否为预训练模型?在小模型的训练过程中大模型是否还需要再继续训练?

3、是否存在小模型在训练后反而比大模型更大的问题?

4、知识蒸馏目的、作用以及知识蒸馏与迁移学习关系

零、前言

这篇文章是Hinton老爷子和Dean、Vinyals三人又一篇巨作,开创了知识蒸馏的先河。考虑到了小模型直接训练的效果并不理想,就引入了训练好但是臃肿的大模型作为“老师”,教小模型这个“学生”更好的学习。又因为在softmax函数中引入了T 这个“温度因子”,因此被称为知识蒸馏。

 论文传送门:[1503.02531] Distilling the Knowledge in a Neural Network (arxiv.org)

一、模型压缩概述

神经网络模型被广泛应用在图像分类、物体检测、目标跟踪等计算机视觉任务中,并取得了巨大成功。随着时代发展,人们更加关注深度神经网络的实际应用性能,人工智能技术的一个趋势是在边缘计算平台上部署高性能的神经网络模型,并能在真实场景中实时运行,如移动端/嵌入式设备。这些平台的特点是内存资源少,处理器性能不高,功耗受限,这使得目前精度最高的模型根本无法在这些平台进行部署和达到实时运行。由于内存空间和算力资源的限制,神经网络在移动设备和嵌入式设备上的存储与计算仍然是一个巨大的挑战。

目前解决这个挑战主要有三个思路:压缩模型算法、挖掘硬件性能、在压缩模型的同时对现有的芯片进行优化。

在算法层面主要有三个思路:

1、对现有的大模型进行“减肥瘦身”:权值量化、剪枝(通道剪枝和权重剪枝)、知识蒸馏、注意力迁移……

2、直接设计轻量化网络:squeezenet、mobilenet、shufflenet……

3、低秩分解、对卷积运算进行加速

在硬件层面主要就是以空间换时间(芯片面积换取运算的并行度)。

 二、知识蒸馏的思想

 用已经训练好但是参数量庞大、不便于部署(消耗硬件资源太多、计算缓慢)的大网络模型作为“老师”,训练新构建的参数量较小、便于部署的“学生”--小网络模型,使其在相同测试下有跟大模型几乎相同的预测,为了满足效率,小模型不需要学习任务之外的知识。如下示意图:

 三、知识蒸馏中的知识定义

知识蒸馏为什么叫知识蒸馏?蒸馏一词我们放到后面讲推广的softmax函数中讲,先来聊聊什么是知识。

在本篇知识蒸馏中让小模型(学生)模仿大模型(教师)的输出,因此Hinton老爷子把大模型的输出(在分类问题中是各种类型的概率)称为知识。但是从2014年到现在知识蒸馏有了很大的发展,对知识也出现了许多不同的定义。

1、基于response/logits的知识

将知识定义为教师网络的输出,学生网络直接模仿教师网络最后一层的输出。

优点: 1.简单易于理解,student模型学teacher模型输出的概率分布,相当于给出了类别之间的相似性信息,提供了额外的监督信号,学起来更容易。 2.对于输出层,实现简单方便

缺点: 1.依赖于最后一层的输出 2.由于soft logits实际上是类概率分布,因此基于响应的蒸馏仅限于监督学习 3.当学生模型太小时,很难从教师模型中蒸馏成功

2、基于feature的知识

如果把神经网络的任务看成问题、真实标签看成答案、教师模型的输出老师做出来的答案的话,教师模型中间feature map可以看成老师解题的中间量,对于人来说,学习解题过程可比直接记住答案更有效,于是就有同志提出了基于feature的知识,将知识定义为教师模型中间层的feature map。

3、基于relation的知识

只知道答案和中间量而不知道解题思路怎么能行嘞,教师模型层与层之间的流动(文中称为flow)也可以看成一种知识。有同志将教师模型层与层之间的关系称为知识。

看到上面说到的这么多种知识是不是已经开始头疼了?在这篇开山之作中其实只用到了基于response的知识,本文只讲述这种蒸馏方法。

 四、本文提出的传统基于response的知识的蒸馏方法

首先需要明确的是这篇文章所用到的模型要解决的任务是分类问题,对于分类问题我们通常使用在全连接层后加上softmax层、使用交叉熵损失函数的方法来进行优化,在详细讲解知识蒸馏过程之前,我们需要先知道什么是soft target什么是hard target,为什么引入温度因子T和推广后的softmax函数。

1、soft target与hard target、温度因子T与推广的softmax:

(1)soft target与hard target:

我们知道在分类任务中,教师模型经过softmax层输出的是各种类别的概率,很少有真实标签那样非0即1(错误类别为0,正确类别为1)的情况,模型越强,预测输出结果中各类概率的分布就越是不均匀。以手写数字举例如下图所示:

上面的分布就是教师模型的输出各类概率,称为“soft target”;下面的分布就是真实标签,称为“hard target”。很显然, soft target蕴含着教师模型更多的知识。

(2)softmax函数的特性:

传统的softmax函数长这样:

它是一个归一化的概率,当括号内的Zi越小,由函数的数学特性就可以得到输出的qi越小。如果参与归一化的Zi(i = 0,1,……,N)越小,输出的qi(i = 0,1,……,N)就越相近。

对于我们刚刚聊过的soft target来说,各类概率越相近,就蕴含着越多的教师模型的知识,这对于知识蒸馏(小模型学习)来说是有利的,因此我们引入温度因子T来统一缩小括号内的变量,就有了以下的推广的softmax函数:

z越小,各类概率越相近,知识越多,如下图所示

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/731812
推荐阅读
相关标签