Evidential Deep Learning和证据理论教材的区别(主要是概念)
最近终于彻底搞懂了Evidential Deep Learning,之前有很多看不是特别明白的地方,原来是和证据理论教材(是的,不只是国内老师写的,和国外的老师写的教材出入也比较大)的说法有很多不一样,所以特地写了这一篇来做一下笔记。
证据理论做模式识别的话第一件事是构建辨识框架(FoD)及其幂集,第二件事是写基本概率指派,基本概率指派就是一个函数,名为BPA或mass函数。ENN这里构建FoD及其幂集和证据理论的做法是一样的,但是注意ENN所构建的mass函数是由这样的二元组构成的:
< b , u > : ∑ i = 1 K b i + u = 1 <\mathbf{b},u>:\sum_{i=1}^{K}b_i+u=1 <b,u>:i=1∑Kbi+u=1
其中 b = { b 1 , . . . , b K } \mathbf{b}=\{b_1,...,b_K\} b={b1,...,bK}是 K K K类目标的belief, u u u是uncertainty。需要注意的是如果按照我们国内证据理论的教材的话,其实 b \mathbf{b} b和 u u u都是belief,只不过 b \mathbf{b} b是赋予给单子集的belief, u u u是赋予给FoD的belief(然后呢,赋予给FoD的belief的语义是“我只知道待测样本在这些目标之间,但是具体是哪一个我不知道”的belief,这确实是一种uncertainty,但这只是证据理论所建模的uncertainty的一种),从国内证据理论教材的角度来讲,ENN还需要对介于单子集和FoD之间的那一部分假设赋予belief,但是ENN选择了直接赋为0的操作,这种操作是可以的,但是也应该要说明一下的,文章的话是直接把这块省略了。
第二个就是NN的输出是 e i e_i ei,然后有了 e i e_i ei那么上面的 b i = e i / S b_i=e_i/S bi=ei/S, S = ( ∑ i = 1 K e i ) + K S=(\sum_{i=1}^{K}e_i)+K S=(∑i=1Kei)+K就可以算了,文章里面把这个 e i e_i ei叫证据evidence,但是我觉得这么叫其实是有误导作用的。正常来讲,证据理论里面的一条证据evidence,也可以叫一个证据体a body of evidence,其实是说一个基本概率指派函数,也就是一个mass函数,然后全体mass函数的集合构成了全体证据。
另外知乎上还有人问这个图咋来的。配套的文字是在我们的第一组评估中,我们使用相同的LeNet架构在MNIST训练集上训练模型,并在包含字母(而非数字)的notMNIST数据集上进行测试。因此,我们期望得到最大熵(即不确定性)的预测。在图3的左面板中,我们展示了所有使用MNIST数据集训练的模型在可能熵范围[0, log(10)]内的经验累积分布函数(CDF)。图中越接近右下角(即熵值越大)的曲线越理想,这表明所有预测都具有最大熵[24]。显然,我们模型的不确定性估计明显优于基线方法。
MNIST就是手写数据集,一共有10个类,所以范围是[0,log10]。我们知道证据理论里面只知道证据是没法解读的,必须把证据里面的 < b , u > <\mathbf{b},u> <b,u>转译成概率分布才可以。一般来说,证据理论的话最经典的会用Pignistic Transformation完成这个任务,但是这篇论文呢没用,它直接用 p i = α i / S p_i = \alpha_i/S pi=αi/S, α i = e i + 1 \alpha_i=e_i+1 αi=ei+1这么做的。有了 p i p_i pi,不就有了NN预测的概率了嘛,然后就可以算熵了。这篇基本可以肯定用的是Shannon 熵,而不是证据理论里面的那些熵。就是不知道为什么,ENN的结果里不确定性都这么大。像作者所说的“图中越接近右下角(即熵值越大)的曲线越理想”更是让人觉得费解。。