稀疏贝叶斯学习(Sparse Bayesian Learning, SBL)方法详解
本文将介绍什么是稀疏贝叶斯学习、它的数学原理、与其他稀疏方法的比较、以及实现与常见问题,最后进行总结。
1. 简介
1.1 稀疏贝叶斯学习的概念
稀疏贝叶斯学习(Sparse Bayesian Learning, SBL)是一类将贝叶斯思想与稀疏约束相结合的模型,旨在自动从高维数据中选择最相关的特征(即令大部分不重要的权重趋于零),从而简化模型并提升可解释性。与常见的基于L1正则化(如Lasso)的稀疏方法相比,SBL还能给出模型参数以及特征重要性的后验分布,从而量化不确定性。
在回归、分类、信号处理等问题中,SBL均有广泛应用。它的核心特点是通过层次化先验(如Automatic Relevance Determination, ARD)来实现特征选择,并且可以在贝叶斯框架下,对特征重要性给出概率解释。
2. 数学原理
以下将以回归问题为例,介绍稀疏贝叶斯学习的主要数学推导。分类任务的原理与之相似,只是似然函数形式有所不同。
2.1 回归模型与贝叶斯框架
我们考虑一个线性回归模型:
y = X w + ϵ , ϵ ∼ N ( 0 , σ 2 I ) , \mathbf{y} = \mathbf{X}\mathbf{w} + \boldsymbol{\epsilon}, \quad \boldsymbol{\epsilon} \sim \mathcal{N}(\mathbf{0}, \sigma^2 \mathbf{I}), y=Xw+ϵ,ϵ∼N(0,σ2I),
其中 X ∈ R N × M \mathbf{X} \in \mathbb{R}^{N \times M} X∈RN×M 为输入特征矩阵, y ∈ R N \mathbf{y} \in \mathbb{R}^{N} y∈RN 为输出向量, w ∈ R M \mathbf{w} \in \mathbb{R}^{M} w∈RM 为模型参数(权重), σ 2 \sigma^2 σ2 为噪声方差。在贝叶斯统计的框架下,参数 w \mathbf{w} w被视为随机变量,我们要关心的是其后验分布 p ( w ∣ X , y ) p(\mathbf{w} \mid \mathbf{X}, \mathbf{y}) p(w∣X,y),而贝叶斯定理告诉我们:
p ( w ∣ X , y ) = p ( y ∣ X , w ) p ( w ) p ( y ∣ X ) . p(\mathbf{w} \mid \mathbf{X}, \mathbf{y}) = \frac{p(\mathbf{y} \mid \mathbf{X}, \mathbf{w}) \, p(\mathbf{w})}{p(\mathbf{y} \mid \mathbf{X})}. p(w∣X,y)=p(y∣X)p(y∣X,w)p(w).
其中,
- p ( y ∣ X , w ) p(\mathbf{y} \mid \mathbf{X}, \mathbf{w}) p(y∣X,w) 为似然函数,即 N ( X w , σ 2 I ) \mathcal{N}(\mathbf{X}\mathbf{w}, \sigma^2 \mathbf{I}) N(Xw,σ2I)。
- p ( w ) p(\mathbf{w}) p(w) 为先验分布。
- p ( y ∣ X ) p(\mathbf{y} \mid \mathbf{X}) p(y∣X) 为边缘似然或证据(对 w \mathbf{w} w积分得到的归一化项)。
2.2 自动相关决定(ARD)先验
在稀疏贝叶斯学习中,为实现对每个权重独立地“淘汰”或保留,常采用自动相关决定(Automatic Relevance Determination, ARD)先验。该先验通过引入超参数向量 α = { α 1 , α 2 , … , α M } \boldsymbol{\alpha} = \{\alpha_1, \alpha_2, \dots, \alpha_M\} α={α1,α2,…,αM},为每个权重 w j w_j wj 配置一个 Gamma 分布控制的方差,从而实现稀疏性:
p
(
w
j
∣
α
j
)
=
N
(
w
j
∣
0
,
α
j
−
1
)
,
p(w_j \mid \alpha_j) = \mathcal{N} \bigl(w_j \mid 0, \alpha_j^{-1}\bigr),
p(wj∣αj)=N(wj∣0,αj−1),
p
(
α
j
)
=
G
a
m
m
a
(
α
j
∣
a
,
b
)
,
p(\alpha_j) = \mathrm{Gamma} (\alpha_j \mid a, b),
p(αj)=Gamma(αj∣a,b),
其中
a
,
b
a, b
a,b 为 Gamma 分布的超参数。若某个
α
j
\alpha_j
αj 变得很大,则对应的
w
j
w_j
wj 会被强力“挤压”到接近 0,实现对该特征的自动忽略;而若
α
j
\alpha_j
αj 保持较小,则意味着
w
j
w_j
wj 保留。
将所有权重的先验写为乘积形式:
p ( w ∣ α ) = ∏ j = 1 M N ( w j ∣ 0 , α j − 1 ) . p(\mathbf{w} \mid \boldsymbol{\alpha}) = \prod_{j=1}^{M} \mathcal{N} \bigl(w_j \mid 0, \alpha_j^{-1}\bigr). p(w∣α)=j=1∏MN(wj∣0,αj−1).
2.3 后验分布与边缘似然
给定观测数据 { X , y } \{\mathbf{X}, \mathbf{y}\} {X,y} 和超参数 α \boldsymbol{\alpha} α,权重 w \mathbf{w} w 的后验分布可写为:
p ( w ∣ X , y , α , σ 2 ) ∝ p ( y ∣ X , w , σ 2 ) p ( w ∣ α ) . p(\mathbf{w} \mid \mathbf{X}, \mathbf{y}, \boldsymbol{\alpha}, \sigma^2) \;\propto\; p(\mathbf{y} \mid \mathbf{X}, \mathbf{w}, \sigma^2) \, p(\mathbf{w} \mid \boldsymbol{\alpha}). p(w∣X,y,α,σ2)∝p(y∣X,w,σ2)p(w∣α).
对于线性高斯模型,这个后验分布依然是高斯分布。为了确定 α \boldsymbol{\alpha} α 和 σ 2 \sigma^2 σ2 的值,可以采用边缘似然最大化(又称类型二最大似然,Type II ML)的方法:
p ( y ∣ X , α , σ 2 ) = ∫ p ( y ∣ X , w , σ 2 ) p ( w ∣ α ) d w . p(\mathbf{y} \mid \mathbf{X}, \boldsymbol{\alpha}, \sigma^2) = \int p(\mathbf{y} \mid \mathbf{X}, \mathbf{w}, \sigma^2) \, p(\mathbf{w} \mid \boldsymbol{\alpha}) \, d \mathbf{w}. p(y∣X,α,σ2)=∫p(y∣X,w,σ2)p(w∣α)dw.
对 α \boldsymbol{\alpha} α 和 σ 2 \sigma^2 σ2 求解时,往往用 EM 算法或其他近似推断算法(例如变分推断、MCMC 等)来迭代更新。
2.3.1 EM 算法的思想
- E 步:给定当前的 α \boldsymbol{\alpha} α 和 σ 2 \sigma^2 σ2,计算 w \mathbf{w} w 的后验分布 q ( w ) q(\mathbf{w}) q(w)(即其均值 μ \boldsymbol{\mu} μ 和协方差 Σ \boldsymbol{\Sigma} Σ)。
- M 步:固定 w \mathbf{w} w 的后验分布,更新超参数 α \boldsymbol{\alpha} α 和噪声方差 σ 2 \sigma^2 σ2,最大化边缘似然。
在经典的 SBL/RVM 推导中, α \boldsymbol{\alpha} α 的更新公式通常可写作:
α
j
new
=
1
−
α
j
Σ
j
j
μ
j
2
,
\alpha_j^{\text{new}} = \frac{1 - \alpha_j \Sigma_{jj}}{\mu_j^2},
αjnew=μj21−αjΣjj,
其中
Σ
j
j
\Sigma_{jj}
Σjj 为后验协方差矩阵
Σ
\boldsymbol{\Sigma}
Σ 的对角元,而
μ
j
\mu_j
μj 为后验均值的第
j
j
j 维分量。若某个特征不重要,则
α
j
\alpha_j
αj 会在迭代中变大,从而使对应的
w
j
w_j
wj 被抑制到接近 0;若特征确实重要,则
α
j
\alpha_j
αj 较小,使
w
j
w_j
wj 得到保留。通过这种自适应调节,各特征的重要程度由数据自动“决定”。
3. 与其他稀疏方法的比较
稀疏贝叶斯学习的代表性方法包括 Relevance Vector Machine (RVM)。与之相比,常见的稀疏方法如 Lasso (L1 正则)、Ridge (L2 正则) 或弹性网 (Elastic Net) 在思想上有以下差异:
-
与 L1 正则化 (Lasso) 的比较
二者都可令部分权重趋于零,达到特征选择的目的。但 Lasso 提供的只是点估计,不直接给出不确定性;SBL 则能通过后验分布反映每个参数的置信程度。此外,Lasso 常需要手工调节正则化系数 λ \lambda λ,而 SBL 在一定程度上可通过数据自动“学习”最优的稀疏强度。 -
与 Ridge (L2 正则) 的比较
Ridge 会将权重拉向 0,但往往不会真的将权重置为 0,因此无法产生显式的特征选择。SBL 能使不重要的权重真正归零,模型更稀疏、更具可解释性。 -
与弹性网 (Elastic Net) 的比较
弹性网同时融合 L1 和 L2 正则,但仍需要两个正则化系数来手动调参。SBL 则以贝叶斯方法自适应地学习正则化强度。另外,SBL 可提供后验不确定性估计,适合对模型可靠性有较高要求的场景。
4. 实现与实践
4.1 基本流程
稀疏贝叶斯学习通常可遵循以下步骤:
-
模型定义
选定回归或分类的模型形式,以及合适的先验(如 ARD)。 -
初始化参数
给出初始的 α \boldsymbol{\alpha} α、 σ 2 \sigma^2 σ2 等,通常设为较小的正数或随机值。 -
迭代推断
使用 EM 等算法迭代更新后验均值和协方差,然后再更新 α \boldsymbol{\alpha} α 等超参数,直到收敛。 -
实现稀疏
不重要的特征会因为 α j \alpha_j αj 值不断变大而被淘汰(对应的 w j w_j wj 逼近零)。 -
模型验证
使用交叉验证、留一法或独立测试集评估模型泛化能力,可根据需要调整先验或 EM 参数。 -
预测和解释
只保留显著特征对应的非零权重,即可得到简洁且可解释性更高的模型。
4.2 实例:使用 Python 实现 RVM
以下以 sklearn-rvm
库为例,演示如何在 Python 中使用 RVM(Relevance Vector Machine),它是稀疏贝叶斯学习的一个典型代表。
代码示例
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, confusion_matrix
from sklearn_rvm import EMRVC
# 1. 生成模拟的二分类数据
X, y = make_classification(n_samples=1000, n_features=50, n_informative=10,
n_redundant=10, n_classes=2, random_state=42)
# 2. 数据预处理:标准化
scaler = StandardScaler()
X = scaler.fit_transform(X)
# 3. 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y,
test_size=0.3,
random_state=42)
# 4. 初始化并训练 RVM 分类器(线性核)
rvm = EMRVC(kernel='linear', verbose=True)
rvm.fit(X_train, y_train)
# 5. 预测并评估
y_pred = rvm.predict(X_test)
print(classification_report(y_test, y_pred))
print("Confusion matrix:\n", confusion_matrix(y_test, y_pred))
6. 总结
稀疏贝叶斯学习(Sparse Bayesian Learning, SBL)通过将贝叶斯思想与稀疏性相结合,能够在高维数据中自动找出重要特征并抑制冗余特征,获得更简洁、更可解释的模型。其核心在于引入层次化先验(如 ARD),使每个权重都带有一个可调节的超参数,从而自适应地实现稀疏化。与常规的 L1/L2 或弹性网等方法相比,SBL 在自动特征选择的同时,还能输出参数不确定性估计,更适合需要对模型可解释性和可靠性有更高要求的场景。
尽管 SBL 在求解上往往比简单的 Lasso 等方法具有更高的计算复杂度,且需要合理设置先验的超参数,但对于很多高维稀疏问题(如基因分析、图像特征提取、信号稀疏恢复等),SBL 提供了一个兼顾自动特征选择与不确定性量化的强大方案。