您当前的位置:首页 > 电脑百科 > 程序开发 > 算法

基于熵的不确定性预测

时间:2023-11-13 11:20:16  来源:51CTO  作者:

译者 | 朱先忠

审校 | 重楼

在剑桥大学担任神经成像和人工智能研究科学家期间,我面临着使用最新的深度学习技术,尤其是nnU.NET,在复杂的大脑数据集上进行图像分割的挑战。在这项工作中,我注意到存在一个显著的差距:对不确定性估计的忽视!然而,不确定性对于可靠的决策却是至关重要的。

在深入研究有关细节之前,您可以随意查看我的Github存储库,其中包含本文中讨论的所有代码片段。

不确定性在图像分割中的重要性

在计算机视觉和机器学习领域,图像分割是一个核心问题。无论是在医学成像、自动驾驶汽车还是机器人领域,准确的分割对于有效的决策至关重要。然而,一个经常被忽视的方面是与这些分割相关的不确定性的衡量。

为什么我们要关心图像分割中的不确定性?

在许多实际应用中,不正确的分割可能会导致可怕的后果。例如,如果一辆自动驾驶汽车误认了一个物体,或者医学成像系统错误地标记了一个肿瘤,后果可能是灾难性的。不确定性估计为我们提供了一个衡量模型对其预测的“确定度”的指标,从而做出更明智的决策。

我们还可以使用熵作为不确定性的度量来改进我们神经网络的学习。这一领域被称为“主动学习”。有关这一想法的更多的细节将在下一篇文章中探讨,不过主要想法还是确定模型最不确定的区域,以便将重点放在这些区域上。例如,我们可以让卷积神经网络(CNN)对大脑进行医学图像分割,但对患有肿瘤的受试者表现非常差。然后我们可以集中精力获得更多这种类别的标签。

理解熵概念

熵(Entropy)是从热力学和信息论中借来的一个概念,它量化了系统中的不确定性或随机性。在机器学习的背景下,熵可以用来测量模型预测的不确定性。

在数学上,对于具有概率质量函数P(X)的离散随机变量X,熵H(X)定义为:

基于熵的不确定性预测

或者在连续的情况下:

基于熵的不确定性预测熵越高,不确定性就越大;反之亦然。

下面,我们给出一个经典的例子来辅助充分掌握熵这个概念:

情形1:两面不均匀的硬币

基于熵的不确定性预测

想象一下,一枚非均匀的硬币,正面向上的概率为p=0.9,反面向上的概率为1-p=0.1。

于是,它的熵是:

基于熵的不确定性预测

情况2:两面均匀的硬币

现在让我们想象一个两面均匀的硬币,它的正面和反面都着地的概率都是p=0.5。于是,其熵为:

基于熵的不确定性预测

熵更大时,这与我们之前所说的一致,即有:更多的不确定性=更多的熵。

实际上,值得注意的是,p=0.5对应于最大熵:

基于熵的不确定性预测熵的可视化描述(作者本人自制图像)

从直觉上来看,均匀分布对应熵最大的情况。如果每个结果都是同样可能的,那么这将对应于最大的不确定性。

熵在图像分割中的实现

为了将其与图像分割联系起来,请考虑在深度学习中,最终的Softmax层通常提供每个像素的类别概率。可以基于这些Softmax输出来容易地计算每个像素的熵。

但这是如何工作的呢?

当模型对属于特定类别的特定像素非常有信心时,Softmax层对该类别显示出高概率(~1),而对其他类别显示出非常小的概率(~0)。

基于熵的不确定性预测Softmax图层(非常有信心的情形,作者自制图片)

相反,当模型不确定时,Softmax输出更均匀地分布在多个类别中。

基于熵的不确定性预测Softmax层的不确定性情况(作者自制图片)

显然,上面的概率结果表现得比较分散,如果你还记得的话,这接近于均匀分布的情况,因为模型无法决定哪个类别与像素相关。

如果你能坚持阅读到现在,那就太好了!这说明你应该对熵的工作原理有很好的直觉理解了。

案例研究:医学影像学

接下来,让我们使用一个医学成像的实际例子来说明这一点,特别是胎儿的T1大脑扫描的情况。有关这个案例研究的所有代码和图像都可以在我的Github存储库中找到。

1.用Python/ target=_blank class=infotextkey>Python编程计算熵

正如我们之前所说,我们正在使用神经网络给出的Softmax输出张量。这种方法不依赖于具体的模型,它只使用每个类别的概率。

下面,让我们来澄清一些关于我们正在处理的张量的维度的重要内容。

如果使用2D图像,则Softmax层的形状应为:

基于熵的不确定性预测

这意味着,对于每个像素(或三维像素),我们都有一个大小为Classes的向量,这样就确定了一个像素属于我们所拥有的每个类别的概率。

于是,熵应该是沿着第一维度的计算结果:

def compute_entropy_4D(tensor):
 """
 计算具有形状(number_of_classes,256256256)的4D张量上的熵。

 参数:
 tensor (np.ndarray): 形状 (number_of_classes, 256, 256, 256)的4D张量。

 返回值:
 np.ndarray: 形状(256, 256, 256)的3D张量,相应于每一个像素的熵值。
 """

 # 首先,沿着类别坐标轴归一化张量,使其表示概率
 sum_tensor = np.sum(tensor, axis=0, keepdims=True)
 tensor_normalized = tensor / sum_tensor

 # 计算熵
 entropy_elements = -tensor_normalized * np.log2(tensor_normalized + 1e-12) # 添加一个小数,以避免log(0)
 entropy = np.sum(entropy_elements, axis=0)

 entropy = np.transpose(entropy, (2,1,0))

 total_entropy = np.sum(entropy)

 return entropy, total_entropy
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.

2.可视化基于熵的不确定性

现在,让我们在图像分割的每个切片上使用热图来可视化不确定性。

基于熵的不确定性预测T1扫描(左),分割(中),熵(右):作者自制图像

让我们看看另一个例子:

基于熵的不确定性预测T1扫描(左),分割(中),熵(右):作者自制图像

结果看起来很棒!事实上,我们可以看到这是一致的,因为高熵区位于形状的轮廓处。这是正常的,因为模型并不真正怀疑每个区域中间的点,而是很难发现的边界或轮廓。

做出知情决策

总体来看,本文介绍的上述这种不确定性可以通过多种不同的方式使用:

  1. 随着医学专家越来越多地将人工智能作为一种工具,意识到模型的不确定性至关重要。这意味着,医学专家可能会在需要更精细关注的区域花费更多时间。
  2. 在主动学习或半监督学习的背景下,我们可以利用基于熵的不确定性来关注具有最大不确定性的例子,并提高学习效率(更多关于这一点的信息,请参阅后续文章)。

主要收获

  • 熵是衡量系统随机性或不确定性的一个非常强大的概念。
  • 在图像分割中利用熵是可能的。这种方法是无模型(即“不依赖具体的模型”)的,并且只使用Softmax输出张量。
  • 不确定性估计被忽略了,但它是至关重要的。优秀的数据科学家知道如何制作好的模型。大数据科学家知道他们的模型在哪里失败,并利用它来改进学习。

最后,如果你喜欢这篇文章,并且想了解更多的相关信息的话,请查看这个代码仓库:https://github.com/FrancoisPorcher?source=post_page-----812cca769d7a

译者介绍

朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。

原文标题:Entropy based UncertAInty Prediction,作者:François Porcher



Tags:   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
基于熵的不确定性预测
译者 | 朱先忠审校 | 重楼在剑桥大学担任神经成像和人工智能研究科学家期间,我面临着使用最新的深度学习技术,尤其是nnU-Net,在复杂的大脑数据集上进行图像分割的挑战。在这项...【详细内容】
2023-11-13  Search:   点击:(179)  评论:(0)  加入收藏
最大熵强化学习算法SAC
模型结构模型同时学习action value Q、state value V和policy π。 V中引入Target V,供Q学习时使用;Target Network使学习有章可循、效率更高。 Q有两个单独的网络,选取最小...【详细内容】
2020-07-05  Search:   点击:(2155)  评论:(0)  加入收藏
▌简易百科推荐
小红书、视频号、抖音流量算法解析,干货满满,值得一看!
咱们中国现在可不是一般的牛!网上的网友已经破了十个亿啦!到了这个互联网的新时代,谁有更多的人流量,谁就能赢得更多的掌声哦~抖音、小红书、、视频号,是很多品牌必争的流量洼地...【详细内容】
2024-02-23  二手车小胖说    Tags:流量算法   点击:(12)  评论:(0)  加入收藏
雪花算法详解与Java实现:分布式唯一ID生成原理
SnowFlake 算法,是 Twitter 开源的分布式 ID 生成算法。其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 ID。在分布式系统中的应用十分广泛,且 ID 引入了时间戳...【详细内容】
2024-02-03   一安未来  微信公众号  Tags:雪花算法   点击:(49)  评论:(0)  加入收藏
程序开发中常用的十种算法,你用过几种?
当编写程序时,了解和使用不同的算法对解决问题至关重要。以下是C#中常用的10种算法,每个算法都伴随着示例代码和详细说明。1. 冒泡排序 (Bubble Sort):冒泡排序是一种简单的比...【详细内容】
2024-01-17  架构师老卢  今日头条  Tags:算法   点击:(43)  评论:(0)  加入收藏
百度推荐排序技术的思考与实践
本文将分享百度在推荐排序方面的思考与实践。在整个工业界的推广搜场景上,特征设计通常都是采用离散化的设计,需要保证两方面的效果,一方面是记忆,另一方面是泛化。特征都是通过...【详细内容】
2024-01-09  DataFunTalk  微信公众号  Tags:百度推荐   点击:(73)  评论:(0)  加入收藏
什么是布隆过滤器?如何实现布隆过滤器?
以下我们介绍了什么是布隆过滤器?它的使用场景和执行流程,以及在 Redis 中它的使用,那么问题来了,在日常开发中,也就是在 Java 开发中,我们又将如何操作布隆过滤器呢?布隆过滤器(Blo...【详细内容】
2024-01-05  Java中文社群  微信公众号  Tags:布隆过滤器   点击:(87)  评论:(0)  加入收藏
面向推荐系统的深度强化学习算法研究与应用
随着互联网的快速发展,推荐系统在各个领域中扮演着重要的角色。传统的推荐算法在面对大规模、复杂的数据时存在一定的局限性。为了解决这一问题,深度强化学习算法应运而生。本...【详细内容】
2024-01-04  数码小风向    Tags:算法   点击:(89)  评论:(0)  加入收藏
非负矩阵分解算法:从非负数据中提取主题、特征等信息
非负矩阵分解算法(Non-negativeMatrixFactorization,简称NMF)是一种常用的数据分析和特征提取方法,主要用于从非负数据中提取主题、特征等有意义的信息。本文将介绍非负矩阵分解...【详细内容】
2024-01-02  毛晓峰    Tags:算法   点击:(62)  评论:(0)  加入收藏
再谈前端算法,你这回明白了吗?
楔子 -- 青蛙跳台阶一只青蛙一次可以跳上一级台阶,也可以跳上二级台阶,求该青蛙跳上一个n级的台阶总共需要多少种跳法。分析: 当n=1的时候,①只需要跳一次即可;只有一种跳法,即f(...【详细内容】
2023-12-28  前端爱好者  微信公众号  Tags:前端算法   点击:(107)  评论:(0)  加入收藏
三分钟学习二分查找
二分查找是一种在有序数组中查找元素的算法,通过不断将搜索区域分成两半来实现。你可能在日常生活中已经不知不觉地使用了大脑里的二分查找。最常见的例子是在字典中查找一个...【详细内容】
2023-12-22  小技术君  微信公众号  Tags:二分查找   点击:(78)  评论:(0)  加入收藏
强化学习算法在资源调度与优化中的应用
随着云计算和大数据技术的快速发展,资源调度与优化成为了现代计算系统中的重要问题。传统的资源调度算法往往基于静态规则或启发式方法,无法适应动态变化的环境和复杂的任务需...【详细内容】
2023-12-14  职场小达人欢晓    Tags:算法   点击:(164)  评论:(0)  加入收藏
站内最新
站内热门
站内头条