0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍网络压缩算法,知识蒸馏

YCqV_FPGA_EETre 来源:FPGA开发圈 2019-11-29 11:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

引言

学过化学的都知道蒸馏这个概念,就是利用不同组分的沸点不同,将不同组分从混合液中分离出来。知识蒸馏用于网络压缩,也具有类似的性质。具体的讲,有一个大的神经网络充当了“老师”的角色,她将书本上的知识先经过自己的转化和吸收,然后再传授给“学生”网络。学生网络模型相对较小,但是经过老师将知识提取教授,也可以实现大网络的功能。

知识蒸馏的方法是大名鼎鼎的Hinton提出的,这种方法实现了大网络向小网络的知识迁移,使得应用场景可以扩展到移动端。接下来我们具体看看知识蒸馏的整个过程。

1

原理

表面上看,大网络应该有更好的表达能力,或者说泛化能力。而小网络节点数量和大网络还有很大的差距,它如何能够做到逼近大网络的结果呢?首先,这与具体的应用场景范围有关,在一定的场景下,小网络可以接近大网络的分类能力。这就好像对于某个更复杂的函数,当限定某个值域的时候,可以用一些简单函数来逼近。其次,网络分类器最终的结果是用概率来表示的,分类结果取决于概率最大的。因此最大概率是90%和最大概率是60%的最终分类结果是一样的,这点就给了小网络更灵活的表达方式。最后就是小网络逼近大网络的程度和大网络的冗余程度有关,这类似于对大网络实行剪枝的结果。

那么如何训练一个小网络呢?我们可以先考虑一下在数值分析中,用一个函数S(x)来逼近另外一个函数f(x),那么就可以通过最小化这两个函数在每个点的平方和来实现。同理,训练小的网络也必须使用大网络的输入和输出作为训练集,而不能再使用训练大网络的训练集了。原始训练集的标注结果是绝对的(是和不是:1,0),而大网络的输出结果是一个概率向量,其包含了每一类的概率大小。这个结果不再仅仅只含有原始训练集的信息,它还包含了大网络的信息。比如在原始图片中,一张猫的图片结果只有一个,但是经过大网络后,不仅仅有猫的结果,还有狗,房子,树等每个类别的概率结果。其他类别的概率实际上告诉了我们不同类别之间存在的差异和共性,比如一张猫的图片中是狗的概率可能就比是房子的概率大,因为猫和狗相对于猫和房子有更大的共性。

神经网络通常使用softmax函数来生成分类概率,这个函数形式为:

其中T是温度,通常设置为1。使用较高的T可以产生更加softer的概率分布。更softer的概率分布提高网络的泛化能力,有利于小网络的训练。

写到这里小编对softmax函数感到好奇,为什么神经网络都采用softmax来进行概率计算呢?学过热力学的会发现,这个softmax函数非常类似不同能级上粒子分布概率,位于能级E的粒子分布概率就是正比于:

而且温度越高高能级粒子概率也越大,这与softmax函数也有同样的结果。其实观察他们的推导过程就会发现,它们之所以有相同的形式来自于它们都是多分类问题,而且概率模型都属于广义线性模型。Softmax函数正是在广义线性函数的假设上推导出来的。现在我们给出其传统推导,和基于热力学统计的推导方法。

首先看什么是广义线性模型,广义线性模型是用于处理条件概率的一个基本模型,很多常见的分布模型(伯努利,高斯等)都属于广义线性模型。定义线性预测算子:

定义y基于x的条件概率分布,这个分布就是广义线性模型:

分类问题就是求在给定输入x的条件下,估计y值,即y属于哪个类的问题。可以通过期望值来作为y的估计。容易得到这个期望值为:

因此一旦知道y的概率分布就知道了y的估计。这个估计就是回归函数。现在我们来看softmax的传统推导。

Y有多个可能的分类:

每种分类对应着概率:

定义:

其中有:

于是得到广义分布:

其中有,

然后可以求出:

求得估计值:

这就是softmax函数。

现在我们从统计热力学角度来推导softmax函数。

神经网络的作用是对输入进行特征提取,我们可以把这个提取过程表示为:

现在我们需要来理解E_i,这个应该是表示从属于特征i的程度,我们可以选择一定函数f(E_i)来作为评价属于特征i的程度。现在我们假设特征1到k是可以涵盖所有输入的,即任何输入都是由这些特征构成的,特征值反应了输入属于某个特征的量,那么所有这些特征的量之和应该是所有输入量的和,那么我们可以有:

我们现在需要求y属于这个特征的概率,即:

现在我们假设有N个数,这些数要分配不同的y值。这些数被分配是完全随机的,但是受到每种y值的数量限制,对应E_i的数量为N_i。那么将这N个数分配给k个不同类的分配方式可以得到:

我们来最大化W,即求最大似然函数:

满足约束条件:

我们利用拉格朗日对偶原理来求解极值:

我们可以得到类似玻尔兹曼分布的公式:

其中u就是温度1/T。

现在回到正题,过于softer的代价函数可能会造成分类结果错误率低,为了平衡分类错误和小模型泛化能力,hinton提出使用两个代价函数来进行训练,一个是T值较大,另外一个是T值为1。通过调节这两个代价函数的比例来获得满意的训练结果。

2

实验结果

Hinton的论文中分别在MINIST,语音识别上进行了实验。我们仅仅看一下实验结果,对知识蒸馏效果有个简单印象。更深入的理解离不开实践,只有真正去写代码去看结果,才能不会纸上谈兵。

1) MINIST

大网络含有2个隐含层,1200个激活单元,60000个训练集图片。作者通过剪枝来将大网络减小到只有800个激活单元,将温度增加到20,相比于没有regularization会减小很大错误率。

2) 语音识别

这里作者使用多个小网络集合来作为教师网络,然后单个网络作为学生网络。每个网络为8个隐含层,2560个激活单元,训练集有14000个标注数据。结果如下:

其中WER为错误率。

总结

本文介绍了网络压缩算法,知识蒸馏。很多是小编个人理解,如有不同意见欢迎指正交流。更多可以参考hinton大神的知识蒸馏文献。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4761

    浏览量

    97147
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66841
  • 网络节点
    +关注

    关注

    0

    文章

    54

    浏览量

    16827

原文标题:【网络压缩三】知识蒸馏

文章出处:【微信号:FPGA-EETrend,微信公众号:FPGA开发圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    应用于暂态波形存储的数据压缩算法需要考虑哪些因素?

    应用于暂态波形存储的数据压缩算法,需围绕 暂态波形特性 (突变性、关键特征依赖性)、 工业场景需求 (实时性、硬件限制)及 数据应用价值 (故障溯源、合规性)综合考量,核心需关注以下六大维度: 一
    的头像 发表于 11-05 15:02 148次阅读

    AES加解密算法逻辑实现及其在蜂鸟E203SoC上的应用介绍

    这次分享我们会简要介绍AES加解密算法的逻辑实现,以及如何将AES算法做成硬件协处理器集成在蜂鸟E203 SoC上。 AES算法介绍 AE
    发表于 10-29 07:29

    国密系列算法简介及SM4算法原理介绍

    算法可用于无线局域网产品;SM7算法可用于身份识别、票务、支付与通卡类业务。ZUC算法可用于移动通信网络。 密码杂凑算法:SM3
    发表于 10-24 08:25

    低内存场景下的高效压缩利器:FastLZ压缩库应用实践指南

    在资源受限环境中,数据压缩既要追求速度又要节省内存。本文聚焦FastLZ压缩库,深入探讨其在低内存场景下的应用实践,通过解析其核心算法与优化策略,带您掌握如何利用该库实现快速压缩,满足
    的头像 发表于 07-22 15:13 211次阅读
    低内存场景下的高效<b class='flag-5'>压缩</b>利器:FastLZ<b class='flag-5'>压缩</b>库应用实践指南

    基于FPGA的压缩算法加速实现

    本设计中,计划实现对文件的压缩及解压,同时优化压缩中所涉及的信号处理和计算密集型功能,实现对其的加速处理。本设计的最终目标是证明在充分并行化的硬件体系结构 FPGA 上实现该算法时,可以大大提高该
    的头像 发表于 07-10 11:09 2085次阅读
    基于FPGA的<b class='flag-5'>压缩</b><b class='flag-5'>算法</b>加速实现

    ModbusRTU转EtherCAT网关:蒸馏装置通信提速方案

    蒸馏装置等复杂控制系统中,如何有效地通过开疆智能Modbus RTU转EtherCAT网关KJ-ECT-101将这两种协议结合使用,以实现更高效、更可靠的系统性能,成为了工程师们关注的焦点。常压蒸馏
    的头像 发表于 06-26 18:29 295次阅读

    神经网络压缩框架 (NNCF) 中的过滤器修剪统计数据怎么查看?

    无法观察神经网络压缩框架 (NNCF) 中的过滤器修剪统计数据
    发表于 03-06 07:10

    嵌入式系统中的代码优化与压缩技术

    在当今数字化时代,嵌入式系统广泛应用于各个领域,从智能家居设备到工业控制系统,从汽车电子到可穿戴设备,它们无处不在。而在嵌入式系统开发中,代码优化与压缩技术至关重要,直接影响着系统的性能、成本
    发表于 02-26 15:00

    IBM在watsonx.ai平台推出DeepSeek R1蒸馏模型

    IBM近日宣布了一项重要更新,为其企业级AI开发平台watsonx.ai引入了DeepSeek R1的Llama 3.1 8B和Llama 3.3 70b蒸馏版本。这一举措旨在通过先进的AI技术
    的头像 发表于 02-14 10:21 875次阅读

    什么是BP神经网络的反向传播算法

    BP神经网络的反向传播算法(Backpropagation Algorithm)是一种用于训练神经网络的有效方法。以下是关于BP神经网络的反向传播
    的头像 发表于 02-12 15:18 1278次阅读

    IBM企业级AI开发平台watsonx.ai上线DeepSeek R1蒸馏模型

    IBM日前宣布,DeepSeek-R1 的 Llama 3.1 8B 和 Llama 3.3 70b 蒸馏版本现已在 IBM 的企业级 AI 开发平台 watsonx.ai 上提供。
    的头像 发表于 02-12 10:02 821次阅读

    摩尔线程宣布成功部署DeepSeek蒸馏模型推理服务

    近日,摩尔线程智能科技(北京)有限责任公司在其官方渠道发布了一则重要消息,宣布公司已经成功实现了对DeepSeek蒸馏模型推理服务的部署。这一技术突破,标志着摩尔线程在人工智能领域迈出了坚实的一步
    的头像 发表于 02-06 13:49 1184次阅读

    大连理工提出基于Wasserstein距离(WD)的知识蒸馏方法

    自 Hinton 等人的开创性工作以来,基于 Kullback-Leibler 散度(KL-Div)的知识蒸馏一直占主导地位。 然而,KL-Div 仅比较教师和学生在相应类别上的概率,缺乏跨类别比较
    的头像 发表于 01-21 09:45 1012次阅读

    人工神经网络的原理和多种神经网络架构方法

    在上一篇文章中,我们介绍了传统机器学习的基础知识和多种算法。在本文中,我们会介绍人工神经网络的原理和多种神经
    的头像 发表于 01-09 10:24 2256次阅读
    人工神经<b class='flag-5'>网络</b>的原理和多种神经<b class='flag-5'>网络</b>架构方法

    EE-257:面向Blackfin处理器的引导压缩/解压缩算法

    电子发烧友网站提供《EE-257:面向Blackfin处理器的引导压缩/解压缩算法.pdf》资料免费下载
    发表于 01-07 13:56 0次下载
    EE-257:面向Blackfin处理器的引导<b class='flag-5'>压缩</b>/解<b class='flag-5'>压缩</b><b class='flag-5'>算法</b>