NeurIPS 2022
直播回顾
《追AI的人》系列直播第17期特别场《NeurIPS AI安全论文分享会》以围绕更加安全可靠的智能技术为主题,分享在NeurIPS中包括对抗学习、贝叶斯深度学习、异常检测、鲁棒评估、噪声学习、 鲁棒动态图学习、偏微分方程求解等方向上发表的7篇论文。
以下为议题二Accelerated Linearized Laplace Approximation for Bayesian Deep Learning (NeurIPS 2022 spotlight)《加速线性化拉普拉斯近似》直播的文字回放,共计6028字。
🙋♂️直播详情回顾:
7篇NeurIPS论文公开分享,阿里清华邀你共话AI安全!现分享议题二:Accelerated Linearized Laplace Approximation for Bayesian Deep Learning (NeurIPS 2022 spotlight)《加速线性化拉普拉斯近似》直播回放,全文共计6193字。👇
论文链接: https://thudzj.github.io/ella/paper.pdf
邓志杰,上海交通大学清源研究院助理教授。他的主要研究方向为概率建模和深度学习。他已在ICML、NeurIPS、ICLR、CVPR、ICCV、JMLR等高水平会议和期刊上发表学术论文十余篇。多次担任ICML、NeurIPS、ICLR、CVPR、ICCV等顶级国际会议和期刊的审稿人。从一个非常简单的例子开始,比如我们现在手上有这样的一组数据,有一些正例和一些负例,我们想用深度学习的方法,例如神经网络分类器把它们分开,我们把它叫做model,model可能有很多种。不同的model会对应不同的决策边界或者分界面,他们都可以在训练数据上可以达到基本百分百的训练准确率。
但是对于不同的测试数据,不同的model会给出不一样的预测结果,比如这里会是positive的,中间的分类器却认为他是negative的,这个时候就产生了一个问题,在这些模型里面哪个最合适的模型,还是其实这些模型都不合适?我们再观察深度神经网络的另一个问题,当在做图像分类的任务,神经网络进行数据分类错出现错误是常有的事情。而实际上它可能在错分类时,给出的confidence还非常高,比如这里的confidence是99.5%。那么假设在一个医疗系统里面人类使用者看到神经网络对患者图像给出了这么高置信度的预测,他该不该相信预测?实际上是不太能够相信,因为我们知道深度神经网络是over confidence。为此,我们就引入贝叶斯深度学习的概念,一方面是想解决确定性的神经网络只能cover一个model的问题,另一方面是想解决深度神经网络over confidence的问题,那怎么来解决这些问题呢?我们回到第一个模型选择的例子,其实我们希望这三种模型都可以囊括到建模过程中,比如给每个模型赋予一个1/3的概率,比如新的数据positive,我们认为它只有1/3的概率positive,如果它是negative,它也只有1/3的概率negative。通过加权投票的形式,我们就可以得到一种在有限的信息下,更保守或者是更可靠的这样预测。
在实际的模型的建模过程中是怎么来实现这件事情,建模模型上的variation或者说不确定性的呢?考虑到深度学习模型都是参数化的,我们可以直接建模参数上variation,那么学习目标就不是通过极大值估计来学一个最好的参数w了,而是基于当前的这组数据,来找模型参数的后验分布。在上述case里面,我们的后验分布可以简单理解:这3种分类器的参数每个都有1/3的概率。通过这样的形式,就把刚才所说的这样的建模model variation的功能就实现了。
另一方面怎么来克服 over confidence过自信的问题?在做预测时,贝叶斯模型将我们估计出来的后验分布给积分基调。也就是从后验分布里每次采样出一组参数,用它对X*做预测,在外面套一个积分,相当于把中间后验分布给积分基调,如此就是一个加权投票的形式,来避免我们分类器给出特别高置信度的问题。这样的学习范式叫贝叶斯深度学习。贝斯神经网络就是贝叶斯深度学习里面非常典型的一类方法。通过贝叶斯推断计算出神经网络参数上的后验分布,典型的一些拉普拉斯近似,MCMC还有变分推断,它们也各有优劣。
变分推断大家可能也听得比较多,比如VE、diffusion model,都可以放在诊断这样的学习方式下面,它的应用比较高效,但实际上它的渐进逼近的能力其实也是不能保证的。另一方面MCMC,大家常把它的结果作为ground truth这样的一种贝叶斯推断的方法,它非常灵活,是渐进一致的,但是它有比较慢的收敛率,所以它的学习可能会比较慢。近些年比较关注拉普拉斯近似的方法,它有什么样的好处呢?从形式上来看,它是把一个预训练好的DNN就是正常的深度神经网络,比如大家在网上可以下载一个别人训练好的checkpoint,然后用拉普拉斯近似直接可以把它转成一个贝叶斯神经网络,有实现简单,开销小的优点。具体来说拉普拉斯是怎么做?首先训练一个确定性的模型,要求确定性模型是基于最大后验估计的准则来确定。这个估计则是在极大值估计上,对模型的参数加一个先验的正则。一般的情况下,如果选择高斯先验,它就会退化成我们优化器里面用的weight decay,所以只要优化器里面有weight decay来防止模型over fitting数据,它就是在做最大后验估计,而在最大后验估计收敛的点其实是贝叶斯后验的mode,就是它的众数。拉普拉斯近似其实给Modefit一个高斯分布,然后还要转一下高斯分布的斜方差矩阵,那么这个一般是如何计算的?其实是算后验的,即 log后验。对模型参数矩阵,是在收敛的 map的地方,矩阵里面还有一个求逆。然后在做决策的时候,它是对我们刚才所说的对近似后验分布就把近似后验分布替换成我们原来里面后验,来做积分,做这种类似于投票形式的预测。实际上我们可以做一些通用的假设,比如假设这个是通过高斯的先验,那么拉普拉斯协方差矩阵,我们可以把它写成第二个形式。这里面会有两项,其中的这一项是表示模型,把它叫做g,就是模型的输出。然后另一项就是对于我们模型输出g的海森矩阵,这个矩阵是特别好算的。
我们给它做了一个高斯牛顿的近似,发现做了高斯牛顿近似之后,它会比海森矩阵更好,因为海森矩阵可能不是良性的,它可能不是正定的。那么实验上做了一个GGN近似会好,但是做了GGN近似,发现它隐式地把拉普拉斯近似给转化成了线性化拉普拉斯近似。比如说原来我们做了拉普拉斯近似,但实际上我们如果引入了GGN process之后,对线性化模型做的拉普拉斯近似,对于线性化模型它的海森矩阵,它原来模型的海森矩阵在这个上面会加一些项,把那些项去了之后,其实它就对应一个信息化模型,这也就是之前实验之前论文的结果。
大家在最近也在此类实验上证明了线性化拉普拉斯近似,它可以在一些不确定性量化的benchmark上可以达到跟deep ensemble、变分推断或者MCMC非常接近的实验效果,甚至超过他们的实验效果。在去年有一个叫做拉普拉斯的library,Python的包特别好用,它可以快速的把一个预训练好的、确定性的神经网络给变成贝叶斯神经网络,然后它也极大的提高了线性化拉普拉斯近似的适用范围,提高了它的可用性。但实际上线性化的拉普拉斯近似也没有我们想象的那么好。因为在它里面有GGN,所以它矩阵的袋子会是PXP大小的,然后P就是神经网络里面的参数量。
如果我们的模型特别大,比方说有上千万个参数,它就是一个成上千万的矩阵,其实操作起来很困难。那怎么解决这个问题?一般把PxP大小的GGN matrix,给它进一步的给系数化,然后最简单的做法是只考虑它的对角,只保留它的对角,这是做了极大的近似。或者是把它用KFAC近似。甚至它不对整个神经网络所有的参数P2P这多的矩阵做计算了。而是只对神经网最后一层,上万个参数,只对这层做拉普拉斯近似,如此也会解决这个问题。实际上这些近似它学习结果的可靠性,是不可保证的。因为在这些情况下,它的近似误差在理论上是很难得到一些保证。所以为解决这个问题,我们提出了ELLA,它就是通过一种可以保证的low rank的矩阵分解的近似,来实现有保证地对线性化拉普拉斯近似的加速。比如在速度或者结果上也会比它们好,更重要是有更强的、更好的理论基础。我们是怎么来实现这件事的?首先是把信息化拉普拉斯近似写成了函数空间的形式。比方说之前在参数空间上,它是一个在 Map这个点为中心的高斯,把高斯带到线性化函数里,对应简单推导一下,它就会对应成函数空间上的GP。GP的 main function是线性化神经网络的输出,或者说就是神经网络x点的输出,它的KLLA我们把它叫做KLLA。此处就引入了典型的Kernel近似的方法来解决这个问题。目标是希望找一个低质的映射,要求表示是低维的。从对应的图例来看。Kernel的近似典型的方法其实有两类,一类方法叫random feature,像典型的random feature对偏移不变的Kernel,它可以做定理证明做把分解成基于cos sin函数。对Kernel做random feature,那么实际上就可以加速计算,因为它可以把矩阵给分解成两个低质的矩阵,然后它先算后面,再到后面再做完之后再跟前面乘一下,就可以实现线性复杂度的产生。random feature存在一个问题:需要比较大的维度,因为它的信息量是比较均匀的,就是它每一个g函数是比较均匀的信息,所以它需要比较多。所以就不太适合,因为我们是希望需要转制的矩阵的维度比较低,所以我们这里输出了另一种方法Nystrom method,它可以对Kernel分解问题,并且会有相应的特征值和特征函数。在实际上分割分解问题里面,它是用积分的形式,Nystrom的动机是把它里面的积分换成蒙特卡洛积分,用数据把求和替代积分。这样在我们这些数据上的对应的特征向量,然后再通过差值的方式给它插回去,使它变成一个方式。具体来说,我们就沿用了这个思路来做主要的技术上的方法。首先因为NTK是一个matrix-valued的Kernel,把它写成一个scalar-valued的Kernel。我们在基于Mercer定理,可以恢复出原来那个Kernel,因为这就跟我们用一个特征值对应的对角矩阵和特征向量组成的矩阵,是可以恢复出原来的对称矩阵的一样的道理。
我们就可以构造这样一种ψ,就是我们刚才所说的对Kernel的机制近似ψ里面就会有,其实就很简单,就是我们当前data算一下它的特征值和特征向量,然后再插值插回去。主流的深度学习的库,其实是有计算Jacobian-vector product的功能。例如,在pytorch中,我们只需要在在forward-mode autodiff的scope下,进行一次前向传播,就可以同时得到网络对于当前输入的预测,以及该组数据和特定向量V对应的JVP。传统的贝叶斯网络,是需要S次蒙特卡洛估计来实现投票,然后我们这里面是需要在fwad下进行K次前向传播来实现对于Kernel的估计,然后得到预测分布。二者相比,开销接近。这是具体的实现,其实很简单,核心的代码可能就不到20行。为此我们就分析了ELLA Kernel和原来的Kernel它们之间的距离,怎么度量距离呢?用Kernel之间剪一下,算它的matrix norm,或者是它的approximation error。在实验结果上怎么调超参呢?这里面主要会有两个超参,一个是K一个是M。K就是我们刚才所说的做多少rank的近似,然后m是我们收集多少数据来算gram matrix来解了一个eigenvalue问题,m可能需要比较大一些, k不需要很大用30或者64就可以达到比较好比较低的近似的误差了。近似误差其实就是对应的预测分布之间的差距。在这个工作中,我们发现了一大类拉普拉斯近似方法的issue。其在于用更多的数据来拟合拉普拉斯的协方差matrix的时候, 越来越多的数据可能会导致它的值会越来越小,也就对应了预测的不确定性会越来越低。但是我们不希望有这样的事情发生,在现在的深度学习主流范式方式下,数据越多,它也不一定代表着不确定性要完全消散,因为现在的数据是非常高维的。为此我们发现最简单方式——引入early stopping解决这个问题。
我们也和典型的一些拉普拉斯近似的方法做了对比,有一些直观的结果。我们发现比 KFAC以及last-layer LLA效果好,它们也是做了近似。另一方面我们在进行的图像分类的数据上也做了实验,主要结论是拉普拉斯近似对于模型的准确率提升没有什么帮助,但是它对于模型的likelihood以及它的ECE两方面的提升会比较大。在一些OOD的数据,比如cifar-10 corruption上也计算了模型NLL以及ECE的情况,发现比拉普拉斯近似这些大类里面的baseline效果更好。最后也是比较难能可贵的是现在很少做贝斯神经网络的能做在imageNet上处理VIT架构,我们是比较早在VIT上成功地把一个训练好的VIT-base模型转化成贝叶斯神经网络。得到的结果在OOD的场景下,对应的ECE会显著地比原始的确定性神经网络要好。🔥议题四:
Evaluating the Robustness of Visual Recognition to Adversarial Viewpoints《ViewFool:探索深度学习的视角鲁棒性》
🔥议题五 :
Confidence-based Reliable Learning under Dual Noises《双重噪声下的可靠学习》
🔥议题六:
A Unified Hard-Constraint Framework for
Solving Geometrically ComplexPDEs《硬约束引导的深度学习偏微分方程求解框架》
我们将持续更新,敬请期待😚~关注【AAIG】公众号,获取NeurIPS论文PPT👇👇AAIG课代表,获取最新动态就找她 关注公众号发现更多干货❤️