【读点论文】Evidential Deep Learning to Quantify Classification Uncertainty高置信度错误可能是softmax缺陷,通过迪利克雷计算不确定性

Evidential Deep Learning to Quantify Classification Uncertainty

Abstract

  • 确定性神经网络已被证明在广泛的机器学习问题上学习有效的预测器。然而,由于标准方法是训练网络以使预测损失最小化,因此得到的模型仍然不知道其预测置信度。与通过权重不确定性间接推断预测不确定性的贝叶斯神经网络正交,我们提出使用主观逻辑理论对其进行显式建模。通过在类别概率上放置狄利克雷分布,我们将神经网络的预测视为主观意见,并学习通过确定性神经网络从数据中收集导致这些意见的证据的函数。多类分类问题的结果预测器是另一个狄利克雷分布,其参数由神经网络的连续输出设置。我们对新损失函数的特性如何推动不确定性估计的改进进行了初步分析。我们观察到,我们的方法在检测分布外查询和抵抗敌对干扰方面取得了前所未有的成功。
  • 论文地址:[1806.01768] Evidential Deep Learning to Quantify Classification Uncertainty
  • 示例:uncertainty
  • 传统神经网络使用 softmax 输出类概率,但缺乏不确定性估计,尤其是在分布外数据和对抗攻击下表现不佳。EDL 的目标是通过主观逻辑和 Dirichlet 分布显式建模预测不确定性,解决这些问题。使用 Dirichlet 分布代替 softmax,将神经网络输出作为 Dirichlet 参数,通过证据理论量化不确定性。这涉及到将证据转换为 Dirichlet 参数,设计新的损失函数来最小化预测误差和方差。 Dirichlet 分布的应用,损失函数的推导,包括 L2 损失的分解,以及 KL 散度正则化项。需要理解如何将神经网络输出映射到 Dirichlet 参数,以及损失函数如何平衡预测误差和不确定性。
  • 将神经网络的输出视为证据(Evidence),通过 Dirichlet 分布建模类概率的分布,而非单一的 Softmax 点估计。Dirichlet 参数由网络输出确定,允许模型表达 “不确定”(如均匀分布表示完全无知)。证据到 Dirichlet 参数的映射
    • 设网络输出为证据向量 ( e = [ e 1 , e 2 , . . . , e K ] e = [e_1, e_2, ..., e_K] e=[e1,e2,...,eK]),对应 Dirichlet 分布参数 ( α k = e k + 1 \alpha_k = e_k + 1 αk=ek+1),其中 K 为类别数。Dirichlet 强度 ( S = ∑ k = 1 K α k S = \sum_{k=1}^K \alpha_k S=k=1Kαk),不确定性 ( u = K S u = \frac{K}{S} u=SK),信念质量 ( b k = e k S b_k = \frac{e_k}{S} bk=Sek)。
    • 损失函数设计L2 损失的贝叶斯风险:最小化预测分布与真实分布的 L2 距离,分解为偏差项(预测误差)和方差项(不确定性):( L i = ∑ j = 1 K ( y i j − p ^ i j ) 2 + ∑ j = 1 K p ^ i j ( 1 − p ^ i j ) S i + 1 \mathcal{L}_i = \sum_{j=1}^K \left( y_{ij} - \hat{p}_{ij} \right)^2 + \sum_{j=1}^K \frac{\hat{p}_{ij}(1 - \hat{p}_{ij})}{S_i + 1} Li=j=1K(yijp^ij)2+j=1KSi+1p^ij(1p^ij)) 。其中 ( p ^ i j = α i j S i \hat{p}_{ij} = \frac{\alpha_{ij}}{S_i} p^ij=Siαij) 为 Dirichlet 分布的均值。KL 散度正则化:引入均匀 Dirichlet 分布作为先验,惩罚偏离 “完全无知” 状态的预测,避免过拟合。
  • 引入信念质量(Belief Mass)和不确定性质量(Uncertainty Mass),通过 Dirichlet 分布参数化主观意见,统一建模确定与不确定状态。Dirichlet 分布性质:均值 ( p ^ k = α k S \hat{p}_k = \frac{\alpha_k}{S} p^k=Sαk) 对应 Softmax 点估计,方差 ( Var ( p k ) = α k ( S − α k ) S 2 ( S + 1 ) \text{Var}(p_k) = \frac{\alpha_k(S - \alpha_k)}{S^2(S + 1)} Var(pk)=S2(S+1)αk(Sαk)) 量化不确定性,损失函数显式优化这两项。将 L2 损失分解为偏差和方差项,理论证明偏差项主导,确保模型优先拟合数据,同时控制方差

Introduction

  • 本十年始于震撼机器学习世界的深度学习方法。由于最近的发明,如dropout 、batch normalization 和skip connections,新一代深度神经网络结构在几乎所有的机器学习应用中都取得了惊人的成功。使神经网络适应特定应用的进一步分支带来了前所未有的预测精度,在某些情况下超过了人类水平的性能。硬币的一面是对深度学习研究的兴趣和投资的增加,另一面是对其鲁棒性、样本效率、安全性和可解释性的迫切需求。

  • 在有大量标记数据可用的设置中,通过遵循简短的经验法则列表来实现足够高的精度的能力被认为是理所当然的。因此,即将到来的时代的主要挑战可能在于其他地方,而不是测试集精度的提高。例如,神经网络能够识别属于不相关数据分布的数据点吗?如果我们在一组手写数字上训练网络后输入一张猫的图片,它能简单地说“我不知道”吗?更重要的是,网络能保护用户免受恶意攻击吗?这些问题已经通过对贝叶斯神经网络(BNNs) 的一系列研究得到解决,贝叶斯神经网络通过近似后验预测分布的矩来估计预测不确定性。这种整体方法寻求一种除了不确定性估计之外还具有广泛实际用途的解决方案,例如自动模型选择和增强的抗过拟合能力。

  • 在本文中,我们将全部注意力放在不确定性估计问题上,并从证据理论的角度对其进行处理 。我们将分类网络的标准输出 softmax 解释为分类分布的参数集。通过用狄利克雷密度的参数替换该参数集,我们将学习者的预测表示为可能的 softmax 输出的分布,而不是softmax输出的点估计。换句话说,这个密度可以直观地理解为这些点估计的工厂。所得到的模型具有特定的损失函数,该损失函数根据使用标准反向传播的神经网络权重被最小化。

  • 在一组实验中,我们证明了在高质量不确定性建模至关重要的两个应用中,该技术远远优于最先进的BNNs。特别地,当输入来自不同于训练样本的分布时,我们的模型的预测分布比BNNs更接近最大熵设置。图1说明了我们的方法对输入数字的旋转反应有多敏感。因为它没有被训练来处理旋转不变性,所以在大约50°输入旋转之后,它急剧降低了分类概率并增加了预测不确定性。标准的softmax持续报告高旋转的不正确类别的高置信度。最后,我们观察到,在两个不同的基准数据集上,我们的模型对于敌对攻击明显更健壮。本文中的所有向量都是列向量,用粗体表示,例如 x,其中第k个元素表示为xk。我们用来指哈达玛(按元素)乘积。

Deficiencies of Modeling Class Probabilities with Softmax

  • 深度神经网络的黄金标准是使用softmax算子将输出层的连续激活转换为类概率。最终的模型可以被解释为多项式分布,其参数,即离散类概率,由神经网络输出决定。对于K类分类问题,观察到的元组(x;y)的似然函数为

    • P r ( y ∣ x ; θ ) = M u l t ( y ∣ σ ( f 1 ( x ; θ ) ) ; ⋅ ⋅ ⋅ ; σ ( f K ( x ; θ ) ) ) ; P_ r(y|x; θ) = Mult(y|σ(f_1(x; θ)); · · · ; σ(f_K(x; θ))); Pr(yx;θ)=Mult(yσ(f1(x;θ));⋅⋅⋅;σ(fK(x;θ)));

    • 其中Mult()是多项式质量函数,FJ(x;θ)是由θ参数化的任意神经网络f()的第j个输出通道, σ ( u j ) = e u j / ∑ i = 1 K e u K σ(u_j ) = e ^{u_j} / \sum^K _{i=1} e uK σ(uj)=euj/i=1KeuK 是softmax函数。虽然连续神经网络负责调整类概率的比率,但是softmax将这些比率压缩成单纯形。最终的soft max-squaded多项式似然性然后相对于神经网络参数θ被最大化。为了计算方便,最小化负对数似然的等价问题是优选的

    • − log ⁡ p ( y ∣ x ; θ ) = − log ⁡ σ ( f y ( x ; θ ) ) − \log p(y|x; θ) = − \log σ(f_y(x; θ)) logp(yx;θ)=logσ(fy(x;θ))

  • 这就是广为人知的交叉熵损失。值得注意的是,交叉熵损失的概率解释仅仅是最大似然估计(MLE)。作为一种频率技术,MLE不能推断预测的分布方差。Softmax也因在神经网络输出中使用指数而夸大了预测类别的概率而臭名昭著。结果是不可靠的不确定性估计,因为新观察的预测标签的距离除了相对于其他类别的比较值之外,对结论没有用处。

  • 受和的启发,在图1的左侧,我们演示了LeNet 如何在逆时针方向连续旋转时无法对MNIST数据集中的数字1图像进行分类。与许多标准化架构一样,LeNet使用softmax函数来估计分类概率。当图像旋转时,它不能正确地对图像进行分类;基于旋转的程度,图像被分类为2或5。例如,对于小角度的旋转,图像被正确地分类为具有高概率值的1。然而,当图像在60-100度之间旋转时,它被分类为2。当图像在110-130度之间旋转时,网络开始将图像分类为5。虽然使用softmax函数计算的分类概率对于错误分类的样本来说相当高(见图1,左图),但我们在本文中提出的方法可以准确量化其预测的不确定性(见图1,右图)。

    • 在这里插入图片描述

    • 图1:0到180度之间不同角度的旋转数字1(底部)的分类。左图:使用softmax函数计算分类概率。右图:使用建议的方法计算分类概率和不确定性。

Uncertainty and the Theory of Evidence

  • demps ter-Shafer证据理论(DST)是贝叶斯理论对主观概率的推广。它将信念质量分配给辨别框架的子集,辨别框架表示唯一可能状态的集合,例如样本的可能类别标签。信念质量可以被分配给该框架的任何子集,包括整个框架本身,这表示这样的信念,即真相可以是任何可能的状态,例如,任何类别标签都是同等可能的。换句话说,通过给整个框架分配所有的信念质量,一个人表达“我不知道”作为对可能状态的真理的意见。主观逻辑(SL)将DST在识别框架上的信念分配概念形式化为狄利克雷分布。因此,它允许一个人使用证据理论的原则,通过一个明确定义的理论框架来量化信念质量和不确定性。更具体地,SL通过为每个单件 k = 1 , . . . , K k = 1,...,K k=1,...,K 提供置信质量bk来考虑K个互斥单件(例如,类别标签)的帧;并提供u的总不确定性质量。这些K + 1个质量值都是非负的,并且总和为1,即,

    • u + ∑ k = 1 K b k = 1 u +\sum^ K _{k=1} bk = 1 u+k=1Kbk=1

    • 其中,对于 k = 1 , . . . , K k = 1,...,K k=1,...,K ,u ≥ 0,bk≥0;使用单例k的证据来计算单例k的置信质量bk。设ek ≥ 0是为第k个单例导出的证据,则置信度bk和不确定度u计算如下

    • b k = e k S    a n d    u = K S ; ( 1 ) bk =\frac {ek} S ~~and~~ u =\frac K S ; (1) bk=Sek  and  u=SK;(1)

  • 其中 S = ∑ i = 1 K ( e i + 1 ) S =\sum^K _{i=1}(ei + 1) S=i=1K(ei+1)。注意,不确定性与总证据成反比。当没有证据时,每个单例的信念是零,不确定性是一。与贝叶斯建模术语不同,我们将证据定义为从数据中收集的支持量的度量,支持将样本分类到某个类别。信念质量分配,即主观意见,对应于具有参数αk = ek + 1的狄利克雷分布。也就是说,使用bk =(αk1)= S,可以很容易地从相应的狄利克雷分布参数中得出主观意见,其中 S = ∑ i = 1 K α i S =\sum ^K _{i=1 }αi S=i=1Kαi 称为狄利克雷强度。

  • 标准神经网络分类器的输出是每个样本的可能类别的概率分配。然而,在证据上参数化的狄利克雷分布表示每个这样的概率分配的密度;因此,它模拟了二阶概率和不确定性。狄利克雷分布是概率质量函数(pmf) p的可能值的概率密度函数(pdf),其特征在于K个参数α=[α1;;αK]并由下式给出

    • D ( p ∣ α ) = { 1 B ( α ) ∏ i = 1 K p i α i − 1 f o r   p ∈ S K , 0 o t h e r w i s e , D ( \mathbf{p} | \boldsymbol{\alpha} )=\left\{\begin{array} {l l} {{{\frac{1} {B ( \boldsymbol{\alpha} )}} \prod_{i=1}^{K} p_{i}^{\alpha_{i}-1}}} & {{{\mathrm{f o r ~}} \mathbf{p} \in\mathcal{S}_{K},}} \\ {{0}} & {{{\mathrm{o t h e r w i s e}},}} \\ \end{array} \right. D(pα)={B(α)1i=1Kpiαi10for pSK,otherwise,

    • 其中SK是K维单位单形

    • S K = { p ∣ ∑ i = 1 K p i = 1    a n d    0 ≤ p 1 , … , p K ≤ 1 } \mathcal{S}_{K}=\left\{\mathbf{p} \Big| \sum_{i=1}^{K} p_{i}=1 \; \mathrm{a n d} \; 0 \leq p_{1}, \ldots, p_{K} \leq1 \right\} SK={p i=1Kpi=1and0p1,,pK1}

    • B(α)是K维多项式β函数。

  • 让我们假设我们有 b = < 0 : : : ; 0 > b = <0: : : ;0> b=<0:::;0> 作为10类分类问题的信念质量分配。然后,用于图像分类的先验分布变成均匀分布,即 D ( p ∣ < 1 ; : : : ; 1 > ) D(p| <1;: : : ;1>) D(p<1:::;1>) —参数全为1的狄利克雷分布。没有观察到的证据,因为信念质量都是零。这意味着意见对应于均匀分布,不包含任何信息,并暗示完全不确定性,即u = 1。让信仰群众变成 b = < 0.8 ; 0 ; : : : ; 0 > b = <0.8;0;: : : ;0> b=<0.80;:::;0> 经过一些训练后。这意味着意见中的总信念是0:8,剩余的0:2是不确定性。狄利克雷强度计算为S = 10/0.2 = 50,因为K = 10。因此,为第一类派生的新证据的数量计算为50 × 0:8 = 40。在这种情况下,意见将对应于狄利克雷分布 D ( p ∣ < 41 ; 1 ; : : : ; 1 > ) D(p|<41;1;: : : ;1>) D(p<411;:::;1>)。给定一个观点,第k个单例的期望概率是相应的狄利克雷分布的平均值,计算如下

    • p k = α k S : pk =\frac {α_k }S : pk=Sαk:
  • 当关于样本的观察将其与K个属性中的一个相关联时,相应的狄利克雷参数递增,以用新的观察来更新狄利克雷分布。例如,检测图像上的特定模式可能有助于将其分类到特定类别中。在这种情况下,对应于该类的Dirichlet参数应该递增。这意味着用于样本分类的狄利克雷分布的参数可以解释每一类的证据。

  • 在本文中,我们认为神经网络能够形成分类任务的意见作为狄利克雷分布。我们假设 α i = < α i 1 ; : : : ; α i K > α_i = <αi1;: : : ;αiK> αi=<αi1:::;αiK> 是用于样本I的分类的狄利克雷分布的参数,那么(αij 1)是由网络估计的用于将样本I分配到第j类的总证据。此外,给定这些参数,可以使用等式1容易地计算分类的认知不确定性。

Learning to Form Opinions

  • softmax函数提供样本类别概率的点估计,但不提供相关的不确定性。另一方面,多项式观点或等效的狄利克雷分布可用于对类别概率的概率分布建模。因此,在本文中,我们设计并训练神经网络,以形成它们对给定样本I的分类为Dirichlet分布D(pi jαi)的多项式意见,其中pi是表示类别分配概率的单纯形。

  • 我们用于分类的神经网络非常类似于经典的神经网络。唯一的区别是softmax层被激活层(例如ReLU)代替,以确定非负输出,其被用作预测的狄利克雷分布的证据向量

  • 给定样本I,设 f ( X i ∣ θ ) f(X_i|θ) f(Xiθ) 表示网络为分类预测的证据向量,其中θ是网络参数。那么,相应的狄利克雷分布有参数 α i = f ( X i ∣ θ ) + 1 α_i = f(Xi |θ)+1 αi=f(Xiθ)+1。一旦计算出这个分布的参数,它的平均值,即αi=Si,就可以作为类概率的估计。

  • 设yi是编码观测值xi的地面真实类的唯一向量,对于所有 k ≠ j , y i j = 1 , y i k = 0 , α i k \neq j,y_{ij} = 1,y_{ik} = 0,αi k=jyij=1yik=0αi 是预测值上的狄利克雷密度的参数。首先,我们可以将 D ( p i ∣ α i ) D(pi |αi) D(piαi) 视为似然Mult(yi | pi)的先验,通过对类概率进行积分得到边际似然的负对数

    • L i ( Θ ) = − log ⁡ ( ∫ ∏ j = 1 K p i j y i j 1 B ( α i ) ∏ j = 1 K p i j α i j − 1 d p i ) = ∑ j = 1 K y i j ( log ⁡ ( S i ) − log ⁡ ( α i j ) ) (3) \mathcal{L}_{i} ( \Theta)=-\operatorname{l o g} \Bigg( \int\prod_{j=1}^{K} p_{i j}^{y_{i j}} \frac{1} {B ( \boldsymbol{\alpha}_{i} )} \prod_{j=1}^{K} p_{i j}^{\alpha_{i j}-1} d \mathbf{p}_{i} \Bigg)=\sum_{j=1}^{K} y_{i j} \Big( \operatorname{l o g} ( S_{i} )-\operatorname{l o g} ( \alpha_{i j} ) \Big) \tag{3} Li(Θ)=log(j=1KpijyijB(αi)1j=1Kpijαij1dpi)=j=1Kyij(log(Si)log(αij))(3)

    • 并且相对于αi参数最小化。这种技术被称为第二类最大似然法。

  • 或者,我们可以定义一个损失函数,并计算其相对于预测类的贝叶斯风险。注意,虽然等式3中的上述损失对应于PAC-learning命名法中的贝叶斯分类器,但是我们将在下面呈现的是吉布斯分类器。对于交叉熵损失,贝叶斯风险将为

    • L i ( Θ ) = ∫ [ ∑ j = 1 K − y i j log ⁡ ( p i j ) ] 1 B ( α i ) ∏ j = 1 K p i j α i j − 1 d p i = ∑ j = 1 K y i j ( ψ ( S i ) − ψ ( α i j ) ) , (4) \mathcal{L}_{i} ( \Theta)=\int\left[ \sum_{j=1}^{K}-y_{i j} \operatorname{l o g} ( p_{i j} ) \right] \frac{1} {B ( \boldsymbol{\alpha}_{i} )} \prod_{j=1}^{K} p_{i j}^{\alpha_{i j}-1} d \mathbf{p}_{i}=\sum_{j=1}^{K} y_{i j} \Big( \psi( S_{i} )-\psi( \alpha_{i j} ) \Big), \tag{4} Li(Θ)=[j=1Kyijlog(pij)]B(αi)1j=1Kpijαij1dpi=j=1Kyij(ψ(Si)ψ(αij)),(4)

    • 其中 ψ ( ⋅ ) \psi( ·) ψ() 是digamma函数。同样的方法也适用于平方和损耗 ∣ ∣ y i − p i ∣ ∣ 2 2 ||y_i-p_i||^2_ 2 ∣∣yipi22,结果为:

    • L i ( Θ ) = ∫ ∣ ∣ y i − p i ∣ ∣ 2 2 1 B ( α i ) ∏ i = 1 K p i j α i j − 1 d p i = ∑ j = 1 K E [ y i j 2 − 2 y i j p i j + p i j 2 ] = ∑ j = 1 K ( y i j 2 − 2 y i j E [ p i j ] + E [ p i j 2 ] ) . (5) \begin{aligned} {{\mathcal{L}_{i} ( \Theta)}} & {{} {{} {}=\int| | {\bf y}_{i}-{\bf p}_{i} | |_{2}^{2} \frac{1} {B ( \boldsymbol{\alpha}_{i} )} \prod_{i=1}^{K} p_{i j}^{\alpha_{i j}-1} d {\bf p}_{i}}} \\ {{}} & {{} {{} {}=\sum_{j=1}^{K} \mathbb{E} \Big[ y_{i j}^{2}-2 y_{i j} p_{i j}+p_{i j}^{2} \Big]=\sum_{j=1}^{K} \Big( y_{i j}^{2}-2 y_{i j} \mathbb{E} [ p_{i j} ]+\mathbb{E} [ p_{i j}^{2} ] \Big).}} \\ \end{aligned} \tag{5} Li(Θ)=∣∣yipi22B(αi)1i=1Kpijαij1dpi=j=1KE[yij22yijpij+pij2]=j=1K(yij22yijE[pij]+E[pij2]).(5)

  • 在上述三个选项中,我们根据我们的经验选择了最后一个。我们已经观察到方程3和4中的损失对类产生过高的置信质量,并且表现出比方程5相对较不稳定的性能。我们将这些备选方案的缺点的理论研究留给未来的工作,相反,我们在下面强调首选损失的一些有利的理论性质。等式5中的损失的第一个优点是使用恒等式

    • E [ p i j 2 ] = E [ p i j ] 2 + V a r ( p i j ) ; E[p^ 2_ {ij} ] = E[p_{ij} ] ^2 + Var(p_{ij} ); E[pij2]=E[pij]2+Var(pij);

    • 我们得到以下易于解释的形式

    • L i ( Θ ) = ∑ j = 1 K ( y i j − E [ p i j ] ) 2 + V a r ( p i j ) = ∑ j = 1 K ( y i j − α i j / S i ) 2 ⏟ L i j ∗ + + α i j ( S i − α i j ) S i 2 ( S i + 1 ) ⏟ L i j ∗ + = ∑ j = 1 K ( y i j − p ^ i j ) 2 + p ^ i j ( 1 − p ^ i j ) ( S i + 1 ) . \begin{aligned} {{\mathcal{L}_{i} ( \Theta)=}} & {{} {} {{} \sum_{j=1}^{K} ( y_{i j}-\mathbb{E} [ p_{i j} ] )^{2}+\mathrm{V a r} ( p_{i j} )}} \\ {{}} & {{} {{} {}=\sum_{j=1}^{K} \underbrace{( y_{i j}-\alpha_{i j} / S_{i} )^{2}}_{\mathcal{L}_{i j}^{*+}}+\underbrace{\frac{\alpha_{i j} ( S_{i}-\alpha_{i j} )} {S_{i}^{2} ( S_{i}+1 )}}_{\mathcal{L}_{i j}^{*+}}}} \\ {{}} & {{} {{} {}=\sum_{j=1}^{K} ( y_{i j}-\hat{p}_{i j} )^{2}+\frac{\hat{p}_{i j} ( 1-\hat{p}_{i j} )} {( S_{i}+1 )}.}} \\ \end{aligned} Li(Θ)=j=1K(yijE[pij])2+Var(pij)=j=1KLij∗+ (yijαij/Si)2+Lij∗+ Si2(Si+1)αij(Siαij)=j=1K(yijp^ij)2+(Si+1)p^ij(1p^ij).

  • 通过分解一阶和二阶矩,损失旨在实现最小化预测误差和由神经网络专门为训练集中的每个样本生成的Dirichlet实验的方差的联合目标。在这样做的时候,它优先考虑数据拟合而不是方差估计,正如下面的命题所保证的那样。

  • Proposition 1.对任意αij ≥ 1,满足不等式 L i j v a r < L i j e r r L ^{var}_ {ij} < L ^{err} _{ij} Lijvar<Lijerr。捕捉等式5的行为的下一步是调查它是否有符合数据的趋势。由于我们的下一个提议,我们保证这一property 。

  • Proposition 2.对于具有正确标签j的给定样本I,当新证据被添加到 αij 时,L err i减小,而当证据被从 αij 移除时,L erri增大。良好的数据拟合可以通过为所有类别生成任意多的证据来实现,只要 GT 类别被分配了大多数证据。然而,为了执行适当的不确定性建模,模型还需要学习反映观察性质的方差。因此,当它对结果更有把握时,它应该产生更多的证据。反过来,它应该避免为自己无法解释的观察结果提供任何证据。我们的下一个命题为这种更可取的行为模式提供了保证,这在不确定性建模文献中被称为习得损失衰减

  • Proposition 3. 对于具有正确类别标签j的给定样本I,当从最大的狄利克雷参数αil中移除一些证据使得 l ≠ j l\neq j l=j 时,L err i减小。当放在一起时,上述命题表明,具有等式5中的损失函数的神经网络被优化以生成每个样本的正确类别标签的更多证据,并通过移除过多的误导证据来帮助神经网络避免错误分类。通过增加证据,这种损失还倾向于缩小其对训练集的预测的方差,但只有当生成的证据导致更好的数据拟合时。所有命题的证明都在附录中给出。

  • 一批训练样本的损失可以通过对该批中每个样本的损失求和来计算。在训练期间,模型可以发现数据中的模式,并基于这些模式生成特定类别标签的证据,以最小化总体损失。例如,该模型可能会发现MNIST图像上存在一个大的圆形图案,这可能是数字0的证据。这意味着当网络在样本上观察到这种模式时,数字0的输出,即类别标签0的证据,应该增加。然而,当在训练期间观察到反例时(例如,具有相同圆形图案的数字6),神经网络的参数应该通过反向传播来调整,以便为该图案生成更少量的证据,并且最小化这些样本的损失,只要总损失也减少。不幸的是,当反例的数量有限时,减少生成证据的数量可能会增加总体损失,即使它减少了反例的损失。因此,神经网络可能会为不正确的标签生成一些证据。样本的这种误导性证据可能不是问题,只要它被网络正确分类,即正确类别标签的证据高于其他类别标签的证据。然而,如果样本不能被正确分类,我们倾向于将样本的总证据缩小到零。让我们注意,具有零总证据的狄利克雷分布,即 S = K,对应于均匀分布,并且指示总不确定性,即 u = 1。我们通过将Kullback-Leibler (KL)散度项结合到我们的损失函数中来实现这一点,该损失函数通过惩罚那些对数据拟合没有贡献的来自“我不知道”状态的散度来调整我们的预测分布。这个正则化术语的损失是

    • L ( Θ ) = ∑ i = 1 N L i ( Θ ) + λ t ∑ i = 1 N K L [ D ( p i ∣ α ~ i ) ∣ ∣ D ( p i ∣ ⟨ 1 , … , 1 ⟩ ) ] , \mathcal{L} ( \Theta)=\sum_{i=1}^{N} \mathcal{L}_{i} ( \Theta)+\lambda_{t} \sum_{i=1}^{N} K L [ D ( \mathbf{p_{i}} | \tilde{\boldsymbol{\alpha}}_{i} ) \mid\mid D ( \mathbf{p_{i}} | \langle1, \ldots, 1 \rangle) ], L(Θ)=i=1NLi(Θ)+λti=1NKL[D(piα~i)∣∣D(pi1,,1⟩)],

  • 其中 λ t = m i n ( 1.0 ; t / 10 ) ∈ [ 0 ; 1 ] λ_t=min(1.0;t/10)\in [0;1] λt=min1.0t/10[01] 是退火系数,t是当前训练周期的指数,D(pi |<1;::;1>)是均匀狄利克雷分布,最后 α ^ i = y i + ( 1 − y i ) ⊙ α i \hat α_i=y_i+(1-y_i)\odot α_i α^i=yi+1yiαi是从样本i的预测参数αi中去除非误导性证据后的狄利克雷参数。损失中的KL散度项可以计算为

    • K L [ D ( p i ∣ α ~ i ) ∣ ∣ D ( p i ∣ 1 ) ] = log ⁡ ( Γ ( ∑ k = 1 K α ~ i k ) Γ ( K ) ∏ k = 1 K Γ ( α ~ i k ) ) + ∑ k = 1 K ( α ~ i k − 1 ) [ ψ ( α ~ i k ) − ψ ( ∑ j = 1 K α ~ i j ) ] , \begin{aligned} {{K L [ D ( \mathbf{p}_{i} | \tilde{\boldsymbol{\alpha}}_{i} )}} & {{} {{} \mid\mid D ( \mathbf{p}_{i} | \mathbf{1} ) ]}} \\ {{}} & {{} {{} {}=\operatorname{l o g} \left( \frac{\Gamma( \sum_{k=1}^{K} \tilde{\alpha}_{i k} )} {\Gamma( K ) \prod_{k=1}^{K} \Gamma( \tilde{\alpha}_{i k} )} \right)+\sum_{k=1}^{K} ( \tilde{\alpha}_{i k}-1 ) \Bigg[ \psi( \tilde{\alpha}_{i k} )-\psi\Big( \sum_{j=1}^{K} \tilde{\alpha}_{i j} \Big) \Bigg],}} \\ \end{aligned} KL[D(piα~i)∣∣D(pi1)]=log(Γ(K)k=1KΓ(α~ik)Γ(k=1Kα~ik))+k=1K(α~ik1)[ψ(α~ik)ψ(j=1Kα~ij)],

  • 其中1表示K个参数的参数向量,Γ(·)是gamma函数, ψ ( ⋅ ) \psi(·) ψ为digamma函数。通过退火系数逐渐增加KL散度在损失中的影响,我们允许神经网络探索参数空间,避免误分类样本过早收敛到均匀分布,这些样本在未来的时代可能会被正确分类

  • losses.py 文件主要定义了与证据深度学习(Evidential Deep Learning, EDL)相关的损失函数。证据深度学习旨在处理深度学习模型中的不确定性,通过引入证据(evidence)的概念,能够更有效地表达模型的置信度

    • relu_evidence:使用 ReLU 函数将输入 y 转换为证据。ReLU 函数可以将负数映射为 0,保留正数部分,确保证据值非负。
    • exp_evidence:使用指数函数将输入 y 转换为证据。为了避免数值溢出,使用 torch.clamp 函数将输入限制在 -10 到 10 之间。
    • softplus_evidence:使用 Softplus 函数将输入 y 转换为证据。Softplus 函数是 ReLU 函数的平滑近似,能够产生连续可导的输出。
  • def kl_divergence(alpha, num_classes, device=None):
        if not device:
            device = get_device()
        ones = torch.ones([1, num_classes], dtype=torch.float32, device=device)
        sum_alpha = torch.sum(alpha, dim=1, keepdim=True)
        first_term = (
            torch.lgamma(sum_alpha)
            - torch.lgamma(alpha).sum(dim=1, keepdim=True)
            + torch.lgamma(ones).sum(dim=1, keepdim=True)
            - torch.lgamma(ones.sum(dim=1, keepdim=True))
        )
        second_term = (
            (alpha - ones)
            .mul(torch.digamma(alpha) - torch.digamma(sum_alpha))
            .sum(dim=1, keepdim=True)
        )
        kl = first_term + second_term
        return kl
    
  • 计算 Dirichlet 分布之间的 KL 散度。在证据深度学习中,KL 散度用于衡量模型预测的分布与先验分布之间的差异alpha:Dirichlet 分布的参数向量。num_classes:分类的类别数。

  • def loglikelihood_loss(y, alpha, device=None):
        if not device:
            device = get_device()
        y = y.to(device)
        alpha = alpha.to(device)
        S = torch.sum(alpha, dim=1, keepdim=True)
        loglikelihood_err = torch.sum((y - (alpha / S)) ** 2, dim=1, keepdim=True)
        loglikelihood_var = torch.sum(
            alpha * (S - alpha) / (S * S * (S + 1)), dim=1, keepdim=True
        )
        loglikelihood = loglikelihood_err + loglikelihood_var
        return loglikelihood
    
  • 计算对数似然损失。该损失函数用于衡量模型预测的分布与真实标签之间的差异。y:真实标签。alpha:Dirichlet 分布的参数向量。

  • def mse_loss(y, alpha, epoch_num, num_classes, annealing_step, device=None):
        if not device:
            device = get_device()
        y = y.to(device)
        alpha = alpha.to(device)
        loglikelihood = loglikelihood_loss(y, alpha, device=device)
        annealing_coef = torch.min(
            torch.tensor(1.0, dtype=torch.float32),
            torch.tensor(epoch_num / annealing_step, dtype=torch.float32),
        )
        kl_alpha = (alpha - 1) * (1 - y) + 1
        kl_div = annealing_coef * kl_divergence(kl_alpha, num_classes, device=device)
        return loglikelihood + kl_div
    
  • 计算均方误差(MSE)损失,结合了对数似然损失和 KL 散度。通过引入退火系数 annealing_coef,可以在训练过程中逐渐增加 KL 散度的权重。y:真实标签。alpha:Dirichlet 分布的参数向量。epoch_num:当前训练的轮数。num_classes:分类的类别数。annealing_step:退火步数,用于控制 KL 散度的权重增长速度。

  • def edl_loss(func, y, alpha, epoch_num, num_classes, annealing_step, device=None):
        y = y.to(device)
        alpha = alpha.to(device)
        S = torch.sum(alpha, dim=1, keepdim=True)
        A = torch.sum(y * (func(S) - func(alpha)), dim=1, keepdim=True)
        annealing_coef = torch.min(
            torch.tensor(1.0, dtype=torch.float32),
            torch.tensor(epoch_num / annealing_step, dtype=torch.float32),
        )
        kl_alpha = (alpha - 1) * (1 - y) + 1
        kl_div = annealing_coef * kl_divergence(kl_alpha, num_classes, device=device)
        return A + kl_div
    
  • 计算通用的 EDL 损失,结合了一个自定义函数 func 和 KL 散度。func:自定义函数,如 torch.logtorch.digammay:真实标签。alpha:Dirichlet 分布的参数向量。epoch_num:当前训练的轮数。num_classes:分类的类别数。annealing_step:退火步数,用于控制 KL 散度的权重增长速度。

  • def edl_mse_loss(output, target, epoch_num, num_classes, annealing_step, device=None):
        if not device:
            device = get_device()
        evidence = relu_evidence(output)
        alpha = evidence + 1
        loss = torch.mean(
            mse_loss(
                target, 
                alpha, 
                epoch_num, 
                num_classes, 
                annealing_step, 
                device=device
            )
        )
        return loss
    def edl_log_loss(output, target, epoch_num, num_classes, annealing_step, device=None):
        if not device:
            device = get_device()
        evidence = relu_evidence(output)
        alpha = evidence + 1
        loss = torch.mean(
            edl_loss(
                torch.log, 
                target, 
                alpha, 
                epoch_num, 
                num_classes, 
                annealing_step, 
                device
            )
        )
        return loss
    def edl_digamma_loss(
        output, target, epoch_num, num_classes, annealing_step, device=None
    ):
        if not device:
            device = get_device()
        evidence = relu_evidence(output)
        alpha = evidence + 1
        loss = torch.mean(
            edl_loss(
                torch.digamma, 
                target, 
                alpha, 
                epoch_num, 
                num_classes, 
                annealing_step, 
                device
            )
        )
        return loss
    
  • 应用到图像分类项目的步骤

    • 导入损失函数:在图像分类项目中,导入 losses.py 文件中的损失函数。
    • 定义模型输出:确保你的模型输出能够转换为证据。通常,模型的最后一层不需要使用 Softmax 激活函数,因为证据函数会对输出进行处理
    • 训练模型:在训练循环中,使用 EDL 损失函数进行模型训练。
    • 调整参数:根据数据集和任务,调整 annealing_step 等参数,以获得最佳的训练效果。

Experiments

  • 为了可公度性,我们按照Louizos等人 研究的实验设置来评估我们的方法。我们使用具有ReLU非线性的标准LeNet作为神经网络架构。所有实验都在Tensorflow 中实现,Adam 优化器已使用默认设置进行训练【我们模型的实现和演示应用程序可在以下网址获得https://muratsensoy.github.io/uncertainty.html】。

  • 在本节中,我们比较了以下方法:(a) L2对应于具有softmax输出和权重衰减的标准确定性神经网络,(b) Dropout是指中使用的不确定性估计模型,© Deep Ensemble是指中使用的模型,(d) FFG是指中使用的具有附加参数化的贝叶斯神经网络,(e) MNFG是指中使用的结构化变分推断方法,(f) EDL是我们提出的方法。我们在MNIST和CIFAR10数据集上测试了这些方法的预测不确定性。我们还使用使用快速梯度符号方法生成的对立示例来比较它们的性能。

    • 在这里插入图片描述

    • 表1:MNIST和CIFAR5数据集的测试准确率(%)。

Predictive Uncertainty Performance

  • 我们在第一和第二卷积层使用20和50个大小为5 × 5的滤波器,在全连接层使用500个隐藏单元,来训练MNIST的LeNet架构。其他方法也使用[Multiplicative normalizing flows for variational bayesian neural networks]中描述的具有先验和后验的相同架构来训练。每种方法对MNIST测试集的分类性能可以在表1中看到。该表表明我们的方法与竞争对手的性能相当。因此,我们对不确定性估计的扩展不会降低模型容量。让我们注意,该表可能会误导我们的方法,因为在计算总体精度时,完全不确定的预测(即u = 1:0)也被视为失败;这种零证据的预测意味着模型拒绝做出预测(即说“我不知道”)。图2画出了如果EDL拒绝超过变化的不确定性阈值的预测,测试精度如何变化。值得注意的是,相关不确定性小于阈值的预测的准确度随着不确定性阈值的降低而增加并变为1.0。

    • 在这里插入图片描述

    • 图2:相对于EDL不确定度阈值的准确度变化。

  • 我们的方法使用等式1直接量化不确定性。然而,其他方法使用熵来测量预测的不确定性,如[Multiplicative normalizing flows for variational bayesian neural networks]中所述,即预测的不确定性被认为随着预测概率的熵的增加而增加。公平地说,在本文的其余部分,我们使用相同的度量来评估预测的不确定性;我们使用等式2来计算类别概率。

  • 在我们的第一组评估中,我们使用相同的LeNet架构在MNIST train split 上训练模型,并在not MNIST数据集上测试,该数据集包含字母,而不是数字。因此,我们期望预测具有最大熵(即不确定性)。在图 3 的左图中,我们显示了在可能的熵 [0;log(10)] 用于用MNIST数据集训练的所有模型。更靠近图右下角的曲线是可取的,这表明所有预测中的最大熵。很明显,我们的模型的不确定性估计明显优于基线方法。

    • 在这里插入图片描述

    • 图3. not MNIST数据集(左)和 CIFAR10 数据集最后五个类别的样本(右)的预测分布熵的经验CDF。

  • 我们还研究了建议的设置,该设置使用CIFAR10中类别的子集进行训练,其余用于分布外不确定性测试。为了公平比较,我们按照作者的方法,使用大型LeNet版本,它在每个卷积层包含192个滤波器,在全连接层有1000个隐藏单元。对于训练,我们使用来自CIFAR10的训练集中的前五个类别{狗、青蛙、马、船、卡车}的样本。表1中示出了训练模型对来自相同类别的测试样本的准确度。图2显示,随着预测不确定性的降低,EDL提供了更加准确的预测。

  • 为了评估模型的预测不确定性,我们在CIFAR10数据集的最后五个类别(即{飞机、汽车、鸟、猫、鹿})的样本上对它们进行了测试。因此,这些样本的预测没有一个是正确的,我们预计预测的不确定性很高。我们的结果显示在图3的右侧。该图表明,与其他方法相比,EDL的预测具有更大的不确定性。

Accuracy and Uncertainty on Adversarial Examples

  • 我们还根据对抗性例子评估了我们的方法。对于之前实验中训练的每个模型,使用 Cleverhans 对抗性机器学习库中的快速梯度符号方法,使用各种对抗性扰动系数值生成对抗性示例。这些示例是使用模型的权重生成的,随着值的增加,很难对模型做出正确的预测。我们使用对抗性示例来测试训练好的模型。然而,为了公平起见,这组实验中排除了深度集成模型,因为它是在对抗性示例上训练的

  • 图4显示了在MNIST数据集上训练的模型的结果。左图展示了精确度,右图展示了不确定性估计。不确定性是根据预测熵与最大熵的比率来估计的,在图中称为%最大熵。我们注意到,对于MNIST和CIFAR5数据集,最大熵分别为log(10)和log(5)。该图表明,对于该图左侧面板所示的对立示例,Dropout具有最高的准确性;然而,正如右图所示,它对所有的预测都过于自信。也就是说,它对自己的错误预测抱有很高的信心。

    • 在这里插入图片描述

    • 图4:MNIST数据集上 ϵ \epsilon ϵ 作为对抗扰动函数的准确性和熵。

  • 然而,EDL代表了预测不确定性和准确性之间的良好平衡。它将非常高的不确定性与错误的预测联系在一起。我们在CIFAR5数据集上执行了相同的实验。图5展示了结果,这表明EDL认为错误的预测具有更高的不确定性。另一方面,其他模型对自己的错误预测过于自信。

    • 在这里插入图片描述

    • 图5:CIFAR5数据集上作为对抗扰动函数的准确性和熵。

Related Work

  • 学习不确定性感知预测器的历史与现代贝叶斯机器学习方法的出现是同时发生的。沿着这条路线的一个主要分支是高斯过程(GP),它在做出准确预测和为预测的不确定性提供可靠度量方面都很强大。它们在预测方面的能力已经在不同的环境中得到了证明,例如 迁移学习 和 深度学习。他们的不确定性计算值为主动学习设定了最先进的水平。由于GP是非参数模型,因此它们没有确定性或随机模型参数的概念。GP在不确定性建模中的一个显著优势是,它们的预测方差可以以封闭形式计算,尽管它们能够将各种非线性预测函数拟合到数据中。因此,它们是普遍的预测因素[The variational Gaussian process]。

  • 预测不确定性建模的另一条研究路线是利用模型参数的先验分布(当模型为参数时),推断后验分布,并使用所得后验预测分布的高阶矩来解释不确定性。bnn也属于这一类。BNNs通过在突触连接权重上应用先验分布来解决参数不确定性。由于连续层之间的非线性激活,计算权重的合成后验概率是困难的。改进近似技术,如变分贝叶斯(VB) 和随机梯度哈密尔顿蒙特卡罗(SG-HMC) 是一个活跃的研究领域。尽管bnn有巨大的预测能力,但它们的后验预测分布不能以封闭形式计算。现有技术是用蒙特卡罗积分来近似后验预测密度,这给不确定性估计带来了显著的噪声因素。与这种方法正交的是,我们绕过了对预测器的不确定性来源的推断,并通过确定性神经网络从数据中学习其超参数来直接对Dirichlet后验模型进行建模

Conclusions

  • 在这项工作中,我们通过在类别概率上放置狄利克雷分布并为其参数分配神经网络输出来设计分类的预测分布。我们通过最小化关于L2范数损失的贝叶斯风险来拟合该预测分布,该损失通过信息论复杂性项来正则化。结果预测器是类别概率上的狄利克雷分布,其提供了比标准softmax-output深网的点估计更详细的不确定性模型。我们从证据推理的角度解释这个预测器的行为,通过建立从它的预测到主观逻辑的信念质量和不确定性分解的联系。我们的预测器在两个不确定性建模基准中显著提高了技术水平:I)分布外查询的检测,和ii)对抗敌对扰动的耐力。

  • OOD 指这么一类任务,即测试时遇到的样本和训练时的样本要么不是一个 class 的(新类检测),要么是属于同一个 class 的不同 domain 的图像(比如同一个疾病的不同模态;同一个人像的不同绘画风格;同一个图像源的不同采集角度、采集参数等等)。根据具体的任务,OOD 还能继续细分为 near OOD 和 far OOD。其中 near OOD 就是指长得和训练数据很像,但是仍然属于 OOD 范畴的输入数据。医学影像中的罕见病灶往往都符合 near OOD 的定义,因此,将这些玩意儿检测出来显得具有挑战性。

  • Softmax 的缺陷:Softmax 输出是点估计,无法表达不确定性,导致 OOD 数据的高置信度错误。Dirichlet 分布的优势:作为二阶概率分布,Dirichlet 可建模类概率的分布,通过参数调节实现从 “确定”(集中分布)到 “不确定”(均匀分布)的过渡。证据的物理意义:网络输出的证据值代表对类别的支持度,证据为零对应完全无知(均匀分布)。

  • 不确定性量化:通过 Dirichlet 参数直接计算不确定性 ( u = K S u = \frac{K}{S} u=SK),当 ( S → K S \to K SK) 时,模型输出均匀分布,表示 “未知”。对抗鲁棒性:对对抗样本,EDL 会增加不确定性,避免高置信度错误,而传统方法(如 Dropout)仍保持高置信度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

羞儿

写作是兴趣,打赏看心情

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

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

打赏作者

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

抵扣说明:

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

余额充值