这篇文章是发在ASP-DAC2020的《FTT-NAS: Discovering Fault-Tolerant Neural Networks》,作者来自清华汪玉组,共同第一作者Wenshuo Li和Xuefei Ning。
这篇文章针对硬件运行神经网络可能会有错误的场景,提出使用NAS来搜索抗错误的神经网络架构(FT-NAS);并使用抗错误训练(FTT)的方法来减少错误。结合这两种方法就是FTT-NAS。
Motivation:
安全性和可信特性需要去解决。
safety-critic applications的需要:硬件对于soft error更加sensitive(来自atmospheric neutrons大气中子/radioactive impurities放射性杂质)。
边缘设备:Voltage instability/aging/temperature variation。
malicious attackers:embedding hardware trojans(硬件木马)/manipulating back-doors/memory injection。
方法
错误模型
- 模型用8bit量化
- 训练模型
- random bit-flip
- $y=f(Wx+b+\theta 2^{\alpha} (-1)^\beta)$
- $\theta~ Bernoulli(p)$ p概率产生bit偏移
- $\alpha ~ Uniform(0,1,\dots, Q-1)$ Q-1个比特随机选
- $\beta~ Uniform(0,1)$ 随机产生正负偏移
- 注意,为了效率,这个模型只在feature map上面加,相当于bias
NAS
- RL的模型,CIFAR-10
- super-net里面选择,用shared-weights
- shared weights使用FTT方法训练
- search space
- normal cell和reduce cell
- 7 operations: none, skip connect, 3x3 avg, 3x3 max, 1x1 conv, 3x3 relu-conv-bn, 5x5 relu-conv-bn
- B-2 nodes,2个输入来自于上两个cell
- 6.9*10^21 B=6
- searching
- $R=(1-\alpha)acc_c+\alphaacc_f$
- search iter
- 数据集$D_t$训练shared weights
- 另一个数据集$D_v$训练controller
- FTT训练的loss $L=(1-\beta)acc_c+\betaacc_f$
实验
- ResNet-20 1110M flpps 3%flip 13.6%
- FT-NAS-Net 750M flops 3%flip 78.2%
- FTT-NAS-Net-20 704M flops 3%flip 88.6%
- 发现双重connections between some pairs of nodes
- 说明可能找到了敏感的connections,然后用冗余的path来保护这些nodes
- ResNet-M (使用5%的错误率训练) 862M flops 81.9%
- 使用了double connection
- base channel 从64降到了40,保持flops
- 提升来自于两个方面:1.架构,2.redundancy的forwarding
- 简单的inference conv两次,然后取平均 57.4%
- 其它noise的效果
- 对于bit-flips效果最好>gaussian noise> salt-and-pepper noise
总结
这篇文章使用简单的加feature map噪声的方法将神经网络对于noise的鲁棒性提升了,并且总结了可能的原因。但是加的噪声比较简单,而且结论太启发式,需要进一步研究。