稀疏贝叶斯学习 3
FSBL 快速贝叶斯学习算法
前面已经求得的
L(t∣σ2,α)=−21log∣∣∣σ2I+ΦΛαΦT∣∣∣−21tT(σ2I+ΦΛαΦT)−1t
Σw−1μw=σ21ΦTΦ+Λα−1=σ−2ΣwΦTt
稀疏贝叶斯学习过程如下:
αinew(σ2)newγi=μi2γi=N−∑iγi∥t−Φμw∥2=1−[Σw]i,i⋅αi
实际操作中,
α 中大部分元素将变得很大,这在迭代更新过程中会引入较大的运算量,如果仅仅将无限大的元素停止更新不删除,导致的(ill-conditioned)
Σ 矩阵来更新
α 将毫无意义。
上一节中得到的对数,为
L(t∣σ2,α)=−2Nlog(2π)−21log∣∣∣Σt∣∣∣−21tTΣt−1t
其中
Σt=σ2I+ΦΛαΦT,令
C=Σt,以及
A−1=Λα。
重新整理得到
L(t∣σ2,α)=−21[Nlog(2π)+log∣∣∣C∣∣∣+tTC−1t]
其中,
C=σ2I+ΦA−1ΦT。
为了减小运算量,我们做以下分解:
C=σ2I+ΦA−1ΦT=σ2I+m̸=i∑αm−1ϕmϕmT+αi−1ϕiϕiT=C−i+αi−1ϕiϕiT
其中
C−i 为
C 去掉基向量
i 贡献后的结果。给定
L(t∣σ2,α) 中的行列式计算(大名鼎鼎的 The Matrix Determinant Lemma 定理来啦)为
∣∣∣C∣∣∣=∣∣∣C−i+αi−1ϕiϕiT∣∣∣=∣∣∣C−i∣∣∣⋅∣∣∣1+αi−1ϕiTC−i−1ϕi∣∣∣
那么接下来去计算逆矩阵,利用
(P+ρaaH)−1=P−1−ρP−1a(1+ρaHP−1a)−1aHP−1
因此可以得到
C−1=(C−i+αi−1ϕiϕiT)−1=C−i−1−αi−1C−i−1ϕi(1+αi−1ϕiTC−i−1ϕi)−1ϕiTC−i−1=C−i−1−αi+ϕiTC−i−1ϕiC−i−1ϕiϕiTC−i−1
于是令
1+αi−1ϕiTC−i−1ϕi=αi−1(αi+ϕiTC−i−1ϕi),
L(α) 可以写为
L(α)=−21[Nlog(2π)+log∣∣∣C∣∣∣+tTC−1t]=−21[Nlog(2π)+log∣∣∣C−i∣∣∣+log(1+αi−1ϕiTC−i−1ϕi)+tT(C−i−1−αi+ϕiTC−i−1ϕiC−i−1ϕiϕiTC−i−1)t]=−21[Nlog(2π)+log∣∣∣C−i∣∣∣−logαi+log(αi+ϕiTC−i−1ϕi)+tTC−i−1t−αi+ϕiTC−i−1ϕitTC−i−1ϕiϕiTC−i−1t]=−21[Nlog(2π)+log∣∣∣C−i∣∣∣−logαi+log(αi+ϕiTC−i−1ϕi)+tTC−i−1t−αi+ϕiTC−i−1ϕi(ϕiTC−i−1t)2]
我们令
siqi=ϕiTC−i−1ϕi=ϕiTC−i−1t
从而
L(α) 可以写为
L(α)=−21[Nlog(2π)+log∣∣∣C−i∣∣∣+tTC−i−1t−logαi+log(αi+si)−αi+siqi2]=L(α−i)+21[logαi−log(αi+si)+αi+siqi2]=L(α−i)+ℓ(αi)
其中两个常数系数:
- 稀疏系数
si 可以被视为衡量基向量
ϕi 与模型中已经存在的
ϕi 重叠的程度。
- 质量系数
qi 是
ϕi 与不包括该向量的模型误差对齐的一种度量,是衡量
ϕi 增加
L(α) 的效果。
上面的分析(求导,通分,令分子为 0,注意结果应该是合理的方差取值范围)表明
L(α) 相对于
αi 具有唯一的最大值:
αiαi=qi2−sisi2,qi2>si=∞,qi2≤si
通过迭代过程,计算所有的基向量
ϕi 对应的
si 和
qi,更新参数向量
α,总结基于快速 RVM 的贝叶算法如下:
-
1) 对于稀疏回归问题,初始化
σ2。
-
2) 初始化一个基向量
ϕi,根据
αi=qi2−sisi2,qi2>si
这时候初始化的
C=σ2I+αi−1ϕiϕiT,因此
C−i=σ2I→C−i−1=σ−2I。使超参数
αi=qi2−sisi2=∥σ−2ϕiTt∥2−σ−2ϕiTϕi∥σ−2ϕiTϕi∥2=∥ϕiTt∥2/∥ϕi∥2−σ2∥ϕi∥2
其他
αm 理论上为无穷大。
-
3)显示计算初始化的均值
μ 和方差
Σ(最初是标量):
Σμ=[σ−2ΦTΦ+A]−1=σ−2ΣΦTt
连同一起初始化其他基向量
ϕm 以及对应的
sm 和
qm。
-
4)从具有
M 个基向量的全部集合中选择候选基
ϕi。
-
5)计算
θi=qi2−si:
- 如果
θi>0 且
αi<∞,更新估计
αi。
- 如果
θi>0 且
αi=∞,添加基向量
ϕi 并更新估计
αi。
- 如果
θi≤0 且
αi<∞,删除基向量
ϕi 并设置
αi=∞。
-
6) 估计噪声水平,更新其方差值
σ2=N−∑iγi∥t−Φμ∥2=N−M+∑mαm[Σ]m,m∥t−Φμ∥2
-
7)再次更新均值
μ 和方差
Σ,及所有的
sm 和
qm。
-
8)判断是否收敛,收敛则算法结束,否则转到步骤(4)继续迭代。