本文来自 stanford 组,原文标题
Noisy Neural Network Compression for Analog Storage Devices
Introduction
背景
本文的背景是用模拟器件存储NN weights capacity更大但同时
- 更noisy。一般情况下,这个 noise 是写入 cell 的值的 non-linear function;
- 输入的范围 limited 有最大值最小值限制,也就是说我们得scale input.
Motivation
本文的motivation是说
- 以前的work全都是模拟为AWGN噪声 (Upadhyaya et al., 2019; Zhou et al., 2020),但实际上不是。
- 现有的NN压缩技术 (Han et al., 2016; Oktay et al., 2019) 都没有考虑到存储时一点点噪声就会造成大的性能损失 (Achille et al., 2019),因此本文要提出新的NN压缩技术。
Methdology
本文借用传统信息论来设计编码译码算法以便被压缩后的模型可以存储在模拟设备上。特别的,我们的方法
(a) 使用传统压缩技术如 pruning (Guo et al., 2016; Frankle & Carbin, 2019), knowledge distillation (KD) (Hinton et al., 2015; Polino et al., 2018; Xie et al., 2020) 来学习一个压缩的NN。
(b) 在被压缩的模型上使用不同的编码技术来确保被压缩的网络更robust to存储噪声。我们的目的有两个:一是最小化网络性能损失,二是最小化所需的存储空间。
作者提及在后续的工作中将联合设计(a) (b) (目前还是分开的, (b) 基于 (a))。
结果overview
作者的实验
- 研究了噪声对压缩后的模型的影响,以及一些缓解影响的方法
- 证实了 (Han et al., 2016; Frankle & Carbin, 2019) 的结果:NN的weights对pruning是非常robust的,但是剩余的weights对小的扰动非常敏感。
- 发现存储时
(a) 额外用一个cell保存weights的sign
(b) 对大参数和小参数分别做coding (不同的redundancy)
能使classification结果更好。
举例来说,如果用一种naive的方法来存储pruning后的ResNet-18模型,我们得需要1000cells/weight 来对抗噪声从而achieve无噪时的accuracy;但是作者的方法仅仅需要 1cell/weight 而性能损失只有 0.5%.
具体方法
作者考虑用 PCM 作为模拟存储因为它的输出电导值可以是连续的。一个PCM存储可以看做一个信道,它的输入输出如下图所示。
可以看到,输入输出是非线性关系,但是总体来说可以看做一个nonlinear mean + AWGN
noise. 所以第一步我们做的就是把nonlinear mean给刻画出来并且compensate掉,第二步就是对抗AWGN noise.
Inverting the channel
作者直接根据图1用一个 k-nearest neighbor classifier学习到了mean和输入之间的关系,记作 μ\muμ. 假设这个channel 函数是 CCC, 那么我们可以用 μ\muμ 来compensate这个信道得到
ϕ=C∘μ