深度学习如何估计模型不确定性(epistemic uncertainty)

Motivation

这里模型不确定性的重要性在此就不赘述了.

  • 其实,笔者之前就有一个疑惑:为什么在神经网络中模型不确定度不能按照传统模型那样去计算熵? 文献指出:主流的Deep Learning都采用最大似然估计或最大后验来训练,因此产生的往往是一个point estimation而不是uncertainty value. 具体来说, 直观来说Softmax层之后的概率向量可以用来解释模型的置信度. 但是实际上模型依然会对具有很大Softmax输出的预测表明较大的不确定性.
  • 大部分不确定性估计算法都是基于Bayesian Neural Networks (可以理解为概率性的神经网络, 认为其参数服从一定的先验分布), 给定输入时就可以产生具有一定分布性质的输出用来计算模型不确定度. 但是计算非常复杂,只是理论上的保证.

贝叶斯神经网络及Dropout

  1. 简介
    传统的神经网络是通过MLE来优化参数的, 但是会忽略不确定性. 因此BNN被提出以克服上述缺陷,通过对NN网络的参数给一定的先验分布.
  2. 算法 (注意其中Monte Carlo Sampling的使用,以及背后变分近似的伯努利分布对最后dropout的影响)
    深度学习如何估计模型不确定性(epistemic uncertainty)_第1张图片
  3. model uncertainty (epistemic uncertainty)
    其实已经有了贝叶斯网络, 本质上就可以得到具有一定概率分布的输出. 具体来说, 可以进行多次forward propagation得到多个输出, 然后计算其entropy, variance或者mutual information 作为模型不确定度.

Conclusion

笔者为什么写这篇博客是因为发现中文博客太少关注uncertainty estimation在神经网络中. 其实这说难以理解也不算很复杂, 主要理清楚bayesian neural network是产生uncertainty的关键 (主要是它直接产生具有一定概率分布的输出). 然后在计算BNN时, 主要扣住P(w|D)的变分伯努利近似去进行有效的bayesian inference --> 也就是所谓的 Test-Time Dropout.

你可能感兴趣的:(机器学习,深度学习)