BARN算法原理详解
总结
贝叶斯加性回归网络(Bayesian Additive Regression Networks, BARN)是一种基于贝叶斯框架的集成学习算法,其核心思想是通过马尔可夫链蒙特卡洛(MCMC)方法从神经网络集合的后验分布中采样,实现对复杂非线性关系的建模。与传统的贝叶斯加性回归树(BART)类似,BARN采用“加性模型”结构(即多个弱学习器的预测结果相加),但将BART中的决策树替换为小型神经网络,从而结合神经网络的灵活性与贝叶斯方法的不确定性量化能力。
BARN的算法流程围绕MCMC采样展开:首先初始化一个由多个小型神经网络组成的集合,通过吉布斯采样逐个调整网络结构(添加或删除神经元),并训练新网络的权重;随后基于贝叶斯规则计算新旧网络的后验概率比,决定是否接受新网络;重复迭代直至收敛,最终通过集成网络的预测结果输出不确定性估计。其数学基础涉及后验概率计算、转移概率设计及证据似然近似,工程实现上则与Scikit-Learn深度兼容,支持交叉验证调参与自定义扩展。
分点解析BARN算法原理
1. 核心定位:BART的神经网络扩展
BARN的直接灵感来源于BART(Bayesian Additive Regression Trees)。BART通过集成多棵决策树并基于后验分布采样实现回归/分类,而BARN的核心创新是将BART的“决策树基学习器”替换为“小型神经网络”,形成“贝叶斯加性回归网络”。两者的共性在于:
- 加性模型结构:预测结果为多个弱学习器的线性组合($yi = \sum{k=1}^K M_k(x_i) + \epsilon_i$,其中$M_k$为第$k$个基学习器);
- 贝叶斯后验采样:通过MCMC从基学习器的后验分布中采样,避免过拟合,并提供不确定性量化;
- 集成优势:通过集成降低方差,提升对复杂模式的拟合能力。
差异在于基学习器的选择:BART使用决策树(CART算法生成),BARN使用小型全连接神经网络(MLPRegressor),这使得BARN更擅长捕捉平滑的非线性关系,而BART更适合处理分段常数型数据。
2. 数学基础:后验概率与MCMC采样框架
BARN的训练过程本质是MCMC采样,目标是从神经网络集合的后验分布$P(M_1,…,M_K | X, Y)$中采样,其中$M_k$为第$k$个神经网络,$X$为特征矩阵,$Y$为目标变量。根据贝叶斯定理,后验概率正比于先验概率与证据概率的乘积:
$$P(M_1,…,M_K | X, Y) \propto P(Y | M_1,…,M_K, X) \cdot P(M_1,…,M_K)$$
2.1 先验概率$P(M_1,…,M_K)$
先验概率编码对模型结构的先验信念,BARN默认采用离散泊松分布控制单个神经网络的神经元数量(参数$\lambda$,默认$\lambda=1$,鼓励小网络作为弱学习器)。对于包含$K$个网络的集成,先验通常为各网络先验的乘积(假设网络间独立):
$$P(M_1,…,MK) = \prod{k=1}^K P(M_k)$$
用户可自定义概率质量函数以更精细地控制先验(如调整网络复杂度)。
2.2 证据概率$P(Y | M_1,…,M_K, X)$
证据概率衡量给定模型下数据的似然。BARN假设误差项$\epsilon_i \sim N(0, \sigma^2)$,因此目标残差$Rk = Y - \sum{j \neq k} M_j(X)$(即当前网络$M_k$需拟合的剩余误差)服从正态分布:
$$P(Y | M_1,…,MK, X) \propto \prod{i=1}^N \exp\left(-\frac{(Yi - \sum{k=1}^K M_k(x_i))^2}{2\sigma^2}\right)$$
实际计算中,$\sigma$在每次MCMC迭代中采样,证据概率简化为残差的似然(忽略常数项)。
2.3 MCMC采样:模型提议与接受准则
BARN采用吉布斯采样逐个调整网络:每次迭代选择一个网络$M_k$,通过以下两步更新:
步骤1:模型提议:仅允许两种结构调整——添加1个神经元或删除1个神经元,由转移概率$p$(默认$p=0.4$,鼓励小网络)控制。例如,若当前网络含$n$个神经元,添加神经元的概率为$p$,删除为$1-p$(需保证神经元数≥1)。确定新结构后,使用标准优化(如LBFGS)训练网络权重,得到新网络$M_k’$。
步骤2:接受/拒绝决策:计算新旧网络的后验概率比(因数据似然项在比值中抵消,仅需比较先验与转移概率):
$$\alpha = \min\left(1, \frac{P(M_k’) \cdot q(M_k | M_k’)}{P(M_k) \cdot q(M_k’ | M_k)}\right)$$
其中$q(M_k’ | M_k)$为从$M_k$到$M_k’$的转移概率(如添加神经元的概率),$q(M_k | M_k’)$为反向转移概率