Stanford 2 :Neural Network Compression for Noisy Storage Devices

本文探讨了在噪声存储设备中提升神经网络效率的联合压缩和编码方法。作者研究了权重敏感性,并提出了根据权重敏感度分配编码资源的策略,以最小化MSE和KL散度。此外,还介绍了鲁棒训练和蒸馏技术以增强模型对噪声的抵抗能力。实验表明,敏感性驱动的保护方法能带来最多2.8%的改进,但随着细胞数量增加,增益有限。

本文是作者上一篇文章的延续,原文标题

Neural Network Compression for Noisy Storage Devices

背景

在上一篇文章中,作者研究了先压缩再coding的方法来提升NN的存储效率并对抗噪声。本文中,作者exploit联合压缩和coding算法。

作者考虑一个多输入单输出的神经网络,训练数据从 pdata(x,y)p_\text{data}(x,y)pdata(x,y) 中采样得到。注意这里分布unknown只知道data,而我们训练神经网络的目的就是学习到这个联合分布,更准确的说是学习到 pw(y∣x)p_w(y|x)pw(yx).

本文研究的内容仍然是把一个神经网络的参数压缩,编码,存储 (噪声 w^=w+ϵ\hat{w}={w}+\epsilonw^=w+ϵ),解码,重构。原始参数 www 与重构出的参数 g(w^)g(\hat{w})g(w^)之间的距离有两个衡量标准:

  1. MSE: min⁡g∥g(w^)−w∥2\min_g \|g(\hat{w})-w\|_2mingg(w^)w2;
  2. KL divergence: min⁡gEx[DKL(pw(y∣x)∣∣pg(w^)(y∣x))]\min_g \mathbb{E}_{x}[D_\text{KL}(p_w(y|x)||p_{g(\hat{w})}(y|x))]mingEx[DKL(pw(yx)pg(w^)(yx))]

技术

我们现在把cell想象成信道,输入是 www, 输出是 w^=w+ϵ\hat{w}=w+\epsilonw^=w+ϵ. 那么直观的两种对抗噪声方式是(见上一篇文章)
a) 多次使用信道,即repetition code;
b) 提高scaling factor。

本文作者使用了连各种对抗噪声的方式:

  1. sparsity driven. 这些就是上一篇文章中的那些方法,比如保护sign,比如adaptive mapping,再比如adaptive redundancy.
    跟上篇文章一样,一些 typical observations:

  2. Sensitivity-driven protection.
    以下都是本文的新技术,但实际上提升不大。比如这里说的sensitivity-driven protection 实际上就是identify出哪些weights是sensitive的,然后对他们用更多的cell保护而已。实验中它的improvement最多是2.8%。而且这是在1cell/weight的情况下,如果我们提升number of cells 这种方法几乎没有增益。但是我们还是写一写。

作者大概的思路就是想看看什么样的weights对KL divergence影响最大。假设weights的改变是
g(w^)=w+δwg(\hat{w})=w+\delta_wg(w^)=w+δw, 那么KL divergence可以用二阶泰勒展开近似为

Ex[DKL(pw(y∣x)∣∣pw+δw(y∣x))]≈δw⊤Fδw\mathbb{E}_{x}[D_\text{KL}(p_w(y|x)||p_{w+\delta_w}(y|x))]\approx \delta_w^\top\bm{F}\delta_wEx[DKL(pw(yx)pw+δw(yx))]δwFδw

其中 F\bm{F}F 是 fisher information matrix:
F=Ex,y[∇wlog⁡pw(y∣x)∇w⊤log⁡pw(y∣x)]\bm{F}=\mathbb{E}_{x,y}[\nabla_w \log p_w(y|x)\nabla_w^\top \log p_w(y|x)]F=Ex,y[wlogpw(yx)wlogpw(yx)]

忽略掉 off-diagonal elements, KL 的近似变为
δw⊤Fδw≈Ex,y∑j=1d(δwj∂log⁡pw(y∣x)∂wj)2=∑j=1dδwj2Ex,y(∂log⁡pw(y∣x)∂wj)2\delta_w^\top\bm{F}\delta_w\approx \mathbb{E}_{x,y}\sum_{j=1}^d\left(\delta_{w_j}\frac{\partial \log p_w(y|x)}{\partial w_j}\right)^2 =\sum_{j=1}^d \delta_{w_j}^2\mathbb{E}_{x,y} \left( \frac{\partial \log p_w(y|x)}{\partial w_j}\right)^2δwFδwEx,yj=1d(δwjwjlogpw(yx))2=j=1dδwj2Ex,y(wjlogpw(yx))2
其中 ddd 是 weights的个数。可以看到,不同的weights wjw_jwj, 它上的扰动 δwj\delta_{w_j}δwj对KL 的影响取决于后面那个 expectation项。作者把这一项称为 sensitivity of wjw_jwj 并对所有的weights都算出一个sensitivity,然后根据sensitivity的大小来分配cell 个数。 over。

唯一的一个问题是如何计算 Ex,y(∂log⁡pw(y∣x)∂wj)2\mathbb{E}_{x,y} \left( \frac{\partial \log p_w(y|x)}{\partial w_j}\right)^2Ex,y(wjlogpw(yx))2.

作者说就是一个在所有training data上算出的一个gradient,这是很显然的。但是这个代价函数岂不是maximizing log⁡pw(y∣x)\log p_w(y|x)logpw(yx)?并不是很清楚maximizing一个prob distribution是啥意思。

Robust Training and Distillation

除了以上coding技术之外,作者还提出两个NN训练方法以加强最后的模型对噪声的robustness。这应该就是作者所说的joint optimization了。这两个方法本身并不新鲜,在Zhou 2020 那篇里面就有了,作者应该是做了一些调整,意义不大不讲了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值