作者 | VincentLee
来源 | 晓飞的算法工程笔记

在训练过程中,特征值梯度的回传和权值梯度的计算占了大部分的计算消耗。由于这两个操作都是以特征值梯度作为输入,而且零梯度不会占用计算资源,所以稀疏化特征值梯度可以降低回传阶段的计算消耗以及内存消耗。论文的目标在于高效地降低训练负载,从而在资源有限的平台进行大规模数据集的训练。 

本论文假设特征值梯度服从正态分布,基于此计算阈值,随后使用随机剪枝算法(stochastic pruning)将小于阈值的特征值梯度随机置为零或。经理论推理和实验证明,这种方法不仅能够有效地稀疏化特征值梯度,还能在加速训练的同时,不影响训练的收敛性。

General Dataflow

卷积层通常包含4个阶段:推理、特征值梯度回传、权值梯度计算和权值更新。为了表示这些阶段的计算,论文定义了一些符号:

  卷积层的四个训练阶段的总结为:

论文通过可视化发现,回传阶段的特征值梯度几乎全是非常小的、接近于零的值,自然而然地想到将这些值去掉不会对权值更新阶段造成很大的影响,所以论文认为剪枝特征值梯度能够加速卷积层在训练时的计算。

Sparsification Algorithms

Distribution Based Threshold Determination (DBTD)

剪枝操作最关键的步骤是决定选择哪些元素进行消除,先前有研究使用最小堆进行元素选择,但这会带来较大的额外计算开销。为此,论文采用简单的阈值过滤进行元素选择。

论文首先分析了两种经典的卷积网络结构的特征值梯度分布:Conv-ReLU结构和Conv-BN-ReLU结构:

  • 对于Conv-ReLU结构,输出的特征值梯度是稀疏的,但其分布是无规律的,而结构的输入特征值梯度几乎全是非零值。通过统计发现,的分布以零值对称分布,且密度随着梯度值的增加而下降。

  • 对于Conv-BN-ReLU结构,BN层设置在卷积层与ReLU层中间,改变了梯度的分布,且的分布与类似,。

所以,上述的两种结构的梯度都可认为服从零均值、方差为的正态分布。对于Conv-ReLu结构,由于ReLU不会降低稀疏性,能够继承的稀疏性,将是作为Conv-ReLU结构中的剪枝目标梯度。而对于Conv-BN-ReLU结构,则将作为剪枝目标。这样,两种结构的剪枝目标都可统一为正态分布。假设的数量为,可以计算梯度的绝对值的均值,并得到该均值的期望为:

这里的期望为从分布中采样个点的期望,而非分布的整体期望,再定义以下公式

将公式2代入公式1中,可以得到:

从公式3可以看出为参数的无偏估计,接近于真实的均值,且的整体计算消耗是可以接受的。基于上面的分析,论文结合正态分布的累积函数、剪枝率和计算阈值:

Stochastic Pruning

剪枝少量值较小的梯度几乎对权值的更新没有影响,但如果将这些值较小的梯度全部设为零,则会对特征值梯度的分布影响很大,进而影响梯度更新,造成严重的精度损失。参考Stochastic Rounding算法,论文采用随机剪枝来解决这个问题。

随机剪枝逻辑如算法1所示,对于小于阈值的梯度值,随机采样一个缩放权重来计算新阈值,再根据新阈值将梯度值置为零或。

随机剪枝的效果如图2所示,能够在保持梯度分布的数学期望的情况下进行剪枝,与当前的方法相比,论文提出的方法的优点如下:

  • Lower runtime cost:DBTD的计算复杂度小于top-k算法,且DBTD对硬件更友好,能够在异构平台实现。

  • Lower memory footprint:随机裁剪能保持收敛性,且不需要存储而外的内存。

  至此,Sparsification Algorithms在梯度回传时的特征值梯度计算为:

实验结果

在CIFAR-10、CIFAR-100以及ImageNet上进行准确率验证。

在CIFAR-10和ImageNet上进行收敛性验证。

在不同的设备上进行加速效果验证。

结论

论文通过DBTD方法计算过滤阈值,再结合随机剪枝算法对特征值梯度进行裁剪,稀疏化特征值梯度,能够降低回传阶段的计算量,在CPU和ARM上的训练分别有3.99倍和5.92倍的加速效果。

论文提出的特征值稀疏化算法看似很简单,其实进行了充分的理论推导以及实验验证,才得到最终合理的过滤方法,唯一可惜的是没在GPU设备上进行实验验证。论文对算法的收敛性以及期望有详细的理论验证,不过这里没有列出来,有兴趣的可以去看看原文。

论文地址:

https://arxiv.org/abs/1908.00173

更多精彩推荐
  • Get了!用Python制作数据预测集成工具 | 附代码

  • 赠书 | 人工智能识万物:卷积神经网络的前世今生

  • 万字长文总结机器学习的模型评估与调参 | 附代码下载

  • “Talk is cheap, show me the code”你一行代码有多少漏洞?

  • 科普 | 定义 Eth2.0 中的验证者质量

简单的特征值梯度剪枝,CPU和ARM上带来4-5倍的训练加速 | ECCV 2020相关推荐

  1. 服务器CPU X86 ARM PowerPC RISC介绍

    服务器CPU X86 ARM PowerPC RISC RISC是一种执行较少类型计算机指令的微处理器,起源于80年代的MIPS主机(即RISC机),RISC机中采用的微处理器统称RISC处理器.这样 ...

  2. 英伟达颠覆CPU!Arm架构专为AI而生,性能超x86十倍

    30系显卡买不到?英伟达老黄刚刚又发布一款"空气CPU". 不过就算你抢不到也没关系,因为这款CPU专门为服务器设计,到2023年才能发布. 刚刚,在英伟达举办的GPU技术大会上( ...

  3. 英伟达发布“空气CPU”,Arm架构专为AI而生,性能超x86十倍,与自家GPU更搭

    梦晨 晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 30系显卡买不到?英伟达老黄刚刚又发布一款"空气CPU". 不过就算你抢不到也没关系,因为这款CPU专门为服务器 ...

  4. MNIST在CPU、FPGA、ARM上的运行对比

    MNIST在CPU.FPGA.ARM上的运行对比 CPU与FPGA对比   CPU    FPGA CPU上进行MNIST推断   环境配置   实验代码   实验结果 FPGA上进行MNIST推断 ...

  5. 国产CPU借助Arm由终端逆推进军服务器市场

    中兴禁售事件让人们更加关注中国服务器CPU的发展问题,毕竟中国在云计算和互联网产业的发展现今是如此兴旺,也是中国经济结构升级的重要一部分.嵌入式定制 中国在服务器CPU的发展上一直处于追赶的阶段,政府 ...

  6. 对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推。这个整数在第n位上的数字记作x,如果x和n的奇偶性相同,则记下一

    题目内容: 对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值.对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推.这个整数在第n位上的数字记作x,如果x和n的奇偶性相 ...

  7. MPlayer在ARM上的移植(S5PV210开发板)

    MPlayer 1.0已经把大部分解码库都自带了,如ffmpeg,但是自带的音频库在S5PV210下效果非常不好.换成使用libmad效果不错.因此MPlayer 在ARM-Linux的最简单的移植只 ...

  8. 毕昇 JDK:“传奇再现”华为如何打造 ARM 上最好用的 JDK?

    文章目录 前言 一.什么是毕昇 JDK? 1.1.毕昇 JDK 发展历程 1.2.毕昇 JDK 的支持架构 1.3.毕昇 JDK.OpenJDK 和 Oracle JDK 区别 二.为什么要做毕昇 J ...

  9. 【华为云技术分享】手把手教你如何在ARM上源码编译Redis

    一.基础环境信息 OS: Euler OS 2.8 CPU: ARM 二.编译和安装Redis步骤如下 执行如下命令,获取Redis源码. wget http://download.redis.io/ ...

最新文章

  1. Go 语言 2019 调查报告发布(内含 Go 语言图谱下载)
  2. vue音乐笔记_Vue音乐项目笔记(二)
  3. 如何用python爬取公众号文章搜狗微信搜索_python如何爬取搜狗微信公众号文章永久链接的思路解析...
  4. 为已经存在的用设置表空间
  5. vsftpd配置(虚拟用户、匿名用户登录)
  6. 活动报名场地预约自定义表单小程序开发
  7. 史上最简单的土地利用转移矩阵分析(附练习数据下载)
  8. unity让物体做圆周运动、椭圆运动、双曲线运动
  9. 引用 乐嘉写给所有女人的话,男人千万别错过!
  10. 算法训练Day25 | LeetCode216. 组合总和III(和77.组合很像!);LeetCode17. 电话号码的字母组合(不同集合中组合)
  11. 《全基因组测序WGS数据分析——2.FASTA和FASTQ》学习笔记
  12. python读取图片像素矩阵
  13. php操作pdf文档输出,PHP生成PDF文档实用技巧
  14. DEEP COMPRESSION: COMPRESSING DEEP NEURAL NETWORKS WITH PRUNING, TRAINED QUANTIZATION AND HUFFMAN
  15. 【助教工作】2021团队项目助教跟班全攻略
  16. 一个命令就可启用的微信机器人WhoChat
  17. make clean与make distclean的区别
  18. 【BUG解决】sudo apt-get update 报错 E: The repository ‘http://xxx Release‘ does not have a Release file.
  19. html编辑器自定义脚本,我的自定义MAX脚本编辑器,代码高亮功能
  20. C# 分析器错误消息: 未能加载类型“XXXX”2种情况解决

热门文章

  1. 营销自动化的4大预测分析错误
  2. deepin开通ssh
  3. java 解决Html table的rowspan问题(osc处女作)
  4. 大规模服务设计部署经验谈
  5. mysql中group_contact函数的使用
  6. rabbitMQ入门程序
  7. 自动驾驶测试:MIL、SIL、PIL、HIL
  8. Douglas-Peucker算法
  9. CyberRT使用笔记
  10. 多目标pareto最优解集构造方法