学习笔记 Evidential Deep Learning(EDL)证据深度学习

本文最后更新于:2024年2月25日 下午

学习笔记 Evidential Deep Learning(EDL)证据深度学习

证据深度学习是文献Evidential Deep Learning to Quantify Classification Uncertainty中提出的一种衡量模型预测不确定性的方法,其引入主观逻辑(Subjective Logic)来进行建模,并将类别概率建模为一个Dirichlet分布,模型输出的logits作为主观意见(subjective opinions)的证据(evidence)。

Softmax概率的问题

在使用网络对MNIST进行分类时,一般模型最后就输出logits然后通过softmax转换成概率,并使用交叉熵进行优化。

上图左边是对数字1进行旋转得到各个分类的概率,可以看到,在将1逐渐转到90度附近时,类别“1”的概率下降,但是对于横着的“1”,虽然不属于任何数字,但是“2”和“5”类别的概率却非常高,此时模型在“不懂装懂”。

上图右边则是使用EDL建模之后的情况,除了每个类的概率,还有一个不确信度的输出,可以看到,在横着“1”时,其他类别的概率都比较低,而不确定性很高,因为这是一个不确定的预测,模型无法确定它看到的是哪个数字(实际上哪个数字都不对)。

主观逻辑

EDL是基于主观逻辑的,主观逻辑则是Audun Jøsang教授写了一本书来介绍的学科,这里给出其PPTOpinion Visualization Demo (universitetetioslo.no)

在标准的逻辑概念里,一个命题要么是真的,要么是假的;在概率逻辑中,观点则可以表示为[0,1][0,1]的概率。然而,现实中人类做判断都不是完全确定的,也不能完全确信某个观点的“正确率”,我们生活的世界是主观的。目前的神经网络模型无法表达“我不知道”这个概念,就像让一个小学生来做微积分题一样,小学生会说“我不知道”,而不是随便写一个数字。因为模型都会输出一个和为1的概率,这种建模就不可能得到“不确定性”。即使是{0.5,0.5}\{0.5,0.5\}​​​的概率也只是表示正和负的概率都为0.5,而不是“不确定”。

⚠️以下以二元主观逻辑为例进行说明

主观逻辑(Subjective Logic)包含以下几个概念:

  1. opinion:直译是“意见”,即一个人对某件事情的主观的看法。是一个函数,包含了belief mass、uncertainty mass、base rate,在二元时是一个四元组(b,d,u,a)(b,d,u,a),如下所示

  2. belief mass是认为某个事情是true的相信程度

  3. uncertainty是1减去所有类别的相信程度,剩下的不确信度

  4. base rate是先验概率,指在做出判断之前属于各个类别的概率

b,d,u,ab,d,u,a的取值范围均为[0,1][0,1],且b+d+u=1b+d+u=1,即belief信念总和为1,分布在正类、负类和不确定度上。

  • b=1b=1时,表示绝对的True
  • d=1d=1时,表示绝对的False
  • b+d=1b+d=1时,表示传统的没有不确信度的概率
  • b+d<1b+d<1时,是比较一般性的带有不确信度的情况;当b+d=0b+d=0​时,则是完全不确定。

一个二元的意见可以用一个等边三角形表示

这是一些特殊情况在三角形上的点:

一个二元意见同样也可以用一个Beta分布表示

Beta分布有α\alphaβ\beta两个参数,假设观察到正类有rr个、负类有ss个,那α=r+Wa\alpha=r+Wa β=s+W(1a)\beta=s+W(1-a),其中aa是不同类别的先验比率,WW是给先验加权的定值,一般定义为类别数量。aaWW的区别在于,前者对于多分类问题每个类别会有一个对应的aa,而后者是所有类别共享一个WW的;前者在二元意见表示中也存在,而WW仅在Beta分布中存在。

在类别数固定的情况下,一个Beta分布也可以由r,s,ar,s,a三个参数表示。

二元意见和Beta分布两者间的互相转换通过下面这两组公式进行:

OpinionBeta:r=Wbu,s=Wdu,BetaOpinion:b=rr+s+W,d=sr+s+W,u=Wr+s+W\begin{aligned} \text{Opinion} \rightarrow \text{Beta}&: r=\frac{Wb}{u}, \quad s=\frac{Wd}{u}, \\ \text{Beta} \rightarrow \text{Opinion}&: b=\frac{r}{r+s+W}, \quad d=\frac{s}{r+s+W}, \quad u=\frac{W}{r+s+W} \end{aligned}

可以在作者的网页Demo上玩一玩:Opinion Visualization Demo (universitetetioslo.no)

如上图所示,二元意见还可以投影得到一个传统的概率,即

P(x)=b+auP(x)=b + a \cdot u

三元主观逻辑则拓展到用圆锥和Dirichlet分布表示:

EDL:从Opinion中学习

有了主观逻辑的理论基础,EDL就能在其之上设计新的损失函数。

**首先定义符号,**假设网络要对KK个类别进行分类,类别没有先验,每个类别有belief bkb_k,还有不确信度uu,它们加在一起是1:u+k=1Kbk=1u+\sum^K_{k=1}b_k=1

belief则由evidence得到:bk=ekS, where S=k=1K(ei+1)b_k=\frac{e_k}{S},\text{ where }S=\sum^K_{k=1}(e_i+1)

evidence的取值范围为正数,且可以对应Dirichlet分布的参数α\alphaek=αk1e_k=\alpha_k-1

而Dirichlet分布的均值为概率的期望:p^k=αkS=ek+1S\hat{p}_k=\frac{\alpha_k}{S}=\frac{e_k+1}{S}

Type II Maximum Likelihood 损失函数

将原来最后一层的softmax将被替换为非负的激活层,比如ReLU,用来让网络输出evidence vector,用e=f(x,Θ)\boldsymbol{e}=f(\boldsymbol{x},\Theta)表示,则Dirichlet的参数就是α=e+1\boldsymbol{\alpha}=\boldsymbol{e}+1。由此构建最大似然的损失函数:

L(Θ)=j=1KyjlogαjS\mathcal{L}(\Theta)=-\sum^K_{j=1} y_j \log{\frac{\alpha_j}{S}}

基本就是概率得到的方式不一样,此外和交叉熵很像。

Bayes risk 损失函数

umm,看不懂,但是公式是这样的:

L(Θ)=j=1Kyjlogψ(αj)ψ(S)\mathcal{L}(\Theta)=-\sum^K_{j=1} y_j \log{\frac{\psi(\alpha_j)}{\psi(S)}}

其中ψ\psi是digamma function

Bayes risk 引用在平方根上的损失函数

也看不懂,但是公式是这样的:

L(Θ)=j=1K(yj2+2yjE[pj]+E[pj2])\mathcal{L}(\Theta)=-\sum^K_{j=1} (y_j^2+2y_j \mathbb{E}[p_j]+\mathbb{E}[p_j^2])

正则项

KL(D(pa)  D(p<1,1,,1>))\operatorname{KL}(D(p|a)\ ||\ D(p|<1,1,\dots,1>) )

大概是得到的Dirichlet分布要远离“不确定”的均匀分布。

参考文献

Evidential Deep Learning to Quantify Classification Uncertainty 论文阅读笔记 - 知乎 (zhihu.com)