【摘 要】 理解模型的不确定性(uncertainty)是机器学习的关键。但能够理解不确定性的传统机器学习方法(如高斯过程,Gaussian Processes, GP),很难应用于如图像、视频等高维数据。深度学习(Deep Learning)能够高效处理该类数据,但其难以对不确定性建模。本文将介绍一个重新兴起的领域,称为贝叶斯深度学习 (贝叶斯深度学习),它提供了一个可以建模不确定性的深度学习框架。贝叶斯深度学习可以达到最先进的结果,同时也能理解不确定性。

【原 文】 见 Deep Learning Is Not Good Enough,We Need Bayesian Deep Learning for Safe AI

【阅后感】 本文作者是 MC Dropout 方法提出团队的成员之一,本文以博客形式发布,浅显易懂,可以作为入门级别的读物。重点掌握:(1)不确定性的来源和分类;(2)不同不确定性的建模思路;(3)在偶然不确定性方面,作者提出了数据依赖和任务依赖两种子类型,并针对任务依赖型数据不确定性进行了建模;(4)具体技术细节参考博文中提供的两篇论文。

1、 背景

了解一个模型到底不知道什么(或不确定自己能做什么),有时是机器学习系统的关键能力,因为在某些实际场景中,机器学习系统过于相信自己的能力并非好事(如:医疗领域、自动驾驶领域等)。不幸的是,如今的深度学习算法通常无法理解自身的不确定性。这些模型常被盲目地采用、过于自信,并导致一些严重后果。例如,在最近的两个情景中,这造成了灾难性的后果:

  • 2015 年 7 月,一个图像分类系统错误将两名非裔美国人认定为大猩猩,引起人们对种族歧视的关注。
  • 2016 年 5 月,发生了第一起辅助驾驶系统造成的死亡事故。根据制造商博客,“在明亮天空下,自动驾驶仪和司机都没有注意到拖拉机拖车的白色一面,所以没有刹车。”

相信还有更多案例!

如果在上述情境中,机器学习系统能够为自己的错误预测给出高度不确定性的指示,也许系统就有可能做出更好的决策,并避免可能的灾难。

理解不确定性非常重要,但为什么并非每个人都这样做呢?其中一个主要原因在于:传统概率机器学习方法(如高斯过程)限于计算和存储复杂度,很难扩展到高维输入中(如图像和视频);深度学习虽然能够有效理解高维数据,但又难以模拟不确定性。

本文将介绍一个重新兴起的领域,被人们称为 贝叶斯深度学习 (Bayesian Deep Learning, BDL),它提供一个可建模不确定性的深度学习框架。贝叶斯深度学习可以达到最先进的结果,同时也能理解不确定性。本博文将解释不同类型不确定性并展示如何建模。最后会讨论一个近期成果,显示如何使用不确定性为多任务深度学习减负。

这篇博文的材料主要来自最近的两篇论文:

和往常一样,更多技术细节可以在论文中找到。

图 1 以图像深度估计为例理解不确定性估计的概念(1)图像深度估计贝叶斯神经网络输入样本;(2)深度估计的输出结果;(3)深度估计的不确定性。

2 不确定性的类型(Types of Uncertainty)

2.1 认知不确定性与偶然不确定性

我想谈的第一个问题是:什么是不确定性?实际上存在不同类型的不确定性,需要了解不同应用需要应对哪种类型。这里将讨论两种最重要的类型:认知不确定性(也称数据不确定性)偶然不确定性(也称数据不确定性)

  • 认知不确定性(Epistemic Uncertainty):描述了根据给定训练集所得模型的不确定性,其不确定性主要来自两个方面,一是缺乏足够数据,模型无法访问足够多样本来得到正确知识,往往会输出过于自信的预测结果。二是不知道哪种模型更适合给定的问题。认知不确定性理论上可以通过提供足够多数据并优化模型来消除,也被称为模型不确定性(Model Uncertainty)。贝叶斯方法讨论的重点,主要集中在模型不确定性。认知不确定性在安全至上的应用、训练数据稀疏的小数据集应用上至关重要。

  • 偶然不确定性(Aleatoric Uncertainty) 指在数据(采集)生成过程中随机出现的统计变化和效应,即主要来自测量噪声或数据固有的模糊性,因此也被称为 数据不确定性( Data Uncertainty )。例如,图像的偶然不确定性可以归因于分辨率不足、视线遮挡、缺乏视觉特征、过曝区域等。这种不确定性会通过模型最终传导至预测结果的不确定性,而且无法通过技术手段消除,最好的方法是能够量化出其传播后导致的不确定性。当然,通过提高可观测变量的观测精度,能够减少数据不确定性,但真实的应用场景中,往往不能将期望放在测量手段的提升上。相对的,偶然不确定性在以下应用场景中至关重要:( 1 )具有海量数据的场景,此时的认知不确定性大部分都能够被数据解释,往往需要对偶然不确定性做出解释;( 2 )实时性应用场景,此时可以通过输入数据的确定性函数对偶然不确定性建模,而不用采用耗时的蒙特卡洛采样方法。

偶然不确定性可进一步细分为两类:

  • 异质的不确定性(或数据依赖型不确定性):此类不确定性依赖于输入数据,且会被传导至模型的预测结果中。

  • 同质的不确定性(或任务依赖型不确定性):此类不确定性不依赖于输入数据,而依赖于具体任务。不同任务之间的不确定性存在不同,但对于同一任务中的所有输入数据而言,它是一个常量。任务依赖型不确定性不是模型输出;可用来描述依赖于任务的不确定性。

图 2 图像语义分割中的偶然不确定性与认知不确定性,偶然不确定性给出了有噪标签的物体边界。第三行给出模型对人行道不熟悉时,图像语义分割失败的案例,其对应的认知不确定性变大。

2.2 可削减的不确定性

根据不确定性可削减程度,也有人将其分为两类:

(1)可削减的不确定性: 随着将更多的样本加入训练集中,或者增加模型复杂性、调整架构和超参数等,可以缩小该不确定性。

(2)不可削减的不确定性。由获取数据或数据生成过程固有的不确定性,即使增加更多样本或增加模型容量,也无法减少。

根据 第 2 节 的定义可知,可削减不确定性通常跟认知不确定性有关,不可削减的不确定性主要来自偶然不确定性。通过增加信息量,我们可减少认知不确定性,但偶然不确定性永远不会变小,即使我们已经掌握了问题原因。

2.3 分布不确定性

近年有一些学者提到了另一种类型的不确定性:分布不确定性,也称为 分布外(Out of Distribution, OOD)。 此类不确定性来源于预测数据与训练数据之间分布的变化,例如,模型训练阶段看到的数据是猫和狗的图像,但预测阶段却输入了一只鸟的图像。总的来说,分布不确定性也是模型缺乏泛化能力而导致的不确定性。

图 3 显示了用简单线性模型描述的各种同类型不确定性, (a) 是模型参数的不确定性,与解决问题的不同模型集合相关,(b) 靠近决策边界的点表现出了高度的数据不确定性,© 未包含在训练集中的数据点导致预测时的高度不确定性。

图 3 用简单线性模型展示多种不确定性来源,黑色为训练数据集,灰色为预测数据集:(a) 认知不确定性,由于数据信息不足,导致多个线性模型都存在可能性;(b) 偶然不确定性,由于训练数据集的辨识能力不足,导致距离分割线距离更近的点存在被错误预测的可能性; © 分布不确定性( OOD ),由于训练数据集没有覆盖 c 区域,使得该区域信息不足,进而导致错误预测。


3 贝叶斯深度学习(Bayesian Deep Learning)

贝叶斯深度学习是介于深度学习和贝叶斯概率论之间的一个交叉领域。它给出了深度学习架构的不确定性评估原则。贝叶斯深度学习可以利用深度学习的层次表示能力来建模复杂任务,同时也能够推断复杂的多峰后验分布。贝叶斯深度学习模型通常通过在模型权重上放置概率分布,或者通过学习从输入到概率输出的直接映射来获得不确定性估计。

3.1 偶然不确定性的建模

因为数据依赖型不确定性是输入数据的某个函数,可以学习使用从输入到输出的确定性映射(即前向神经网络)来预测输出中的不确定性。在回归任务中,我们通常使用类似欧几里得 $$L_2$$ 损失的东东来进行训练,即 $$Loss = | y-\hat{y} |_{2}$$ 。要学习数据依赖型不确定性,只需将损失函数替换为:

Loss=yy^22δ2+12logδ2Loss=\frac{\|y-\hat{y}\|_{2}}{2\delta ^{2}}+\frac{1}{2}log\delta ^{2}

模型的预测意味着 $$\hat{y}$$ 和方差 $$\delta ^{2}$$ 。正如公式所示,如果模型预测非常错误,那么优化算法将寻求通过增加数据不确定性 $$\delta ^{2}$$ 来削弱残差 $$| y-\hat{y} |_{2}$$ 的影响。而 $$log\delta ^{2}$$ 作为一个正则化项,可以防止数据不确定性的无限放大。

任务依赖型不确定性可以用类似方法建模,但不确定性参数将不再是模型的输出,而是需要通过优化确定的参数。

3.2 认知不确定性的建模

认知不确定性很难建模,通常要求对模型结构及其参数分布进行建模,而这在参数规模巨大、模型结构复杂的大规模深度学习中很难实现。一种流行的建模技术是 MC Dropout,该方法另辟蹊径,将训练阶段常用的 Dropout 正则化应用到了测试阶段,具体是在测试阶段将 伯努利分布 置于神经网络权重上,以一定比率做随机的 Dropout,进而得到神经网络预测结果的不确定性。

在实践中,这意味着我们可以像以往一样用 Dropout 来训练一个模型。然后,在测试时从神经网络中利用 Dropout 对神经单元做随机采样,而不是执行模型平均,其输出结果的分布及统计量能够反映模型的认知不确定性。

此处作者虽然称其没有执行模型平均,但有学者认为此方法只是用另外一种方式实现了模型平均。另外,作者认为 MC Dropout 重点在于解决认知不确定性。

前一节解释了偶然不确定性和认知不确定性的定义和性质。而 我们的论文 给出了令人兴奋的结果:可以证明 MC Dropout 方法给出的结果满足这些定义和性质。

下面是对两个数据集做的单目深度回归模型的汇总结果:

训练数据 测试数据 训练数据 测试数据
在数据集#1 上训练 在数据集#1 上测试 0.485 2.78
在 25% 的数据集#1 上训练 在数据集#1 上测试 0.506 7.73
在数据集#1 上训练 在数据集#2 上测试 0.461 4.87
在 25% 的数据集#1 上训练 在数据集#2 上测试 0.388 15.0

结果表明:当训练数据集很小或者测试数据与训练数据差异显著时,认知不确定性急剧增大;而偶然不确定性基本保持相对不变,其原因在于该实验是在相同问题上用同一传感器数据做的测试(即偶然不确定性的主体是数据依赖型不确定性,而非任务依赖型不确定性)。

4 多任务学习的不确定性(Uncertainty for Multi-task Learning)

多任务学习的目的是通过从一个共享表示中学习多个目标来提高学习效率和预测精度。它在机器学习的许多领域都很流行,从自然语言处理到语音识别再到计算机视觉。多任务学习在长时间运行的计算系统中是至关重要的,比如在机器人中使用的系统。将所有任务合并到一个模型中可以减少计算,并允许这些系统实时运行。

大多数多任务模型使用损失的加权和来训练不同任务。然而,此类模型的性能很大程度上取决于每个任务损失之间的相对权重。手工调整这些权重非常困难而且代价很高,这造成多任务学习在实践中难以实施。

最近的论文 中,我们建议使用任务依赖型数据不确定性(即同质的不确定性)来衡量多任务学习模型中的损失。由于任务依赖型数据不确定性不随输入数据的变化而变化,使得我们可以得到一个理论上能够同时学习多种任务的损失函数。

我们重点探讨了在计算机视觉环境下的多任务学习 — 场景理解。场景理解算法必须同时理解场景的几何和语义,而这分属不同任务,从而形成了一个多任务学习问题。这里涉及到不同单位和尺度的各种回归和分类任务的联合学习,而我们证明了通过我们的方法可以学习多任务的权重,而且结果优于每一个单独训练的模型。

图 4 多任务学习提高了深度感知的平稳性和准确性,因为它可以使用来自其他任务线索中的学习表示(比如语义分割任务),反之亦然。

5 一些颇具挑战性的研究问题

为什么贝叶斯深度学习能力不能应用到今天的人工智能系统中呢?我认为本应该这样做的,但仍有一些非常棘手的研究问题有待解决。在结束这篇博客之前,我想提一下其中的几个:

(1)实时认知不确定性技术缺乏。 该问题阻碍了其在实时机器人领域的应用,无论是提高样本效率,还是压根儿不依赖于蒙特卡洛的新方法都非常有研究价值。

(2)缺少贝叶斯深度学习模型的评测基准。量化模型的提升效果对于快速开发新模型非常重要,看看像 ImageNet 这样的评测基准给计算机视觉带来了什么?我们也需要一套基准来测量贝叶斯深度学习模型中的不确定性改进。

(3)需要更好的推断技术来捕获多峰分布。看看这里 演示 Yarin,它显示了一些 MC Dropout 推断方法建模失败的多峰数据。