贝叶斯神经网络入门&笔记
1.什么是预测不确定性?
从结果来看,预测的结果等于不同参数的模型加权。背后的逻辑是:考虑多个模型,如果所有模型都认为是某个答案,那会认为确定性高。即通过得到一系列模型来得到不确定性。
在如下公式中,每个模型的权重由后验分布p(w|d)决定,也就是通过后验分布得到一系列模型。

2.后验分布,似然分布的计算
在该公式中,后验分布p(w|d)实际上是可以由训练集计算得到的,因为贝叶斯公式(条件分布的前后项可以互相转换,转换时乘以前项,除以后项),因此后验可以转换为似然*先验,而一般p(d)作为归一化项目不考虑。先验p(w)是我们可以随意定义的,似然也是容易计算的。

似然的计算(MLE、MAP一般采用对数似然),如果是神经网络可以输出y_hat = f(xi;w),w代表隐藏层的权重和偏置等参数,y_hat可以表示为xi和w的函数。如果是分类问题,y_hat含义是某个类别的预测概率值,通过交叉熵可以变换为y_hat与y相同的概率。
3.后验分布的采样
这样,解决上面预测结果的期望问题就只剩下对后验分布p(w|d)进行采样了。尽管p(w|d)是可以计算概率密度函数的,但是对于任意一个分布,要使用计算机来进行合理采样并不容易。对于高斯分布往往使用中心极限定理(数量足够多的独立同分布的随机变量之和服从高斯分布)通过生成均匀分布(随机数)来采样。有专门的统计学分支研究如何从分布中采样的问题。
总之,后验分布p(w|d)采样是一个比较难的问题,通常有两种替代性的做法,一是MCMC方法,由于复杂度太高已经不再使用,目前常用的就是第二种方法即变分推断。
4.变分推断
定义一个函数q(w|θ) (注意这里的 | 后验符号和 q(w;θ)是等价的,只是表示q函数的参数是θ,从贝叶斯的角度可以看成是在已知θ时,w的分布函数),该函数与d无关,仅仅与θ有关,因此往往可以定义为很简单的形式。变分学习就是希望优化参数θ来得到一个最佳的q函数以最小化q和p(w|d)之间的KL散度。

以上优化目标也可以写成如下公式,分为两部分,一部分是q函数与w先验之间的KL散度,它与w先验有关,因此对应于模型的复杂度惩罚项,如L2范数;另一部分与数据集有关,对应于似然误差项,如交叉熵,MSE。

5.变分学习的过程
下面通过梯度下降法来优化该目标。该目标是一个期望,而对期望求偏导,首先应该考虑在所使用的分布中去掉要求偏导的项目θ,因此使用来代替原来的分布,即希望,w可以表示为θ和一个随机变量的函数。

期望的偏导等于偏导的期望,将期望变为采样。对期望求偏导转化为先求偏导,再算期望。这样再通过采样的方式处理期望,就相当于先求偏导,再做加和。

6.变分学习的具体案例
主要分为两个步骤,首先是从q分布中采样w,其次是求偏导,更新q的参数。

7.一些有待讨论的想法
可以看成是EM思想,首先E步更新q的分布,其次M步最大化参数(只使用一次梯度下降)。注意虽然w是在每次迭代都随着采样而变化的,但是其核心的参数是只在迭代更新时才会改变,即并不是对参数进行采样,而是对一个中间结果w的采样。
最终我们得到的参数θ,μ就是点估计方法中寻找的最优参数,并且可以额外得到最优的变分参数,确定最优的q分布,以得到不确定性。