对神经网络的不确定度估计涉及较多概率论的知识,而且从理论到应用的转化也涉及到使用近似量估计的问题,因此初次接触这部分知识该我带来了不小的挑战。经过几天的探究,还是走了不少弯路,虽说很多细节的理论推理还没有深究,但摸清了借助贝叶斯神经网络估计不确定度的原理和过程。你会发现,在原有神经网络上增加不确定度估计功能,从结构上的变化看似非常简单(只是损失函数,dropout层,输出等已有部分的修改),但背后有很严密的数理逻辑驱动着。
原理简述
不确定度虽分为两类,一类是模型不确定性,另一类是数据不确定性,两种不确定性所在的对象不同。利用模型预测结果的分布特点(注意是分布),可以成为测量不确定度的一种手段。
模型预测由模型生成,在给定训练数据情况下,模型自身有后验分布(因此用不确定度衡量)。为了得到模型预测的分布特点,由贝叶斯定理,需要边缘化(marginalizing,旨在消除条件分布中某个变量的影响)模型的后验分布。
从理想层面,边缘化就是以积分形式穷尽所有模型的分布最后得到模型预测的分布,但现实层面由于深度网络的复杂性,有两方面不现实 - 模型表示的抽象性 & 积分操作,为了落地,在应用时,理想的“积分操作”由离散的采样操作代替(因为我们最终不需要预测分布的完整描述,只需方差即可,而基于dropout的采样方式被证明可以求出方差)。
理想的模型分布是无法满足采样需求的,因此需引入近似模型分布的可采样的分布,新引入的分布由诸多参数决定着,要想近似原模型分布必须要进行参数调整,一种方法是最小化近似分布和原分布的KL散度指标,而这恰好是一个带有明确目标函数的优化任务。至此,对预测分布求解实现了从理论的边缘化操作到实际的优化操作(可通过反向传播)+采样的转换。
不确定性估计
不确定性分类
在贝叶斯模型中,有两类主要的不确定性:模型不确定性和数据不确定性。
模型不确定性
(又称认知不确定性,epistemic uncertainty):
- 主要代表模型参数的不确定性,这种不确定常常来自于我们对收集的用于训练数据的无知(Ignorance),例如当数据集中缺乏某类数据时,模型中对应处理这种场景的参数的不确定性就变大了,结果就是,如果测试时给一个这类的数据,模型表现可能很差。
- 模型不确定性在现有诸多的深度神经网络中都没有被考虑,因为推理预测的后验分布过于困难,变分推理(Variational Inference)是一种流行的方法,其目的在于使用已有的数据样本,驱动简化版的分布去拟合真实的后验分布,而这个拟合指标通过变换某些无法求出的分布,从而变得可以计算。Gal等人发表的论文显示,在神经网络上的带dropout训练过程可被理解为以Bernoulli为假设分布的变分分布拟合过程。(当然,若要达到拟合效果,损失函数等结构都要调整,这篇文章也正是基于此。)
- 模型不确定性可以被消除:通过增大数据集。
数据不确定性
(又称偶然不确定性,aleatoric uncertainty):
- 数据不确定性主要是观测噪音,如传感器噪音或者动作噪音。数据不确定相较模型不确定性在神经网络运用更多,通过分析输出的分布,可以评估该类不确定性。例如之前提到的Social LSTM模型,输出是二维位置高斯分布的五个参数(μ1,μ2,σ1,σ2,ρ)(μ1,μ2,σ1,σ2,ρ),通过预测这五个参数就反映了数据不确定性。
- 数据不确定性不可以被消除。
文章的一篇重要引文用了”formalize“来表示对于这两类不确定性的定义:模型不确定制定在参数的分布上,通过先验分布预设模型,在给予一些训练数据后观察这个分布的变化;数据不确定性制定在输出的分布上,通过分析不同输入对应输出的方差。根据笔者来看,文章最终在估计这两类不确定性时,只有数据不确定性按定义来的,模型不确定性的估计文章通过Gal. 等人的结论成功转移到了估计输出分布上。
这里模型不确定性的重要性在此就不赘述了.
- 其实,笔者之前就有一个疑惑:为什么在神经网络中模型不确定度不能按照传统模型那样去计算熵? 文献指出:主流的Deep Learning都采用最大似然估计或最大后验来训练,因此产生的往往是一个point estimation而不是uncertainty value. 具体来说, 直观来说Softmax层之后的概率向量可以用来解释模型的置信度. 但是实际上模型依然会对具有很大Softmax输出的预测表明较大的不确定性.
- 大部分不确定性估计算法都是基于Bayesian Neural Networks (可以理解为概率性的神经网络, 认为其参数服从一定的先验分布), 给定输入时就可以产生具有一定分布性质的输出用来计算模型不确定度. 但是计算非常复杂,只是理论上的保证.
transformer
3.4 Regularization
在训练过程中,使用了两种正则化手段:
第一种是 「Residual Dropout」。在每一层进行残差连接和归一化之前,先执行 dropout [6]。此外,编码器与解码器中嵌入编码与位置编码之和也应用了 dropout。对于基础模型,原文使用 .
第二种是 「Label Smoothing」。在训练过程中,使用了标签平滑策略 [7],参数设置 。这种策略会增加模型的不确定性,影响困惑度(perplexity),但会提升准确率与 BLEU 得分。
在模型的不确定性程度较低时人工会介入对话,这一特性使得系统会在出现差错之前咨询人工的建议,所以会极大程度地降低给出不合理回复带来的风险。
不确定性估计模块还能让系统以更少的数据量达到更好的性能。
论文 4:A General Framework for Uncertainty Estimation in Deep Learning
- 作者:Antonio Loquercio、Mattia Segu、Davide Scaramuzza
- 论文地址:https://arxiv.org/pdf/1907.06890v3.pdf
摘要:神经网络的预测通常是不可靠的,特别是当输入的样本不在训练集的分布中,或者因为噪声而损坏的情况下。深度学习算法应当具有自动预测这种失败的能力,然而现有的不确定性预测方法需要对网络和优化流程进行调整,尤其忽略了数据中先验知识的重要性。这些方法倾向于过度简化假设,从而低估了不确定性。为了解决这些问题,研究者提出了一种新的不确定性估计框架。基于贝叶斯信念网络和蒙特卡洛采样,研究者的框架不仅能够完善模型对不同来源的不确定性预测,还可以和之前的感知噪声等数据信息相结合。研究者从理论上说明这一模型相比现有模型可以更好地捕捉不确定性。相比之前的方法,在计算机视觉和控制任务上,研究者的方法最多可以超出 23% 的表现。
▲图 1:模型的架构。给定变量 x 作为输入,以及噪声 v^(0),和训练好的神经网络。研究者的方法需要计算输出的置信度。
推荐:对于神经网络预测结果的不确定性研究是近来关注的一个热点。本文提出了一种新颖的方法,推荐读者参考。
神经网络是非线性的 。所以要变为线性,再使用卡尔曼更新