理解一个模型不知道的东西是许多机器学习系统的关键组成部分。今天,深度学习算法能够学习强大的表示,可以将高维数据映射到输出数组。然而,这些映射通常是盲目地进行的,并被认为是准确的,但情况并非总是如此。在最近的两个例子中,这一情况带来了灾难性的后果。2016年5月,辅助驾驶系统首次致人死亡,原因是感知系统将拖车的白色一侧变成了明亮的天空(从而自动驾驶系统未及时作出刹车,发生车祸)。在最近的第二个例子中,一个图像分类系统错误地将两名非裔美国人识别为大猩猩,这引起了人们对种族歧视的担忧。如果这两种算法都能够为它们的错误预测分配高度的不确定性,那么系统可能能够做出更好的决策,并有可能避免灾难。
计算机视觉应用中的量化不确定性在很大程度上可以分为回归设置,如深度回归,和分类设置,如语义分割。在计算机视觉中,在这种设置中建模不确定性的现有方法包括粒子滤波和条件随机场。然而,许多现代应用程序要求使用深度学习来实现最先进的性能,而大多数深度学习模型不能表示不确定性。例如,深度学习不允许在回归设置中进行不确定性表示,而深度学习分类模型通常会给出标准化的分数向量,而这并不一定会捕获模型的不确定性。对于这两种设置,不确定性都可以用贝叶斯深度学习方法来捕获——这为用深度学习模型来理解不确定性提供了一个实用的框架。
在贝叶斯建模中,我们可以建模的不确定性类型主要有两种。偶然不确定性捕捉了观测数据中固有的噪声。这可能是例如传感器噪声或运动噪声导致的不确定性,即使要收集更多的数据,偶然不确定性也不能减少。另一方面,认知的不确定性解释了模型参数中的不确定性。这种不确定性可以用足够的数据来解释,通常被称为模型的不确定性。偶然不确定性可以进一步分为同方差不确定性、在不同输入下保持不变的不确定性和异方差不确定性。异方差不确定性取决于模型的输入,一些输入可能比其他输入有更多的噪声输出。异方差不确定性对于计算机视觉的应用尤为重要。
在本文中,我们观察到,在许多大数据机制(如图像数据深度学习的共同机制)中,建模无法解释的偶然不确定性是最有效的。这与认知不确定性相比,认知不确定性通常可以用机器视觉中常见的大量数据来解释。我们进一步表明,建模偶然不确定性是有代价的。数据外的例子,可以用认知的不确定性来识别,但不能单独用偶然不确定性来识别。
为此,我们提出了一个统一的贝叶斯深度学习框架,它允许我们学习从输入数据到偶然不确定性的映射,并将这些与认知不确定性近似组合起来。我们推导了回归和分类应用的框架,并给出了每像素深度回归和语义分割任务的结果(参见图1和补充视频)。我们展示了如何使用建模回归中的偶然不确定性来学习损失衰减,并为分类情况开发了一种补充的方法。这证明了我们的方法在困难和大规模的任务上的有效性。
这项工作的主要贡献是;
1.我们获得了对偶然不确定性和认知不确定性的准确理解,特别是用一种新的分类方法;
2.我们通过减少噪声数据的影响,将模型性能比非贝叶斯基线提高了1−3%,而隐含的衰减来自于明确表示偶然不确定性;
3.我们通过表征每个不确定性的性质,并比较模型性能和推理时间,来研究建模偶然或认知不确定性之间的权衡。
现有的贝叶斯深度学习方法要么捕获认知不确定性,要么仅捕获偶然不确定性。这些不确定性分别被形式化为模型参数或模型输出上的概率分布。认知不确定性的建模是通过在模型的权重参数上放置一个先验分布,然后试图在给定一些数据时捕获这些权重的变化程度。另一方面,偶然不确定性是通过在模型的输出上放置一个分布来建模的。例如,在回归中,我们的输出可能被建模为被高斯随机噪声破坏。在这种情况下,我们感兴趣的是学习噪声的方差作为不同输入的函数(这种噪声也可以用所有数据点的常数值来建模,但实际意义不大)。在贝叶斯深度学习的背景下,这些不确定性将在本节中进行更详细的解释。
为了捕获神经网络(NN)中的认知不确定性,我们假设其权重参数服从先验分布,例如一个高斯先验分布: W ∼ N ( 0 , I ) W∼N(0,I) W∼N(0,I).
这种模型被称为贝叶斯神经网络(BNN)。贝叶斯神经网络用这些参数上的分布取代了确定性网络的权值参数,不是直接优化网络权值,而是平均所有可能的权值(称为边缘化)。将BNN的随机输出表示为 f W ( x ) f^W (x) fW(x),我们定义了模型概率 p ( y ∣ f W ( x ) ) p(y|f^W (x)) p(y∣fW(x))。给定一个数据集 X = { x 1 , . . . , x N } X = \{x_1,...,x_N \} X={x1,...,xN}, Y = { y 1 , . . . , y N } Y = \{y_1,...,y_N \} Y={y1,...,yN},使用贝叶斯推理来计算权重 p ( W ∣ X , Y ) p(W|X,Y) p(W∣X,Y)的后验。这个后验算法捕获了一组可信的模型参数,并给定了这些数据。
对于回归任务,我们通常将我们的可能性定义为由模型输出给出的高斯均值: p ( y ∣ f W ( x ) ) = N ( f W ( x ) , σ 2 ) p(y|f^W (x))= N(f^W(x),\sigma^2) p(y∣fW(x))=N(fW(x),σ2),具有观测噪声标量 σ \sigma σ。另一方面,对于分类,我们经常通过一个softmax函数压缩模型输出,并从得到的概率向量: p ( y ∣ f W ( x ) ) = S o f t m a x ( f W ( x ) ) p(y|f^W(x)) = Softmax(f^W(x)) p(y∣fW(x))=Softmax(fW(x))中采样。
BNN容易表示,但是实际操作起来比较困难。这是因为评估后验 p ( W ∣ X , Y ) = p ( Y ∣ X , W ) p ( Y ∣ X ) p(W|X,Y)=p(Y|X,W)p(Y|X) p(W∣X,Y)=p(Y∣X,W)p(Y∣X)所需的边际概率 p ( Y ∣ X ) p(Y|X) p(Y∣X)无法进行分析评估。边际概率 p ( Y ∣ X ) p(Y|X) p(Y∣X)存在不同的近似值。在这些近似推理技术中,后验 p ( W ∣ X , Y ) p(W|X,Y) p(W∣X,Y)用一个简单的分布 q θ ∗ ( W ) q_{\theta}^*(W) qθ∗(W)拟合,由 θ \theta θ参数化。这用一个优化任务取代了平均BNN中所有权值的棘手问题,其中我们寻求优化简单分布的参数,而不是优化原始神经网络的参数。
贝叶斯推断公式:
p ( W ∣ X , Y ) = p ( Y ∣ X , W ) p ( W ) p ( Y ∣ X ) p(W|X,Y)=\frac{p(Y|X,W)p(W)}{p(Y|X)} p(W∣X,Y)=p(Y∣X)p(Y∣X,W)p(W)
Dropout变分推断是一种常用的近似方法。这种方法在除了在训练时要使用dropout之外,在预测时,也要将dropout打开,执行T次预测取其平均值。理论证明这种方法等价于在最小化KL散度。
利用Dropout进行训练时,其最小化目标为:
L ( θ , p ) = − 1 N ∑ i = 1 N l o g p ( y i ∣ f W i ^ ( x i ) ) + 1 − p 2 N ∣ ∣ θ ∣ ∣ 2 \mathcal{L}(\theta,p)=-\frac{1}{N}\sum^N_{i=1}log p(y_i|f^{\hat{W_i}}(x_i))+\frac{1-p}{2N}||\theta||^2 L(θ,p)=−N1i=1∑Nlogp(yi∣fWi^(xi))+2N1−p∣∣θ∣∣2
其中,第一项为负对数似然,第二项为正则化参数。p 为dropout中的随机失活率. W i ^ ∼ q θ ∗ ( W ) \hat{W_i} \sim q_{\theta}^*(W) Wi^∼qθ∗(W) ,N为数据点个数。
在回归任务中,通常假设似然是一个高斯分布,那么负对数似然可以写为如下形式:
− l o g p ( y i ∣ f W i ^ ( x i ) ) ∝ 1 2 σ 2 ∣ ∣ y i − f W i ^ ( x i ) ∣ ∣ 2 + 1 2 l o g ( σ 2 ) -logp(y_i|f^{\hat{W_i}}(x_i)) \propto \frac{1}{2\sigma^2}||y_i-f^{\hat{W_i}}(x_i)||^2+\frac{1}{2}log(\sigma^2) −logp(yi∣fWi^(xi))∝2σ21∣∣yi−fWi^(xi)∣∣2+21log(σ2)
σ \sigma σ 表示模型输出值的噪声,一定意义上衡量了输出的不确定程度。
通过观察更多的数据,可以减少权重中的认知不确定性。这种不确定性通过忽略(近似)权重后验分布导致预测的不确定性。
对于分类问题,T次预测的概率为:
p ( y = c ∣ x , X , Y ) ≈ 1 T ∑ t = 1 T S o f t m a x ( f W t ^ ( x ) ) p(y=c|x,X,Y)\approx \frac{1}{T}\sum^T_{t=1}Softmax(f^{\hat{W_t}}(x)) p(y=c∣x,X,Y)≈T1t=1∑TSoftmax(fWt^(x))
其中 W t ^ ∼ q θ ∗ ( W ) \hat{W_t} \sim q_{\theta}^*(W) Wt^∼qθ∗(W),这个概率向量 p p p的不确定性可以用概率向量的熵来总结:
H ( p ) = − ∑ c = 1 C p c l o g ( p c ) H(p)=-\sum^C_{c=1}p_clog(p_c) H(p)=−c=1∑Cpclog(pc)
对于回归,这种认知的不确定性被预测方差所捕获,它可以近似为:
V a r ( y ) ≈ σ 2 + 1 T ∑ t = 1 T f W t ^ ( x ) T f W t ^ ( x t ) − E ( y ) T E ( y ) Var(y) \approx \sigma^2+\frac{1}{T}\sum^T_{t=1}f^{\hat{W_t}}(x)^Tf^{\hat{W_t}}(x_t)-E(y)^TE(y) Var(y)≈σ2+T1t=1∑TfWt^(x)TfWt^(xt)−E(y)TE(y)
在这个认知模型中,通过近似预测均值进行预测: E ( y ) ≈ 1 T ∑ t = 1 T f W t ^ ( x ) E(y)\approx \frac{1}{T}\sum^T_{t=1}f^{\hat{W_t}}(x) E(y)≈T1∑t=1TfWt^(x)。预测方差中的第一项 σ 2 \sigma^2 σ2,对应于数据中固有的噪声量(很快将会有更详细的解释)。预测方差的第二部分衡量了模型对其预测的不确定性——当参数不确定性为零时,这一项就会消失。
以上部分我们通过近似分布 p ( W ∣ X , Y ) p(W|X,Y) p(W∣X,Y)来捕获模型的不确定性——模型参数的不确定性。为了捕获回归中的偶然不确定性,我们必须调整观测噪声参数 σ \sigma σ。
同方差回归假设每个输入点x的观测噪声σ恒定。另一方面,异方差回归假设观测噪声可以随输入x而变化。异方差模型在部分观测空间可能比其他空间的噪声水平更高的情况下是有用的。在非贝叶斯神经网络中,这个观测噪声参数通常作为模型权重衰减的一部分被固定,而被忽略。然而,当它依赖于数据时,它可以作为数据的函数来学习:(偶然不确定性衡量的是数据本身存在的噪声,某种程度上衡量了一个instance的预测难度,因此可以将它看作是instance的一个函数:对于预测结果比较离谱的instance,这个函数值应该比较大;而对于容易预测的instance,相应的函数值应该较小。)
L N N ( θ ) = 1 N ∑ i = 1 N 1 2 σ ( x i ) 2 ∣ ∣ y i − f ( x i ) ∣ ∣ 2 + 1 2 l o g σ ( x i ) 2 \mathcal{L}_{NN}(\theta)=\frac{1}{N}\sum^N_{i=1}\frac{1}{2\sigma(x_i)^2}||y_i-f(x_i)||^2+\frac{1}{2}log\sigma(x_i)^2 LNN(θ)=N1i=1∑N2σ(xi)21∣∣yi−f(xi)∣∣2+21logσ(xi)2
σ ( x i ) \sigma(x_i) σ(xi)即表示 x i x_i xi偶然不确定性。这里没有对模型参数执行变分推断,而是用了MAP,只能得到一组单一的模型参数值而不是一个分布,因而也无法捕获模型参数的感知不确定性。由此而实现了两种不确定性的分离。
简单来说,感知不确定性是用多次预测结果的方差来决定的,在多次预测中,所用的模型参数都是不一样的,因此这种做法捕获了模型参数的感知不确定性。而偶然不确定性是由样本的特征决定的,和模型参数是无关的。
在下一节中,我们将把这两种类型的不确定性组合在一个单一的模型中。我们将看到如何将异方差噪声解释为模型衰减,并发展一个分类情况的补充方法。
在前一节中,我们描述了现有的贝叶斯深度学习技术。在本节中,我们提出了扩展现有文献的新贡献。我们开发的模型将允许我们研究单独建模偶然不确定性,单独建模认知不确定性,或将两个不确定性在一个单一模型中一起建模。随后观察到,回归任务中的偶然不确定性可以解释为学习损失衰减(在损失函数中,weight decay是放在正则项(regularization)前面的一个系数,正则项一般指示模型的复杂度,所以weight decay的作用是调节模型复杂度对损失函数的影响,若weight decay很大,则复杂的模型损失函数的值也就大。)——使损失对噪声数据更鲁棒。我们通过将异方差回归的思想扩展到分类任务来实现。这也允许我们学习分类任务中的损失衰减。
我们希望在一个视觉模型中同时捕捉认知和偶然的不确定性。为此,我们通过将2.2中的异方差神经网络转换为贝叶斯神经网络,我们在本节中的构造是专门为视觉模型的情况开发的。
我们需要推断BNN模型 f f f将输入图像 x x x映射到一元输出 y ^ ∈ R \hat{y} \in R y^∈R的后验分布,以及由方差 σ 2 \sigma^2 σ2给出的偶然不确定性的度量。我们使用2.1工具用dropout变分分布近似BNN的后验。如前一样,我们从近似的后验 W ^ ∼ q ( W ) \hat{W} \sim q(W) W^∼q(W)中提取模型权值来获得一个模型输出,这次由预测均值和预测方差组成:
[ y ^ , σ 2 ^ ] = f W ^ ( x ) [\hat{y},\hat{\sigma^2}]=f^{\hat{W}}(x) [y^,σ2^]=fW^(x)
其中 f f f是一个由模型权值 W ^ \hat{W} W^参数化的贝叶斯卷积神经网络。我们可以使用一个单一的网络来转换输入 x x x,它的头部分开来预测 y ^ \hat{y} y^和 σ 2 \sigma^2 σ2。
我们固定了一个高斯似然值来模拟我们的偶然不确定性。这将给出一个最小化目标:
L B N N ( θ ) = 1 D ∑ i 1 2 σ ^ i − 2 ∣ ∣ y i − y ^ i ∣ ∣ 2 + 1 2 l o g σ ^ i 2 \mathcal{L}_{BNN}(\theta)=\frac{1}{D}\sum_i \frac{1}{2}\hat{\sigma}_i^{-2}||y_i-\hat{y}_i||^2+\frac{1}{2}log\hat{\sigma}_i^2 LBNN(θ)=D1i∑21σ^i−2∣∣yi−y^i∣∣2+21logσ^i2
其中, D D D是与输入图像 x x x对应的输出像素 y i y_i yi的数量,以 i i i为索引(另外,损失包括权值衰减,为简洁起见被省略)。例如,我们可以为图像级回归任务设置 D = 1 D = 1 D=1,或者设置 D D D等于密集预测任务的像素数(预测每个输入图像像素对应的一元)。 σ i 2 \sigma_i^2 σi2是BNN输出的像素 i i i的预测方差。
这种损失由两个部分组成;一部分是回归模型的残差,用于捕获模型参数的感知不确定性;另一部分是像素点的偶然不确定性,充当正则化项。注意到,在学习偶然不确定性时,其实是不需要标记的。 (如果一个像素 i i i 很难预测对,为了最小化整个损失, σ ^ i 2 \hat{\sigma}_i^2 σ^i2会相应地变大,而 1 2 l o g σ ^ i 2 \frac{1}{2}log\hat{\sigma}_i^2 21logσ^i2又会防止 σ ^ i 2 \hat{\sigma}_i^2 σ^i2变得无穷大。并不需要 σ 2 \sigma^2 σ2的ground truth。) 相反,我们只需要监督回归任务的学习。我们从损失函数中隐式地学习方差 σ 2 \sigma^2 σ2。第二个正则化项防止了网络预测所有数据点无穷大的不确定性(因为零损失)。
在实践中,我们训练网络来预测对数方差, s i ≔ l o g σ ^ i 2 s_i\coloneqq log\hat{\sigma}_i^2 si:=logσ^i2
L B N N ( θ ) = 1 D ∑ i 1 2 e x p ( − s i ) ∣ ∣ y i − y ^ i ∣ ∣ 2 + 1 2 s i \mathcal{L}_{BNN}(\theta)=\frac{1}{D}\sum_i \frac{1}{2}exp(-s_i)||y_i-\hat{y}_i||^2+\frac{1}{2}s_i LBNN(θ)=D1i∑21exp(−si)∣∣yi−y^i∣∣2+21si
这是因为它在数值上比回归方差 σ 2 \sigma^2 σ2更稳定,因为损失避免了潜在的除以零。指数映射还允许我们回归无约束的标量值,其中 e x p ( − s i ) exp(−s_i) exp(−si)被解析为正域,给出有效的方差值。
综上所述,该组合模型中像素的预测不确定性 y y y可以近似为:
V a r ( y ) ≈ 1 T ∑ t = 1 T y ^ t 2 − ( 1 T ∑ t = 1 T y ^ t ) 2 + 1 T ∑ t = 1 T σ ^ t 2 Var(y)\approx\frac{1}{T}\sum_{t=1}^T\hat{y}_t^2-(\frac{1}{T}\sum_{t=1}^T\hat{y}_t)^2+\frac{1}{T}\sum_{t=1}^T\hat{\sigma}_t^2 Var(y)≈T1t=1∑Ty^t2−(T1t=1∑Ty^t)2+T1t=1∑Tσ^t2
其中 { y ^ t , σ ^ t 2 } t = 1 T \{\hat{y}_t,\hat{\sigma}_t^2\}_{t=1}^T {y^t,σ^t2}t=1T为一组 T T T个采样输出: y ^ t , σ ^ t 2 = f W ^ t ( x ) ; W ^ t ∼ q ( W ) \hat{y}_t,\hat{\sigma}_t^2=f^{\hat{W}_t}(x);\hat{W}_t\sim q(W) y^t,σ^t2=fW^t(x);W^t∼q(W).
我们观察到,允许网络预测不确定性,允许它有效地通过依赖于数据的 e x p ( − s i ) exp(−s_i) exp(−si)来调节剩余损失。这类似于一个智能鲁棒回归函数。它允许网络适应残差的权重,甚至允许网络学会衰减来自错误标签的影响。这使得模型对噪声数据更具鲁棒性:模型学习到预测高不确定性的输入对损失的影响较小。
该模型不倾向于通过 l o g σ 2 log\sigma^2 logσ2项来预测所有点的高不确定性——实际上忽略了数据。巨大的不确定性增加了这一项的贡献,反过来惩罚了模型:模型可以学会忽略数据——但因此受到惩罚。该模型也不会对残差高的点预测非常低的不确定性,因为低 σ 2 \sigma^2 σ2会加大残差的贡献,并对模型造成惩罚。重要的是要强调,这种学习到的衰减不是一个特别的构造,而是对模型的概率解释的结果。
这种学习到的异方差神经网络在回归中的损失衰减特性也是分类模型的理想效果。然而,分类中的异方差神经网络是一种特殊的模型,因为技术上任何分类任务都具有输入相关的不确定性。然而,上述思想可以从回归异方差网络推广到异方差网络的分类。
为此,我们采用标准的分类模型来排除放置在对数空间上的中间异方差回归的不确定性。因此,我们明确地将我们提出的模型自适应称为异方差分类神经网络。
对于分类任务,我们的神经网络为每个像素 i i i预测一个一元的向量 f i f_i fi,当通过一个softmax操作时,形成一个概率向量 p i p_i pi。我们通过在一元向量上放置一个高斯分布来改变模型:
x ^ i ∣ W ∼ N ( f i W , ( σ i W ) 2 ) p ^ i = S o f t m a x ( x ^ i ) . \hat{x}_i|W\sim N(f_i^W,(\sigma_i^W)^2) \qquad \hat{p}_i=Softmax(\hat{x}_i). x^i∣W∼N(fiW,(σiW)2)p^i=Softmax(x^i).
这里 f i W f_i^W fiW 和 σ i W \sigma_i^W σiW是网络参数为 W W W 时的输出。相当于对向量 f i W f_i^W fiW施加了一个方差为 σ i W \sigma_i^W σiW(一个对角线矩阵,每个对数值都有一个元素)的噪声,然后用softmax函数对被破坏的向量进行压缩,得到 p i p_i pi,即像素 i i i的概率向量。
我们对该模型的期望对数似然值为:
l o g E N ( x ^ i ; f i W , ( σ i W ) 2 ) [ p ^ i , c ] logE_{N(\hat{x}_i;f_i^W,(\sigma_i^W)^2)}[\hat{p}_{i,c}] logEN(x^i;fiW,(σiW)2)[p^i,c]
c c c是输入 i i i的观察类,它给出了损失函数。理想情况下,我们想要对这个高斯分布进行解析积分,但不知道解析解。因此,我们通过蒙特卡罗积分来近似目标,并通过softmax函数来采样一元。我们注意到这个操作非常快,因为我们执行一次计算(通过模型传递输入来获得对数)。我们只需要从对数中采样,这是网络计算的一小部分,因此不会显著增加模型的测试时间。我们可以重写以上内容,得到以下数值稳定的随机损失:
x ^ i , t = f i W + σ i W ϵ t , ϵ t ∼ N ( 0 , I ) \hat{x}_{i,t}=f_i^W+\sigma_i^W\epsilon_t, \quad \epsilon_t\sim N(0,I) x^i,t=fiW+σiWϵt,ϵt∼N(0,I)
L x = ∑ i l o g 1 T ∑ t e x p ( x ^ i , t , c − l o g ∑ c ′ e x p ( x ^ i , t , c ′ ) ) \mathcal{L}_{x}=\sum_i log\frac{1}{T}\sum_t exp(\hat{x}_{i,t,c}-log\sum_{c'}exp(\hat{x}_{i,t,c'})) Lx=i∑logT1t∑exp(x^i,t,c−logc′∑exp(x^i,t,c′))
其中 x i , t , c ′ x_{i,t,c'} xi,t,c′是对数向量 x i , t x_{i,t} xi,t中的 c ′ c' c′元素,第二项实则为交叉熵损失函数化简后的结果。
这个目标可以解释为学习损失衰减,类似于回归情况。接下来,我们将通过经验来评估上述的想法。
[1] 论文原文
[2] 博客:深度学习中的不确定性:What Uncertainties Do We Need in Bayesian Deep Learning for Computer Vision