在本文中,我们将介绍两种方法,它们允许你获得模型的不确定性:蒙特卡罗Dropout法(MC Dropout)和深度集成法。
它们适用于各种各样的任务,但在本文中,我们将展示一个图像分类的示例。它们都相对容易理解和实现,都可以很容易地应用于任何现有的卷积神经网络架构(例如ResNet、VGG、RegNet等)。
为了帮助你快速轻松地应用这些技术,我将提供用PyTorch编写的这些技术的补充代码。
给出两个杯子的图像,你的预测模型有多确定?
在我们开始之前,让我们回顾一下测量模型不确定性意味着什么,以及它如何对你的机器学习项目有用。
什么是模型不确定性?
就像人类一样,机器学习模型可以对其预测显示一定程度的信心。一般来说,在讨论模型不确定性时,需要区分了认知不确定性和任意不确定性。
认知不确定性是在模型参数中表示的不确定性。这种类型的不确定性可以通过额外的训练数据来减少,因此具有“可减少的不确定性”的替代名称。
任意不确定性捕获环境固有的噪声,即观测。与认知不确定性相比,这种类型的不确定性不能用更多的数据来减少,而是用更精确的传感器输出来减少。
第三种类型称为预测不确定性,即模型输出中传递的不确定性。预测不确定性可以结合认知不确定性和任意不确定性。
分类器的softmax输出示例:
如果你自己已经训练过简单的神经网络,那么最直观的想法就是模型的softmax输出,即你经常看到的作为模型预测结果显示的百分比值。
但是,使用softmax输出作为模型不确定性的度量可能会产生误导,并且不是很有用。这是因为softmax函数所做的只是计算模型不同激活值之间的某种“关系”。
因此,你的模型可以在其输出层的所有神经元中具有较低的激活值,并且仍然达到较