您当前的位置: 首页 > 

FPGA硅农

暂无认证

  • 2浏览

    0关注

    282博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

BNN阅读笔记

FPGA硅农 发布时间:2020-09-20 13:20:58 ,浏览量:2

本文是的论文阅读笔记。

Abstract Purpose

今天,DNN在取得巨大成功的同时,也存在着一些问题:一是计算量大,二是模型参数过多。尽管他们可以在GPU等平台上进行很好的训练,但是,若要将这些模型实际部署到目标设备上(这些设备一般都是计算资源有限、对功耗及其敏感的),还是存在着很大的困难。本文提出的BNN就旨在解决这一问题,通过对计算和存储两方面的优化来使得深度学习模型的部署更加容易。

Method 一

首先,作者提出了一个二值化的神经网络模型(BNN),在这个模型中,权重和激活值被量化为-1和1并参与前向传播的计算,但同时也保留了浮点型的权重,以在后向传播的梯度更新过程中使用;针对BNN中的BatchNormalization操作,作者提出了计算量更小的Shift-Based BatchNormalization(SBN);针对BNN的优化器,作者提出了更加合适的Shift based AdaMax优化器。

其次,作者专门针对BNN在前向传播过程中涉及到的bit-wise opertaion(位操作),设计了一个二值矩阵乘法GPU核。

Result

1、在MNIST, CIFAR-10 and SVHN数据集上几乎达到了和普通模型一样的准确率。 2、在BNN的前向传播过程中,存储消耗大大降低(访存大小和访存次数),并且浮点类型的计算被位操作所替代,这些都大大提升了模型的power-efficiency,并论证了使用专用硬件可以使得模型的时间复杂度减少60%。 3、作者设计的二值矩阵乘法GPU核比普通的GPU核快了7倍左右,并且无精度损失。

方法 How to Binarize?

在传统的神经网络中,激活和权重都是32位的浮点数,而在BNN中,它们都只有1和-1两种取值,在本文中,作者提出了两种由浮点数转化为二值的方法,分别是 Deterministic Binarization和Stochastic Binarization。 Deterministic Binarization方法: 在这里插入图片描述 Stochastic Binarization方法: 在这里插入图片描述 理论上,Stochastic Binarization比Deterministic Binarization更具吸引力,效果也更加好,但是前者在硬件的实现上存在一定难度,因此本文均采用Deterministic Binarization方法。

Is Floating Weight Necessary?

在BNN的前向传播中,权重和激活都被量化为1和-1,但是,在反向传播中,浮点型的权重是有必要保留的,反向传播的梯度也应该是浮点型的,并且这个梯度应该更新浮点型的权重而不是二值化的权重。

ForwardPropagation

前向传播时,我们先将该层输入的权重和激活二值化,然后进行计算(卷积or全连接),然后通过BN层,此时BN层输出为浮点数,如果没有达到最后一层,那么再将这个浮点数输出二值化,若是最后一层,则不进行操作。 在这里插入图片描述 前向传播的过程比较容易理解,在模型部署时我们也只需要考虑前向传播即可。

BackPropagation

在这里插入图片描述 这里需要注意的是, g a k g_{a_k} gak​​应该等于 g a k b g_{a_k^b} gakb​​乘以 s i g n ( a k ) sign(a_k) sign(ak​)的导数,而 s i g n ( a k ) sign(a_k) sign(ak​)的导数为几乎处处为0,这样梯度就无法继续传播,因此,作者用 1 ∣ a k ∣ < = 1 1_{|a_k|

关注
打赏
1658642721
查看更多评论
立即登录/注册

微信扫码登录

0.0395s