Bayesian Neural Networks(BNN)是衡量神经网络不确定性的一种方法,不同于确定性神经网络,BNN的权重是不确定的值,它的权重服从一定的先验,通过某种推断方法,计算出后验分布。
目前主流的BNN有两种主要方法,分别是采样MCMC和变分推断。
1.采样方法
采样方法主要是从利用采样的方法,对后验进行推断,即采样有限个点计算并取其平均值。
经典的方法如下:
- HMC(Hamiltonian Monte-Carlo algorithm)
- 哈密顿蒙特卡洛采样
- 适用于小型网络,但是不适合深度学习中的大型模型
- NUTS(No-U-Turn sampler)
- 对HMC算法的改进
- 自动调整算法超参数,不同手动设置
- SGLD(stochastic gradient langevin dynamics)
- 将随机梯度郎之万动力学和MCMC算法结合起来
- 在培训期间使用小批量时,提供性能良好的马尔可夫链
- 缺点: 关注单一模式的后验和样本变得越来越自相关
- 可以用于有大量数据集的
2.变分推断
- Bayes by backprop
- 将任何参数分布拟合为后验分布
- 梯度下降有噪声
- 可以用于大型的模型
- Monte Carlo-Dropout
- 通过这种方法将任何网络结果转换成BNN
-
使用dropout作为正则化项来计算预测不确定性
-
dropout解决过拟合问题,通过随机丢弃神经网络单元进行
- 但是缺乏表达能力
- 用于Dropout based models
- 变分推断
- 近似后验
- Laplace approximation
- 使用训练时生成的信息将任何最大后验概率模型转换为BNN
- 只是用于单一模型的后验
- 用于单模态,大型的模型
- Deep ensembles
- 将不同的BNN模型组合起来,从而可以识别多种模态,使BNN更好的拟合。
参考文献
《Hands-on Bayesian Neural Networks – a Tutorial
for Deep Learning Users》