MIT 6.S191: Evidential Deep Learning学习笔记

课程网站:http://introtodeeplearning.com

一、引言

        本次lecture主要讨论深度神经网络中用于不确定性估计(uncertainty estimation)概率建模(probabilistic modeling),还将介绍一个强大的新技术,即evidential deep learning

        Evidential deep learning可以帮助使用者及时发现模型对其输出不确定或不自信的情况,判断神经网络的输出是否可信。

        现如今,随着深度学习技术的发展,从实验室走进现实,深刻影响着人们的日常生活,使得不确定性估计越来越重要。通常情况下,我们训练机器学习模型时总是基于以下假设:训练集与测试集都是从相同的分布中抽取得到的。而事实往往并不是这样。例如,我们目前所能看到的几乎所有的SOTA算法都是在非常clean的预处理数据集上进行训练的,几乎没有noise或者ambiguity。但是在现实世界中我们面临着很多模型无法完全处理的edge cases。

        比如我们在非常clean的数据集上训练一个分类器来识别“狗”(左上)。但将其应用到现实世界中,当我们向模型展示倒立的狗、甚至从天而降的狗,那么模型的性能就会变得非常差;对于驾驶场景亦是如此。

        传统的深度学习模型容易存在偏见(biases),并且常常容易在全新的、超出分布范围(out of distribution, OOD)的数据集上发生错误预测。因此,我们需要能够快速、可靠地估计模型对所看到的数据以及所预测的输出的不确定性,以帮助我们对输出的判断。即,模型不仅会给出预测的结果,还会提供它在预测时具有多少证据,我们可以信任它的程度如何。

        这里有一句George Box说过的话:即,所有的模型都是错误的,但是有自知之明的模型是有用的(知道自己什么时候是可靠的/不可靠的)。实际上我们并不需要模型拥有完美的100%的准确率,但即使准确率略低,但如果我们能够知道什么情况下可以信任模型的输出,那这个模型就是非常强大的。

        然而,知道自己不知道的事情(或者承认自己不知道)实际上是非常困难的,对于人类来说也是如此。有很多任务,即使我们并不知道正确答案,但我们仍然相信自己可以完成。但不幸的是,事实上我们很有可能失败(虽然不想承认)。

        比如图中的这个例子,当我们驾车来到一个新的城市,并不熟悉这里的路,但即使快要开到了海里也还是不想承认自己是迷路了。所以,谦虚并坦然承认“我不知道”是一种美好的品质,正如模型需要预测自己的不确定性(有自知之明)。

二、不确定性估计

        接下来,我们就具体看一下如何利用evidential learning来学习神经网络的不确定性。

        在supervised learning中,给定数据x与label yy可以是离散的也可以是连续的),我们的目的是学习从xy的映射。当给定新的x进行预测时,输出对应y的期望。

        但问题在于,如果我们只对目标的期望值建模,实际上我们得到的是预测结果的一个点估计,而缺乏对于这个预测不确定性的理解。事实上,我们不仅希望预测一个期望值,还想估计预测值y的方差。

        例如,我们将一幅图像输入到神经网络中,并且需要将其分类为“猫”或者“狗”。在这种情况下,每个输出就是图像属于该类别的概率,两个概率的和为1。

        实际上,输出是一个概率分布。在这个例子中,分布是离散的,因此,网络必须对输出加以限制,使其满足概率分布的定义:第一个约束条件是概率输出必须大于等于0,第二个约束条件是每个类别的概率和为1,因此在操作中通常使用softmax激活函数来满足这两个条件。

        我们定义一种特殊的loss function,使我们能够进行优化以学习到理想的分布。我们可以通过最小化预测分布与实际类别分布之间的negative log-likelihood来实现这一点,这个loss也被叫做交叉熵(cross entropy)损失。

        那么为什么要选择softmax作为激活函数以及为什么选择negative log-likelihood作为损失函数呢?原因在于,我们假设目标类别label y是从某个似然函数中抽取得到的,在上面这个例子中,这个似然函数就是由分布参数p所定义的概率分布。其中p的维度是K,即类别数,第i类的概率正好等于第i个参数pi

        对于连续场景情况是类似的。在这种情况下,我们不是在学习某个类别的概率,而是在整个实数轴上学习概率分布,比如自动驾驶项目中方向盘转动的角度。此时,我们不能像在分类问题那样直接输出原始概率,因为这将要求网络产生无限数量的输出。不过,我们可以输出分布的参数,即均值和标准差(或方差),从而定义概率密度函数(probability density function)。

        其中,均值是unbounded的,因此不需要约束,而标准差sigma必须严格为正,因此可以使用一个指数激活函数来进行约束。

        与分类问题类似,可以使用negative log-likelihood作为损失以优化网络。此时,我们假设our labels were drawn from a normal distribution (or a gaussian distribution) with known parameters mu and sigma squared. 而我们需要训练网络以预测mu和sigma。

        其实这个过程是很神奇的,因为我们并没有mu和sigma对应的金标准,唯一有的只是真实的label,但我们却可以利用这种建模方式和损失函数的优化,去学习到label的分布,而不是点估计,并得到分布对应的参数mu和sigma(假设是高斯分布)。

        总结一下,对于离散的分类问题,我们的targets是固定的K个类别之一,而对于连续的回归问题,targets可以是任意实数。

        现在,无论对于什么问题,假设它们的label都来自于某种基本的似然函数。

        对于分类,label来自于分类分布(Categorical distribution);而对于回归,假设label来自于正态分布(Normal distribution)。而每个这样的似然函数都由一组分布参数所定义(分类问题:分类分布的概率;回归问题:mu和sigma)。

        之后,为了确保这些都是有效的概率分布,通过激活函数以施加相关的约束。接下来,使用negative log-likelihood作为损失函数来优化整个系统,使得我们能够学习label的分布参数。

        但是,需要特别注意的一点是,通过这种建模方式获得的概率与模型的置信度并不是同一回事。比如我们有一张既有“猫”又包含“狗”的图像,输入到“猫狗分类器”中。如果这个分类器被很好地训练过,那么它将同时从图像中提取出“猫”和“狗”的特征,在做出最终决定时将会产生混淆。但是这并不意味着我们对答案的不自信(即使不太符合直觉),相反,我们确实在这个图片中检测到了猫和狗的特征,从而导致输出结果是0.5、0.5。

        当我们使用同样的网络,但输入一张训练时完全没有接触过的图像(OOD),比如一艘船。此时模型仍然需要输出这张图像是猫的概率与是狗的概率。这是一个由softmax函数训练出来的概率分布,因此二者之和仍然是1,这种情况下,输出的概率值就将会变得非常不可靠,也不应该被信任。

        Uncertainty的分类如上。

        分别是known knowns(我们知道的、确信的)known unknowns(我们知道自己不知道,有自知之明的)unknown knowns(你不知道,别人知道)unknown unknowns(没人知道)。举一个机场的例子:

        known knowns:我乘坐的是哪个航班、哪些航班今天会起飞。

        known unknowns:航班的具体起飞时间,因为可能会延误。

        unknown knowns:别人预定的航班时间。

        unknown unknowns:流星撞击飞机跑道。

        实际上,理解并实现深度学习模型不确定性的量化是十分困难的,因为模型通常具有数以百万计、十亿记甚至万亿级别的参数量,理解和审视这些模型内部以估计它们何时无法给出正确答案绝对不是一个简单的问题。通常,人们其实并不会训练神经网络来考虑uncertainty,比如上图(右)中的例子,我们可以对黑色的observed data做很好的拟合,但在蓝色区域的预测却失败了。

        这里涉及到uncertainty的两种形式,分别是aleatoric uncertainty(data uncertainty)epistemic uncertainty(model uncertainty)

aleatoric uncertainty,偶然不确定性

        指的是数据本身的不确定性,也被称为不可约(irreducible)不确定性,由于数据收集过程中存在的干扰/影响,造成了数据本身固有的噪声,从而无法通过数据的增加以减小此不确定性。减少aleatoric uncertainty的唯一方法就是提高sensor的质量获得更加准确的数据。

epistemic uncertainty,认知不确定性

        模拟的是预测过程的不确定性。当模型不知道正确答案并且对自己的答案不够自信的时候就会出现这种情况。

        Epistemic uncertainty要比aleatoric uncertainty难以估计得多,因为我们很难意识到自己并不知道某件事(认知受限)。对于传统的确定性神经网络即deterministic neural network,,对于一组给定的weights,多次将同一个输入传递给模型将会产生完全相同的输出,从而导致我们无法获得epistemic uncertainty。这也可以体现模型的“过度自信”,毫无自知之明。

        相反,如果我们网络的weight并不是一个deterministic single number,而是每一个weight都用一个probability distribution来表示。此时,每一个weight都取决于当前时间点对其概率分布的采样结果,那么当我们输入同样的数据时,就会产生(稍微)不太一样的output。拥有这种特性的网络就被称为bayesian neural networks

        总结来说,就是对distributions / likelihood-functions over the network weights themselves进行建模。与model a single number for every weight不同,bayesian NNs try to learn NNs that capture a full distribution over every singe weight,从而也学习了模型本身的epistemic uncertainty。

Now we can formulate this epistemic uncertainty and formulate this learning of bayesian neural networks as follows.

While deterministic neural networks learn this fixed set of weights ω, bayesian neural networks learn a posterior distribution over the weights. This is a probability of our weights given our input data and our labels (x and y).

Q: 为什么叫做bayesian neural network?

A: Because they formulate this posterior probability of our weights given our data  using bayes rule.

        然而在实际中,这个posterior是intractable的(cannot compute analytically)。这就意味着我们必须求助于采样技术,从而近似/估计这个后验分布。其核心思想是,每次通过采样以得到具有不同参数(权重)的模型进而对模型本身进行评估。

        有两种实现方式:

        1. Dropout。通常情况下dropout只在训练过程中使用,而在这种情况下,我们在测试时使用dropout,从而对网络中的结点进行采样,以得到不同的权重(不同的模型)。输入相同的数据,这样的过程重复t次,而每一次网络都会有对应的输出(彼此之间不同)。

        2. 独立训练t个模型。模型架构一样,但是训练得到的权重不同,使得彼此之间的输出不同(略有差异)。

        不管通过哪种方式,道理都是类似的。我们通过t次前向传播(要么使用dropout,要么由t个模型集成),都会产生t个结果,从而得到y的期望与y的方差。

        因此,如果这些预测的方差非常大,即输出彼此之间没有良好的一致性,那么模型就具有相对较高的epistemic uncertainty。

        然而,虽然这种基于采样的方法是用来估计epistemic uncertainty常用的方法,但是它们有明显的缺点和局限。首先,因为需要多次进行前向传播,多次训练以得到预测结果(对于集成t个模型的情况更糟,因为需要初始化并且独立训练多个模型),computationally costly,并且模型的保存也占用内存。而uncertainty estimation需要real time on edge devices (e.g. robotics or other mobile devices),这其实限制了基于采样的方法的应用。

        其实像dropout这种近似方法往往会产生overconfident uncertainty estimates(觉得自己对uncertainty估计得很准确),which may be problematic in safety critical domains where we need calibrated uncertainty estimates。

        回到自动驾驶的例子,我们重新梳理一下uncertainty estimate的整个过程。自动驾驶任务的输出是一个具有mu作为均值、sigma作为标准差的高斯分布,而variance (sigma squared)其实代表的就是data uncertainty / aleatoric uncertainty。

        那么所谓的epistemic uncertainty是什么呢?我们把每个模型(一共t个)预测的mu和sigma-squared画在一个二维平面上(横轴mu,纵轴sigma-squared),就得到了这个平面上的t个点,每个点都代表某个高斯分布具有的参数。

        此时,我们计算在mu方向上的方差,这个方差代表的就是epistemic uncertainty。直观来讲,如果这些点分散的很开,说明模型不够自信,相反,如果这些点聚在一起,表明模型非常自信。

        现在,我们把视角放到这些点上。可以想象,实际上,这些点也满足某个分布,当我们将t无限增大的时候,样本将更加符合如图像中的背景所示的分布。如果我们能直接获得这个分布而不是从中抽取样本(即训练t次),那么我们就可以更好、更快速地理解model / epistemic uncertainty。

        我们尝试使用deep learning直接学习这个分布的参数(高阶分布,即分布的分布),这种方法被称为evidential deep learning。

        1.上图(左)展示的是具有low uncertainty和high confidence的情况,此时点的分布十分集中;

        2.上图(中)是具有high aleatoric / data uncertainty的情况,此时在纵轴方向上(sigma-squared)会有非常高的方差;

        3.上图(右)是具有high epistemic / model uncertainty的情况,即模型预测的mu值方差很大。

        这种高阶分布称为evidential distribution,代表的是分布的分布,那么如何获得evidential distribution呢?

        首先考虑连续场景下的回归问题。label y是从某个正态分布(参数mu,sigma)中获得的,而之前我们假设mu和sigma是客观上固定的、已知的、是网络可以预测的,而现在我们假设mu和sigma同样也服从一个分布,同样用概率的方式估计它们。实际上,我们可以formalize this by placing priors over each of these distribution parameters。

        如上图(左下)所示,我们假设mu服从高斯分布,sigma-squared服从inverse gamma分布,那么mu和sigma的联合分布服从Normal Inverse Gamma(具有四个参数)。这就是evidential distribution,如上图(中)所示。当我们从这个分布中采样时,实际上获得的是某个mu和sigma的组合,从而定义了y所服从的高斯分布(同时也是likelihood function),如上图(右)所示。

        对于离散的分类问题也是类似的,类别y服从的分布(categorical)的参数为p,而我们可以进一步对p施加先验,假设p服从Dirichlet分布。Dirichlet分布由一组concentration parameters参数化(α,K-dimensional)。我们可以从这个Dirichlet distribution中采样得到分类损失函数中的categorical loss function。

        以上图(右)为例,我们有三个可能的类别(K=3),那么the mass of Dirichlet distribution将会完全存分布于这个三角形单纯形(simplex)内,在三角形内部的任意点进行采样将会产生对应的“brand new” categorical probability distribution。

        假设我们从这个simplex的中心采样,就得到了三个类别是等概率的情况,而simplex的每个角则代表着某个类别的预测概率为1(其它类别预测概率为0),从中间采样就代表三个类别等概率。simplex中颜色的深浅代表着质量的分布情况。

        需要注意的是our network is going to try to predict what this distribution is for any given input, so this distribution can change and the way we're going to sample our  categorical likelihood functions will as a result also change. 即,对于每个不同的输入,这个分布也是不同的,会变化,然后我们从这个分布中采样,得到y服从的分布,也就是结果。

        总结一下:

        在回归问题中,目标值是连续的。假设目标值y是从由mu和sigma数化的正态分布中抽取的,and then we had in turn a higher order evidential distribution over these likelihood parameters,这个分布就是normal inverse gamma distribution,分布的参数有四个;

        在分类问题中,目标值是离散的K个类别。假设观察到某个特定类别标签y的likelihood来自于一个具有类别概率p的categorical distribution,而这个 p又是由高阶的evidential Dirichlet distribution参数化而来的,这个分布的参数是α

        那么,我们有那么多不同的分布,为什么要用NIG与Dirichlet distribution作为先验呢?这涉及到所谓的conjugate prior

        Conjugate prior:给定似然,使得先验与后验具有相同形式(属于同一分布族)的先验。

        如果选择conjugate prior作为evidential distribution,在计算损失的时候就会更加容易处理。即,后验有解析解,不需要进行复杂的积分运算(这个积分通常是intractable的,需要使用数值计算方法/近似推断来计算),使得整个过程更加可行和高效。

Question

        训练网络以output the parameters of these higher order evidential distributions。

        对于回归,网络输出gamma、epsilon、alpha和beta;而在分类问题中,网络预测一个alpha向量(K维,K是类别数)。一旦我们有了这些参数,就能直接计算aleatoric and epistemic uncertainty的估计值(determined by the resulting  distributions over these likelihood parameters)。

        训练时,通过目标函数的优化以获得最佳的参数,目标函数中有两项:

        1.最大化模型拟合的准确度,使得对具有参数m的evidential distribution采样得到的likelihood最大化;

        2.一个正则项,即最小化incorrect evidence,将所有的evidential distribution拟合到数据中,确保它们尽可能吻合(一个数据对应一个m)。

        此时,当我们看到新数据时,就可以输出higher order evidential distribution的参数mm随着输入的变化而不同,是网络的输出),并从这个evidential distribution中采样得到likelihood function,进一步得到预测结果,同时还可以使用m计算uncertainty。

Question:

(to do:Φ(m)的计算,以及最小化Φ(m)的具体含义)

没有完全理解:

        举例:

        在回归问题中,中间的白色区域是有数据的,旁边的灰色区域是没有数据的,可以看到evidential distribution能够在超出分布范围的区域内增加uncertainty,这样我们就可以意识到对没有观测过的数据进行预测是不可靠的。

        同样,在分类问题中,比如MNIST数据集,通过合成旋转的手写数字1来生成一些超出分布范围的示例,可以发现1在旋转过程中uncertainty先增大后减小(因为最终1变回了原状)。

        一些应用↑

       Evidential deep learning赋予了模型表达“我不知道”的能力,它在输入中看到一些无法自信预测的内容时,能够让用户知道不应该信任它的预测。

        总结一下不同的uncertainty estimation approaches(极大似然估计、贝叶斯神经网络、证据神经网络),每种方法都有自己的差异、优势和特点。

At the highest level of difference we saw that fundamentally each of these methods placed probabilistic priors over different aspects of the pipeline:

1. over the data in the case of the likelihood estimators

2. over the weights in the case of bayesian neural networks

3. over the likelihood function itself in the case of evidential neural networks

        与bayesian neural networks不同,evidential neural networks快速且内存效率高,因为它们在估计uncertainty时不需要抽样。尽管这两种方法都能捕捉到epistemic uncertainty,但evidential neural networks在训练过程中不需要模型的ensemble,只需训练一个模型,并且每个输入只需要运行一次,无需抽样,就可以得到uncertainty。

Question:为什么Evidential NN的weights是deterministic的?weights应该是服从某个分布才对呀(stochastic),而这个分布的参数是从evidential distribution中采样得到的。

Answer: Evidential NN的输出是evidential distribution的参数m,这个网络就和我们传统的网络是一样的。

        总的来说,在这次lecture中,我们深入探讨了使用神经网络进行uncertainty estimation的问题。在现代机器学习中,这是一个非常重要的问题,特别是当我们开始将模型部署到真实世界时,我们需要迅速了解何时应该更加信任模型,更重要的是,何时不应该信任模型。

  • 35
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

exploreandconquer

谢谢老板,老板大气!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值