贝叶斯线性回归
MAP估计和ML估计都是对模型参数的点估计,也就是说它为向量\(w\)找到一个确定的值,这个值可以最大化目标函数。其中ML只考虑数据模型\(p(y|w, X)\),而MAP还考虑到了模型的先验\(p(y,w|X) = p(y|w, X)p(w)\)。在这个基础上,贝叶斯推断还使用贝叶斯定律进一步地推断\(w\)的不确定性
考虑到后验分布正比于似然与先验分布的乘积,可以得出
\[\begin{align*} p(w|y,X) &\propto p(y|w, X)p(w) \\ &\propto \left[e^{-\frac{1}{2\sigma^2}(y-Xw)^\mathsf{T}(y-Xw)}\right]\left[e^{-\frac{\lambda}{2}w^\mathsf{T}w}\right] \\ &\propto e^{-\frac{1}{2}\{w^\mathsf{T}(\lambda I + \sigma^{-2}X^\mathsf{T}X)w - 2\sigma^{-2}w^\mathsf{T}X^\mathsf{T}y\}} \end{align*}\]
可以看出,\(p(w|y,X)\)也满足高斯分布。因为高斯分布在指数上有一个\((w-\mu)^\mathsf{T}\Sigma^{-1}(w-\mu)\),如果把概率密度函数展开,则是 \[\begin{align*} p(w|\mu, \Sigma) &= \frac{1}{\sqrt{(2\pi)^d|\Sigma|}}\exp\left(-\frac{1}{2}(w - \mu)^\mathsf{T}\Sigma^{-1}(w - \mu)\right) \\ &= \frac{1}{(2\pi)^{\frac{d}{2}}|\Sigma|^{\frac{1}{2}}}\exp\left(-\frac{1}{2}(w^\mathsf{T}\Sigma^{-1}w - 2w^\mathsf{T}\Sigma^{-1}\mu + \mu^\mathsf{T}\Sigma^{-1}\mu)\right) \end{align*}\] 而由前面的推导,有 \[ p(w|y,X) = \frac{1}{Z}\exp\left(-\frac{1}{2}(w^\mathsf{T}(\lambda I + \sigma^{-2}X^\mathsf{T}X)w - 2w^\mathsf{T}X^\mathsf{T}y / \sigma^2)\right) \]
因此只需要令 \[ \Sigma^{-1} = (\lambda I + \sigma^{-2}X^\mathsf{T}X),\ \ \ \Sigma^{-1}\mu = X^\mathsf{T}y/\sigma^2 \] \(p(w|y,X)\)就可以写成正态分布概率密度函数的形式。此时 \[ Z = (2\pi)^{\frac{d}{2}}|\Sigma|^{\frac{1}{2}}e^{\frac{1}{2}\mu^\mathsf{T}\Sigma^{-1}\mu} \] 即 \[\begin{align*} p(w|y,X) &= N(w|\mu, \Sigma) \\ \Sigma &= (\lambda I + \sigma^{-2}X^\mathsf{T}X)^{-1} \\ \mu &= (\lambda \sigma^2 I + X^\mathsf{T}X)^{-1}X^\mathsf{T}y \Leftarrow w_{\rm MAP} \end{align*}\]
这样我们就获得了关于\(w\)的完整的概率分布
类似的,我们对预测值也可以给一个概率解释。给定\(X\)和\(y\)作为训练集,对新的\(x_0\)预测\(y_0\),就是求条件概率\(p(y_0|x_0, y, X)\)。根据边缘概率和联合概率密度的定义,是对所有可能的\(w\)的积分,即 \[\begin{align*} p(y_0|x_0, y, X) &= \int_{\mathbb{R}^d}p(y_0, w|x_0, y, X)dw \\ &= \int_{\mathbb{R}^d}p(y_0|w,x_0,y,X)p(w|x_0, y,X)dw \end{align*}\]
又根据条件独立性有 \[\begin{align*} p(y_0|w,x_0,y,X) &= p(y_0|w,x_0) \ \ {\rm (似然)} \\ p(w|x_0,y,X) &= p(w|y,X) \ \ {\rm (后验)} \end{align*}\]
因此可以得到预测的分布 \[ p(y_0|x_0,y,X) = \int_{\mathbb{R}^d}p(y_0|x_0,w)p(w|y,X)dw \]
由于根据模型本身有\(p(y_0|x_0,w) = N(y_0|x_0^\mathsf{T}w, \sigma^2)\),根据贝叶斯定律,有\(p(w|y,X)=N(w|\mu,\Sigma)\)(其中\(\mu\)和\(\Sigma\)前面已有推导),则代入计算(比较复杂没有推),有 \[\begin{align*} p(y_0|x_0,y,X) &= N(y_0|\mu_0, \sigma^2_0) \\ \mu_0 &= x_0^\mathsf{T}\mu \\ \sigma^2_0 &= \sigma^2 + x_0^\mathsf{T}\Sigma x_0 \end{align*}\]
期望值仍然是MAP估计的值,但是现在可以得到方差
主动学习
贝叶斯学习实际上可以看作是一个顺序的过程,也就是说,原本的后验,在看到一些数据以后,会变成接下来未知数据的先验。令\(y\)和\(X\)是“老数据”,\(y_0\)和\(x_0\)是“新数据”,那么根据贝叶斯定律 \[ p(w|y_0, x_0, y, X) \propto p(y_0|w, x_0)p(w|y,X) \] 看到\((y,X)\)以后的后验又变成了\((y_0,x_0)\)的先验。即 \[\begin{align*} p(w|y_0,x_0,y,X) &= N(w|\mu, \Sigma), \\ \Sigma &= \left(\lambda I + \sigma^{-2}(x_0x_0^\mathsf{T} + \sum_{i=1}^n x_ix_i^\mathsf{T})\right)^{-1} \\ \mu &= \left(\lambda \sigma^2 I + (x_0x_0^\mathsf{T} + \sum_{i=1}^n x_ix_i^\mathsf{T})\right)^{-1}\left(x_0y_0 + \sum_{i=1}^n x_iy_i\right) \end{align*}\]
这里的意思是,在最开始没有看到\(x_0, y_0\),只有\(X,y\)的时候,计算出来的\(p(w|y,X)\)是后验。但是当计算完了,来了新数据对的时候,计算新的后验是用到的先验\(p(w)\)实际上是\(p(w|y,X)\),是上一步的后验。一步一步滚雪球。既然是一个迭代的过程,那么我们的问题是,能否智能地学习\(p(w|y,X)\)?也就是,对于\(\mathcal{D} = \{x_1, \ldots, x_n\}\),能否选择一个迭代学习的顺序?
假设我们已经有了有标签的数据集\((y,X)\)和后验\(p(w|y,X)\),则可以对\(\mathcal{D}\)中的其他\(x_0\)构建预测分布: \[\begin{align*} p(y_0|x_0,y,X) &= N(y_0|\mu_0, \sigma^2_0) \\ \mu_0 &= x_0^\mathsf{T}\mu \\ \sigma^2_0 &= \sigma^2 + x_0^\mathsf{T}\Sigma x_0 \end{align*}\]
对每个\(x_0\),\(\sigma^2_0\)反映了我们的置信度,也就是说可以采用以下策略: 1. 对所有没有标签的\(x_0 \in \mathcal{D}\)构建\(p(y_0|x_0, y, X)\) 2. 找出\(\sigma^2_0\)最大的\(x_0\)和其对应的\(y_0\) 3. 更新后验\(p(w|y,X)\),注意用到的\(y \leftarrow (y, y_0), X \leftarrow (X, x_0)\) 4. 使用更新的后验,回到第一步
这个过程实际上是减少了系统中的熵(也就是不确定性)。令一个\(p(z)\)代表一个连续分布,则其熵定义为 \[ \mathcal{H}(p) = -\int p(z)\ln p(z)dz \] 它量度了分布的延展情况。该值越大说明分布越是一个“不确定”的分布(即方差越大)。多变量高斯分布的熵为 \[ \mathcal{H}(N(w|\mu, \Sigma)) = \frac{d}{2}\ln\left(2\pi e|\Sigma|\right) \]
也就是高斯分布的熵随着其协方差矩阵的变化而变化。根据前面顺序贝叶斯学习的理论,协方差矩阵从先验变到后验 \[\begin{align*} ({\rm Prior}):\ (\lambda I + \sigma^{-2}X^\mathsf{T}X)^{-1}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ &\equiv \Sigma \\ \Downarrow \\ ({\rm Posterior}):\ (\lambda I + \sigma^{-2}(x_0x_0^\mathsf{T}+X^\mathsf{T}X))^{-1} &\equiv (\Sigma^{-1} + \sigma^{-2}x_0x_0^\mathsf{T})^{-1} \end{align*}\]
根据秩为1矩阵的行列式的更新性质,有 \[ \mathcal{H}_{\rm post} = \mathcal{H}_{\rm prior} - \frac{d}{2}\ln(1+\sigma^{-2}x_0^\mathsf{T}\Sigma x_0) \] 因此最小化\(\mathcal{H}_{\rm post}\)的\(x_0\)也最大化了\(\sigma^2 + x_0^\mathsf{T}\Sigma x_0\)
模型选择
其实就是如何选择\(\lambda\)。贝叶斯学习还可以通过证据最大化(evidence maximization)来表达,即 \[ p(w|y,X,\lambda) = p(y|w,X)p(w|\lambda) / p(y|X, \lambda) \] 这里分母就是“证据”。证据给出了数据的似然,而且把\(w\)积分掉了。最好的\(\hat{\lambda}\)满足 \[ \hat{\lambda} = {\rm arg}\max_\lambda \ln p(y|X, \lambda) \] \(p(y|X,\lambda)\)也是正态分布,可以表示成\(p(y|X,\lambda) = N(y|0, \sigma^2 I + \lambda^{-1}X^\mathsf{T}X)\),需要求出\(\lambda\)的最大值。这个值只能迭代求出,没有解析解
之前的最大似然是最大化主参数\(w\)的似然,称为I类机器学习。这里是把主参数积分掉,最大化超参数\(\lambda\),是II类机器学习,也称为经验贝叶斯。但是对复杂模型不适用。因此最好的找出\(\lambda\)的方法还是交叉验证