备忘录——Deep Learning Is Not Good Enough, We Need Bayesian Deep Learning for Safe AI笔记

        知道一个模型所不知道的是许多机器学习系统的关键部分。不幸的是,如今的深度学习算法通常无法理解它们的不确定性。这些模型常常被盲目地采用,并被认为是准确的,但情况并不总是如此。例如,在最近的两个情景中,这造成了灾难性的后果:

        1.2016年5月,我们不幸遭遇了第一起辅助驾驶系统造成的死亡事故。根据制造商的博客,“在明亮的天空下,自动驾驶仪和司机都没有注意到拖拉机拖车的白色一面,所以没有刹车。”

        2.2015年7月,一个图像分类系统错误地将两名非裔美国人认定为大猩猩,引起了人们对种族歧视的关注。点击这里查看新闻报道。

       我相信还有更多有趣的案例!如果这两种算法都能给它们的错误预测赋予高度的不确定性,那么每个系统就可能做出更好的决策,并避免可能的灾难。

        在我看来,理解不确定性是很重要的。那么为什么不是每个人都这样做呢?主要问题是,传统的机器学习方法,如高斯过程,不能扩展到高维输入,如图像和视频。为了有效地理解这些数据,我们需要深度学习。但深度学习很难模拟不确定性。

        在这篇文章中,我将介绍一个重新兴起的领域,称为贝叶斯深度学习(BDL),它提供了一个深度学习框架,也可以建模不确定性。BDL可以达到最先进的结果,同时也能理解不确定性。我将解释不同类型的不确定性并展示如何建模。最后,我将讨论一个最近的结果,显示如何使用不确定性减肥多任务的深度学习。这篇博文的材料主要来自我最近的两篇论文:

        1.贝叶斯深度学习需要哪些不确定性?Alex Kendall和Yarin Gal, 2017。(What Uncertainties Do We Need in Bayesian Deep Learning for Computer Vision? )

2.利用不确定性衡量场景几何和语义损失的多任务学习。亚历克斯·肯德尔(Alex Kendall)、亚林·加尔(Yarin Gal)和罗伯托·奇波拉(Roberto Cipolla), 2017年。(Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics.)

和往常一样,更多的技术细节可以在那里找到!

 

备忘录——Deep Learning Is Not Good Enough, We Need Bayesian Deep Learning for Safe AI笔记

一个例子解释为什么了解不确定性的深度估计是非常重要的。第一幅图像是贝叶斯神经网络估计深度的一个示例输入,如第          二幅图像所示。第三幅图显示了估计的不确定性。你可以看到,模型预测出了困难表面的错误深度,比如红色汽车的反射和          透明窗户。值得庆幸的是,贝叶斯深度学习模型也意识到它是错误的,并且显示出更多的不确定性。

类型的不确定性

我想说的第一个问题是什么是不确定性?实际上存在不同类型的不确定性,我们需要了解不同的应用程序需要哪些类型。我将讨论两种最重要的类型——认知不确定性和随机不确定性。

认知不确定性

认知的不确定性抓住了我们不知道哪个模型产生了我们收集的数据。这种不确定性可以通过提供足够的数据来解释,通常被称为模型不确定性。认知不确定性对于以下模型非常重要:

  • 安全临界应用,因为认知的不确定性是理解不同于训练数据的例子所必需的,
  • 训练数据稀疏的小数据集。

我们可以将任意型划分为两个子类别:

  • 数据依赖或异方差不确定性是一种依赖于输入数据并被预测为模型输出的任意不确定性。
  • 任务相关或同方差不确定性是不依赖于输入数据的任意不确定性。它不是一个模型输出,而是一个对所有输入数据保持不变的量,并且在不同的任务之间变化。因此,它可以被描述为任务相关的不确定性。在后面的文章中,我将展示这对于多任务学习是多么有用。

备忘录——Deep Learning Is Not Good Enough, We Need Bayesian Deep Learning for Safe AI笔记

说明语义切分的随机不确定性和认知不确定性的区别。您可以注意到任意不确定性捕获了标记有噪声的对象边界。底部一行          是一个分割模型的失败案例,当模型不熟悉步道时,相应的认知不确定性增加。

接下来,我将展示如何使用贝叶斯深度学习来建立模型来捕捉这种不确定性。

贝叶斯深度学习

接下来,我将展示如何使用贝叶斯深度学习来建立模型来捕捉这种不确定性。贝叶斯深度学习是介于深度学习和贝叶斯概率论之间的一个交叉领域。它提供了来自深度学习架构的原则性不确定性评估。这些深度架构可以利用深度学习的层次表示能力来建模复杂的任务,同时也能够推断复杂的多模态后验分布。贝叶斯深度学习模型通常通过将分布置于模型权值之上,或者通过学习到概率输出的直接映射来形成不确定性估计。在本节中,我将简要讨论如何使用贝叶斯深度学习模型来建模认知不确定性和任意不确定性。

首先,我们可以通过改变损失函数来建立异方差的随机不确定性模型。因为这种不确定性是输入数据的函数,我们可以学习使用从输入到模型输出的确定性映射来预测它。对于回归任务,我们通常用类似欧几里得/L2损失的东西来训练:备忘录——Deep Learning Is Not Good Enough, We Need Bayesian Deep Learning for Safe AI笔记。要学习异方差不确定性模型,我们只需将损失函数替换为:

                                                                       备忘录——Deep Learning Is Not Good Enough, We Need Bayesian Deep Learning for Safe AI笔记

模型的预测意味着备忘录——Deep Learning Is Not Good Enough, We Need Bayesian Deep Learning for Safe AI笔记和方差备忘录——Deep Learning Is Not Good Enough, We Need Bayesian Deep Learning for Safe AI笔记。正如你所看到的从这个方程,如果模型预测非常错误。那么它将被鼓励去削弱残余项,通过备忘录——Deep Learning Is Not Good Enough, We Need Bayesian Deep Learning for Safe AI笔记增加不确定性。然而,备忘录——Deep Learning Is Not Good Enough, We Need Bayesian Deep Learning for Safe AI笔记防止不确定性项无限大。这可以被认为是学习损耗衰减。

同构的任意不确定度可以用类似的方法建模,但不确定度参数将不再是模型输出,而是我们优化的自由参数。

另一方面,认知的不确定性很难建模。这要求我们对模型及其参数上的分布进行建模,而这在规模上很难实现。一种流行的建模技术是蒙特卡罗误差抽样,它将伯努利分布置于网络的权值之上。

在实践中,这意味着我们可以用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

这些结果表明,当我们对较少的数据进行训练,或对与训练集有显著差异的数据进行测试时,我们的认知不确定性会急剧增加。然而,我们的随机不确定性仍然相对恒定——它应该保持恒定——因为它是在同一个感知器的同一个问题上测试的。

多任务学习的不确定性

接下来,我将讨论这些思想在多任务学习中的有趣应用。

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

大多数多任务模型使用损失的加权和训练不同的任务。然而,这些模型的性能很大程度上取决于每个任务损失之间的相对权重。手工调整这些权重是一个困难而昂贵的过程,使得多任务学习在实践中变得难以执行。

在我们最近的论文中,我们建议使用同态不确定性来衡量多任务学习模型中的损失。由于同方差不确定性不随输入数据的变化而变化,我们可以将其解释为任务不确定性。这使我们形成了一个原则性的损失,同时学习各种任务。

我们探讨了在计算机视觉环境下的多任务学习。场景理解算法必须同时理解场景的几何和语义。这形成了一个有趣的多任务学习问题,因为场景理解涉及到不同单位和尺度的各种回归和分类任务的联合学习。也许令人惊讶的是,我们证明了我们的模型可以学习多任务权重,并且优于单独训练的模型。

备忘录——Deep Learning Is Not Good Enough, We Need Bayesian Deep Learning for Safe AI笔记

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

一些具有挑战性的研究问题

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

  • 实时认知不确定性技术阻碍了认知不确定性模型在实时机器人应用中的应用。无论是提高样本效率,还是不依赖于蒙特卡罗推断的新方法都将是非常有益的。
  • 贝叶斯深度学习模型的基准。量化改进以快速开发模型是非常重要的——看看像ImageNet这样的基准对计算机视觉做了什么。我们还需要基准套件来测量BDL模型中的不确定性校准。
  • 更好的推理技术来捕获多模态分布。例如,看看这里设置的演示Yarin,它显示了一些MC dropout推断未能建模的多模态数据。