[关闭]
@pearl3344 2017-12-15T11:53:37.000000Z 字数 7743 阅读 1556

变分Bayes Dropout 模型压缩

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:



Dropout变量 与 权重后验分布参数


数据处理

MNIST数据集:

初始化
当方差大于1后 clip成1。

5遍迭代
每批128个


添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注