贝叶斯机器学习:高斯分布及其共轭先验

高斯分布[1],也被称为正态分布,广泛应用于连续型随机变量分布的模型中。对于一元变量(x)的情形。高斯分布可以写成下列的形式:

[mathcal{N}(xmid mathcal{mu}, sigma^2) = frac{1}{(2pisigma^2)^{frac{1}{2}}}expleft{-frac{1}{2sigma^2}(x - mu)^2right} ]

其中(mu)是均值,(sigma^2)是方差。对于(D)维向量(boldsymbol{x}),多元高斯分布的形式为:

[mathcal{N}(boldsymbol{x}mid boldsymbol{mu}, boldsymbol{Sigma}) = frac{1}{(2pi)^{frac{D}{2}}}frac{1}{(mathrm{det}boldsymbol{Sigma})^{frac{1}{2}}}expleft{-frac{1}{2}(boldsymbol{x} - boldsymbol{mu})^Tboldsymbol{Sigma}^{-1}(boldsymbol{x} - boldsymbol{mu})right}tag{1} ]

其中,(boldsymbol{mu})是一个(D)维均值向量,(boldsymbol{Sigma})是一个(Dtimes D)协方差矩阵(covariance matrix)(mathrm{det}boldsymbol{Sigma})(boldsymbol{Sigma})的行列式。

1 高斯分布的物理意义

1.1 做为最大熵分布的高斯分布

高斯分布可以从多个不同的角度来理解。例如,对于一个一元实值向量,使得熵取得最大值的是高斯分布。这个性质对于多元高斯分布也成立。

熵(entropy) 的概念最早起源于物理学,是在热力学平衡的背景中介绍的。后来,熵称为描述统计力学中的无序程度的度量。在统计力学中,玻尔兹曼熵(Boltzmann's entropy)[2][3]的定义为:

[S equiv klnOmega ]

这里(Omega)为系统宏观态的重数,(k)为玻尔兹曼常量。

关于统计力学的术语我们用一个例子[4]来简要做一下介绍。考虑将3个不同的球放进3个不同的箱子中,全部的(3^3 = 27)种可能放法如下图所示:

贝叶斯机器学习:高斯分布及其共轭先验

这27种不同结果中的每一种都称为微观态(microstate)。通常,在统计力学中,为了知道系统的微观态,我们必须清楚每个粒子的状态,在我们这个例子中是每个球划分到箱子中去的状态。如果更一般地指定状态——例如仅仅说各个箱子里有多少个球,我们称它为宏观态(macrostate)。当然,如果知道一个系统的微观态(比如({abspacemidspacespace cmidspace-space})),那么我们肯定也能知道它的宏观态(比如箱子中的球个数分别为2、1、0)。但反过来却不行:知道箱子中的球个数分别为2、1、0并没有告诉我们每个球的状态,因为有3个微观态都对应于这个宏观态。对应于给定宏观态的微观态数量称为该宏观态的重数(multiplicity),在这种情况下为3。
更一般地,考虑将(N)个球放进(M)个箱子里,各个箱子里有(n_1, n_2,cdots, n_M)个球时宏观态的重数为我们在博客《概率论沉思录:初等抽样论》中提到的多项式系数:

[Omega(n_1, n_2, cdots, n_M) = frac{N!}{prod_{i}^Mn_i!} ]

其中(sum_{i=1}^Mn_i = N)

对于将(N)个不同的球放进(M)个不同的箱子所形成的这样一个系统,各个箱子里有(n_1, n_2,cdots, n_M)个球时系统的熵为

[S = klnfrac{N!}{prod_{i}^Mn_i!} = kln N! - ksum_{i=1}^Mln n_i! ]

现在我们在此基础上乘以一个缩放参数(frac{1}{N}),忽略掉常数(k),并考虑(Ngg 1),根据斯特林近似(Stirlings approximation) 我们有(ln N!approx Nln N - N),于是

[begin{aligned} frac{1}{N}S &approx frac{1}{N}left(Nln N - Nright) - frac{1}{N}sum_{i=1}^Mleft[n_iln n_i - n_iright]\ &= ln N - sum_{i=1}^M frac{n_i}{N}ln n_i\ &= - sum_{i=1}^M left(frac{n_i}{N}right)ln left(frac{n_i}{N}right) end{aligned} ]

斯特林近似为:

[ N!approx sqrt{2pi N}left(frac{N}{e}right)^N ]

(N gg 1)时,这个公式十分准确。该公式可以采用下列的直观方式进行理解。(N!)是从(1)(N)(N)个因子的乘积,一个十分粗略的估计是把每个因子都替换成(N),这就是(N!approx N^N)。这是一个过高的估计,因为几乎所有的因子都比(N)小,平均下来每个因子都大了大约(e)倍,也就是说

[ N!approx (frac{N}{e})^N ]

这仍比(N!)差了一个大数字的因子,大约是(sqrt{2pi N})。但若(N)是一个大数字,那么(N!)会是一个非常大的数字,所以这个(大数字)因子就可以被省略了。如果我们只关心(N!)的对数,通常上式就已经足够准确:

[ln N! approx Nln N - N ]

取极限(Nrightarrow infty),并保持比值(frac{n_i}{N})固定,我们可以得到

[-lim_{Nrightarrow infty}sum_{i=1}^M left(frac{n_i}{N}right)ln left(frac{n_i}{N}right) = -sum_{i=1}^M p_iln p_i ]

这里(p_i = lim_{Nrightarrow infty}(frac{n_i}{N}))为给定系统宏观态时,一个球被分配到第(i)个箱子的概率。对于一个球,它被分配到的箱子可以表述成一个离散随机变量(X)(X)一共有(M)个状态),且(p(X = x_i) = p_ispace (i = 1, cdots, M))。这样,随机变量(X)的熵就为

[H[p] = -sum_{i=1}^M p(x_i)ln p(x_i) ]

如果分布(p(x_i))在几个值周围有尖锐的峰值,熵就会相对较低。如果分布(p(x_i))相对平衡地跨过许多值,那么熵就会相对较高。下图展示了两个概率分布在30个箱子上的直方图:

贝叶斯机器学习:高斯分布及其共轭先验

可以看到,熵值越大,(H)越宽(最大的熵值产生于均匀分布,此时的熵值为(H = -ln(frac{1}{30})approx 3.40))。

由于(0leqslant p_ileqslant 1),因此熵是非负的(由于当(xrightarrow 0)时,(xln xrightarrow 0),我们约定(0ln 0 = 0))。当(p_i = 1)且所有其他的(p_{jneq i}=0)时,熵取得最小值(0)。在(sum_i p(x_i) = 1)(概率归一化)的约束下,使用拉格朗日乘数法可以找到熵的最大值。因此,我们要最大化

[tilde{H} = -sum_{i=1}^M p(x_i)ln p(x_i) + lambdaleft(sum_{i=1}^M p(x_i) - 1right) ]

(frac{mathrm{d}(tilde{H})}{mathrm{d}p(x_i)}=0),解得(p(x_i) = e^{lambda - 1}),然后代回约束条件(sum_i p(x_i)),得到(lambda = 1 - ln M),于是最优解为(p(x_i) = frac{1}{M})(此时所有的(p(x_i))都相等),此时熵取得最大值(ln M)

我们可以把熵的定义扩展到连续随机变量(X)的概率分布(p(x)),方法如下。首先把连续随机变量(X)的取值范围切分成宽度为(Delta)的小段区间。根据均值定理(mean value theorem)[5],对于每个这样的小段区间(Delta),一定在区间中存在一个值(x_i)使得

[int_{iDelta}^{(i + 1)Delta}p(x)mathrm{d}x = p(x_i)Delta ]

现在我们可以这样量化连续随机变量(X):只要(X)落在第(i)个区间中,我们就把(X)赋值为(x_i)。因此观察到值(x_i)的概率为(p(x_i)Delta)。这样就变成了离散的分布,这种情况下熵的形式为:

[H_{Delta} = -sum_{i=1}left(p(x_i)Deltaright) ln left(p(x_i)Deltaright) = -sum_{i=1}p(x_i)Delta ln p(x_i) - ln Delta ]

推导时我们使用了(sum_ip(x_i)Delta),这是因为(sum_{i}p(x_i)Delta = sum_iint_{iDelta}^{(i + 1)Delta}p(x)mathrm{d}x = 1)。我们现在省略上式右侧的第二项(-ln Delta),然后考虑极限(Deltarightarrow 0),此时有:

[lim_{Deltarightarrow 0}left{-sum_{i=1}p(x_i)Delta ln p(x_i)right} = -int p(x)ln p(x) mathrm{d}x ]

其中,右侧的量被称为微分熵(differential entropy)。我们看到,熵的离散形式与连续形式的差是(lnDelta),这在极限(Deltarightarrow 0)的情形下发散。这反映出一个事实:具体化一个连续随机变量需要大量的比特位。和离散情形类似,我们将微分熵记为关于概率密度函数(p(x))的函数:

[H[p] = -int p(x)ln p(x) mathrm{d}x ]

在离散分布的情况下,我们看到最大熵对应于变量所有可能状态的均匀分布。现在让我们考虑连续随机变量的最大熵。为了让这个最大值有一个合理的定义,除了保留归一化的约束之外,还有必要限制(p(x))的均值(一阶矩)和方差(二阶矩)。之所以需要限制其方差,是因为当方差增大时,熵也会无限制地增加,因此除非我们给定固定的方差(sigma^2),否则寻找哪一个分布有最大熵这个问题是没有意义的。之所以需要限制其均值,是因为在不改变熵的条件下一个分布可以被随意地改变,因此我们需要再加一个均值为(mu)的约束以获得一个唯一的解[6]。综上,我们最大化微分熵的时候要施加下面三个约束:

[begin{aligned} int p(x) mathrm{d}x &= 1\ int xp(x) mathrm{d}x &= mu\ int (x - mu)^2p(x) mathrm{d}x &= sigma^2 end{aligned} ]

那么这个问题的拉格朗日泛函如下:

[J(p) = H[p] + lambda_1 (int p(x) mathrm{d}x - 1) + lambda_2 (int xp(x) mathrm{d}x - mu) + lambda_3 (int (x - mu)^2p(x) mathrm{d}x - sigma^2) ]

根据变分法,可以得到泛函导数为:

[frac{delta J}{delta p(x)} = -(ln p(x) + 1) + lambda_1 + lambda_2 x + lambda_3(x - mu)^2 ]

(frac{delta J}{delta p(x)} = 0)(对(forall x)),解得(p(x) = exp{-1 + lambda_1 + lambda_2x + lambda_3(x - mu)^2})

函数(f)的函数被称为泛函(functional)(J(f))。正如许多情况下对一个函数求关于以向量的各元素为变量的偏导数一样,我们可以使用泛函导数(functional derivative),即在任意特定的(x)值,对一个泛函(J(f))求关于函数(f(x))的导数,这也被称为变分导数(variational derivative)。泛函(J)的关于函数(f)在点(x)处的泛函导数被记作(frac{delta J}{delta f(x)})

对于可微分函数(f(x))以及带有连续导数的可微分函数(g(y, x))(其中(y=f(x))),有下列结论:

[frac{delta}{delta f(x)} int g(f(x), x)mathrm{d}x = frac{partial}{partial y} g(f(x), x) ]

为了使上述等式更加直观,我们可以把(f(x))看做是一个有着无穷不可数多个元素的向量。在这里,这种关系式中描述的对于特定的(x),关于(f(x))的泛函导数可以类比为对于特定的下标(i),关于向量(boldsymbol{theta}in mathbb{R}^n)的第(i)个元素的偏导数:

[frac{partial}{partial theta_i}sum_j g(theta_j, j) = frac{partial}{partial theta_i} g(theta_i, i) ]

为了关于一个向量优化某个函数,我们可以求出这个函数关于这个向量的梯度,然后找到使这个梯度中每一个元素都为0的点。类似地,我们可以通过寻找一个函数使得泛函导数在每个点上都等于0,从而来优化一个泛函。

为了满足所有的约束,我们可以令(lambda_1 = 1 - ln sigma sqrt{2pi})(lambda_2 = 0)(lambda_3 = - frac{1}{2sigma^2}),从而得到

[p(x) = frac{1}{(2pi sigma^2)^{frac{1}{2}}}expleft{ - frac{(x - mu)^2}{2sigma^2}right} ]

因此最大化微分熵的分布是高斯分布(mathcal{N}(xmid mathcal{mu}, sigma^2))。这也是当我们不知道真实的分布时,往往使用高斯分布的一个原因。因为高斯分布拥有最大的熵,我们通过这个假定来保证了最小可能量的结构。

(Xin [a, b]),无其它约束条件,则此时最大熵分布就是该区间上的均匀分布,这里可以和(X)为离散随机变量的情形联系起来。

如果我们求高斯分布的微分熵,我们会得到:

[begin{aligned} H(p) &= -int p(x) ln p(x) mathrm{d}x\ &= -int frac{1}{(2pi sigma^2)^{frac{1}{2}}}expleft{ - frac{(x - mu)^2}{2sigma^2}right}left[ln frac{1}{(2pi sigma^2)^{frac{1}{2}}} - frac{(x - mu)^2}{2sigma^2}right]\ &= -ln frac{1}{(2pi sigma^2)^{frac{1}{2}}} + frac{1}{2sigma^2} int underbrace{frac{1}{(2pi sigma^2)^{frac{1}{2}}} expleft{ - frac{(x - mu)^2}{2sigma^2}right} (x - mu)^2 mathrm{d}x}_{sigma^2}\ &= frac{1}{2}left{ln (2pisigma^2) + 1right} end{aligned} ]

我们可以看到熵随着分布宽度(即(sigma^2))的增加而增加。这个结果也表明,与离散熵不同,微分熵可以为负,因为对于上式而言,当(sigma^2 < frac{1}{2pi e})时,(H(p) < 0)

1.2 做为随机变量和分布的高斯分布

当我们考虑多个随机变量之和的时候,也会产生高斯分布。根据林德伯格所证明的中心极限定理(central limit theorem)(为我们在博客《概率论沉思录:初等假设检验》中提到过的伯努利试验的棣莫弗-拉普拉斯极限定理的推广),设({X_k}_{k=1}^N)是相互独立且具有共同分布的随机变量序列,假定(mu=mathbb{E}[X_k])(sigma^2 = mathrm{Var}[X_k])都存在,并令(S_N = X_1 + cdots + X_N),则当(Nrightarrow infty)时,有(S_N rightarrow mathcal{N}(Nmu, sigmasqrt{N}))(依分布)。

例如,考虑(N)个随机变量(X_1, cdots, X_N),每一个都是区间([0, 1])上的均匀分布,然后考虑(N)个随机变量的均值(frac{S_N}{N} = frac{1}{N}(X_1 + cdots + X_N))的分布。对于大的(N),这个分布趋向于高斯分布,如下图所示:

贝叶斯机器学习:高斯分布及其共轭先验

在实际应用中,随着(N)的增加,分布会很迅速收敛为高斯分布。

2 高斯分布的性质

2.1 高斯分布的几何性质

观察式((1))中的多元高斯分布的形式,考虑其中在指数位置上出现的二次型

[(boldsymbol{x} - boldsymbol{mu})^Tboldsymbol{Sigma}^{-1}(boldsymbol{x} - boldsymbol{mu})tag{2} ]

由于协方差矩阵(mathbf{Sigma})是对称矩阵,那么(mathbf{Sigma}^{-1})也是对称矩阵(注意(mathbf{Sigma}^{-1})的第(j, i)个元素为((-1)^{i + j}left[mathrm{det}mathbf{Sigma}_{ij} / mathrm{det}mathbf{Sigma}right]),其中(mathbf{Sigma}_{ij})是从(mathbf{Sigma})中除去第(i)行和第(j)列后得到的矩阵,而对于对称矩阵(mathbf{Sigma})(mathrm{det}mathbf{Sigma}_{ij} = mathrm{det}mathbf{Sigma}_{ji}))。我们假定(mathbf{Sigma})是正定的,那么(mathbf{Sigma}^{-1})也是正定的(后面我们会证明)。于是,式((2))(boldsymbol{x})(boldsymbol{mu})马⽒距离(Mahalanobis distance)(Delta)的平方。当(boldsymbol{Sigma})是单位阵时,就变成了欧氏距离。

给定(Dtimes D)的对称正定矩阵(mathbf{A}),则从点(boldsymbol{x})到原点的马氏距离(Delta)由正定二次型(0 < Delta^2 = boldsymbol{x}^Tmathbf{A}boldsymbol{x})(boldsymbol{x} neq boldsymbol{0}))确定;反过来,一个正定二次型(boldsymbol{x}^Tmathbf{A}boldsymbol{x} > 0)(boldsymbol{x} neq boldsymbol{0}))可以解释为点(boldsymbol{x})到原点的马氏距离(Delta)的平方[7]。此外,从点(boldsymbol{x})到任意一固定点(boldsymbol{mu})的马氏距离(Delta)的平方由公式((boldsymbol{x} - boldsymbol{mu})^Tmathbf{A}(boldsymbol{x} - boldsymbol{mu}))给出。

马氏距离可以理解为在新的基底(也即(mathbf{A})的规范正交特征向量组成的基底)下两点之间的距离。例如,设(D=2),则到原点的马氏距离为常数(c)的点(boldsymbol{x} = (x_1, x_2)^T)满足(boldsymbol{x}^Tmathbf{A}boldsymbol{x} = c^2)。对(mathbf{A})进行谱分解得:

[mathbf{A} = lambda_1 boldsymbol{e}_1boldsymbol{e}_1^T + lambda_2boldsymbol{e}_2boldsymbol{e}_2^T ]

所以

[begin{aligned} boldsymbol{x}^Tmathbf{A}boldsymbol{x} &= boldsymbol{x}^T(lambda_1 boldsymbol{e}_1boldsymbol{e}_1^T + lambda_2boldsymbol{e}_2boldsymbol{e}_2^T)boldsymbol{x}\ & = lambda_1 (boldsymbol{e}_1^Tboldsymbol{x})^2 + lambda_2 (boldsymbol{e}_2^Tboldsymbol{x})^2 end{aligned} ]

(y_1 = boldsymbol{e}_1^Tboldsymbol{x}, y_2 = boldsymbol{e}_2^Tboldsymbol{x}),则(boldsymbol{y} = (y_1, y_2)^T)可视为点(boldsymbol{x}=(x_1, x_2)^T)在新的基底(boldsymbol{e}_1, boldsymbol{e}_2)下的坐标,基变换关系为(left(begin{matrix} y_1\ y_2 end{matrix}right) = left(begin{array}{c:c}boldsymbol{e}_1 & boldsymbol{e}_2end{array}right)^Tleft(begin{matrix} x_1\ x_2 end{matrix}right) = left(begin{matrix} boldsymbol{e}_1^T\ hdashline boldsymbol{e}_2^T end{matrix}right)left(begin{matrix} x_1\ x_2 end{matrix}right))。此时,(boldsymbol{y}=(y_1, y_2)^T)在以原点为中心的椭圆上,其方程为:

[ begin{aligned} lambda_1 y_1^2 + lambda_2 y_2^2 = c^2 end{aligned} ]

该椭圆的轴即为做为新基底的规范正交特征向量(boldsymbol{e}_1, boldsymbol{e}_2)。我们可以发现将(boldsymbol{x} = clambda_1^{-1/2}boldsymbol{e}_1)代入椭圆方程得到(boldsymbol{x}^Tmathbf{A}boldsymbol{x} = lambda_1 (clambda_1^{-1/2}boldsymbol{e}_1^Tboldsymbol{e}_1)^2=c^2),可见椭圆沿(boldsymbol{e}_1)方向的半轴长为(clambda_1^{-1/2});同理,(boldsymbol{x} = clambda_2^{-1/2}boldsymbol{e}_2)也给出了椭圆沿(boldsymbol{e}_2)方向的半轴长(clambda_2^{-1/2})。到原点的马氏距离为常数(c)的点的位置如下图所示((D = 2, lambda_1 < lambda_2)):

贝叶斯机器学习:高斯分布及其共轭先验

如果(D > 2),到原点的马氏距离为常数(c = sqrt{boldsymbol{x}^Tmathbf{A}boldsymbol{x}})的点(boldsymbol{x} = (x_1, cdots, x_D))在椭球面(lambda_1 (boldsymbol{e_1}^Tboldsymbol{x})^2 + cdots + lambda_D (boldsymbol{e}_D^Tboldsymbol{x}^T)^2 = c^2)上,其轴由(mathbf{A})的规范正交特征向量给出。沿(boldsymbol{e}_i)方向的半轴长为(frac{c}{sqrt{lambda_i}}, i = 1, 2, cdots, p),其中(lambda_1, cdots, lambda_D)(mathbf{A})的特征值。

下图直观地说明了马氏距离相比欧氏距离具有优越性的情况:

贝叶斯机器学习:高斯分布及其共轭先验

该图描述了重心(样本均值)在点(Q)的一组点。(P)(Q)的欧氏距离大于(O)(Q)的欧氏距离。然而,(P)点却比原点(O)更像是属于这一组点内的点。如果我们用马氏距离来度量距离,则(P)距离(Q)就会比(O)距离(Q)要近了。

至于马氏距离中的矩阵(mathbf{A})如何确定则和样本各维度的标准差有关。马氏距离相当于将样本各维度除以样本标准差之后(也即“标准化”之后),再采用欧氏距离的公式进行计算,感兴趣的读者可以阅读《Applied Multivariate Statistical Analysis》1.5节。

如果令多元高斯分布中的马氏距离的平方(Delta^2 = (boldsymbol{x} - boldsymbol{mu})^Tboldsymbol{Sigma}^{-1}(boldsymbol{x} - boldsymbol{mu}))为常数(c^2),那么多元高斯分布的概率密度也为常数,这也就意味着到均值(boldsymbol{mu})的马氏距离相等的点拥有相同的赋概。我们前面提到过,这些点在一个椭球面上,我们将其称为轮廓线(contours)

[begin{aligned} quadtext{常数概率密度轮廓线} &= {boldsymbol{x}mid (boldsymbol{x} - boldsymbol{mu})^T mathbf{Sigma}^{-1} (boldsymbol{x} - boldsymbol{mu}) = c^2}\ &= text{中心在}boldsymbol{mu}的椭球面 end{aligned} ]

为了确定椭球面的轴方向和半轴长,我们对协方差矩阵的逆矩阵(mathbf{Sigma}^{-1})进行谱分解:

[mathbf{Sigma}^{-1} = sum_{i=1}^D frac{1}{lambda_i}boldsymbol{e}_iboldsymbol{e}_i^Ttag{3} ]

其中(lambda_1, cdots, lambda_D)(mathbf{Sigma})的特征值,(boldsymbol{e}_1, cdots, boldsymbol{e}_D)为与之相伴的规范正交特征向量。

关于(mathbf{Sigma}^{-1}),我们有下列结论:
(quad) 结论(mathbf{Sigma})是正定的,其逆为(mathbf{Sigma}^{-1}),则$$
mathbf{Sigma}boldsymbol{e} = lambda boldsymbol{e}Rightarrowmathbf{Sigma}^{-1}boldsymbol{e} = left(frac{1}{lambda}right)boldsymbol{e}$$

所以(mathbf{Sigma})的特征值-特征向量对((lambda, boldsymbol{e}))对应于(mathbf{Sigma}^{-1})的特征值-特征向量对((frac{1}{lambda}, boldsymbol{e}))。且(mathbf{Sigma}^{-1})也是正定的。

(quad) 证明 对于正定的(mathbf{Sigma})以及一个特征向量(boldsymbol{e}neq boldsymbol{0}),我们有(0 < boldsymbol{e}^Tmathbf{Sigma}boldsymbol{e} = boldsymbol{e}^T(mathbf{Sigma}boldsymbol{e}) = boldsymbol{e}^T(lambdaboldsymbol{e}) = lambdaboldsymbol{e}^Tboldsymbol{e} = lambda)。而且(boldsymbol{e} = mathbf{Sigma}^{-1}(mathbf{Sigma}boldsymbol{e}) = mathbf{Sigma}^{-1}(lambdaboldsymbol{e}) = lambdamathbf{Sigma}^{-1}boldsymbol{e}),用(lambda > 0)除,得到(mathbf{Sigma}^{-1}boldsymbol{e} = left(frac{1}{lambda}right)boldsymbol{e})。于是,((frac{1}{lambda}, boldsymbol{e}))(mathbf{Sigma}^{-1})的一对特征值-特征向量。因此,我们对任意(D)维向量(boldsymbol{x}neq boldsymbol{0})

[begin{aligned} boldsymbol{x}^Tmathbf{Sigma}^{-1}boldsymbol{x} &= boldsymbol{x}^Tleft(sum_{i=1}^D frac{1}{lambda_i}boldsymbol{e}_iboldsymbol{e}_i^Tright)boldsymbol{x}\ &= sum_{i=1}^D (frac{1}{lambda_i}) (boldsymbol{e}_i^Tboldsymbol{x})^2 > 0 end{aligned} ]

由此得出(mathbf{Sigma}^{-1})是正定的。

将式((3))(mathbf{Sigma}^{-1})的谱分解结果代入式((2))所示的二次型中,有

[begin{aligned} c^2 &= (boldsymbol{x} - boldsymbol{mu})^T mathbf{Sigma}^{-1} (boldsymbol{x} - boldsymbol{mu})\ &= (boldsymbol{x} - boldsymbol{mu})^T left(sum_{i=1}^D frac{1}{lambda_i}boldsymbol{e}_iboldsymbol{e}_i^Tright) (boldsymbol{x} - boldsymbol{mu})\ &= sum_{i=1}^D frac{left(boldsymbol{e}_i^T(boldsymbol{x} - boldsymbol{mu})right)^2}{lambda_i}\ end{aligned} ]

(y_i = boldsymbol{e}_i^T(boldsymbol{x} - boldsymbol{mu})),则(boldsymbol{y})可视为点(boldsymbol{x} - boldsymbol{mu})在新的基底({boldsymbol{e}_i})下的坐标,基变换关系为(left(begin{matrix} y_1\ vdots\ y_D end{matrix}right) = left(begin{array}{c:c:c}boldsymbol{e}_1& cdots &boldsymbol{e}_Dend{array}right)^T(boldsymbol{x} - boldsymbol{mu}) = left(begin{matrix} boldsymbol{e}_1^T\ hdashline vdots\ hdashline boldsymbol{e}_D^T end{matrix}right)(boldsymbol{x} - boldsymbol{mu}))。此时,(boldsymbol{y}=(y_1, cdots, y_D)^T)在以(boldsymbol{mu})为中心的椭球面上,其方程为:

[ begin{aligned} sum_{i=1}^D frac{y_i^2}{lambda_i} = c^2 end{aligned} ]

该椭球面的轴即为做为新基底的规范正交特征向量(boldsymbol{e}_1, cdots, boldsymbol{e}_D)。我们可以发现将(boldsymbol{x}_i = boldsymbol{mu} + clambda_i^{1/2}boldsymbol{e}_i)代入椭圆方程得到((boldsymbol{x} - boldsymbol{mu})^T mathbf{Sigma}^{-1} (boldsymbol{x} - boldsymbol{mu}) = frac{left(clambda_i^{1/2}boldsymbol{e}_i^Tboldsymbol{e}_iright)^2}{lambda_i} = c^2),可见椭圆沿(boldsymbol{e}_i)方向的半轴长为(clambda_i^{1/2})(i = 1, cdots, D))。在(D=2)的情况下,该椭球面为中心为(boldsymbol{mu})的椭圆,如下图所示((lambda_2 < lambda_1)):

贝叶斯机器学习:高斯分布及其共轭先验

现在我们考虑多元高斯分布是否是归一化的。我们之前使用了变量替换(boldsymbol{y} = T(boldsymbol{x}) = left(begin{matrix} boldsymbol{e}_1^T\ hdashline vdots\ hdashline boldsymbol{e}_D^T end{matrix}right)(boldsymbol{x} - boldsymbol{mu})),于是在新的基底下的积分公式可以经由变量替换[8][9]表示为

[int mathcal{N}(boldsymbol{y}mid boldsymbol{0}, boldsymbol{Sigma})mathrm{d}boldsymbol{y} = int mathcal{N}left(T(boldsymbol{x})mid boldsymbol{0}, boldsymbol{Sigma}right)|mathrm{det}mathbf{J}|mathrm{d}boldsymbol{x} ]

这里(mathbf{J})为仿射变换(T)的Jacobian矩阵:

[mathbf{J} = left(begin{matrix} &frac{partial T_1(boldsymbol{x})}{partial x_1} &cdots &frac{partial T_1(boldsymbol{x})}{partial x_D}\ &vdots & &vdots\ &frac{partial T_D(boldsymbol{x})}{partial x_1} &cdots &frac{partial T_D(boldsymbol{x})}{partial x_D} end{matrix}right) = left(begin{matrix} &e_{11} &cdots &e_{1D}\ &vdots & &vdots\ &e_{D1} &cdots &e_{DD} end{matrix}right) = left(begin{matrix} boldsymbol{e}_1^T\ hdashline vdots\ hdashline boldsymbol{e}_D^T end{matrix}right) ]

(mathbf{U} = left(begin{array}{c:c:c}boldsymbol{e}_1& cdots &boldsymbol{e}_Dend{array}right))(此时(mathbf{J} = left(begin{matrix} boldsymbol{e}_1^T\ hdashline vdots\ hdashline boldsymbol{e}_D^T end{matrix}right) = mathbf{U}^T)),由于新的基底(boldsymbol{e}_1, cdots, boldsymbol{e}_D)是规范正交的,因此(mathbf{U})是正交矩阵,此时我们有:

[|mathrm{det}mathbf{J}| = |mathrm{det}mathbf{U}^T| = sqrt{left(mathrm{det}mathbf{U}^Tright)^2} = sqrt{mathrm{det}mathbf{U}^Tmathrm{det}mathbf{U}} = sqrt{mathrm{det}left(mathbf{U}^Tmathbf{U}right)} = sqrt{mathrm{det}mathbf{I}} = 1 ]

而我们发现又多元高斯分布(mathcal{N}left(boldsymbol{y}mid boldsymbol{0}, boldsymbol{Sigma}right))可以分解成(D)个独立一元高斯分布(mathcal{N}(y_imid 0, lambda_i))的乘积:

[begin{aligned} mathcal{N}left(boldsymbol{y}mid boldsymbol{mu}, boldsymbol{Sigma}right) &= frac{1}{(2pi)^{frac{D}{2}}}frac{1}{(mathrm{det}boldsymbol{Sigma})^{frac{1}{2}}}expleft{-frac{1}{2}sum_{i=1}^D frac{y_i^2}{lambda_i}right}\ &= prod_{i=1}^Dfrac{1}{(2pilambda_i)^{frac{1}{2}}}expleft{-frac{y_i^2}{2lambda_i}right}\ &= prod_{i=1}^Dmathcal{N}(y_imid 0, lambda_i) end{aligned} ]

(其中我们用到了结论(mathrm{det}mathbf{Sigma} = prod_ilambda_i))因此

[int mathcal{N}(boldsymbol{y}mid boldsymbol{0}, boldsymbol{Sigma})mathrm{d}boldsymbol{y} = prod_{i=1}^D int mathcal{N}(y_imid 0, lambda_i)mathrm{d}y_i = 1 ]

于是我们有

[int mathcal{N}left(boldsymbol{x}mid boldsymbol{mu}, boldsymbol{Sigma}right)mathrm{d}boldsymbol{x} = int mathcal{N}left(T(boldsymbol{x})mid boldsymbol{0}, boldsymbol{Sigma}right)mathrm{d}boldsymbol{x} = int mathcal{N}(boldsymbol{y}mid boldsymbol{0}, boldsymbol{Sigma})mathrm{d}boldsymbol{y} = 1 ]

至此我们证明了多元高斯分布是归一化的。

2.2 高斯分布的一阶矩和二阶矩

现在我们考察多元高斯分布的一阶矩和二阶矩,这可以提供参数(boldsymbol{mu})(mathbf{Sigma})的描述。多元高斯分布下(boldsymbol{x})的期望为:

[begin{aligned} mathbb{E}[boldsymbol{x}] &= frac{1}{(2pi)^{frac{D}{2}}}frac{1}{(mathrm{det}boldsymbol{Sigma})^{frac{1}{2}}} int expleft{-frac{1}{2}(boldsymbol{x} - boldsymbol{mu})^Tboldsymbol{Sigma}^{-1}(boldsymbol{x} - boldsymbol{mu})right} boldsymbol{x} mathrm{d}boldsymbol{x}\ &= frac{1}{(2pi)^{frac{D}{2}}}frac{1}{(mathrm{det}boldsymbol{Sigma})^{frac{1}{2}}} int expleft{-frac{1}{2}boldsymbol{z}^Tboldsymbol{Sigma}^{-1}boldsymbol{z}right} (boldsymbol{z} + boldsymbol{mu}) mathrm{d}boldsymbol{z}\ &= frac{1}{(2pi)^{frac{D}{2}}}frac{1}{(mathrm{det}boldsymbol{Sigma})^{frac{1}{2}}} int expleft{-frac{1}{2}boldsymbol{z}^Tboldsymbol{Sigma}^{-1}boldsymbol{z}right} boldsymbol{z} mathrm{d}boldsymbol{z} + boldsymbol{mu} end{aligned} ]

其中在第二个等式中我们使用了(boldsymbol{z} = boldsymbol{x} - boldsymbol{mu})进行了变量替换,在第三个等式中我们利用了(int mathcal{N}(boldsymbol{z}mid boldsymbol{0}, mathbf{Sigma})mathrm{d}boldsymbol{z} = 1)。现在我们来考虑第一个积分项,我们注意到指数位置是(boldsymbol{z})的偶函数,而(boldsymbol{z})是奇函数,因此被积函数是奇函数[10],又由于积分区域关于原点对称,因此第一个积分项为0。于是我们有

[mathbb{E}[boldsymbol{x}] = boldsymbol{mu} ]

因此我们把(boldsymbol{mu})称为多元高斯分布的均值。

现在我们考虑多元高斯分布的二阶矩。在一元变量的情形下,二阶矩由(mathbb{E}[x^2])给出。对于多元高斯分布,有(D^2)个由(mathbb{E}[x_ix_j])给出的二阶矩,可以聚集在一起组成矩阵(mathbb{E}[boldsymbol{x}boldsymbol{x}^T])。这个矩阵可以表示为:

[ begin{aligned} mathbb{E}[boldsymbol{x}boldsymbol{x}^T] &= frac{1}{(2pi)^{frac{D}{2}}}frac{1}{(mathrm{det}boldsymbol{Sigma})^{frac{1}{2}}} int expleft{-frac{1}{2}(boldsymbol{x} - boldsymbol{mu})^Tboldsymbol{Sigma}^{-1}(boldsymbol{x} - boldsymbol{mu})right} boldsymbol{x}boldsymbol{x}^T mathrm{d}boldsymbol{x}\ &= frac{1}{(2pi)^{frac{D}{2}}}frac{1}{(mathrm{det}boldsymbol{Sigma})^{frac{1}{2}}} int expleft{-frac{1}{2}boldsymbol{z}^Tboldsymbol{Sigma}^{-1}boldsymbol{z}right} (boldsymbol{z} + boldsymbol{mu})(boldsymbol{z} + boldsymbol{mu})^T mathrm{d}boldsymbol{z}\ end{aligned} ]

其中在第二个等式中我们再次使用了(boldsymbol{z} = boldsymbol{x} - boldsymbol{mu})来进行变量替换,涉及到(boldsymbol{z}boldsymbol{mu}^T)(boldsymbol{mu}boldsymbol{z}^T)的交叉项将再次变为0,而(boldsymbol{mu}boldsymbol{mu}^T)也可以拿出。于是我们有

[mathbb{E}[boldsymbol{x}boldsymbol{x}^T] = frac{1}{(2pi)^{frac{D}{2}}}frac{1}{(mathrm{det}boldsymbol{Sigma})^{frac{1}{2}}} int expleft{-frac{1}{2}boldsymbol{z}^Tboldsymbol{Sigma}^{-1}boldsymbol{z}right} boldsymbol{z}boldsymbol{z}^T mathrm{d}boldsymbol{z} + boldsymbol{mu}boldsymbol{mu}^T ]

接下来考虑第一个积分项,我们采用和之前类似的做法,对(mathbf{Sigma}^{-1})进行谱分解得(mathbf{Sigma}^{-1} = sum_{i} frac{1}{lambda_i}boldsymbol{e}_iboldsymbol{e}_i^T),并使用变量替换令(y_i = boldsymbol{e}_i^Tboldsymbol{z})(基变换关系为(left(begin{matrix} y_1\ vdots\ y_D end{matrix}right) = left(begin{matrix} boldsymbol{e}_1^T\ hdashline vdots\ hdashline boldsymbol{e}_D^T end{matrix}right)boldsymbol{z}),因此(boldsymbol{z} = left(begin{array}{c:c:c}boldsymbol{e}_1& cdots &boldsymbol{e}_Dend{array}right)boldsymbol{y} = sum_iy_iboldsymbol{e}_i)),于是有

[begin{aligned} &frac{1}{(2pi)^{frac{D}{2}}}frac{1}{(mathrm{det}boldsymbol{Sigma})^{frac{1}{2}}} int expleft{-frac{1}{2}boldsymbol{z}^Tboldsymbol{Sigma}^{-1}boldsymbol{z}right} boldsymbol{z}boldsymbol{z}^T mathrm{d}boldsymbol{z}\ &= frac{1}{(2pi)^{frac{D}{2}}}frac{1}{(mathrm{det}boldsymbol{Sigma})^{frac{1}{2}}} sum_{i=1}^Dsum_{j=1}^Dboldsymbol{e}_iboldsymbol{e}_j^Tint expleft{-frac{1}{2}sum_{k=1}^D frac{y_k^2}{lambda_k}right} y_iy_j mathrm{d}boldsymbol{y}\ &= frac{1}{(2pi)^{frac{D}{2}}}frac{1}{(mathrm{det}boldsymbol{Sigma})^{frac{1}{2}}} sum_{i=1}^Dboldsymbol{e}_iboldsymbol{e}_i^Tint expleft{-frac{1}{2}sum_{k=1}^D frac{y_k^2}{lambda_k}right} y_i^2 mathrm{d}boldsymbol{y}\ &= sum_{i=1}^Dboldsymbol{e}_iboldsymbol{e}_i^Tlambda_i\ &= mathbf{Sigma} end{aligned} ]

其中第二个等式是由于当(ineq j)时,被积函数是奇函数,导致积分项为0;第三个等式是由于(mathbb{E}[y_i^2] = int mathcal{N}(y_imid 0, lambda_i)y_i^2mathrm{d}y_i=lambda_i + 0^2 = lambda_i);最后一个等式是根据(mathbf{Sigma})的谱分解得到。

这样,我们就得到了

[mathbb{E}[boldsymbol{x}boldsymbol{x}^T] = mathbf{Sigma} + boldsymbol{mu}boldsymbol{mu}^T ]

对于一元随机变量的方差,为了定义方差,我们在取二阶矩之前会减掉均值。类似地,对于多元变量的情形,把均值减掉同样很方便。这给出了随机变量(boldsymbol{x})协方差(covariance) 的定义:

[mathrm{Cov}[boldsymbol{x}] = mathbb{E}left[(boldsymbol{x} - mathbb{E}[boldsymbol{x}])(boldsymbol{x} - mathbb{E}[boldsymbol{x}])^Tright] ]

对于多元高斯分布这一特例,我们有

[begin{aligned} mathrm{Cov}[boldsymbol{x}] &= mathbb{E}left[boldsymbol{x}boldsymbol{x}^T - boldsymbol{x}boldsymbol{mu}^T - boldsymbol{mu}boldsymbol{x}^T + boldsymbol{mu}boldsymbol{mu}^Tright]\ &= mathbb{E}[boldsymbol{x}boldsymbol{x}^T] - boldsymbol{mu}boldsymbol{mu}^T\ &= mathbf{Sigma} end{aligned} ]

由于参数(mathbf{Sigma})控制了多元高斯分布下(boldsymbol{x})的协方差,因此它被称为协方差矩阵。

虽然式((1))定义的高斯分布(mathcal{N}(boldsymbol{x}mid boldsymbol{mu}, boldsymbol{Sigma}))被广泛用作概率密度模型,但是它有着一些巨大的局限性。考虑分布中自由参数的数量。一个通常的对称协方差矩阵(boldsymbol{Sigma})(1 + 2 + cdots + D = frac{D(D + 1)}{2})个独立参数,(boldsymbol{mu})中有另外(D)个独立参数,因此总计有(frac{D(D + 1)}{2} + D = frac{D(D + 3)}{2})个独立参数。对于大的(D)值,参数的总数随着(D)以平方的方式增长,导致对大的矩阵进行操作(如求逆)的计算变得不可行。解决这个问题的一种方式是使用协方差矩阵的限制形式。如果我们考虑对角的协方差矩阵,即(mathbf{Sigma} = mathrm{diag}(sigma_i^2)),那么在概率密度模型中,我们就有总数(2D)个独立参数。此时常数概率密度轮廓线为与轴对齐的椭球。我们可以进一步地把协方差矩阵限制成正比于单位矩阵,也即(mathbf{Sigma} = sigma^2 mathbf{I}),此时它被称为各向同性(isotropic)的协方差。这使得模型有(D + 1)个独立的参数,并且常数概率密度轮廓线为球面。下图展示了通常的协方差矩阵、对角的协方差矩阵以及各向同性协方差矩阵的概率密度轮廓线((D=2)):

贝叶斯机器学习:高斯分布及其共轭先验

高斯分布的另一个局限性是它本质上是单峰的(即只有一个最大值),因此不能很好地近似多峰分布。不过,相当多的多峰分布可以使用混合高斯分布来描述(参见博客《统计学习:EM算法及其在高斯混合模型(GMM)中的应用》)。

参考

  • [1] Bishop C M, Nasrabadi N M. Pattern recognition and machine learning[M]. New York: springer, 2006.
  • [2] Schroeder D V. An introduction to thermal physics[M]. Oxford University Press, 2020.
  • [3] 《维基百科:熵 (统计物理学)》
  • [4] Feller W. An introduction to probability theory and its applications, Volume 1[M]. John Wiley & Sons, 1991.
  • [5] Weisstein E W. CRC concise encyclopedia of mathematics[M]. Chapman and Hall/CRC, 2002.
  • [6] Bengio Y, Goodfellow I, Courville A. Deep learning[M]. Cambridge, MA, USA: MIT press, 2017.
  • [7] Johnson R A, Wichern D W. Applied multivariate statistical analysis[J]. 2002.
  • [8] Rudin W. Principles of mathematical analysis[M]. New York: McGraw-hill, 1964.
  • [9] Axler S. Linear algebra done right[M]. springer publication, 2015.
  • [10] 维基百科:《奇函数与偶函数》)
发表评论

评论已关闭。

相关文章