Introduction
边缘神经计算需要一些轻量级的网络,而轻量级的网络是我们进行压缩剪枝等对于网络的优化操作之后获得的。
Edge computing
Memory Computation
Methods
Binary Weight将权重从float型变为1bit
Binary Connect
Binary Weight Activation(图像特征图)
BNN, XNORnet, DOReFa-Net
只对权重进行二值化的话,feature map图像特征图依旧是float型的这样的话在运算中依旧需要进行其他运算处理,但为保证网络运行中间所添加的BatchNormBN层不能被二值化, BN层最大的作用就是可以加速学习并减少权重尺度的影响,带来一定量的正则化并提高CNN的性能,但是BN设计了很多的矩阵运算会降低运算速度。因此,DOReFa-Net论文提出了一种Shift-based Batch Normalization(SBN)层。SBN的优点是几乎不需要矩阵运算,并且不会带来性能损失。这个函数实现了在不使用乘法的情况下近似计算BN,可以提高计算效率。同样也是为了加速二值网络的训练,改进了AdaMax优化器。
Binary connect 2015
权重Wb是float类型,-4096-4096值域变化太大导致无法收敛因此会导致网络非常的稀疏。训练中取权重符号将权重在forward和backward直接进行二值化看为一个符号再进行传播。和全精度结果差距较大。
Binarized weights
From float to 1 bit
Github Theano code
BNN
主要的贡献在于它将activition也进行了二值化,优点在于它将所有的加减运算全部变成了位运算。
XNOR Net
在一定程度上消除了它相对于正负1这一段的梯度和它本身之间的梯度的差别。考虑了输入和输出两者之间量级的差距。比较了xnor和之前两种网络在两个数据集上的训练结果
BWN(binary weights)只将权重二值化
XNOR-Net(Binary weights inputs) 将权重和Features二值化
How to train Binary Network近一段时间的重点AAAI论文
Learning Rate
记录了一个float类型的权重只不过是在inference的时候把它转换成正负1。但是这会导致一个问题,假如我们有一些全精度的权重是1e和-3这个量级的经过gradient之后就很容易在0附近抖动,进而使得这些神经元在经过inference之后很容易在正负1之间跳转导致一种很不稳定的情况发生所以作者发现如果降低learning rate 会降低它符号翻转的这种可能性从而使得网络更稳定效果更好
PReLU(parametric ReLU)
ReLU
ReLU=max(0,x)=0, if x<0x, if x≥0
PReLU
fx=xi xi>0αixi others
αi是可通过反向传播学习到的参数
对于xnor的优化,将原来网络中的一部分parametric融合进了relu里
Regularization to +1-1 正则化
将权重的差距拉大
ScaleLayer at last
将BN层变为一个可以学习的或者是设置一个固定的skilllayer 比如将最后一层设置为1,1,-3每一个神经元激活变成原来的10-3*10-3
Multiple binarizations
是对于中间层featuremap的优化操作,更适合DoRaFaNet。
需要寻找更多的技巧去探索binary neural network的上限
Take home message
Binary in forward backward
Memorize in float
Gradient to Binary >Gradient to Float > Update
尽可能地消除float类型的值和binary之后的值之间的差异
Core: The link between two kinds of gradient
参考了b站北京大学杨朝晖同学的工作汇报