【OpenPCDet】Uncertainty Estimation学习笔记(一)

Saturday, Nov 30, 2024 | 1 minute read | Updated at Saturday, Nov 30, 2024

@

为什么要研究uncertainty?

训练好的[神经网络模型本质是一个拥有大量确定参数的函数,不管你给什么输入,它都能给你一个输出。这会导致两种我们不愿意看到的意外情况:

  • 对明明错误的预测结果,模型输出的[置信度]却很高
  • 对没有见过的输入(OoD,Out-of-ditribution),比如给一个识别猫/狗的模型输入一张桌子图片,模型一定会输出:”这是猫“ or “这是狗”,而不是告诉我们 “它似乎不是猫,也不是狗”

所以,我们希望模型能输出 uncertainty,辅助使用模型的人进行更好地决策。比如上面的例子中,我们希望对错误分类的样本、OoD样本,模型能够给出一个较高的uncertainty。

uncertainy是什么?

参考NIPS2017年的论文 What Uncertainties Do We Need in Bayesian Deep Learning for Computer Vision? ,Gal阐述了两种uncertainty:Aleatoric uncertainty(i.e. data uncertainty) 和 Epistemic uncertainty(i.e. model uncertainty),即随机不确定度(也称数据不确定度),和认知不确定度(也称模型不确定度)。

Epistemic uncertainty可以通过增加数据解决,比如下图:只有一个data point的时候,符合要求的模型有很多种可能,uncertainty很高。当数据点增加,模型逐渐确定,uncertainty减小。

image
image

How?怎么计算不确定度

1.Epistemic uncertainty建模

image
image
Monte-Carlo 和 Ensemble 对一个随机分布,不确定性建模的方法有很多,标准差、方差、风险值(VaR)和熵都是合适的度量。在深度学习中,建模不确定度需要用到Bayesian DeepLearning。从Bayesian的角度,深度学习训练的本质是求一个posterior distribution $P(W|D)$ ,其中W是参数,D是数据。根据bayes theorem(贝叶斯定理),我们有 $P(W|D)=\frac{P(D|W)P(W)}{P(D)}$ 但是这个公式没法用,因为 $P(D)$ 理论上代表的是真实的数据分布,无法获取; $P(W)$ 在神经网络中也是不存在的,因为模型训练好以后,所有参数都是确定的数,而不是distribution,没法计算 $P(W)$ 。于是我们想到bayes theorem的另一个公式: $P(D)=\sum_i{P(D|W_i)P(W_i)}$

如果我们知道所有W,那么就可以计算 $P(D)$了,但这也是不可能的。不过我们可以用蒙特卡洛法 (Monte-Carlo)多次采样逼近:多次采样W计算 $P_i (D)$ ,得到$P(D)$的近似分布,进而得到 $P(W|D)$ 的估计。具体来说,有3种方式:

  • Ensembles方法 用类似bootstrap 的方法,对数据集D,采样N次,用N次的结果分别训练模型,然后ensemble模型结果。这个方法的好处是接近真实的Monte-Carlo方法
  • MCDropout方法 在网络中加入Dropout层,在测试时也打开Dropout,让Dropout成为采样器。对采样N次的结果进行ensemble处理得到最后的uncertainty。这个方法的好处是不用做很多实验,节省成本,但是由于使用了Dropout,单次训练的时间会变长。
  • MCDropConnect方法 和加Dropout的思路差不多。不过这里不用加Dropout layer,而是通过随机drop connection,来达到随机采样 的目的。

从理论层面,MC-Dropout是variantianl inference(BNN的重要概念之一)的近似。

2.Aleatoric uncertainty建模

image
image
image
image
有三种方式可以建模Aleatoric Uncertainty,这里介绍Probabilistic Deep Learning。从表格可以看出,其实就是在原始任务基础上,增加probability prediction,这个probability可用于measure uncertainty。 比如分类任务原来只输出类别,现在还需要输出probability。为了准确表示uncertainty,这里的probability要求calibrated probability ,不能直接用用softmax输出的score。由此,对目标检测 任务也有Probabilistic Object Detection

参考博客: https://zhuanlan.zhihu.com/p/166617220 https://proceedings.neurips.cc/paper/2017/hash/2650d6089a6d640c5e85b2b88265dc2b-Abstract.html https://www.cs.ox.ac.uk/people/yarin.gal/website/thesis/thesis.pdf

© 2021 - 2026 古月月仔的博客

🌱 Powered by Hugo with theme Dream.

关于我
  • 我是古月月仔
  • Ethan Hu
  • 分享技术学习笔记与生活点滴
  • 现居: 上海 中国
  • 家乡: 平遥 山西
在用的学习工具
  • 📝 Typora —— 极致简洁的 Markdown 编辑器,助力沉浸式文档撰写与知识记录。
  • 📓 Notion —— 一站式工作空间,用于搭建个人知识库、项目管理与深度协作。
  • 🔗 N8N —— 强大的基于节点的自动化工作流工具,轻松实现不同应用间的逻辑联动。
  • 🤖 Gemini —— 智能 AI 助手,在代码辅助、创意激发与信息检索中提供强力支撑。
我的爱好
  • 🚀 喜欢折腾各种好玩的技术
  • 📸 业余摄影爱好者
  • 🎮 各类游戏玩家
  • 💻 数码产品折腾爱好者
  • 📚 阅读:赫尔曼·黑塞 & 阿尔贝·加缪
  • 🎞️ 追番中:《电锯人:蕾塞篇》
  • 🎬 经典重温:《命运石之门》
最近正在学