@pearl3344
2017-12-15T11:53:37.000000Z
字数 7743
阅读 1556
bayesian
神经网络
NIPS 17 bayesian compression for deep learning
【log-uniform distribution】
假设都是正数, 是uniform分布,即,
则
则
所以z的pdf为 .
【条件分布 换元】
若,,则
若,,则
若,,则
Proof:
【两个高斯分布的KL散度】
【log-uniform分布与高斯分布的KL散度】
其中。
ReLU激活函数的平滑近似SoftPlus函数.
全连接网络,第层
输入
输出
正确类标签 ,其它为0。
似然
交叉熵
先验分布
,服从log-uniform分布:
,
。
相差一个?!
后验分布
目标函数Evidence Lower Bound
联合分布的KL划分成两个KL:
高斯分布与log-uniform分布的KL散度用近似技巧:
其中.
高斯分布与高斯分布的KL散度可以利用计算公式:
与z无关,关于q(z)的求期望自动消去。
计算时采用mini-batch蒙特卡洛估计,从后验分布q(w,z)采样w,z。
而且采用reparameterization技巧,将采样表示成一个随机噪声与后验分布的参数的可积分函数的形式,如的采样的函数形式为,其中随机噪声。(为啥随机噪声可以直接从高斯分布采样,后验分布不能直接从高斯分布采样呀?...)
z变量从后验分布取,
为mini-batch里的每一个输入,随机噪声,得到采样。
蒙特卡洛估计,要求variance小。local reparameterization技巧,使得不同样本间的协方差为0,将variance限制在单个样本局部。不直接为每个输入样本从后验分布采样参数, 而是计算各个样本的logit的均值、方差,直接采样logit计算响应。
第层,
先采样,
再根据
计算响应的后验分布的均值、方差
再从响应的后验分布采样响应
最后一层不加相应函数logit直接作为输出o计算交叉熵
即为-log-likelihood关于后验分布的期望的蒙特卡洛估计
。
训练结束后最后的测试中,各层确定,不再采样z,不再采样activation,使用后验均值计算。
。
和阈值 确定掩码(移除)哪些。
计算压缩率时候,使用后验方差
根据的数值大小 确定需要的精度(有效数字个数)。
?
Proof:
2012_Hinton_improving neural networks by preventing co-adaptation of feature detectors 提出二元伯努利Dropout。在输入上乘以一个伯努利噪声。
, ,
,
的概率取0删除, 叫Dropout速率。
2014_Srivastava_dropout-a simple way to prevent neural networks from overfiting 提出连续的Dropout,在输入上乘以一个高斯噪声。
,
2013_Wang_fasting dropout traininga 指出在输入上乘以一个高斯噪声后响应还是高斯的,均值方差可以直接计算。
, ,
也相当于输入乘以的权重w,且权重w是从一个高斯分布取得的
,
2015_Kingma_variational dropout and the local reparameterization trick 把2013年的两个工作命名为了 局部重参数化 和 变分dropout。
提出了KL[norm|log-uniform]的估计表达。
2017_Molchanov_variational dropout sparsifies deep neural networks为每个权重后验定义不同的variance进而带来稀疏性。同时将 高斯后验 看成变成独立的两个变量因而可以 加法重参数化进而让alpha可以无穷大取值。
, , ,
2014年权重乘以高斯Dropout变量, 的采样版本:
,
两者等价:。
2017_louizos_bayesian compression for deep learning 为权重变量w的分布参数z设置后验高斯分布。
先高斯采样,再根据 计算响应的均值,
相当于在权重后验高斯基础上乘以了高斯的Dropout变量。
权重后验是相当于权重上乘以了一个高斯Dropout变量。
MNIST数据集:
初始化 。
当方差大于1后 clip成1。
5遍迭代
每批128个