论文笔记 Optimal Conversion of Convolutional Artificial Neural Networks to Spiking Neural Networks

这篇是ICLR2021在审匿名论文《Optimal Conversion of Convolutional Artificial Neural Networks to Spiking Neural Networks》。

文章针对ANN到SNN的转化进行了误差分析,结论是网络的整体误差来源于每层的误差累积,提出减少每一层的误差的方法:1使用Threshold来抑制过多的激活值,从而能用更少的timesteps(simulation time);2使用Shift的方法补偿激活函数的误差。

方法

对ANN到SNN的建模

  • ANN d=h(Wa)
  • SNN $a’_{l+1}=h’(Wa’)$
    • 其中a’是post synaptic potential(PSP)突触后电位,化学突触的突触后末端的膜电位的变化,也就是前一层由于spike的减少的电位
  • $a’_{l+1}=Wa’-v(T)/T$
    • v(T)是T时刻的膜电位
  • $a’{l+1}=h’(Wa’)=V{th}/T*clip(floor(TWa/V_{th}),0,T)$
    • 输出脉冲等于输入脉冲造成的膜电位影响能被当前层PSP,也就是V_{th}的多少倍

分解转化误差到每层

  • 通过理论分析将转化误差问题化归为最小化每层的激活值误差问题

减少误差的方法

  • ANN上使用Threshold(类似ReLU6)来抑制过多的激活值
    • 取1或者2
  • SNN上使用Shift来减少激活函数带来的误差
    • h’(z)和h(z)存在系统误差,需要将数值shift一下
    • $E_z[h’(z-\delta)-h(z)]^2$
    • $\delta=V_{th}/2T$
  • 最后总误差控制到$\Delta L\approx LV_{th}^2/4T$

转换流程

  • 初始化V_th=0
  • 采样一系列samples
    • $V_{th}^l=max(V_{th}^l,max(a_l))$
  • weight:=ANN.weight
  • bias:=ANN.bias+V_{th}/2T

实验

  • ANN上使用Threshold对结果影响不大,甚至还有提升
  • timesteps可以讲到50以下基本不掉精度
    • Shift单独用可以在80以下不掉精度
    • Threshold单独用可以在60以下不掉精度

总结

这篇paper从理论的角度来探讨了ANN转换SNN的技术,思路非常棒,使用PSP也给我提供了一个新的视角。
但是这个既没有Quantization也没处理Pooling和BN层,所以仅从Conv上可以参考。

论文笔记 《Binary Neural Networks: A Survey》

这篇论文是发表在期刊Pattern Recognition的论文《Binary Neural Networks: A Survey》,作者来自于北航,一座Haotong Qin,通讯Xianglong Liu,也是IR-Net的作者。

文章对2020年及以前二值神经网络进行了总结,把二值化的方法分为:直接量化、优化方法量化(包括最小化量化误差、升级网络的loss function、减少STE梯度的误差)

论文

简单的二值网络

  • 用固定的量化函数直接量化weight和activation。
  • 使用STE来finetune
  • BinaryConnect 2016
  • BNN (Binarized Neural Networks)

最小化量化误差

  • $J(b,\alpha)=|x-\alpha b|^2$
  • $arg\min_{\alpha b}J$
  • Binary Weight Netowrks
  • XNOR-Net
  • DoReFa-Net
  • ABC-Net
  • LQ-Nets

升级网络的Loss function

  • 联合优化binarization和task-specific objective
  • 问题
    • “degeneration”, “saturation”and “gradient mismatch”
  • Distilled BNN
  • Distillation and Quantization
  • BNN-DL
  • CI-BCNN
  • INQ(Incremental Network Quantization)

减少STE梯度的误差

  • 解决sign和STE的梯度不匹配问题
  • Bi-Real net
  • BNN+
  • IR-Net

其他应用

  • BNN的鲁棒性比全精度要好
    • 变化输入对BNN影响不大
  • BNN有利于解释神经网络
    • 重要性排序
    • 改变01对结果影响大的

训练技巧

  • 网络结构的变换
    • 重新放置Pooling
    • Conv前面加入BN层
    • 连接全精度网络和binary网络
    • 增加channels
  • 网络hyper-parameters
    • Adam
    • momentum of BN
  • 梯度估计

总结

看完对这个领域终于有个蓝图的认知了,虽然分类的理由不够充分,还有一些模糊不好分类的工作。想了有一些可以做的点。

论文笔记 《Quantization Networks》

这篇论文是发表在CVPR2019的论文《Quantization Networks》,作者来自达摩院,第一作者是Jiwei Yang(中科大,田新梅学生),mentor 华先胜(IEEE Fellow 达摩院城市大脑人工智能负责人)。

这篇论文提出了一种新的可微分的方法实现网络权重和激活值的量化,取得了不错的效果。量化函数被建模成多个Sigmoid函数的线性组合,整个网络可以直接通过反向传播被端到端训练。

方法

量化函数的重新formulation

  • $y=\sum_{i=1}^n s_i \mathcal{A}(\beta x-b_i)-o$
    • $\beta$和$b_i$决定了每个量化位点的位置
      • $b_i$是第i个量化区间的开始点
    • $\mathcal{A}$是unit step function单位越界函数,>0为1,<0为0
    • $s_i$决定每个量化位点的间隔
      • 如{-4,-2,-1,0,1,2,4}
    • $o$是全局偏移量,是$1/2 \sum_{i=1}^n s_i$

使用Sigmoid函数来近似单位跃阶函数

  • $\sigma(Tx)=\frac{1}{1+exp(-Tx)}$
    • 当T越大的时候,和单位跃阶函数相近
    • 当T=0的时候,等价于线性函数
  • $y=\alpha (\sum_{i=1}^n s_i \sigma(T(\beta x - b_i))-o)$
    • 训练的时候不断增加T
    • $x, \alpha, \beta, b_i $的梯度都能求出
  • 训练的时候使用近似函数,前向预测的时候使用量化函数

实验

  • ImageNet ResNet-18(raw 70 top1 )
    • W/A 1/32 66.5
    • 3/32 70.4
    • 1/1 53.6
    • 1/2 63.4
  • SSD pascal VOC (raw 77.8 mAP)
    • 2/32 76.3
  • 影响因素
    • 非均匀量化,bias做成K-means,性能高一点点
    • pretrained model 效果好很多
    • T的收敛速度,需要在{5,10,20,40}里面选择调参

总结

通过重新formulate量化函数,可以比较好的找到一种可微分的近似方法,思路很清晰。这个方法没有名字,要是有个名字就好了。

论文笔记 《Path-Level Network Transformation for Efficient Architecture Search》

这篇论文是发表在ICML2018的《Path-Level Network Transformation for Efficient Architecture Search》

论文笔记 《Searching for MobileNetV3》

这篇论文是发表在ICCV2019的《Searching for MobileNetV3》,作者是Google Brain的Quoc V. Le和Hartwig Adam组。第一作者是Andrew Howard。

这篇论文结合NAS以及SE Block的设计新方法改进MobileNetV2。

方法

结合SE Block新设计

  • 使用MobileNetV2的inverted residual block+MnasNet的SE
  • 仅在部分层使用se-block

使用NAS+NetAdapt

  • NAS直接用MnasNet搜到的结构
  • NetAdapt在这个搜到的结构上,随机sample每一层的expand ratio,和每一个block的bottleneck size,做Evolution

改进的激活函数

  • hswish替代原来的swish,不用sigmoid用ReLU6
  • $h-swish(x)=x RELU6(x+3)/6 $
  • 在网络前面block里面使用relu,后面使用hswish

改进block前后网络结构

  • 前面stem,使用16channels替代32channels
  • 最后一层使用avg-pool替代1x1Conv

Segmentation

  • 提出Lite R-ASPP(LR-ASPP),减少了计算量,提升了性能

总结

结合一些已有的算法,做了详实的实验,得到了很好的效果。

论文笔记: 《MicroNet: Towards Image Recognition with Extremely Low FLOPs》

这篇论文是2020年放在Arxiv上的《MicroNet: Towards Image Recognition with Extremely Low FLOPs》,第一作者是UCSD的Yunsheng Li,其它作者是Mentor是微软AI&R Ambience Intelligence Zicheng Liu team,这篇论文和Dynamic ReLU一脉相称。

这篇论文提出了在保持通道数的情况下,如何减少连接数和减少层数来减少网络计算量,同时保持精度。首先提出Micro-Factorized的卷积将Depth-wise和point-wise的卷积拆分成多个卷积;其次提出了Dynamic Shift-Max这种动态的activation。

方法

principle

  • 在避免减少卷积通道数的情况下减少node的连接数
  • 减少网络的层数,同时提升activation的非线性性能

Micro-Factorized Convolution

  • 将Point-wise的卷积分成多个卷积,W=PφQ
    • 原本是C->C的卷积通道数
    • P压缩通道数到C/R,采用G个group的卷积
    • φ是一个Shuffle层
    • Q是一个提升通道到C,采用G个group的卷积
    • 为了保证所有的output channel和input channel相连接,推算出G=sqrt(C/R)
  • 将Depth-wise的卷积搞成kx1和1xk的卷积

Dynamic Shift-Max

  • 将J个Group的activation做weighted sum,weight使用SE block得到的attention
  • 使用K套不同的SE block的Weight,求最大值
  • $y_i=\max_{k\le K}{ \sum_{j} a^k(x) x_j }$
    • $x_j$是第j个group里面的activation

网络

  • Micro-Block-A
    • Micro-Factorized depthwise + pointwise conv(grouped)
    • 在前面的层效果好,因为channel数不多,所以depthwise卷积开销不大
  • Micro-BLock-B
    • Micro-Factorized depthwise(提升channel数量) + Micro-Facgtorized pointwise conv
  • C
    • Micro-Factorized depthwise + pointwise conv

实验

  • M0
    • AABCCC
    • 6M MAdds
    • 53top-1 ImageNet
  • Pose Estimation和Segmentation的实验也证明比MobileNet好很多

总结

  • 这篇论文对于连接性和通道数的分析很有意义,通过拆分连接达到减少计算量的目的。但实际硬件的效率可能和访问关系较大,再减少连接数可能不是特别有优势了。对于非线性的问题,我认为证据不足,需要继续研究。

论文笔记 《Drop an Octave: Reducing Spatial Redundancy in Convolutional Neural Networks with Octave Convolution》

这篇文章是发表在ICCV2019的《Drop an Octave: Reducing Spatial Redundancy in Convolutional Neural Networks with Octave Convolution》,作者是Facebook AI的Yunpeng Chen,博士毕业于新加坡国立。

这篇文章从频域的角度分析了图像中高频和低频信息的作用,通过改造卷积,让卷积显式地分别处理高频和低频的特征,从而提升准确率,降低计算量。

方法

图像中高频和低频信息的作用

  • 高频:信息变化快,提取的是细节的信息
  • 低频:信息变化慢,提取的是整体的信息

Octave表示

  • 使用低分辨率图像表示低频特征
  • 使用高分辨率图像表示高频特征

Octave Conv

  • 卷积分别处理低频和高频特征
  • 信息交互
    • 低频特征Conv之后升维度
    • 高频特征降维度之后Conv
    • 和普通处理的信息加起来

实验

  • ImageNet
    • 随着一层里面高低频率信息的比例变化,比例适中acc最高,整体呈现小山包形状
    • 相比普通的resnet,最高提升了大约2个点
  • 频率分析
    • 直观从频域图上看
    • 低分辨率组不包括高频信息,反之亦然
    • 证实了低频组提取低频信息的假设

总结

显式地把一些Heuristic的东西用网络结构的方式表现出来,值得学习。

论文笔记 《Universally Slimmable Networks and Improved Training Techniques》

这篇文章是发表在ICCV2019的《Universally Slimmable Networks and Improved Training Techniques》,作者是UIUC的 Jiahui Yu。属于Thomas Huang(黄煦涛)组。 Jiahui Yu是中科大少年班本科毕业,2020年UIUC博士毕业现在在Google Brain做Research Scientist。

这篇文章在之前Slimmable Networks的基础上进行了改进,使得它能以任意的宽度运行。文章提出了三明治规则和就地知识蒸馏来提升训练速度的和测试的准确率。

方法

任意的width实现

  • sample from 0.25x - 1.0x

BN训练

  • 不要switchable BN
  • 训练使用正常的BN,但是在一个固定大小的网络测试之前使用1000张图片重新计算BN的mean和var

三明治规则

  • 发现性能被最小的网络和最大的网络bound住了
  • 优化最小的网络和最大的网络能够隐式的优化所有的width
  • 使用最小的和最大的网络加上sample中间大小的几个网络进行前向和反向传播

就地知识蒸馏

  • 使用当前的最大网络的输出作为其他网络的知识蒸馏目标

实验

  • ImageNet MobileNetv1v2
    • 相比于独立训练和switchable的训练,平均准确率提升了
    • 在max和min上面表现尤为突出
  • Ablation 三明治训练
    • 效果很好 max+random的训练没有作用,但是min+random的训练非常好
  • Sample的越多越好,但2个sample的width就够好了
  • width的lower bound有影响

总结

小改进,推翻了之前switchable的方法。三明治定理很有意思,可以继续研究。max和min的这个bound对interval的影响也可以进一步探究,尤其是可解释性的问题。

论文笔记 《Slimmable Neural Networks》

这篇文章是发表在ICLR2019的《Slimmable Neural Networks》,作者是UIUC的 Jiahui Yu。属于Thomas Huang(黄煦涛)组,Thomas Huang是华人计算机视觉宗师之一,已于2020年4月25日去世。

这篇文章提出了使用一种能以不同网络宽度来前向预测的网络训练方法,可以适用于不同的准确率-计算量的tradeoff场景。作者认为BN层的统计差异是不同width的差异,因此提出了一种可切换BN。

方法

Naive的训练方法

  • 直接训练一个shared weight的网络,存在inconsistency的问题
  • 使用incremental的方法训练,没有联合适应性,准确率低

Switchable BN

  • 每个BN层对于不同的width使用不同的参数

训练

  • 每个iteration,在不同的width前向反向,加和gradient做update

实验

  • MobileNet ShuffleNet ResNet-50 4个width ImageNet
    • 和Individual比起来,基本不掉点,MobileNet V1 还增点
  • Faster Detection, Mask detection
    • AP全都增长
  • Top-activated Images Visualization
    • 相同的channel在不同的width中扮演相同的角色
  • BN层的值
    • 浅层几乎一样,深层不一样
    • 不同的features可能有不同的语义特征(在高层)

总结

BN层的问题在这里详细讨论了,后悔之前做ENAS4D的时候没有看这篇论文。
不同的features在不同width网络中扮演的角色的讨论很有意思,可以更详细的分析。

论文笔记 《ReActNet: Towards precise binary neural network with generalized activation functions》

这篇文章是发表在arxiv2020的《ReActNet: Towards precise binary neural network with generalized activation functions》,作者CMU的Zechun Liu(香港科技大学)和Zhiqiang Shen,CMU的导师是Marios Savvides。

文章通过三种方法提升了二值化神经网络的精度。1.设计了一个类MobileNetV1的网络。2.显式地通过RSign和RPReLU学习Activation的distribution。3.通过类似于知识蒸馏的方法,学习原网络的output。

方法

设计了一个类MobileNetV1的网络

  • 取消了depth-wise的操作,全部都是正常卷积
  • 将降采样block的设置为两个block的concat
  • 每一个conv都要Residual-connection

学习Activation的distribution

  • 因为需要在每一个block之前对activation进行二值化,网络对这里二值化的分割点比较敏感
  • 在Addition之后加ReAct-PReLU,在block的第一个conv之前加
  • 使用RReLU学习二值化分割点
  • 使用RPReLU学习0点的位置

知识蒸馏

  • 使用一个ResNet-34的输出来作为target,直接计算KL loss

实验

  • 两步训练
    • 第一步训练Binary Activation的,但是weight是float的
    • 第二步训练binary activation & binary weight
  • 结果
    • baseline 58.2%
    • distribution loss 59.6%
    • Proposed baseline + distribution loss 62.5%
    • +Prelu 65.5%
    • +Rsign 66.1%
    • +Rprelu 67.4%
    • +Rsign+Rprelu 69.4%
    • Float model 72.4%

总结

activation对信息的编码在二值化之后会显著下降,这篇paper通过对activation进行参数化,学习到最优参数以保留更多的信息。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×