基于熵的不确定性预测

文章ID:417时间:2023-11-30人气:

Python 开发

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

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

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

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

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

或者在连续的情况下:

熵越高,不确定性就越大;反之亦然。

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

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

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

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

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

熵的可视化描述(作者本人自制图像)

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

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

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

Softmax图层(非常有信心的情形,作者自制图片)

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

Softmax层的不确定性情况(作者自制图片)

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

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

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

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

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

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

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

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

defcompute_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_normalized1e-12)#添加一个小数,以避免log(0)entropy=np.sum(entropy_elements,axis=0)entropy=np.transpose(entropy,(2,1,0))total_entropy=np.sum(entropy)returnentropy,total_entropy

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

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

T1扫描(左),分割(中),熵(右):作者自制图像

让我们看看另一个例子:

T1扫描(左),分割(中),熵(右):作者自制图像

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

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

北京市海淀区中关村南1条甲1号ECO中科爱克大厦6-7层

北京市公安局海淀分局备案编号:110108002980号营业执照

我关注的话题

defcompute_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_normalized1e-12)#添加一个小数,以避免log(0)entropy=np.sum(entropy_elements,axis=0)entropy=np.transpose(entropy,(2,1,0))total_entropy=np.sum(entropy)returnentropy,total_entropy

发表评论

内容声明:

1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违规信息,如您发现违规内容,请联系我们进行清除处理!
4、本文地址:http://www.wkong.net/article-417.html,复制请保留版权链接!


温馨小提示:在您的网站做上本站友情链接,访问一次即可自动收录并自动排在本站第一位!
随机文章:

滴滴致歉公布事故原因:底层软件出故障,补偿方案引不满:最后竟是司机买单!

对于此次滴滴系统故障事件是否与裁员有关,目前滴滴方面并没有明确的回复。但有媒体在采访中发现,有大厂员工表示肯定是有一定关联的,基础员工的离开比高管离职影响大很多。若真的出故障,非常难解决。

技术教程 2023-11-30 18:00:11

SSL是什么意思?域名SSL证书作用是什么?

SSL负责在计算机间对整个会话进行加密处理,能有效地对用户的个人信息进行安全防护。在SSL的加密过程中,结合使用了公钥和私钥两种密钥。本文狂人SEO详细讲下SSL是什么意思?域名SSL证书的作用是什么?一、SSL是什么意思SSL英文全称是“SecureSocketsLayer”,中文含义为“安全...

技术教程 2023-09-17 17:21:58

lastpass怎么用?lastpass优秀免费密码管理工具

我们做SEO工作会有很多的网站需要注册帐号密码,如果都用同一个密码有一定的风险,但不同的账户使用不同密码又很难记。lastpass优秀免费密码管理工具能帮你解决这个问题。那么lastpass怎么用?接下来详细介绍。一、lastpass简单介绍lastpass是一款用于在线密码管理与表单填写工具,在任...

技术教程 2023-09-17 17:21:49


TOP