贝叶斯神经网络毫无意义吗Twitter、Reddit双战场辩论火药味十足!

作者 | 雷锋网 AI 科技评论 

可能我们在博客里写得不够清楚。我们考虑含有损坏数据的数据集,不是为了说明只要有损坏数据就会有糟糕的预测表现(尤其对于一百万比一这种情况),而是想说明有损坏数据的、神经网络拟合之后会有糟糕的泛化表现的数据集是存在的。我们是为了说明存在性。如果先验对这样的网络分配很高的概率,那么贝叶斯推理就没有什么好处。我们的博客也不是为了表达贝叶斯神经网络没用,而是想表示“如果没有好的先验,贝叶斯神经网络就无法带来好的不确定性估计”,“关于非信息性的先验的标准讨论方式是有问题的”,以及“想要有好的不确定性估计,我们需要先理解神经网络的泛化性”。除此之外,其它多篇Reddit 的网友回帖也认为原博客两人的讨论态度有问题,立场很难称得上是“冷静看待”,有些简单的实验也完全可以自己先尝试。

第一个夜班时我接诊了一名在广州打工的姑娘,她已买票准备回老家过年,知悉国家的号召后,果断退票留在广州,一个人在宿舍待了半个月。一天前,她无明显原因出现发热,没有呼吸道症状,也没有可疑的流行性病学史。为了让舍友放心,女孩要求进行新冠病毒感染相关的全部检查。陆陆续续大约两个小时后,所有检查结果都出来了,暂不考虑她有感染新冠病毒的可能,她看起来整个人轻松了不少。

为了说明先验在贝叶斯网络中的重要意义,Buckman在博客中引入了泛化不可知先验(generalization-agnostic priors),用这种“不可知的先验”进行贝叶斯推理并不能减少模型的不确定性。Carles和Buckman认为,要想在深度学习中使用贝叶斯框架,只有让先验与神经网络的泛化特性相联系,才能达到好的效果,方法是给泛化能力良好的函数以更高的概率。但是目前学术界还没有足够的能力(作者猜测)来证明哪种先验的情况能够满足条件。另外,Buckman在博客中作者举了一个具体的例子:当一个数据集C

2、当前贝叶斯网络的泛化能力不可知

注:实际上对于某些数据,fθ可以产生错误的输出,即Q(f*)不等于Q(fθ)

Carles和Buckman也在博客中表示上面的理由有猜测的成分,因为无法得知何种因素决定神经网络泛化能力,所以定义执行贝叶斯推理的先验具有不确定性。贝叶斯神经网络只是一个神经网络,先验只是里面的一个超参数。Carles和Buckman认为当前在网络中加入贝叶斯不会带来任何好处,只有当能够找到一个好的先验,并且能够验证推理的准确性才能有所帮助。另外,他们还提到:作为一个领域,先验在贝叶斯框架里扮演着重要的角色,这一点毋容置疑,所以对于贝叶斯网络需要理性的批判,不能让“不具信息性的先验在不确定性下表现良好”(uninformative priors are good under uncertainty)这种无脑观点所左右。

窗外,夜色渐退,天边渐露光芒,太阳就要升起。我们有理由相信,距离我们打赢战役、摘下口罩、展露笑颜的日子也越来越近。

由于博客作者们对贝叶斯推理中的真正的先验缺乏了解,所以我觉得这个讨论很没意思,甚至有一股双重标准的味道。

做深度学习的人挺能散布负面言论的啊……尤其是,我觉得他们的讨论方式,针对某个任意的、损坏的测试集 C 的讨论,只不过是在攻击他们自己造出来的一个靶子而已。

还有一个关于母子的就诊故事,也令为人子女的我动容。上一个夜班临近下班时间,我听到候诊区传来争执声,经询问了解到发生争执的是一对母子,老母亲当晚出现发热,儿子比较担心,带母亲来门诊检查,可固执的阿婆坚称自己没问题,不肯进诊室。

1,如果数据是来自我们想要拟合的分布的,那么随着我们使用的数据的规模增大,似然性会收缩到那个“好的函数”上,因为不好的函数会越来越少出现,这也和我们的观测值一致。

雷锋网原创文章,。详情见转载须知。

最近Twitter、Reddit上有一股争论的热潮涌动,先是有 François Chollet 、Yann LeCun 等人隔空辨析「到底什么是深度学习」,后是有一大批研究者争论「贝叶斯神经网络到底有没有意义」。新的一年,火药味十足,这是否也意味着深度学习的研究正进入一个混乱的时期?道理,不辨析不明朗;学问,不争论不清晰。

但神经网络有很强的表达能力,这里的b情况根本就和“有模糊的权重先验”完全相反!除了技术讨论之外,我建议两位可以多提问、多学习,以及对贝叶斯深度学习抱有开放的心态。

文/姜丽 中山大学附属第三医院康复科副主任

自新冠病毒肆虐,武汉封城已一月。从除夕夜到元宵节,全国各地医务人员都在驰援武汉,我院也派出三批共169名医务人员前往武汉前线抗击疫情。我院是广东省定点救治单位,相关科室医护人员外派较多,导致院本部人手有限,医院只好发动临床各科室支援发热门诊开展工作。作为一名老党员,我也早早报名参加发热门诊值班。发热门诊也是抗疫一线,来这里就诊的都是各类原因的发热患者,疑似新冠感染患者也在这里首诊,经专家会诊后收入隔离病房,值班人员必须穿戴全套的防护装备。

3:50穿戴停当。我再次对着镜子把自己认真检查了一遍,最后向镜子里的自己比划个OK和加油的手势后,经专用通道进入发热门诊诊疗区域。在与上一班的医生交接工作后,开启特殊时期我的又一次值班。

疫情期间,来就诊的患者较平时有更多的紧张和担心,在近距离地接触他们,倾听他们的困扰,感受他们的情绪,用专业知识去帮助他们的过程中,我感触颇多。

综上,Carles和Buckman认为在泛化不可知的先验条件下,无论数据集如何,都无法降低模型的不确定性。即贝叶斯神经网络起作用的关键因素是:先验能够区分泛化良好的函数和泛化不好的函数。

全体深度学习研究人员(以及作者们自己)都已经接受了神经网络的大规模使用,即便我们还没有找到明确的泛化边界,也对神经网络的理论理解甚少。但是既然神经网络运行起来令人满意,这些问题就一股脑地被视而不见 —— 神经网络就是好的、正义的。然而,现在作者们要求贝叶斯神经网络必须在先验方面提供很强的理论保证,虽然他们同时也承认贝叶斯神经网络是有效的…… emmm,你们觉得这像不像贼喊捉贼?

4,实际上,想要在函数空间创造许多不同的“泛化性无关”的先验是很简单的事,而它们的行为会和神经网络非常不同。它们可以由平凡的结构组成,而且也肯定不会具有任何泛化能力。

1、贝叶斯神经网络具有不确定性的原因:泛化不可知先验

按照一般理解,这种将参数以概率分布的形式表示,可以为网络推理提供不确定性估计;此外,通过使用先验概率分布的形式来表示参数,训练期间在许多模型上计算平均值,可以给网络提供正则化效果,从而防止过度拟合。然后,在大约一个月前,OpenAI 研究员Carles Gelada发布了一个系列Twitter:

另外,关于“拟合损坏的样本”的讨论不应该和“拟合噪声”混为一谈。我们在讨论中假设了分类任务中不存在噪声,但即便是有噪声的分类任务,我们的观点也是成立的。用简单的测试就可以说明目前使用的先验不是泛化无关的:训练一个好的函数、训练一个坏的函数,然后看看先验是否会给好的函数更高的概率。我怀疑状况不是这样的,但这里需要贝叶斯的支持者向我证明他们的先验是好的。

我先与家属谈话缓和他们之间紧张的气氛,然后为阿婆着重进行相关查体。心里有了初步判断后,我用肯定的语气跟阿婆讲述疫情的严重性、解释检查的必要性,并调侃阿婆肯定是怕打针才不肯做检查。阿婆犹豫片刻后赌气般说检查就检查,我才不怕扎针。原以为的持久战居然在10分钟内结束。我尽快为阿婆安排好相关检查,向下一班医生交班,再与他们母子道别。后续我从接班医生那里了解到阿婆的检查结果并无大碍,也是很为她们母子高兴。

里面包含两种数据对:一种是给定输入,输出正确;另一种是给定输入,输出错误。训练神经网络所得到的参数 必须让神经网络既能够表达正确输出,也能够表达错误的输出。即使模型在数据集上训练后,能够得到条件概率p(f|c)=1,但在测试集上模型也可能表现很差。另外,定义一种先验概率Q,可以让 Q(f*)=Q(fθ)这意味着如果泛化良好的函数与泛化不好的函数得到的分配概率是相同的。但这种先验是有问题的:由于f*和fθ的数据的可能性为1,并且由于先验概率相似,这意味着后验概率也是相似的(如下公式)。

我解释给你们看看:他们没有给出被损坏的数据的数量,但是他们就声称 f_theta 肯定在 D_test 上会有糟糕的表现?他们的依据是什么?那比如 D 是一百万个好的数据点组成的数据集,C 是 D 加上一个损坏的数据点,所以按照他们的理论,D_test 上的测试误差肯定会特别糟糕?

Reddit上网友们的回应更激烈、更情绪性一些,甚至得到最多赞同意见的帖子就含有辛辣的批评和嘲讽。

2,能拟合噪声的模型并没有什么出奇之处,而且也和“存在归纳偏倚,更倾向于选择有噪声的解”是两码事。在函数上简单增加一个标准的GP-RBF先验就可以支持噪声了,但它仍然更善于建模有结构的解。

1、Twitter 战场:存在技术错误

如果情况是像你说的这样,那么证明这件事是贝叶斯支持的责任(而不是我们质疑者的),尤其是当他们声称模型可以提供好的不确定性的时候。实际上我们提出质疑的理由就是,每个初始值附近都同时有好的和坏的泛化函数,那么他们声称的东西也就值得怀疑了。

2、Reddit 回帖:水平不足+双重标准

为了更加明晰“贝叶斯网络没啥用”的立场,近期Carles Gelada 和 Jacob Buckman重新梳理了他们的思路,专门写了一篇博客,从贝叶斯网络的原理入手,详细阐述了“BNNs需要先验信息丰富的先验知识才能处理不确定性”的观点,并指出泛化的代价不容忽视。

我在阿婆旁边的候诊椅上坐下,像聊家常似的问阿婆有哪些不舒服,有没有参加花市等聚会。阿婆开始不太配合,后来发现我没有强求她进诊室,也没有劝她检查的意思,渐渐放下戒备,把她发热的大致情况告诉了我。

也许是你们的“贝叶斯神经网络不合理”的先验太强了才觉得理解不了(微笑)。

3,对于通常会使用神经网络来解决的问题,好的解的数量通常都会比不好的解的数量更多。神经网络的结构中就含有帮助带来更好的泛化性的归纳偏倚。神经网络函数“与泛化性无关”的说法有点不负责任。

患者马某某,男性,15岁,系1月26日确诊病例马某某之长子。患者祁某某,男性,30岁,系1月26日确诊病例马某某同行人员。二人于2020年1月23日随同确诊病例马某某从武汉出发,24日早9时抵达西宁。当日西宁市疾病预防控制中心开始追踪调查,于1月26日将二人分别隔离观察。现2名患者在定点医疗机构接受治疗,病情稳定,患者密切接触者已开展追踪调查和医学观察。

每次值班都有类似的故事发生,不过,故事的主角时有变换。白班遇到的是担心自己发热会影响父母的贴心女儿,夜班可能就碰上了担心自己发热会影响孩子的年轻父母。他们都有一个共同的特点,出于对家人、周围的朋友同事的责任心和关心来看诊要求检查,以防因自己不慎感染影响他人。小小诊室里每天都发生着这样或那样的百姓事,散发出的浓浓暖意总是不经意地感动着我。

那时,我们再相约一起去喝早茶吧!

所谓贝叶斯神经网络,简单来说便是将一般神经网络中的权重和偏置由确定的数值变为一个分布。

5,缺少理想的后验收缩会在这么几种情况下发生:

他指出,或许贝叶斯神经网络并没有多大用处。大致观点为:1)只有当具有合理的参数先验时,我们才会去使用贝叶斯规则,但没有人知道先验对神经网络权重的编码会是什么,那么为什么我们还要使用这种先验呢?2)许多正则化都可以用贝叶斯解释,但事实上每个人都能够对正则化给出一个解释。那么我们用贝叶斯理论来解释正则化,有什么意义呢?3)或许有人会说BNNs可以让我们直接用经验来找到正则化。但谁来保证BNNs找到的这种正则化空间就是最优的呢?4)BNNs可以用在贝叶斯元学习框架当中。但没有理由相信这种应用会比其他元学习框架更好。针对Carles提出的这些反对意见,在Twitter上迅速吸引了大批的研究人员加入讨论。多数引经据典,从历史发展、当前研究、实践经验等各种角度进行辩论,或赞同,或反对,不一而足。

编辑 | 雷锋网(公众号:雷锋网) Camel

在Twitter上,纽约大学数学和数据科学教授Andrew Gordon Wilson就表示他们的观点存在错误:这篇博客中存在错误。

3、理性批判BNNs

在构建贝叶斯神经网络时,大家的共识是用比较简单的概率先验,即假设参数服从独立的高斯分布。但是高斯先验显然会导致结构先验,而这些先验并无泛化能力,原因有两点:1.高斯先验平滑分配概率。2.在训练神经网络的时候,无论数据集如何,最合理的策略似乎是给不同的泛化函数以相同的权重。还有一点是计算问题也不容忽视,实际上如何对贝叶斯推理q(F|D)进行计算可能是贝叶斯神经网络(具有先验泛化不可知)能够有合理效果的关键因素。

一、贝叶斯神经网络有用吗?

这篇博客同步发在了推特和 Reddit 上,自然也就在两个平台上都引来了反驳的声音。

他们洋洋洒洒了一大堆,最后只证明了损坏训练数据会降低贝叶斯神经网络的测试准确率而已…… 呃…… 所以这有什么好奇怪的吗……

假想空间中并不包含好的解; 先验对某个坏的解太过自信(比如给任意的 x 都分配同一个标签 p)。