测量模型不确定姓的两种简单方法-600学习网

600学习网终身会员188,所有资源无秘无压缩-购买会员

在本文中,我们将介绍两种方法,使您能够获得模型的不确定姓:蒙特卡罗下降法(MC下降法)和深度积分法。

它们适用于各种任务,但在本文中,我们将展示一个图像分类示例。它们相对容易理解和实现,并且可以很容易地应用于任何现有的卷积神经网络架构(如ResNet.VGG.RegNet等)。为了帮助您快速轻松地应用这些技术,我将提供用PyTorch编写的这些技术的补充代码。考虑到两个杯子的图像,你的预测模型有多确定?

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

在我们开始之前,让我们回顾一下测量模型的不确定姓意味着什么,以及它如何对您的机器学习项目有用。

什么是模型不确定姓?

与人类一样,机器学习模型可以显示出对其预测的一定程度的信心。一般来说,在讨论模型不确定姓时,有必要区分认知不确定姓和任意不确定姓。认知不确定姓是以模型参数表示的不确定姓。这种类型的不确定姓可以通过额外的训练数据来减少,因此它有一个替代名称”可减少的不确定姓”。任何不确定姓都会捕捉到环境中固有的噪声,即观察。与认知不确定姓相比,这种类型的不确定姓无法通过更多的数据来减少,但需要更准确的传感器输出。第三种类型称为预测不确定姓,即模型输出中传递的不确定姓。预测不确定姓可以将认知不确定姓与任意不确定姓结合起来。

分类器的sortmax输出示例:

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

如果你自己训练了一个简单的神经网络,最直观的想法是模型的softmax输出,也就是你经常看到的模型预测结果的百分比值。

然而,使用softmax输出作为模型不确定姓的度量可能会产生误导,而且用处不大。这是因为softmax函数仅计算模型的不同激活值之间的一些”关系”。

因此,您的模型可以在其输出层的所有神经元中具有较低的激活值,但仍然可以达到较高的softmax值。这不是我们的目标。幸运的是,有许多更有效的方法来估计模型的不确定姓,例如蒙特卡罗衰减和深度积分。

为什么模型不确定姓有用?

有两个主要方面使评估模型的不确定姓有用:

第一是透明度。假设您正在构建用于医学图像分析的机器学习模型。因此,使用您的工具的医生在很大程度上依赖于他们做出正确诊断的能力。

如果你的模型现在做出了预测,事实上是高度不确定的,但它确实向医生传达了这一信息,那么对患者治疗的后果可能是致命的。因此,估计模型的不确定姓可以在很大程度上帮助医生判断模型的预测。

第二是展示改进的空间。没有一个机器学习模型是完美的。因此,了解模型的不确定姓和弱点实际上可以告诉您需要对模型进行哪些改进。

事实上,有一个完整的学科致力于这一学科,称为主动学习。假设您已经用1000个图像和10个类训练了ConvNet。但你仍然有9000多张未标记的图片。如果现在使用经过训练的模型来预测哪些图像最不确定,请标记这些图像并重新训练模型。结果表明,与这些图像的随机采样相比,这种不确定姓采样对于模型改进更有效。

好的,让我们来讨论这两种技术。

提示1:蒙特卡洛辍学

Monte Carlo Dropout(简称MC Dropout)是一种使用模型中的Dropout层创建模型输出更改的技术。

应用于神经网络的辍学可视化。

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

“衰减层”(Dropout layer)通常在训练期间用作正则化技术。在通过网络向前移动的过程中,一些神经元以一定的概率随机为0。这表明该模型具有较强的抗过拟合能力。通常,为了不干扰新图像的前向传输,请在训练后禁用这些Dropout层。因此,要使用此技术

初始化后,所有模型将根据相同的训练数据进行训练。与MC Dropout一样,3或5款车型也是不错的选择。

为了获得给定图像上模型的不确定姓,将其传输到集合中的每个模型,并将其预测组合起来进行分析。

组合多个正向传播的模型输出

假设我们为MC Dropout定义了五个正向传播过程,并且集成模型包括五个模型。现在,我们预计这些输出之间会有一些变化,这表明了模型的不确定姓。为了获得不确定姓的最终值,必须首先对这些输出进行叠加。此代码是如何实现MCDropout的示例:

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

首先,我们定义要执行的正向传播,并保存所有预测的空列表。然后我们向前扩展了五次。第一个输出用作结果numpy数组的初始化,所有其他输出都堆叠在顶部。

这是具有相同基本原理的深度集成代码:

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

现在我们已经组合了所有输出,让我们看看如何从这些输出中计算模型的不确定姓。

获取模型不确定姓

为了简单起见,我们将使用预测熵来估计给定图像上模型的不确定姓。预测熵的数学公式为y(标签).x(输入图像).Dtrain(训练数据).c(类别).p(概率)。

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

一般来说,预测的不确定姓告诉你,当模型看到这张图片时,它是多么”惊讶”。如果该值较低,则模型的预测是确定的。如果结果较高,则模型不知道图像中的内容。预测不确定姓可以通过该代码计算,该代码接收预测数组作为输入。

导入系统

将numpy导入为np

def预测_熵(预测):

epsilon=sys.float_info.min

预测熵=-np.sum(np.mean(预测,轴=0)*np

log(np.mean(预测,轴=0)+ε)

轴=-1)

返回预测熵

在方程ε中,它防止被零除,这在数学上是不确定的。

现在你有了一个图像的不确定姓值。如前所述,该值越高,模型的不确定姓越大。

结尾

在本文中,您已经学会了估计模型的不确定姓。这项技术还可以通过一些调整应用于目标检测,并且非常强大。

参考材料:

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

免责声明: 1、本站信息来自网络,版权争议与本站无关 2、本站所有主题由该帖子作者发表,该帖子作者与本站享有帖子相关版权 3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和本站的同意 4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责 5、用户所发布的一切软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 6、您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 7、请支持正版软件、得到更好的正版服务。 8、如有侵权请立即告知本站,本站将及时予与删除 9、本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章和视频仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
600学习网 » 测量模型不确定姓的两种简单方法-600学习网