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
    +关注

    关注

    1629

    文章

    21729

    浏览量

    602984
  • 神经网络
    +关注

    关注

    42

    文章

    4771

    浏览量

    100712
收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

    基于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

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

    到只有有限硬件资源的嵌入式系统。 为了解决这个限制,可以使用深度压缩来显著地减少神经网络所需要的计算和存储需求。例如对于具有全连接层的卷积神经网络
    发表于 11-16 13:11 1826次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>神经网络</b>的<b class='flag-5'>压缩</b>和正则化剖析

    深度神经网络识别物体的能力怎样

    深度神经网络非常善于识别物体,但是当涉及到他们的相互作用的推理时,即使是最先进的神经网络努力。
    发表于 04-14 15:24 840次阅读

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

    人工设计的算法分别进行优化近年来,基于深度神经网络的端到端图像压缩方法图像压缩中取得了丰硕的成
    发表于 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>和优化综述

    基于FPGA神经网络硬件实现方法

    基于FPGA神经网络硬件实现方法说明。
    发表于 06-01 09:35 37次下载
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>神经网络</b>硬件实现<b class='flag-5'>方法</b>

    卷积神经网络压缩方法

    卷积神经网络(Convolutional Neural Network, CNN)作为深度学习领域的重要分支,图像识别、视频处理、自然语言处理等多个领域取得了显著成就。然而,随着网络
    的头像 发表于 07-11 11:46 339次阅读

    FPGA深度神经网络中的应用

    、低功耗等特点,逐渐成为深度神经网络边缘计算和设备端推理的重要硬件平台。本文将详细探讨FPGA深度
    的头像 发表于 07-24 10:42 654次阅读