前言

就目前而言,深度神经网络的层数和训练时间变得越来越多。一方面,人们想要在处理器上面下功夫,但是处理器的处理速度也十分有限。造成目前一个比较深的神经网络的训练时间有时候往往需要一到两周,基于目前的困难,就有人提出了解决方式。
    首先,在神经网络训练的整个训练过程中,最占用时间的无疑是乘法操作。是浮点型数据的乘法尤其消耗计算量,往往需要很多个Clock。那么,如果把所有全连接的权值全部变成1,或者-1的话,乘法运算就变成了简单的加减法,这无疑是非常节约计算时间的。目前的权值简化策略大概分为两种,Binary和Ternary。Binary是把权值简化为1和-1,而Ternary是把权值简化为1,-1,0两者的区别是什么呢?Binary在比较简单的库表现比较好比如说MNIST, CIFAR-10,但是在比较复杂的库比如说ImageNet上表现相对于Ternary有差距。

0 摘要

我们引入三元权重网络(TWN),这个神经网络的权重被限制为+1,0和-1。 通过最小化全精度(浮点或者双精度)的权重与三元权重之间的欧几里得距离。这种基于阈值的三元函数可以很容易并且快速地被优化,获得近似解。TWN和最近提出的二元权重网络相比有更强的表达能力,而且比后者更有效。相比于全精度权重网络,三元权重网络实现了16×或32×的模型压缩率,而且需要的乘法运算也更少。在MNIST,CIFAR-10和大规模ImageNet数据集的测试表明,TWN的性能仅略差于全精度权重网络,但优于二元权重网络。

1 介绍

深度神经网络在计算机视觉任务中取得了显著的效果。这激发了将这种最先进的DNN模型部署到智能手机或嵌入式设备等实际应用的兴趣。然而,这些模型通常需要相当大的内存和计算能力,很容易使得小型嵌入式设备的内存,电池电量和计算能力负担过重。 因此,部署它仍然是一项挑战。

1.1 二元权重网络和模型压缩

为了解决内存和计算能力的问题,一些方法试图在DNN模型中对权重或激活值进行二值化。BinaryConnect 使用符号函数对权重进行二进制化。 XNOR-NET采用相同的二值化函数,但增加了一个额外的比例因子。基于这种二值化方法的扩展BinaryNet和XNOR-NET,它们的权重和激活值都是二元值。这些模型消除了前向传播和后向传播中大部分乘法。因此,用于深度学习的专用硬件可以从中受益。另外,二元权重网络实现高达32×或64×模型压缩率。
     除了采用二值技术,另一些压缩方法的重点在于用更少的参数。通过以有损压缩的方式来保持准确性。 SqueezeNet是一个比AlexNet 参数少50倍的模型,但在ImageNet上保持同AlexNet级别的精度。 深度压缩是另一种最近提出的使用修剪,量化和霍夫曼编码来压缩神经网络的方法。 它将AlexNet和VGG-16的存储需求分别减少了35倍和49倍,而不会降低准确性。

2 三元权值网络(TWN)

我们通过引入三元权重网络(TWN)来解决有限的内存和有限的计算资源问题。它将权重限制为三值:+1,0和-1。 TWNs试图在全精度权重网络和二元权值网络之间取得平衡。详细的叙述如下:
表达能力:在VGG,GoogLeNet 和残留网络等最新的网络体系结构中,最常用的卷积滤波器大小为3×3。 使用二值权重,有 23×3=512 2 3 × 3 = 512 2^{3 \times 3 } = 512个模板。 然而,具有相同尺寸的三值权重拥有 33×3=19683 3 3 × 3 = 19683 3^{3 \times 3 } = 19683个模板,其表现能力比二值权重增强了38倍。
模型压缩:在TWN中,每一个权重单元需要2字节的存储空间。 因此,与浮点(32位)或双精度(64位)精度相比,TWN实现了高达16倍或32倍的模型压缩率。 以VGG-19为例,该模型的全浮点权重版本需要约500M的存储需求,三元权值可降至约32M。 因此,虽然三元权值网络的压缩率比二元权值网络的压缩率低2倍,但仍然可以压缩大多数现有的最先进的DNN模型。
计算要求:与二元权值网络相比,TWN拥有额外的0值。 但是,0值不增加任何的乘法运算。 因此,TWN中的乘法累加操作次数与二元权值网络相比保持不变。 而且,它对于专用DL硬件来训练大规模网络也具有友好性。
在下面的部分中,我们将详细描述三元权重网络的问题和一个近似但有效的解决方案。 之后,介绍了一种简单的误差反向传播的训练算法,最后描述了运行时间的使用情况。

2.1 公式

为了提高三元权值网络的性能,我们最小化全精度权值 W W W和三元权值Wt" role="presentation" style="position: relative;">WtWtW^t之间的欧氏距离。公式如下:

{α∗,Wt∗=argminα,WtJ(α,Wt)=||W−αWt||22s.t.α≥0,Wti∈{−1,0,1},i=1,2,...,n(1) { α ∗ , W t ∗ = a r g m i n α , W t J ( α , W t ) = | | W − α W t | | 2 2 s . t . α ≥ 0 , W i t ∈ { − 1 , 0 , 1 } , i = 1 , 2 , . . . , n ( 1 )

\begin{cases} \alpha ^*,W^{t*}=argmin_{\alpha,W^t}J(\alpha,W^t)=||W-\alpha W^t||^2_2 \\ s.t. \; \; \alpha \geq 0,W^t_i \in \{ -1,0,1\},i=1,2,...,n \quad \quad \quad \quad \quad \quad \quad(1) \end{cases}
其中,n是卷积核的数量,权重估计 W≈αWt W ≈ α W t W \approx \alpha W^t。三元权值网络的前向传播如下:

{Z=X×W≈X×(αWt)=(αX)⨁WtXnext=g(Z)(2) { Z = X × W ≈ X × ( α W t ) = ( α X ) ⨁ W t X n e x t = g ( Z ) ( 2 )

\begin{cases} Z=X \times W \approx X \times (\alpha W^t)=(\alpha X)\bigoplus W^t \\ X^{next}=g(Z) \end{cases} \quad \quad \quad \quad \quad \quad \quad(2)
其中, X X X是输入的矩阵块;×" role="presentation" style="position: relative;">××\times是卷积运算或内积运算; g g g是非线性激活函数;⨁" role="presentation" style="position: relative;">⨁⨁\bigoplus内积或卷积运算,无任何乘法; Xnext X n e x t X^{next}是输出的矩阵块。

2.2 三元函数的近似解决方案

这个算法的核心是只在前向和后向过程中使用使用权值简化,但是在参数更新仍然是使用连续的权值。
    简单的说就是先利用公式计算出三值网络中的阈值:
Δ∗≈0.7×E(|W|)=0.7n∑ni=1|Wi| Δ ∗ ≈ 0.7 × E ( | W | ) = 0.7 n ∑ i = 1 n | W i | \Delta^* \approx 0.7 \times E(|W|)=\frac{0.7}{n}\sum^n_{i=1}|W_i|
也就是说,将每一层的权值绝对值求平均值乘以0.7算出一个 Δ Δ \Delta作为三值网络离散权值的阈值,具体的离散过程如下:

Wti=ft(Wi|Δ)=⎧⎩⎨+1,0,−1,ifWi>Δif|Wi|≤ΔifWi<−Δ W i t = f t ( W i | Δ ) = { + 1 , i f W i > Δ 0 , i f | W i | ≤ Δ − 1 , i f W i < − Δ

W^t_i =f_t(W_i|\Delta)=\begin{cases} +1,& if \; \;\;\;W_i > \Delta \\ 0,& if \;\; |W_i| \leq \Delta \\ -1,& if \;\;\;\;W_i
这样,我们就可以把连续的权值变成离散的(1,0,-1),那么,接下来我们还需要一个 α α \alpha参数,具体干什么用后面会说:这个参数的计算方式如下:
α∗Δ=1IΔ∑i∈IΔ|Wi| α Δ ∗ = 1 I Δ ∑ i ∈ I Δ | W i | \alpha^*_\Delta=\frac{1}{I_\Delta}\sum_{i \in I_\Delta}|W_i|
|IΔ| | I Δ | |I_\Delta|这个参数指的是权值的绝对值大于 Δ Δ \Delta的权值个数,计算出这个参数我们就可以简化前向计算了,具体简化过程如下:

可以看到,在把 α α \alpha乘到前面以后,我们把复杂的乘法运算变成了简单的加法运算,从而加快了整个的训练速度。

2.3 SGD训练

我们使用随机梯度下降(SGD)方法来训练TWN。 我们在前向传播和反向传播期间使用三值权重,但不在参数更新期间使用。 此外,还采用了两个有用的技巧:批量标准化和学习率衰减。 我们也使用动量。

2.4 模型压缩和运行时间

运行时达到16倍或32倍模型压缩率。

3 实验

不同数据集上,网络结构和参数如下表:


可以看到,其实三值网络在ImageNet这种库上面,虽然效果好于二值网络但是还是不够准确,实际的工作中我们可以考虑在准确率到达一定程度后,再去使用简化权值网络达到加快训练时间同时保护识别精度的效果。

Ternary weight networks 论文笔记相关推荐

  1. Ternary weight networks

    文章目录 Ternary weight networks​ Problem formulation Approximated solution with threshold-based ternary ...

  2. Deep Anomaly Detection with Deviation Networks 论文笔记

    Deep Anomaly Detection with Deviation Networks 论文笔记(自己回顾用) 问题描述 算法框架 伪代码 总结&个人计划 问题描述 论文利用少部分有标签 ...

  3. Oriented Response Networks 论文笔记

    Oriented Response Networks 论文笔记 Oriented Response Networks 2017cvpr 作者主业:https://yzhou.work/ORN/ 论文地 ...

  4. Procedural Noise Adversarial Examples for Black-Box Attacks on Deep Neural Networks论文笔记

    Procedural Noise Adversarial Examples for Black-Box Attacks on Deep Neural Networks论文笔记 0. 概述 如今一些深度 ...

  5. [CVPR 2016] Weakly Supervised Deep Detection Networks论文笔记

    Weakly Supervised Deep Detection Networks,Hakan Bilen,Andrea Vedaldi https://www.cv-foundation.org/o ...

  6. 权值简化(1):三值神经网络(Ternary Weight Networks)

    三值神经网络: 本文是对中科院两位科研工作者的文章的理解翻译: 就目前而言,深度神经网络的层数和训练时间变得越来越多.一方面,人们想要在处理器上面下功夫,但是处理器的处理速度也十分有限.造成目前一个比 ...

  7. EWC:Overcoming catastrophic forgetting in neural networks论文笔记

    EWC:Overcoming catastrophic forgetting in neural networks 概要 根据某些参数对先前任务的重要性来缓解某些参数权重的学习率 EWC 约束重要的参 ...

  8. SA-ConvONet: Sign-Agnostic Optimization of Convolutional Occupancy Networks论文笔记

    Motivation 在不考虑局部场之间的几何关系的情况下,现有方法通常需要精确的法线来避免局部场重叠区域中的符号冲突问题,这严重限制了它们对原始扫描的适用性,因为在原始扫描中表面法线可能不可用.尽管 ...

  9. Weighted-Entropy-based Quantization for Deep Neural Networks 论文笔记

    ---恢复内容开始--- 摘要 量化被认为是优化神经网络模型的推理成本的最有效方法之一,用于部署到具有严格资源限制的移动和嵌入式系统.在这种方法中,在严格的精度损失约束(例如,1%)下提供低成本量化是 ...

最新文章

  1. 难题:嵌套computeIfAbsent
  2. 查经 民数记3章 利未人
  3. 面对自然灾害,科技能做什么?
  4. Custom Basic Authentication for IIS
  5. 表结构设计器(EZDML)1.98版公布
  6. Matlab-中寻找峰值函数,波峰波谷
  7. 用代码排出自己的名字
  8. U盘被写保护怎么解除?
  9. MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
  10. 【WEB搜索技术】课程学习大纲与学习感悟
  11. Supported media formats (支持的媒体格式)
  12. 护眼体验新升级,引领2023护眼风潮,南卡Pro护眼台灯评测报告
  13. 百亿外卖CPS市场该怎么玩?(附公众号小程序裂变源码及搭建教程)
  14. 三面蚂蚁金服成功拿到offer,成功收获美团,小米offer
  15. 应用在开关模式电源中的光耦合器
  16. python生成图片base64编码及阿里云验证码识别
  17. 数据结构c语言版入门教材,《数据结构(C语言版)》C语言-教材-数据结构.pdf
  18. Python求100以内素数的和。
  19. CCA OBSS/PD
  20. 在MS CRM中使用Excel导入/导出的功能对数据进行批量处理

热门文章

  1. python关键词挖掘_seo必备工具,python采集关键词挖掘数据
  2. html 打开腾讯qq,qq软件管理器 QQ应用管理器里面的腾讯软件打不开
  3. corners设置多个属性
  4. 记录一下对接腾讯云IM的部分接口(群聊、单聊)
  5. 东哥带你刷图论第四期:二分图的判定
  6. vega8显卡和mx250哪个好_集成Vega 8 GPU游戏性能出色,远超GeForce MX250
  7. 国外免费CDN CloudFlare申请教程
  8. 设变量 a 是整型, f 是实型, i 是双精度型,则表达式 10+ ‘ a ’ +i*f 值的数据类型为( )。
  9. java面试题想涨薪时使用
  10. Spark操作Hive(开启Kerberos认证)代码提交华为云DAYU的MRS Spark组件--方法流程及注意事项