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

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

3天内不再提示

一文解析网络压缩算法的原理实现及结果

454398 来源:AI加速微信公众号 作者:AI加速微信公众号 2020-11-14 10:51 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

引言

网络压缩在AI加速中可以说起到“四两拨千斤”的作用,网络参数的减小不仅仅降低了存储和带宽,而且使计算逻辑简单,降低了LUT资源。从本篇开始,我们就一起挖掘一下网络压缩算法的类型,原理,实现,以及效果。写这类算法类文章,一是学习,二是希望能够令更多做FPGA的人,不再将眼光局限于RTL,仿真,调试,关心一下算法,定会发现FPGA的趣味和神通。

网络结构

二值化网络,顾名思义,就是网络参数只有两个数值,这两个数值是+1和-1。在DNN网络中主要是乘和加法运算,如果参数只有两个数值,那么乘法的实现就很简单,仅仅需要符号判断就可以了。比如输入数据A,如果和1乘,不变;和-1乘,变为负数。这用LUT很好实现,还节省了DSP的使用。相对于单精度浮点数,存储减小16倍,带宽也增加16倍。在计算单元数目相同情况下,比浮点运算速率提高了16倍。当然由于乘法和加法使用LUT数目减少,计算单元也会成倍增长,总的下来计算速率将大幅度提高。

网络训练中使用的都是浮点类型参数,这样做是为了保证训练的精度。那么这些浮点类型的参数如何量化的只有两个数值呢?论文中提出了两种方法,第一种是粗暴型,直接根据权重参数的正负,强行分出1和-1。即:

这里wb是二值参数,w是实际权重参数。量化可以看做在原来数据基础上增加了噪声,导致数据间最短距离变大。比如原来数据的分辨率为R0,如果增加一个高斯噪声s,那么其分辨率就增大了。这样在DNN中矩阵乘法中也引入了噪声,为:

数据分辨率的降低导致了有效信息的损失,但是在大量权重情形下,平均下来可以补偿一定的信息损失,即如果有:

那么在权重无穷多时,有:


图1.1 数据增加了噪声,导致数据分辨率降低

另外一种是随机型,即以一定概率来选择1和-1,论文中采用如下公式:

其中“hard sigmoid”函数为:

这实际上是对sigmoid函数进行了线性化,这样做的目的可以减少计算量。因为线性计算只有一个乘法和加法,而sigmoid函数有指数计算。使用随机量化更能均衡化量化引入的噪声,消除噪声造成的信息损失。粗暴型量化可能因为权重参数分布不同而发生较大的“不平衡”,比如负数权重较多,那么导致-1远远多于+1,这样就会出现权重偏移在负方向多一些。如果使用随机概率模型,即使负数权重多,也会有一定概率出现+1,弥补了+1较少的情况。

图1.2 粗暴型和随机型量化:随机型量化的分布更加均匀

训练过程

训练过程主要包括三个部分:

1) 前向传播:给定输入数据,一层一层的计算,前一层激活函数的结果作为下一层的输入;

2) 反向传播:计算每一层代价函数的梯度,从最后一层开始计算,反向计算前一层,一直到计算出第一层的梯度值;

3) 更新参数:根据计算出来的梯度和前一时刻的参数,计算出下一时刻的参数。

计算过程可以用图2.1表示:

图2.1 训练过程

图2.2 训练算法

每次量化发生在计算出浮点参数之后,然后在进行前向计算,得到代价函数,进行反向计算代价函数梯度,接着利用前一刻参数计算出下一刻数据,不断迭代直到收敛。

结果

论文在三个数据集上进行了测试:MNIST,CIFAR-10,SVHN。

MNIST有6万张内容为0-9数字的训练图片,以及1万张用于测试的28x28大小的灰度图片。论文研究了两种量化方式下训练时间,以及测试出错率。从中看出随机量化出错率更低,更适合用于二值量化。

图3.1 不同量化方式下的训练时间以及测试错误率:点线表示训练误差,连续线表示测试错误率

CIFAR-10图片内容比MNIST复杂一些,包含了各种动物。有5万张训练图片和1万张32x32大小的测试图片。

SVHN也是0-9数字图片,含有604K张训练图片和26K的32x32大小的测试图片。以上三种数据集下使用二值网络的结果如下图:

图3.2 三种数据集结果(错误率)比较

从中看出二值网络错误率几乎和其他网络模型差不多,但是其大大压缩了网络模型。

结论

二值化网络中参数只用两个数值表示,实际上仅仅考虑了权重的符号作用。在三种小型简单的数据集上表现良好。

文献

1 Matthieu Courbariaux, Y.B., Binary Connect Training Deep Neural Networks with binary weights during propagations. ArXiv preprint, 2016.

编辑:hfy


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

    关注

    1656

    文章

    22292

    浏览量

    630405
  • 算法
    +关注

    关注

    23

    文章

    4761

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    SM4算法实现分享(算法原理

    对明文进行分组加密变换。SM4加密算法由32次迭代运算和次反序变换R组成。 设输入明文为(X0,X 1,X 2,X 3),共128位,设密输出为(Y0,Y 1,Y 2,Y 3),轮密钥为rki
    发表于 10-30 08:10

    Camellia算法实现(基于开源蜂鸟E203协处理器)

    项目构想 我们开始就选择信息安全作为芯来杯比赛方向,并以Camellia算法作为算法原型。借助蜂鸟E203的协处理,能加速Camellia算法的运算,并通过比较软件
    发表于 10-30 07:04

    Camellia算法实现二(基于开源蜂鸟E203协处理器)

    篇分享文档介绍了Camellia算法的基本原理,这篇文档我们来介绍Camellia的具体实现方式。 如上图所示为Camellia加解密系统的结构,PC端上位机通过串
    发表于 10-30 06:35

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

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

    如何使用恢复算法实现开平方运算

    本文主要描述如何使用恢复算法实现开平方运算。 简介 开平方的恢复算法其实与除法的恢复算法十分相似。首先我们假设X为输入的操作数(它应该为正数),而他的平方根可以表示为Qn=0.q1
    发表于 10-24 13:33

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

    保证,而国产密码算法实现了密码算法的自主可控,对于保障我国的国家安全具有重要意义。目前,我国大力推广国密算法的应用,并涌现出系列国家商用密
    发表于 10-24 08:25

    e203除法器算法改进()

    e203内部除法操作使用加减交替迭代法进行运算,除几个特殊运算外,正常的除法操作需要33个周期才能输出运算结果,极大程度地影响了系统的性能。我们对e203的除法器进行了新的算法实现并改进。目前高性能
    发表于 10-22 07:13

    数据滤波算法的具体实现步骤是怎样的?

      数据滤波算法在电能质量在线监测装置中的具体实现,需围绕 “ 数据采集→预处理→算法执行→参数适配→效果验证→结果输出 ” 的全流程展开,核心是结合装置硬件特性(采样率、ADC 精度
    的头像 发表于 10-10 16:45 434次阅读

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

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

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

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

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

    以及资源利用效率。 、代码优化的重要性 嵌入式设备往往资源有限,如内存空间小、处理器性能相对较弱。高效的代码能够在有限资源下实现更强大的功能。以智能家居中的温度传感器节点为例,其运行的代码若未经优化
    发表于 02-26 15:00

    解析工业互联网

    电子发烧友网站提供《解析工业互联网.pptx》资料免费下载
    发表于 02-20 16:42 1次下载

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

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

    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>