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

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

3天内不再提示

神经网络在FPGA上的应用:深度压缩方法

454398 来源: AI加速 作者:韩松 2020-11-21 11:00 次阅读

引言

这篇论文来自文章也帮助深鉴科技在国内外获得了一定知名度。深度压缩首先通过剪枝减少了网络的连接,然后通过比特量化来降低权重量,最后通过无损压缩方式霍夫曼编码来缩小存储空间。作者分别对AlexNet和VGG-16进行了实验,获得了35倍和49倍的压缩量,而且精度几乎没有损失。

1. 原理

深度压缩之所以获得成功主要是结合了三种压缩方法:剪枝,量化和无损压缩霍夫曼编码,而且在大的数据集和深度神经网络中获得了较高压缩比以及精度未降。前两种方法不仅仅降低了权重数量,也提高了计算速率。而霍夫曼编码只是能够降低存储空间,在实际计算的时候还需要进行解码操作,实际上不会提高计算率。

以上三种方法用图来表示为三个过程:


这三个方法一次顺序进行,每个过程都单独进行。

2. 剪枝

首先进行剪枝操作,也是很传统的方法,就是通过一定策略来过滤掉一些不重要的神经网络连接。然后再重新训练进行参数微调,不断重复这个过程直到不能够再进行剪枝为止。剪枝后的神经网络连接大大减少,剩下的都是对网络分类有最重要贡献的连接。其他被剪掉的连接的参数很小,产生的数值对结果影响可以通过重新训练来微调其他参数而弥补。在imageNet数据集上,剪枝方法可以将AlexNet的参数数量减少9倍而没有精度上的损失。VGG-16同样有类似的现象,参数总量可以减少13倍左右而没有精度损失。



3. 量化

接下来在剪枝网络上做进一步量化操作。基本思路是权重共享和聚类。假设给定了k个类,这是权重参数量化后可能产生的k个值,然后对权重执行聚类操作,聚类方法选择了k-means方式。然后会得到k个区间,这些权重参数都分布在这k个区间中。然后用对应k个区间的数值来替代原来的权重数据。K个数值通常需要log2(k)比特来表示。这样就从原来的32bit降低到了log2(k)。

以下为k-means方法的目标函数:


作者在同一层网络上进行权重共享,不同层之间的权重分别进行聚类。为什么不同层之间的权重不能够进行共享?可以这样想,权重之所以可以共享和量化,是因为其表达的信息有一些共性,从数学上看同一层权重之间是以“求和”方式连接的,而不同层时间是“相乘”关系,后者有一定顺序性,无法做到共享。否则会导致较高错误率,而且层与层之间还有激活函数,归一化函数,不能简单的进行共享。

训练也进行了量化,在原来权重求得梯度值基础上进行同样的聚类和量化操作,然后对量化的权重进行微调得到新的值。过程如下图所示。这里作者并不是用未量化的梯度来更新权重,用量化的梯度来更新可以减少训练迭代,在这里只进行了两次训练,第一次先训练出初始权重数据,第二次是用量化的梯度更新权重。


4. 霍夫曼编码

神经网络在FPGA上部署通常需要大量的缓存,为了降低缓存空间,霍夫曼编码进一步来压缩权重。霍夫曼编码是一种无损编码,其通过数据的重复率来进行数据重新编码,重复率高的用少的比特,重复率少的用多的比特,这样就降低了数据存储空间。虽然霍夫曼编码能压缩2到3倍权重,但是并不适合在FPGA上实现。因为霍夫曼解码要消耗大量资源,同时霍夫曼解码是单bit进行解析,速度较慢。这些都不利于FPGA上加速深度神经网络。

5. 实验结果

作者主要在AlexNet和VGG-16上进行了尝试,结果如图:


从结果中可以获得以下结论:
1) 全连接层的剪枝和量化都很大,说明全连接层信息有很大冗余;
2) 越深的网络压缩比例越大;

结论

本文介绍了深度压缩方法,其结合了剪枝,量化和霍夫曼编码的方式来最大限度降低权重数据量,这种方法促进了深度神经网络在FPGA器件上的应用能力。

编辑:hfy


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

    关注

    1602

    文章

    21302

    浏览量

    593104
  • 神经网络
    +关注

    关注

    42

    文章

    4570

    浏览量

    98709
收藏 人收藏

    评论

    相关推荐

    脉冲耦合神经网络FPGA的实现谁会?

    脉冲耦合神经网络(PCNN)FPGA的实现,实现数据分类功能,有报酬。QQ470345140.
    发表于 08-25 09:57

    从AlexNet到MobileNet,带你入门深度神经网络

    深度神经网络运用的方法。AlexNet研发的时候,使用的GTX580仅有3GB的显存,所以创造性的把模型拆解两张显卡中,架构如下:1.
    发表于 05-08 15:57

    基于赛灵思FPGA的卷积神经网络实现设计

    FPGA 实现卷积神经网络 (CNN)。CNN 是一类深度神经网络处理大规模图像识别任务
    发表于 06-19 07:24

    如何设计BP神经网络图像压缩算法?

    (Digital Signal Processor)相比,现场可编程门阵列(Field Programma-ble Gate Array,FPGA)神经网络的实现更具优势。DSP处
    发表于 08-08 06:11

    如何移植一个CNN神经网络FPGA中?

    训练一个神经网络并移植到Lattice FPGA,通常需要开发人员既要懂软件又要懂数字电路设计,是个不容易的事。好在FPGA厂商为我们提供了许多工具和IP,我们可以在这些工具和IP的
    发表于 11-26 07:46

    基于FPGA神经网络的性能评估及局限性

    FPGA实现神经网络关键问题分析基于FPGA的ANN实现方法基于FPGA神经网络的性能评估及局
    发表于 04-30 06:58

    深度神经网络是什么

    多层感知机 深度神经网络in collaboration with Hsu Chung Chuan, Lin Min Htoo, and Quah Jia Yong. 与许忠传,林敏涛和华佳勇合作
    发表于 07-12 06:35

    EdgeBoard中神经网络算子FPGA中的实现方法是什么?

    FPGA加速的关键因素是什么?EdgeBoard中神经网络算子FPGA中的实现方法是什么?
    发表于 09-28 06:37

    基于深度神经网络的激光雷达物体识别系统

    的激光雷达物体识别技术一直难以嵌入式平台上实时运行。经纬恒润经过潜心研发,攻克了深度神经网络嵌入式平台部署所面临的算子定制与加速、量化策略、模型
    发表于 12-21 07:59

    卷积神经网络模型发展及应用

    network,DBN)[24], 从此拉开了深度学习大幕。随着深度学习理论的研究和发展,研究人员提 出了一系列卷积神经网络模型。为了比较不同模型 的质量,收集并整理了文献中模型
    发表于 08-02 10:39

    FPGA去实现大型神经网络的设计

    1、加速神经网络的必备开源项目  到底纯FPGA适不适合这种大型神经网络的设计?这个问题其实我们不适合回答,但是FPGA厂商是的实际操作是很有权威性的,现在不论是Intel还是Xili
    发表于 10-24 16:10

    什么是深度学习?使用FPGA进行深度学习的好处?

    FPGA实现。易于适应新的神经网络结构深度学习是一个非常活跃的研究领域,每天都在设计新的 DNN。其中许多结合了现有的标准计算,但有些需要全新的计算方法。特别是
    发表于 02-17 16:56

    深度神经网络压缩和正则化剖析

    利用深度压缩和DSD训练来提高预测精度。 深度神经网络已经成为解决计算机视觉、语音识别和自然语言处理等机器学习任务的最先进的技术。尽管如此,深度
    发表于 11-16 13:11 1630次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>神经网络</b>的<b class='flag-5'>压缩</b>和正则化剖析

    基于深度神经网络的端到端图像压缩方法

    人工设计的算法分别进行优化近年来,基于深度神经网络的端到端图像压缩方法在图像压缩中取得了丰硕的成果,相比传统
    发表于 04-08 09:30 16次下载
    基于<b class='flag-5'>深度</b><b class='flag-5'>神经网络</b>的端到端图像<b class='flag-5'>压缩</b><b class='flag-5'>方法</b>

    深度神经网络模型的压缩和优化综述

    近年来,随着深度学习的飞速发展,深度神经网络受到了越来越多的关注,在许多应用领域取得了显著效果。通常,在较高的计算量下,深度神经网络的学习能
    发表于 04-12 10:26 20次下载
    <b class='flag-5'>深度</b><b class='flag-5'>神经网络</b>模型的<b class='flag-5'>压缩</b>和优化综述