alook安卓版好用吗,alook安装时解析错误

  

  选自巴克曼的主页   

  

  作者:Carles Gelada、Jacob Buckman机器之心编译   

  

  参与:魔王   

  

  最近,OpenAI研究科学家卡莱斯杰拉达(Robert Gelada)发布了一条推文,称“贝叶斯神经网络毫无意义”。一石激起千层浪,社会上展开了热烈的讨论。那么贝叶斯神经网络真的没有意义吗?卡莱斯杰拉达为什么这么说?我们来看看这篇文章。   

  

     

  

  卡莱斯杰拉达在2019年12月22日发布的推文。推特链接:https://twitter.com/carlesgelada/status/1208618401729568768   

  

  卡莱斯杰拉达和雅各布巴克曼认为推文下面的大多数回复忽略了他们批评BNN的关键点,因此他们写博客更全面地阐述他们的观点。以下是标题为 《Bayesian Neural Networks Need Not Concentrate》 的最新版博客内容(原博客标题为《A Sober Look at Bayesian Neural Networks》):   

  

  贝叶斯神经网络的支持者经常声称,经过训练的BNN输出分布可以捕捉认知的不确定性。认知不确定性对于大量应用是有价值的,我们同意使用贝叶斯方法。但是,我们认为 BNN 需要信息丰富的先验才能处理不确定性.我们证明,如果先验不能区分概化和非概化函数,贝叶斯推理不能提供有用的不确定性。这挑战了标准的论点,即当真实的先验分布未知时,“先验信息不足”是合适的。什么是贝叶斯推断?   

  

  在Twitter的讨论中,很多研究者认为“贝叶斯”是“不确定性-感知”的同义词,或者使用结果集或分布的算法一定是贝叶斯算法。我们想澄清,在我们看来,这种描述是不公平的。   

  

  用贝叶斯方法处理不确定性,需要用贝叶斯定理将先验分布更新为后验分布,这无疑是最流行的方法之一。然而,还有其他非贝叶斯方法,如集中不等式,允许计算置信区间和不确定性集。   

  

  贝叶斯定理的核心是条件概率分布之间的关系:   

  

     

  

  毫无疑问,这是一个非常强大和基本的关系,但任何“信念更新”或“可能世界上的分布”的概念都只是对后一种谬误的解释。贝叶斯定理表明,对于任意两个相依随机变量A和B,当B取特殊值B时,随机变量A的分布发生变化。在标准的学术语言中,术语Pr(A=a)是先验的,Pr(B=bA=a)是似然的,Pr(A=aB=b)是后验的。这个术语来源于随机变量A具有原始(先验)分布,B的观测值可以提供更新的分布(后验)。   

  

  我们来思考一下如何用贝叶斯框架解决分类问题。   

  

  存在一个输入空间和一个输出空间Y,假设它们都是离散空间,存在函数族f:T就是它们之间的映射。每一个f都视为一个向量f y ,在索引x处的索引向量等价于估计函数f_x=f(x)。有一个我们感兴趣的真值函数f : y。贝叶斯方法用来解决这个问题,即现实世界中存在一个随机变量F,F是样本之一。   

  

  我们将用PR (f=f)来表示f的分布(以下简称PR (f)表示PR (f=f))。由于投入产出对数据集d={(x _ i,f (x _ i)}不独立于f,我们可以用贝叶斯定理来理解f的分布,前提是我们已经观测到了数据集d。   

  

     

  

  Pr(Df)=_(x,yD)1_f(x)=y这个术语的意思是,如果f=f,数据集中包含的标签等于f的输出,为什么这个条件分布这么有趣?如果数据集包含足够多的信息,f的分布可能会塌缩到一个点,我们可能没有f的不确定性,即使分布没有塌缩到一个点,我们仍然可以用Pr(fD)进行一些有趣的运算。例如,我们可以通过边缘化来提供估计结果:   

  

     

  

  或者找出后验估计的最大值:   

  

  


但更有趣的是,我们可以利用分布来提供不确定性:特定输出 f^(x) 的分布。给出测试点 x,我们可以输出概率 Pr(F^(x)=y∣D)。这非常重要,例如在很多敏感应用中,在不确定的情况下不执行预测是十分必要的。截至此时,贝叶斯方法看起来很有吸引力。
贝叶斯神经网络的潜在问题
贝叶斯的以上所有属性均依赖于合理的后验分布,即向更有可能正确的函数分配更大的概率值。我们来仔细探查其中究竟。下式表示后验,不过由于分母 Pr(D) 只是标准化常量,对所有函数都是一样的,因此下式隐去了分母:

  

  

该式中有两个项:先验 Pr(f) 表示对特定函数的先验偏好,似然 Pr(D∣f) 将特定函数具备更强的数据兼容性这一想法进行编码。
标准的贝叶斯叙事是这样的:先验覆盖大量函数,但只有一部分函数与数据兼容,因此后验集中于一小部分函数,这些函数都有可能是合适的函数。
从这个角度来看,选择「信息不足的(uninformative)」先验是合理的做法,因为它在所有函数的集合上均匀分布。这就使得贝叶斯神经网络的基础得到保障,因为它确保先验向每个可能正确的函数分配非零概率。然后,我们只需让似然项筛除空间中的糟糕函数即可。看起来很简单吧!但是,标准贝叶斯叙事存在「隐藏条款」。
首先,我们需要注意,不确定性估计的质量完全取决于先验的质量。因此要想使后验分布对应可能函数的确切分布,先验必须完全正确。也就是说,采样真值函数 f^ 的分布必须与采样先验的分布相同。如若不然,则后验会很糟糕!
假设先验比现实更陡峭,那么很明显这是一个失败案例:后验某些区域的概率不恰当地低,导致整体不确定性被低估。当先验比现实平滑时,则失败没有那么明显,但仍会出现:对于任意固定数量的数据而言,学得的后验太宽了,导致不确定性被高估。或者说,需要更多数据才能达到特定的置信度。
其次,标准贝叶斯叙事几乎总是发生在参数不足(underparameterized)的情况下,即数据集∣D∣的规模至少与模型参数量一样。但是当我们使用神经网络时,实际设置显然并非如此。增加神经模型的规模总能帮助提升性能,因此我们总想使用过参数化机制。在思考贝叶斯深度学习时,我们需要仔细考虑该差异的含义。
不幸的是,这些事项结合到一起导致了一个重大问题:数据无法带来神经网络后验集中。
贝叶斯神经网络不需要集中
用神经网络(参数为θ)拟合数据集 D 常会导致这一常见情形,D 包含真值函数 f^ 生成的输入-输出对。当然,由于我们在做深度学习,因此使用过参数化机制较为稳妥:∣D∣<<∣θ∣。此外,我们假设网络足够灵活,可使真值函数 f^ 在它所表示的函数类别内。令神经网络函数 f_θ^ 逼近 f_θ^(x)≈f^(x)x∈χ。由于 f_θ^ 可以拟合每个数据点,因此它能够拟合 D 中所有点:Pr(D∣f_θ^)≈1。
不过,D 不是神经网络要拟合的唯一数据集。假设从同一个真值函数 f^ 的输入-输出对中采样得到数据集 Z={(x_i,y_i},并损坏数据集中的部分输出,得到 Z˙={(x_i,y˙_i},y_i≠y˙_ii。最终,将真实数据 D 和损坏数据 Z˙ 结合得到一个组合数据集 C。(假设∣Z˙∣较小,这样我们可以继续使用过参数化机制,即∣C∣<<∣θ∣。)Chiyuan Zhang 等人在 2017 年发表的论文《Understanding deep learning requires rethinking generalization》中证明,我们可以训练出完美拟合数据集 C 的神经网络,即 θ_C s.t. f_θ_C(x)≈y,_x,y∈C。网络的容量不仅足以拟合正确的标签,还可以拟合任意损坏的标签!
理解 f_θ^ 和 f_θ_C 之间差异的直观方式是观察其泛化性。假设 D 是训练集,Z 是测试集。函数 f_θ^ 泛化性能优异:它在训练集上实现了不错的性能(即 Pr(D∣f_θ_C)≈1),在测试集上也取得了优秀的性能(即 Pr(Z∣f_θ_C)≈1)。而函数 f_θ_C 恰恰相反,其泛化性能并不好:它在训练集上表现不错(即 Pr(D∣f_θ_C)≈1),但在测试集上表现糟糕(即 Pr(Z∣f_θ_C)≈0)。按照经验,SGD 通常更可能找到泛化性能优异的解决方案,但是我们必须记住也存在泛化性能不好的解决方案。
现在我们已经定义了这两个函数。那么给定数据集 D,二者的相对后验概率如何呢?假设我们选择先验 q,则存在

  

  


类似地,

  

  


现在我们可以清晰地看到,为什么标准贝叶斯和神经网络结合后,问题多多了吧。f_θ^ 泛化性能较好,f_θ_C 泛化性能差,但我们通过后验概率无法区分二者的差异。这两个网络的相对后验似然完全由其先验似然决定。
SGD 能够拯救这一切吗?
不能。在数据集 D 上运行 SGD 不太可能找到 f_θ_C。但是这不表示它不存在。真正的贝叶斯后验是唯一一个具备我们追寻的有用属性(如不确定性信息)的对象,它并不关心 SGD 找到什么函数。令 q(f_θ_C∣D)<q(f_θ^∣D) 成立的唯一方式是 q(f_θ_C)<q(f_θ^)。
贝叶斯神经网络需要对泛化敏感的先验
现在很清楚了,正确的先验对贝叶斯深度学习而言是绝对必要的。我们所需要的是「泛化敏感」先验(generalization-sensitive prior),即仅对泛化性能优秀的函数分配先验概率。这与「泛化不可知」先验相反:对于按照上述方法构建的任意数据集 C,存在 q(f_θ^)≈q(f_θ_C)。如果我们的先验完全泛化不可知,则后验将对糟糕和优秀的解决方案分配同样的概率。这反过来说明,贝叶斯步骤没有收获有用的不确定性信息:每一个测试点的概率在全部可能输出中均匀分布。
一定程度上,这种现象可被解释为「过高估计不确定性」的极端案例。在标准贝叶斯叙事中,高估不确定性不影响大局,因为这不过说明我们需要添加一点数据让后验集中。但涉及过参数化机制时,「一点数据」就没用了。让后验集中所需的数据量非常庞大。(另外,即使我们能够获取那么多数据,我们也只能收获一个更大的神经网络而已,一切还是回到原点。)
目前的 BNN 对泛化敏感吗?

我们通常对 BNN 使用简单的先验,即权重的独立高斯分布。结合神经网络架构后,得到函数空间中的结构化先验。显然,该结构化先验并不简单。例如,Radford M. Neal 1995 年发表的论文《BAYESIAN LEARNING FOR NEURAL NETWORKS》证明,无限宽度单层神经网络的独立随机高斯权重对应高斯过程先验(Gaussian Process prior)。从实验的角度来看,Ulyanov (2017) 证明,CNNs + SGD 这一组合很擅长表示自然图像。我们做了一些实验来验证这一点,发现相比最小化模型在数据集 C 上的损失,最小化模型在数据集 D 上的损失能够取得更高的先验似然。
但是,这只是间接证据,并未击中问题的核心。如上所示,宣称「我的后验分布对应优秀解决方案的分布」的贝叶斯支持者实际上是在表达「我的先验对泛化敏感」。这一主张很强势,尤其是在简化当前先验的背景下。独立高斯权重真的能够编码泛化这么基础的东西吗,甚至还能考虑到网络架构?这是可能的,但对此持怀疑态度是更加明智的做法。贝叶斯社区有责任进行审慎分析和实验来充分证明此主张。
BNN 的实验成功是否证明其具备优秀先验?
不。尽管在实践中,BNN 确实泛化至测试点了,而且看起来也输出了合理的不确定性估计,但这无法直接证明它们具备泛化敏感的先验。这就要提到该难题的另一块拼图了:逼近(approximation)。计算 q(f∣D)q,即贝叶斯推断,是一个难题,因此社区中大量成员研究其易处理的近似问题。(例如,变分推断将 q(f∣D) 的计算问题形式化为优化问题。)为什么 BNN 在真实后验极其不确定的情况下也能作出一些合理的行为?计算 q(f∣D) 是关键。它们可能并没有学习任何接近真实后验的事物!
要想声称 BNN 输出的不确定性有效,贝叶斯支持者必须谨慎地证明 BNN 学到的分布类似真实后验。初始实验证明事实并非如此:我们可以轻松找到这样两个点,第一个点具备较高的先验概率和数据似然,第二个点具备较高的后验似然。如果 BNN 后验准确,就不会出现这种情况。代码地址:https://github.com/jbuckman/bnn-blog-experiments
不过,这只是初步实验,还需要更多研究。
批判地看待贝叶斯神经网络
近几十年来,贝叶斯社区输出大量有关机器学习的重要见解,通常被认为是最严谨的机器学习子社区之一。但是,我们认为贝叶斯神经网络并不符合这一看法。贝叶斯社区并未对「BNN 输出分布很好地对应真实后验」提供证明。没有该保障,则 BNN 与其他神经网络无异。因此,研究人员应该避免发表「BNN 输出分布能够编码模型不确定性」这样的观点。
此外,我们证明了好的不确定性估计必须围绕神经网络的泛化性能。要想确保 BNN 提供的不确定性有用,我们首先需要了解使特定神经网络参数取得优秀/糟糕泛化性能的原因。这是深度学习领域最重要的问题之一,但我们以及整个领域对此还没有深刻理解。神经切线核(该方法也得到贝叶斯的支持)是一种有前景的方法,有助于研究者真正地理解泛化。而只有理解了泛化,我们才能设计泛化敏感先验。
不管你是否相信我们能够找到优秀的泛化敏感先验,重点在于:我们以及整个领域不再忽略先验在贝叶斯框架中的重要性,不要想当然地认为 BNN 是计算不确定性的好方法。我们需要批判地思考先验,严谨地评估后验估计,不被「信息不足的先验仍然能够带来优秀的不确定性估计」这样的粗陋论点所支配。
现在,没有人去问 BNN 能否提供当前最优的不确定性估计,有的是使用 BNN 的理由(尤其是在经验驱动的领域,如深度学习)。但我们需要理解,即使有理由证明 BNN 前景广阔,但也有清晰的理论可以证明 BNN 或许不能作为研究方向。本文希望强调这些潜在的问题,从而引导 BNN 研究走在更好的方向上。
原文链接:https://jacobbuckman.com/2020-01-22-bayesian-neural-networks-need-not-concentrate/原版博客链接:https://jacobbuckman.com/2020-01-17-a-sober-look-at-bayesian-neural-networks/

相关文章