#Bayes
- Variational Inference
- Markov Chain Monte Carlo
- Laplace Approximation
- Stochastic Variational Inference
- Expectation-Maximization Algorithm Inference
- Expectation-Maximization Algorithm
#Bayes
#Bayes
"Bayes by Backprop"的核心是使用变分推理来近似权重的后验分布。这一过程涉及到一些复杂的数学,但我会尽力将其分解为详细的步骤。
假设我们的神经网络的权重是 w,我们的数据是 D,那么在贝叶斯推理中,我们希望计算权重的后验分布 p(w|D)。然而,这通常是非常困难的,因为这需要计算一个涉及到所有可能权重值的积分,这在实际中是不可行的。因此,我们使用变分推理来近似这个后验分布。
#Bayes
MCMC(Markov Chain Monte Carlo)和变分推断(Variational Inference)都是用于估计后验分布的技术,但它们在处理复杂度、精度和计算速度等方面存在一些差异。以下是这两种方法的优点和缺点的对比:
MCMC:
优点:
精确性:MCMC方法,如Gibbs采样,Metropolis-Hastings,Hamiltonian Monte Carlo等,可以生成精确的后验样本,从而得到精确的后验分布(在足够多的迭代次数下)。
通用性:MCMC可以处理各种复杂的模型和分布,包括那些无法解析计算的分布。
不需要选择逼近分布:与变分推断不同,MCMC不需要选择一个逼近分布。
#Bayes
拉普拉斯近似是一种简单且计算效率高的方法,它假设后验分布在最大后验概率(MAP)点附近是高斯的。步骤如下:
a. 找到最大后验概率(MAP)点:这通常通过梯度上升或牛顿法等优化方法来实现。
b. 在MAP点附近做二阶泰勒展开:通过计算对数后验概率的Hessian矩阵(二阶导数矩阵)来近似后验分布的形状。
c. 得到高斯近似:Hessian矩阵的逆就是高斯近似的协方差矩阵,而MAP点就是高斯近似的均值。
#Bayes
马尔科夫链蒙特卡洛(MCMC)是一种统计方法,主要用于从复杂的高维度分布中抽样。在深度神经网络中,MCMC可以用来估计网络权重的后验分布并进行更新。以下是使用MCMC进行深度神经网络权重更新的详细步骤:
初始化:首先,需要初始化神经网络的权重。这通常可以通过随机初始化或使用预训练模型来进行。
设定目标分布:在MCMC中,我们的目标是从后验分布中抽样,这里的后验分布是给定数据后,权重的概率分布。这通常是通过贝叶斯定理来计算的,其中先验分布可以是权重的高斯分布,似然函数可以通过神经网络的损失函数来定义。
抽样:在MCMC中,马尔科夫链的定义是下一个状态(这里的状态是权重的值)只依赖于当前状态,不依赖于过去的状态。常见的MCMC抽样方法包括Metropolis-Hastings算法和Hamiltonian Monte Carlo等。
例如,在Metropolis-Hastings算法中,首先从一个建议分布中抽样一个新的权重值,然后根据接受率来决定是否接受这个新的权重值。接受率是新的权重值和当前权重值在目标分布下的概率比,如果这个比值大于1,那么就接受新的权重值,否则以这个比值作为接受新的权重值的概率。
更新权重:如果接受了新的权重值,那么就用这个新的权重值更新神经网络的权重。然后重复步骤3,直到马尔科夫链达到平稳分布,或者达到预设的迭代次数。
后处理:由于MCMC的前几次迭代可能还没有达到平稳分布,因此通常需要抛弃前几次迭代的结果,这个过程叫做burn-in。然后可以通过对剩下的抽样结果求平均来得到权重的估计值。
Bayesian inference in machine learning is currently significantly restrained by the challenge of undetermined prior settings. While not the sole obstacle, the selection of appropriate prior distributions is a critical and often unresolved issue that fundamentally impacts the performance and reliability of Bayesian models, particularly in the complex domain of deep learning.
#Bayes
使用随机变分推断(Stochastic Variational Inference, SVI)来更新深度学习中神经网络权重的过程涉及到几个步骤。以下是详细的步骤,包括相关的数学公式:
初始化:首先,我们需要初始化网络的权重。对于一个具有D个权重的网络,我们可以初始化权重向量w和变分分布的参数。这个变分分布通常是一个高斯分布q(w;μ,σ),其均值向量μ和协方差矩阵σ也需要初始化。
定义优化目标:在变分推断中,我们的目标是最大化证据下界(ELBO)。对于一个有N个样本的数据集D,ELBO的定义为:
[L(μ,σ)=Eq(w;μ,σ)[logp(D∣w)]−KL(q(w;μ,σ)∣∣p(w))]]
其中,p(D∣w)是数据的似然函数,p(w)是权重的先验分布,KL(⋅∣∣⋅)是KL散度,用来衡量变分分布和先验分布的相似程度。
采样和前向传播:在每个训练步骤中,我们从变分分布q(w;μ,σ)中采样权重w,并使用这些权重来执行前向传播。具体地,我们使用重参数化技巧,即引入一个无参数的噪声向量ϵ,使得w=μ+σ⊙ϵ,其中⊙表示元素级的乘法。
计算梯度:然后我们计算损失函数(即负ELBO)关于变分分布参数的梯度。具体地,我们计算∂μ∂(−L)和∂σ∂(−L)。由于我们使用了重参数化技巧,所以可以直接通过反向传播来计算这些梯度。
更新权重:最后,我们用计算出的梯度来更新变分分布的参数,通常使用随机梯度下降(SGD)或其变体。具体地,我们有:
[μ←μ−α∂μ∂(−L)][σ←σ−α∂σ∂(−L)]
其中,α是学习率。
重复步骤:重复步骤3-5直到满足停止条件,例如达到预定的迭代次数,或者ELBO收敛到一个稳定值。
#Bayes
在深度神经网络中,不确定性通常分为两种类型:模型不确定性(或称为认知不确定性)和数据不确定性(或称为偶发不确定性)。
模型不确定性(Epistemic Uncertainty): 这是由于模型参数的不确定性导致的。例如,当我们的模型在训练数据上过拟合时,模型对于新的、未见过的数据可能会有很大的不确定性。这种不确定性可以通过收集更多的数据来减小。
一个常用的方法来量化模型不确定性是贝叶斯神经网络(Bayesian Neural Networks),它将每个权重视为随机变量,从而引入了权重的分布。对于一个具有权重w的神经网络,后验分布可以表示为P(w|D),其中D是训练数据。这个后验分布可以通过贝叶斯定理计算:
P(w|D) = P(D|w)P(w) / P(D)
在这个公式中,P(w|D)是权重w的后验分布,P(D|w)是在给定权重w的情况下数据D的似然性,P(w)是权重w的先验分布,P(D)是数据的证据(也称为边缘似然性)。我们可以使用随机变分推断或MCMC等方法来近似这个后验分布。
数据不确定性(Aleatoric Uncertainty): 这是由于数据本身的噪声或测量误差导致的。这种不确定性是固有的,不能通过收集更多的数据来减小。
数据不确定性可以通过模型的预测分布来表示。例如,对于回归问题,我们可以假设预测值y遵循一个以f(x)为均值、σ2为方差的高斯分布。这里的σ2可以看作是数据不确定性的度量,通过最小化对数似然性来估计:
log P(D|w) = Σ_{i} log P(y_i|f(x_i), w)
在这个公式中,P(y_i|f(x_i), w)是在给定输入x_i和权重w的情况下,输出y_i的概率分布。我们可以通过最小化这个对数似然性来估计模型的参数和数据的不确定性。��性来估计模型的参数和数据的不确定性。
#Bayes
Q:
对于深度神经网络来说他们的权重符合正态分布么?
A:
深度神经网络的权重是否符合正态分布这个问题并没有一个定论,它取决于多种因素,包括网络的初始化方式、网络的结构、训练数据的分布以及训练过程中的优化算法等。
初始化方式:在神经网络的训练开始时,我们通常会对权重进行初始化。通常的初始化方法有很多种,其中一种常见的方法就是使用正态分布或者均匀分布来进行初始化。这样一来,至少在训练开始时,权重会近似地服从这种分布。
网络结构和训练数据:随着训练的进行,权重的分布会受到训练数据和网络结构的影响。例如,如果网络的某一层主要学习的特征在数据中的分布是非对称的,那么这一层的权重的分布可能就会偏离正态分布。
优化算法:训练过程中使用的优化算法也会影响权重的分布。例如,使用带有动量项的优化算法(如Adam)可能会使权重的分布在训练过程中变得更加复杂。
在贝叶斯变分推断(Bayesian Variational Inference)中,重参数技巧(Reparameterization Trick)是一项核心技术,它巧妙地解决了在随机计算图中进行梯度反向传播的难题。简单来说,该技巧通过将随机变量的生成过程重构为一个确定性函数和一个独立的噪声源,从而使得整个模型可以进行端到端的梯度优化。