贝叶斯神经网络(BNN)提供了一种原则性方法,通过将网络权重 w 视为具有后验分布 p(w∣D) 的随机变量,从而将不确定性纳入深度学习。主要的难题在于描述这种高维后验。MCMC方法,例如哈密顿蒙特卡洛(HMC),是用于从复杂分布中采样的高效技术。然而,将这些方法直接应用于大型神经网络时,会遇到严重的计算难题。
标准MCMC的扩展性问题
标准HMC需要计算对所有参数 w 的对数后验梯度。对数后验由贝叶斯定理给出:
logp(w∣D)=logp(D∣w)+logp(w)−logp(D)
梯度项 ∇wlogp(w∣D) 包含对数似然的梯度 ∇wlogp(D∣w) 和对数先验的梯度 ∇wlogp(w)。假设数据点 D={xi,yi}i=1N 是独立同分布的,则对数似然是整个数据集上的总和:
logp(D∣w)=i=1∑Nlogp(yi∣xi,w)
计算 ∇wlogp(D∣w) 需要对所有 N 个数据点进行一次完整遍历。对于 N 可能达到数百万或数十亿的深度学习数据集,在HMC蛙跳积分的每一步计算此梯度会变得成本过高。这使得标准HMC无法适用于典型的深度学习情况。
MCMC的改进:随机梯度方法
解决方案与训练标准深度神经网络的方法相似:使用小批量进行随机梯度估计。我们不使用完整数据集计算梯度,而是在每次迭代 t 时,使用一个大小为 M≪N 的小而随机采样的子集(一个小批量)Dt={xi,yi}i∈It 来近似它。
对数后验的梯度近似为:
∇wlogp(w∣D)≈MNi∈It∑∇wlogp(yi∣xi,w)+∇wlogp(w)
这会给梯度估计引入噪声。简单地将这些带噪声的梯度代入标准HMC动力学中,会导致不正确的采样行为;模拟轨迹会发散,并且采样器不会收敛到真实的后验分布。
随机梯度哈密顿蒙特卡洛(SGHMC)
随机梯度哈密顿蒙特卡洛(SGHMC)是HMC的一种改进,专门用于处理来自小批量的噪声梯度。由Chen、Fox和Guestrin(2014)提出,SGHMC修改了哈密顿动力学方程,以考虑梯度噪声,从而在特定条件下确保收敛到正确的预期分布。
回顾HMC模拟一个具有位置 w (权重)和动量 p 的物理系统。其动力学由哈密顿量 H(w,p)=U(w)+K(p) 控制,其中 U(w)=−logp(w∣D) 是势能(负对数后验),K(p) 是动能。
SGHMC修改了动量更新步骤。SGHMC不直接使用带噪声的梯度估计 ∇wU~(w) (其中 U~(w) 是使用小批量估计的势能),而是引入了一个 摩擦项 C。对于步长 ϵ 的离散更新方程如下:
-
位置更新:
wt+1=wt+ϵM−1pt
(此处 M−1 是逆质量矩阵,通常取为单位矩阵)。
-
动量更新:
pt+1=pt−ϵ∇wU~(wt)−ϵCM−1pt+N(0,2ϵ(C−B^))
让我们分解一下动量更新:
- −ϵ∇wU~(wt):标准力项,但使用了势能的随机梯度。
- −ϵCM−1pt:新增的摩擦项。此项会抑制动量,有助于抵消随机梯度注入的噪声。C 是用户指定的正定矩阵(通常为对角矩阵,C=αI)。它的作用类似于带有动量的SGD等优化算法中的动量衰减。
- N(0,2ϵ(C−B^)):添加到动量更新中的高斯噪声项。这是必需的。B^ 是随机梯度估计中噪声协方差的估计。这种注入的噪声精确地补偿了离散化和摩擦项的影响,确保采样器的平稳分布保持为预期后验 p(w∣D)。在实际中,估计 B^ 可能很复杂,通常假定它为零或一个简单的标量,这需要调整 C。
引入摩擦项 C 是主要的修改。它有助于控制噪声梯度引入的方差,稳定模拟。附加的噪声项纠正了动力学,以确保收敛到正确后验分布的理论保证。
SGHMC的实际考虑
为贝叶斯神经网络实现SGHMC涉及多项选择:
- 小批量大小 (M): 较大的批量可以减少梯度噪声,但会增加每一步的计算量。需要找到一个平衡点。
- 步长 (ϵ): 类似于SGD中的学习率。需要仔细调整。过大会导致不稳定;过小会导致采样慢。循环步长等技术有时会有帮助。
- 摩擦项 (C): 控制阻尼。较高的摩擦力会带来更高的稳定性,但可能导致状态空间采样速度变慢。它需要与估计的噪声协方差 B^(如果使用)和步长进行平衡。通常通过经验调整。
- 积分步数: 类似于HMC,SGHMC在生成样本之前,会模拟一定数量的步(蛙跳步)的动力学。步数影响计算成本和采样效率。
- 预热与稀疏化: 标准MCMC实践适用。初始样本(预热期)会被丢弃,样本可能进行稀疏化以减少自相关。
- 收敛诊断: 相较于标准MCMC,使用随机梯度评估收敛更具挑战性。像 R^ 这样的标准诊断可能不太可靠。观察重要参数或模型性能指标随迭代变化的轨迹图是很重要的。
其他随机梯度MCMC方法
SGHMC是一种重要方法,但也有其他方法:
- 随机梯度朗之万动力学(SGLD): 一种更简单的方法,主要是在SGD更新中添加高斯噪声。当摩擦项 C 较高时(过阻尼极限),它对应于SGHMC的动力学。它更容易实现,但在某些情况下可能比SGHMC混合速度慢。
Δwt=2ϵt(∇wlogp(wt)+MNi∈It∑∇wlogp(yi∣xi,wt))+ηt
其中 ηt∼N(0,ϵt)。步长 ϵt 必须随时间衰减才能收敛。
优点和缺点
SGMCMC用于贝叶斯神经网络的优点:
- 可扩展性: 使得MCMC采样可以应用于标准MCMC不可行的大型数据集和复杂模型。
- 完整后验描述(理论上): 与变分推断不同,MCMC方法旨在从真实后验中采样,在时间充足的情况下,可能更好地捕捉复杂形状和多峰性。
- 理论依据: 构建在MCMC成熟的理论依据之上。
缺点:
- 调优复杂性: 需要仔细调整步长、摩擦、小批量大小,以及可能的噪声估计。不良的调优可能导致收敛缓慢或发散。
- 计算成本: 尽管比标准MCMC更具可扩展性,但SGMCMC方法在训练深度网络方面通常仍比VI或标准基于梯度的优化慢得多。生成许多独立样本可能需要大量时间。
- 收敛诊断: 可靠地评估收敛仍然是研究的一个开放问题,在实际中可能很困难。
总之,像SGHMC和SGLD这样的随机梯度MCMC方法提供了一种将MCMC采样原理应用于贝叶斯深度学习这一具有挑战性方面的方式。它们提供了一条从BNN后验分布获取样本的途径,实现了比点估计更丰富的量化不确定性,但由于小批量处理中固有的噪声梯度估计,它们需要仔细的实现和调整。它们是计算密集型但可能更准确的替代方法,与接下来讨论的变分方法形成对比。