高斯分布
前两章分别建立了一套语言和一套工具。第 2 章 给出了不确定量的推理规则:分布、用于边际化的加法规则、用于条件化的乘法规则。第 3 章 则给出了同时涉及许多量时这些规则所对应的矩阵:协方差矩阵及其 Cholesky 因子、分块矩阵。本章把两者结合于一个分布,即高斯分布,本书其余内容都以它为基础。
单独一个分布之所以值得用一整章来讲,是由贝叶斯优化器使用信念的方式决定的。优化器对未知函数持有信念,每次评估后更新信念,再依据信念决定下一步的评估位置。每一步都是对概率分布的一次运算,多数分布的这些运算是没有闭式解的积分。而对高斯分布,每种运算只需几行线性代数就能精确求解:高斯分布经线性映射仍是高斯分布,略去一部分坐标仍是高斯分布,以一部分坐标为条件仍是高斯分布。高斯过程(第 7.3 节 )是函数值上的高斯分布,因此高斯过程回归和贝叶斯优化之所以可以计算,正是依靠这三条封闭性。
本章先讨论单变量情形,此时公式一目了然;再推广到多变量,此时分布的形状由协方差矩阵决定;然后依次推导这三种运算。最后一种运算即条件化,是本章的主要结果,第 8 章 将直接沿用。其后一节区分两种容易混淆的高斯分布组合方式,为第 5 章 的贝叶斯更新作准备。
4.1 一维情形 #
设某次训练将采用新的学习率,尚未开始运行。根据类似训练的经验,预期验证准确率约为 0.82,向上或向下偏离超过 0.06 的情况很少。这一信念有中心,有散布范围,对向上和向下的偏差同等看待,且大偏差比小偏差少见。高斯分布(也称正态分布)是用两个数表达这类信念的标准方式。
随机变量 X X X 服从均值为 μ \mu μ 、方差为 σ 2 > 0 \sigma^2 > 0 σ 2 > 0 的高斯分布,记作 X ∼ N ( μ , σ 2 ) X \sim \N(\mu, \sigma^2) X ∼ N ( μ , σ 2 ) ,是指其密度为
N ( x ; μ , σ 2 ) = 1 2 π σ 2 exp ( − ( x − μ ) 2 2 σ 2 ) . \N(x;\, \mu, \sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}}
\exp\!\left(-\frac{(x - \mu)^2}{2\sigma^2}\right). N ( x ; μ , σ 2 ) = 2 π σ 2 1 exp ( − 2 σ 2 ( x − μ ) 2 ) . (4.1)
式中分号把求密度的点 x x x 与参数 μ \mu μ 、σ 2 \sigma^2 σ 2 隔开。如第 2.3 节 所述,密度不是概率,概率是密度曲线下的面积。
这个公式可以由内向外解读。指数 − ( x − μ ) 2 / 2 σ 2 -(x - \mu)^2 / 2\sigma^2 − ( x − μ ) 2 /2 σ 2 是一条开口向下的抛物线,在 x = μ x = \mu x = μ 处取峰值。指数函数把抛物线变为钟形:在峰值处等于 1,随抛物线取负值而迅速下降。前面的系数对钟形作缩放,使总面积为一。取对数可以消去指数函数:
log N ( x ; μ , σ 2 ) = − ( x − μ ) 2 2 σ 2 − 1 2 log ( 2 π σ 2 ) . \log \N(x;\, \mu, \sigma^2) = -\frac{(x - \mu)^2}{2\sigma^2} - \tfrac12 \log(2\pi\sigma^2). log N ( x ; μ , σ 2 ) = − 2 σ 2 ( x − μ ) 2 − 2 1 log ( 2 π σ 2 ) .
高斯密度是二次函数的指数。其逆命题是本章大部分推导的依据:任何密度,只要其对数是 x x x 的开口向下的二次函数,就是高斯分布,且参数可以直接从系数读出。若
log p ( x ) = − 1 2 α x 2 + β x + const , α > 0 , then p ( x ) = N ( x ; β / α , 1 / α ) . \log p(x) = -\tfrac12 \alpha x^2 + \beta x + \text{const}, \quad \alpha > 0,
\qquad\text{then}\qquad
p(x) = \N\!\left(x;\, \beta/\alpha,\; 1/\alpha\right). log p ( x ) = − 2 1 α x 2 + β x + const , α > 0 , then p ( x ) = N ( x ; β / α , 1/ α ) . (4.2)
只需配方即可看出这一点:− 1 2 α x 2 + β x = − 1 2 α ( x − β / α ) 2 + β 2 / 2 α -\tfrac12\alpha x^2 + \beta x =
-\tfrac12\alpha(x - \beta/\alpha)^2 + \beta^2/2\alpha − 2 1 α x 2 + β x = − 2 1 α ( x − β / α ) 2 + β 2 /2 α ,最后一项是常数,可并入归一化常数。系数 α \alpha α 是方差的倒数,称为精度 (precision)。后文要证明某个分布是高斯分布时,都会这样做:先证明其对数密度是二次的,再套用这一公式。
两个参数的含义与其名称一致。均值是期望值 E [ X ] = μ \E[X] = \mu E [ X ] = μ ,方差是偏差平方的期望 Var [ X ] = E [ ( X − μ ) 2 ] = σ 2 \Var[X] = \E[(X - \mu)^2] = \sigma^2 Var [ X ] = E [( X − μ ) 2 ] = σ 2 (第 2.6 节 )。标准差 σ \sigma σ 是方差的平方根,与 x x x 的单位相同,因此直观思考时用标准差。上述关于准确率的信念约为 N ( 0.82 , 0.03 2 ) \N(0.82, 0.03^2) N ( 0.82 , 0.0 3 2 ) :标准差为 0.03,偏差达到其两倍的情况很少见。
4.1.1 标准正态分布 #
任何高斯分布都可由同一个参考分布经平移和伸缩得到,这个参考分布就是标准正态分布 Z ∼ N ( 0 , 1 ) Z \sim \N(0, 1) Z ∼ N ( 0 , 1 ) 。若 X ∼ N ( μ , σ 2 ) X \sim \N(\mu, \sigma^2) X ∼ N ( μ , σ 2 ) ,则 Z = ( X − μ ) / σ Z = (X - \mu)/\sigma Z = ( X − μ ) / σ 服从标准正态分布;反之,X = μ + σ Z X = \mu + \sigma Z X = μ + σ Z 。值 z = ( x − μ ) / σ z = (x - \mu)/\sigma z = ( x − μ ) / σ 表示 x x x 比均值高出多少个标准差,称为其 z 分数。标准正态分布有专用记号,全书通用:
ϕ ( z ) = 1 2 π e − z 2 / 2 , Φ ( z ) = ∫ − ∞ z ϕ ( t ) d t . \phi(z) = \frac{1}{\sqrt{2\pi}}\, e^{-z^2/2},
\qquad
\Phi(z) = \int_{-\infty}^{z} \phi(t)\,\dd t. ϕ ( z ) = 2 π 1 e − z 2 /2 , Φ ( z ) = ∫ − ∞ z ϕ ( t ) d t . (4.3)
其中 ϕ \phi ϕ 是密度,Φ \Phi Φ 是累积分布函数:Φ ( z ) \Phi(z) Φ ( z ) 是 Z ≤ z Z \le z Z ≤ z 的概率。Φ \Phi Φ 无法用初等函数表示,程序库借助误差函数 Φ ( z ) = 1 2 ( 1 + erf ( z / 2 ) ) \Phi(z) = \tfrac12\left(1 + \operatorname{erf}(z/\sqrt{2})\right) Φ ( z ) = 2 1 ( 1 + erf ( z / 2 ) ) 计算,可达到浮点数的全部精度。
经过标准化,关于 X X X 的任何概率问题都可化为关于 Φ \Phi Φ 的问题:
P ( a ≤ X ≤ b ) = Φ ( b − μ σ ) − Φ ( a − μ σ ) . \Prob(a \le X \le b) = \Phi\!\left(\frac{b - \mu}{\sigma}\right) - \Phi\!\left(\frac{a - \mu}{\sigma}\right). P ( a ≤ X ≤ b ) = Φ ( σ b − μ ) − Φ ( σ a − μ ) . (4.4)
有几个数值值得记住。区间 μ ± σ \mu \pm \sigma μ ± σ 包含 68.3% 的概率,μ ± 1.96 σ \mu \pm 1.96\sigma μ ± 1.96 σ 包含 95%,μ ± 2 σ \mu \pm 2\sigma μ ± 2 σ 包含 95.4%,μ ± 3 σ \mu \pm 3\sigma μ ± 3 σ 包含 99.7%。尾部衰减很快:无论朝哪个方向,偏离均值超过五个标准差的概率约为 5.7 × 10 − 7 5.7 \times 10^{-7} 5.7 × 1 0 − 7 。
例 4.1 新的训练能否胜过目前最好的结果?
沿用对新训练准确率 f f f 的信念 f ∼ N ( 0.82 , 0.03 2 ) f \sim \N(0.82, 0.03^2) f ∼ N ( 0.82 , 0.0 3 2 ) ,并设目前最好的一次训练达到 0.85。由式(4.4) ,新训练表现更好的概率为
P ( f > 0.85 ) = 1 − Φ ( 0.85 − 0.82 0.03 ) = 1 − Φ ( 1 ) ≈ 0.159. \Prob(f > 0.85) = 1 - \Phi\!\left(\frac{0.85 - 0.82}{0.03}\right) = 1 - \Phi(1) \approx 0.159. P ( f > 0.85 ) = 1 − Φ ( 0.03 0.85 − 0.82 ) = 1 − Φ ( 1 ) ≈ 0.159.
尽管信念的中心比最好结果低 0.03,新训练仍有约六分之一的机会胜出。若在每个候选输入处用高斯过程后验计算这个数,得到的就是称为改进概率(第 12.2 节 )的采集函数。期望改进(第 12.3 节 )同样由 ϕ \phi ϕ 和 Φ \Phi Φ 构成。
4.1.2 为什么选择高斯分布 #
读者也许会问,为什么默认采用这条钟形曲线,而不是别的分布。理由有三条,性质各不相同。
第一条来自定理。中心极限定理指出:设有许多相互独立的随机量,方差有限,且没有哪一个占主导,则无论各项服从什么分布,其和经标准化后都近似服从高斯分布(Blitzstein 与 Hwang,2019 ) 。测量噪声往往是许多微小扰动(如热涨落、时序抖动、舍入)之和,因而接近高斯分布。一个经典的演示:取十二个 [ 0 , 1 ] [0, 1] [ 0 , 1 ] 上相互独立的均匀随机数,求和后减去 6,所得量均值为 0、方差为 1,其直方图已经很难与 ϕ \phi ϕ 区分。
第二条是原则。在实数轴上均值和方差给定的所有分布中,高斯分布的熵最大;熵度量分布的分散程度,第 6.1 节 将给出其精确定义(Cover 与 Thomas,2006 ,第 12 章) 。如果只愿意确定中心和散布范围,高斯分布就是不作任何额外假设的选择。
第三条是计算方便,这也是本书在前两条理由不成立时仍采用高斯分布的原因:本章其余部分的每种运算都有闭式解。方便是选择模型的理由,却不能证明世界服从高斯分布。真实的量可能偏斜、有界或重尾,极端值远比上面的 5.7 × 10 − 7 5.7 \times 10^{-7} 5.7 × 1 0 − 7 所暗示的常见。两个选项之间的比较是第四部分 的核心观测,它完全不服从高斯分布;第 17 章 说明如何用高斯分布近似由此得到的后验,使本章的工具依然适用。
第 4.1 节引用的文献 2 Blitzstein 与 Hwang(2019) Introduction to ProbabilityCover 与 Thomas(2006) Elements of Information Theory
4.2 多维情形 #
贝叶斯优化器的信念从来不只涉及单个数。它同时对目标函数在许多输入处的值持有信念,而且这些信念相互关联:若学习率为 0.010 时准确率很高,那么 0.011 时准确率很可能也高。一组彼此独立的一维高斯分布无法表达这种关联,需要的是值向量上的联合分布,它记录每一对值如何共同变化。
先看两个独立的坐标。若 x 1 ∼ N ( 0 , σ 1 2 ) x_1 \sim \N(0, \sigma_1^2) x 1 ∼ N ( 0 , σ 1 2 ) 与 x 2 ∼ N ( 0 , σ 2 2 ) x_2 \sim \N(0, \sigma_2^2) x 2 ∼ N ( 0 , σ 2 2 ) 相互独立,则联合密度是两个密度之积(第 2.7 节 ),而指数函数相乘即指数相加:
p ( x 1 , x 2 ) ∝ exp ( − x 1 2 2 σ 1 2 − x 2 2 2 σ 2 2 ) . p(x_1, x_2) \propto \exp\!\left(-\frac{x_1^2}{2\sigma_1^2} - \frac{x_2^2}{2\sigma_2^2}\right). p ( x 1 , x 2 ) ∝ exp ( − 2 σ 1 2 x 1 2 − 2 σ 2 2 x 2 2 ) .
指数为常数的地方密度也为常数,即在曲线 x 1 2 / σ 1 2 + x 2 2 / σ 2 2 = r 2 x_1^2/\sigma_1^2 + x_2^2/\sigma_2^2 = r^2 x 1 2 / σ 1 2 + x 2 2 / σ 2 2 = r 2 上。这些曲线是轴沿坐标方向的椭圆,σ 1 = σ 2 \sigma_1 = \sigma_2 σ 1 = σ 2 时为圆。为了使两个坐标相互关联,允许指数中的二次式含有交叉项 x 1 x 2 x_1 x_2 x 1 x 2 。此时椭圆发生倾斜,较大的 x 1 x_1 x 1 会使较大的 x 2 x_2 x 2 更可能或更不可能出现,取决于倾斜的方向。这些信息全部记录在一个矩阵中。
这个矩阵就是第 2.6.3 节 中的协方差矩阵 Σ \mSigma Σ 。对均值向量为 μ \vmu μ 的随机向量 x = ( x 1 , … , x d ) ⊤ \vx = (x_1, \dots, x_d)^\T x = ( x 1 , … , x d ) ⊤ ,其元素为 Σ i j = Cov [ x i , x j ] = E [ ( x i − μ i ) ( x j − μ j ) ] \Sigma_{ij} = \Cov[x_i, x_j] = \E[(x_i - \mu_i)(x_j - \mu_j)] Σ ij = Cov [ x i , x j ] = E [( x i − μ i ) ( x j − μ j )] ,对角线上是方差。协方差矩阵对称半正定(第 3.3 节 ),把某个元素除以相应的两个标准差,即得相关系数 ρ i j = Σ i j / Σ i i Σ j j \rho_{ij} = \Sigma_{ij} / \sqrt{\Sigma_{ii}\Sigma_{jj}} ρ ij = Σ ij / Σ ii Σ j j 。
定义 4.1 多元高斯分布
随机向量 x ∈ R d \vx \in \R^d x ∈ R d 服从均值为 μ ∈ R d \vmu \in \R^d μ ∈ R d 、协方差矩阵为正定矩阵 Σ ∈ R d × d \mSigma \in \R^{d \times d} Σ ∈ R d × d 的高斯分布,记作 x ∼ N ( μ , Σ ) \vx \sim \N(\vmu, \mSigma) x ∼ N ( μ , Σ ) ,是指其密度为
N ( x ; μ , Σ ) = 1 ( 2 π ) d / 2 ∣ Σ ∣ 1 / 2 exp ( − 1 2 ( x − μ ) ⊤ Σ − 1 ( x − μ ) ) , \N(\vx;\, \vmu, \mSigma) = \frac{1}{(2\pi)^{d/2}\, \lvert\mSigma\rvert^{1/2}}
\exp\!\left(-\tfrac12 (\vx - \vmu)^\T \mSigma^{-1} (\vx - \vmu)\right), N ( x ; μ , Σ ) = ( 2 π ) d /2 ∣ Σ ∣ 1/2 1 exp ( − 2 1 ( x − μ ) ⊤ Σ − 1 ( x − μ ) ) , (4.5)
其中 ∣ Σ ∣ \lvert\mSigma\rvert ∣ Σ ∣ 是 Σ \mSigma Σ 的行列式。
式中各部分都与一维情形对应。d = 1 d = 1 d = 1 且 Σ = [ σ 2 ] \mSigma = [\sigma^2] Σ = [ σ 2 ] 时,此式即式(4.1) 。指数仍是二次的,现在是向量 x − μ \vx - \vmu x − μ 的二次型,协方差的逆 Σ − 1 \mSigma^{-1} Σ − 1 相当于一维中的 1 / σ 2 1/\sigma^2 1/ σ 2 。协方差的逆称为精度矩阵 (precision matrix),下面的若干推导用它表述最为自然。归一化因子中的行列式度量分布所占的体积(第 3.6 节 ),相当于一维中的 σ \sigma σ :分布越分散,峰越低,以保证总概率为一。
配方公式式(4.2) 可以直接推广到多维。若某个密度满足
log p ( x ) = − 1 2 x ⊤ Λ x + h ⊤ x + const \log p(\vx) = -\tfrac12 \vx^\T \bm{\Lambda} \vx + \mathbf{h}^\T \vx + \text{const} log p ( x ) = − 2 1 x ⊤ Λ x + h ⊤ x + const
其中 Λ \bm{\Lambda} Λ 为正定矩阵,h \mathbf{h} h 为向量,则 p p p 是精度为 Λ \bm{\Lambda} Λ 的高斯分布,即
x ∼ N ( Λ − 1 h , Λ − 1 ) . \vx \sim \N\!\left(\bm{\Lambda}^{-1}\mathbf{h},\; \bm{\Lambda}^{-1}\right). x ∼ N ( Λ − 1 h , Λ − 1 ) . (4.6)
配方的做法与前面相同,展开右边即可验证:
− 1 2 x ⊤ Λ x + h ⊤ x = − 1 2 ( x − Λ − 1 h ) ⊤ Λ ( x − Λ − 1 h ) + 1 2 h ⊤ Λ − 1 h . -\tfrac12\vx^\T\bm{\Lambda}\vx + \mathbf{h}^\T\vx
= -\tfrac12(\vx - \bm{\Lambda}^{-1}\mathbf{h})^\T\bm{\Lambda}(\vx - \bm{\Lambda}^{-1}\mathbf{h})
+ \tfrac12\mathbf{h}^\T\bm{\Lambda}^{-1}\mathbf{h}. − 2 1 x ⊤ Λ x + h ⊤ x = − 2 1 ( x − Λ − 1 h ) ⊤ Λ ( x − Λ − 1 h ) + 2 1 h ⊤ Λ − 1 h .
最后一项与 x \vx x 无关。
4.2.1 形状 #
指数中的量有专门的名称。x \vx x 到 μ \vmu μ 的 Mahalanobis 距离 (Mahalanobis distance)定义为
r ( x ) = ( x − μ ) ⊤ Σ − 1 ( x − μ ) , r(\vx) = \sqrt{(\vx - \vmu)^\T \mSigma^{-1} (\vx - \vmu)}, r ( x ) = ( x − μ ) ⊤ Σ − 1 ( x − μ ) , (4.7)
即多元情形的 z 分数。一维时它等于 ∣ x − μ ∣ / σ \lvert x - \mu\rvert / \sigma ∣ x − μ ∣ / σ ,即偏离均值的标准差个数。一般而言,Mahalanobis 距离在每个方向上都以分布自身的散布为单位度量距离:一个点即使按普通距离离均值很远,只要位于分布较宽的方向上,按 Mahalanobis 距离仍可能很近。密度只通过 r r r 依赖于 x \vx x ,因此其等高线是 r r r 为常数的点集:二维中为椭圆,更高维中为椭球。
这些椭圆的朝向如何确定?将协方差作特征分解 Σ = U Λ e U ⊤ \mSigma = \mathbf{U}\bm{\Lambda}_{\mathrm{e}}\mathbf{U}^\T Σ = U Λ e U ⊤ ,其中 U \mathbf{U} U 的各列是标准正交的特征向量 u i \mathbf{u}_i u i ,Λ e \bm{\Lambda}_{\mathrm{e}} Λ e 的对角线上是特征值 λ i \lambda_i λ i (第 3.4 节 )。在旋转后的坐标 y = U ⊤ ( x − μ ) \mathbf{y} = \mathbf{U}^\T(\vx - \vmu) y = U ⊤ ( x − μ ) 下,二次型变为 ∑ i y i 2 / λ i \sum_i y_i^2/\lambda_i ∑ i y i 2 / λ i ,不含交叉项。因此每条等高线的轴都沿特征向量方向,Mahalanobis 距离为 r r r 的椭圆半轴长为 r λ i r\sqrt{\lambda_i} r λ i 。特征值是沿各主方向的方差,其乘积为 ∣ Σ ∣ \lvert\mSigma\rvert ∣ Σ ∣ 。多元高斯分布在某个旋转后的坐标系中是与坐标轴对齐的钟形,这个坐标系由特征向量给出。
设两个坐标的标准差为 σ 1 , σ 2 \sigma_1, \sigma_2 σ 1 , σ 2 ,相关系数为 ρ \rho ρ ,则协方差矩阵及其行列式为
Σ = [ σ 1 2 ρ σ 1 σ 2 ρ σ 1 σ 2 σ 2 2 ] , ∣ Σ ∣ = σ 1 2 σ 2 2 ( 1 − ρ 2 ) . \mSigma = \begin{bmatrix} \sigma_1^2 & \rho\sigma_1\sigma_2 \\ \rho\sigma_1\sigma_2 & \sigma_2^2 \end{bmatrix},
\qquad
\lvert\mSigma\rvert = \sigma_1^2\sigma_2^2(1 - \rho^2). Σ = [ σ 1 2 ρ σ 1 σ 2 ρ σ 1 σ 2 σ 2 2 ] , ∣ Σ ∣ = σ 1 2 σ 2 2 ( 1 − ρ 2 ) . (4.8)
下图画出了均值为零时的这一情形。
−2 0 2 x1 −2 0 2 x2 u1 u2 协方差矩阵 Σ = 1.00 0.70 0.70 1.00 特征值 λ1 = 1.70,λ 2 = 0.30 det Σ = σ1 ²σ 2 ²(1 − ρ²) = 0.51 Mahalanobis 距离 1、2、3 处的椭圆 分别包含 39%、86%、99% 的概率 虚线:特征向量轴 −2 0 2 x1 −2 0 2 x2 u1 u2 协方差矩阵 Σ = 1.00 0.70 0.70 1.00 特征值 λ1 = 1.70,λ 2 = 0.30 det Σ = σ1 ²σ 2 ²(1 − ρ²) = 0.51 Mahalanobis 距离 1、2、3 处的椭圆 分别包含 39%、86%、99% 的概率 虚线:特征向量轴 图 4.1 均值为零、协方差为式(4.8) 的二维高斯分布。阴影椭圆是 Mahalanobis 距离为 1、2、3 的等高线;虚线是特征向量轴;上方和右侧的条带分别显示 x 1 x_1 x 1 与 x 2 x_2 x 2 的边际密度。滑块用于设置两个标准差和相关系数。“样本”与“条件化”两个视图分别对应第 4.3 节 和第 4.5 节 。
把 ρ \rho ρ 设为零,并让两个标准差相等 。椭圆变为圆。分布在各个方向上都相同,特征向量可以指向任意方向。
把 ρ \rho ρ 调向 0.95 。椭圆沿对角线收窄,细如针状。两个标准差都为 1 时,特征值为 1 + ρ 1 + \rho 1 + ρ 和 1 − ρ 1 - \rho 1 − ρ ,前者趋于 2,后者与行列式趋于零:分布集中在一条直线附近,一旦知道 x 1 x_1 x 1 ,x 2 x_2 x 2 也就几乎确定。ρ = ± 1 \rho = \pm 1 ρ = ± 1 时,协方差矩阵奇异,式(4.5) 的密度不存在,Cholesky 分解也会失败。在对角线上加一个小的抖动项,正是为了修复这类浮点问题(第 8.4 节 )。
让 ρ \rho ρ 取负值 。椭圆向另一侧倾斜:此时较大的 x 1 x_1 x 1 伴随较小的 x 2 x_2 x 2 。
调节 ρ \rho ρ 时观察两个条带 。条带保持不变,原因见第 4.4 节 。
每个椭圆包含多少概率?比一维的数值所暗示的要少。二维中,Mahalanobis 距离为 r r r 的椭圆内的概率为 1 − e − r 2 / 2 1 - e^{-r^2/2} 1 − e − r 2 /2 :r = 1 r = 1 r = 1 以内为 39%,r = 2 r = 2 r = 2 以内为 86%,r = 3 r = 3 r = 3 以内为 99%。要包含 95% 的概率,需要 r ≈ 2.45 r \approx 2.45 r ≈ 2.45 ,而不是 1.96。维度越高,差距越大。
高斯分布还有一个特有的性质。Σ \mSigma Σ 为对角矩阵时,二次型没有交叉项,密度分解为一维密度之积,各坐标相互独立。因此,对于高斯向量,不相关即意味着独立。其他分布则不然(第 2.7 节 ):习题 4.3 给出两个变量,各自服从高斯分布且互不相关,却并不独立,原因在于它们不服从联合高斯分布。
4.3 线性映射与采样 #
两个实际问题会引出同一个结果。第一,若 f ( x 1 ) f(\vx_1) f ( x 1 ) 与 f ( x 2 ) f(\vx_2) f ( x 2 ) 联合服从高斯分布,二者的差或平均值服从什么分布?第四部分 中,每当一个人比较两个选项,都要用到这个差。第二,随机数生成器产生的是相互独立的标准正态随机数,如何把它们变成协方差任意的 N ( μ , Σ ) \N(\vmu, \mSigma) N ( μ , Σ ) 的样本?凡是要画出从模型中抽取的函数,都需要这样的样本;Thompson 采样(第 12.5 节 )同样需要,这一规则从模型中抽取一个可能的目标函数,在该样本取最大值处评估。
两个问题的答案都来自同一条封闭性。设 x ∼ N ( μ , Σ ) \vx \sim \N(\vmu, \mSigma) x ∼ N ( μ , Σ ) 为 d d d 维向量,A \mA A 为 m × d m \times d m × d 矩阵,c \mathbf{c} c 为 R m \R^m R m 中的向量,则
y = A x + c ∼ N ( A μ + c , A Σ A ⊤ ) . \vy = \mA\vx + \mathbf{c} \;\sim\; \N\!\left(\mA\vmu + \mathbf{c},\; \mA\mSigma\mA^\T\right). y = Ax + c ∼ N ( A μ + c , A Σ A ⊤ ) . (4.9)
高斯分布经线性映射仍是高斯分布。均值像点一样随映射变换,协方差则夹在矩阵与其转置之间。
有一点需要注意。定义 4.1 中的密度要求协方差正定,而只有当 A \mA A 的任何一行都不是其余各行的线性组合时,A Σ A ⊤ \mA\mSigma\mA^\T A Σ A ⊤ 才正定。若这一条件不满足(例如 A \mA A 的行数多于列数),y \vy y 在下面第 6 步的意义下仍是高斯的,但局限于一个更低维的仿射子空间,在 R m \R^m R m 上没有密度。两种情况下,均值和协方差的公式都成立。
推导 高斯分布的线性映射
由期望的线性性(第 2.6 节 ),E [ y ] = A E [ x ] + c = A μ + c \E[\vy] = \mA\,\E[\vx] + \mathbf{c} = \mA\vmu + \mathbf{c} E [ y ] = A E [ x ] + c = A μ + c 。
减去均值,得 y − E [ y ] = A ( x − μ ) \vy - \E[\vy] = \mA(\vx - \vmu) y − E [ y ] = A ( x − μ ) 。
由协方差矩阵的定义,Cov [ y ] = E [ ( y − E [ y ] ) ( y − E [ y ] ) ⊤ ] = E [ A ( x − μ ) ( x − μ ) ⊤ A ⊤ ] \Cov[\vy] = \E\big[(\vy - \E[\vy])(\vy - \E[\vy])^\T\big]
= \E\big[\mA(\vx - \vmu)(\vx - \vmu)^\T\mA^\T\big] Cov [ y ] = E [ ( y − E [ y ]) ( y − E [ y ] ) ⊤ ] = E [ A ( x − μ ) ( x − μ ) ⊤ A ⊤ ] 。
A \mA A 是常数,可以移到期望之外:Cov [ y ] = A E [ ( x − μ ) ( x − μ ) ⊤ ] A ⊤ = A Σ A ⊤ \Cov[\vy] = \mA\,\E\big[(\vx - \vmu)(\vx - \vmu)^\T\big]\mA^\T = \mA\mSigma\mA^\T Cov [ y ] = A E [ ( x − μ ) ( x − μ ) ⊤ ] A ⊤ = A Σ A ⊤ 。
y \vy y 不只是具有这一均值和协方差的某个分布,它确实是高斯分布,这一点还需要再论证。当 A \mA A 为可逆方阵时,把 x = A − 1 ( y − c ) \vx = \mA^{-1}(\vy - \mathbf{c}) x = A − 1 ( y − c ) 代入式(4.5) ,所得指数是 y \vy y 的二次函数,由式(4.6) 知 y \vy y 是高斯的。
对一般的 A \mA A (例如构成差的单行矩阵),采用一个等价的定义:向量是高斯的,当且仅当其各坐标的任一线性组合都服从一维高斯分布(Blitzstein 与 Hwang,2019 ) 。y \vy y 各坐标的线性组合也是 x \vx x 各坐标的线性组合,因而是高斯的,所以 y \vy y 也是高斯的。
4.3.1 用 Cholesky 因子采样 #
采样就是沿着有用的方向运用这一映射。设 z ∼ N ( 0 , I ) \vz \sim \N(\mathbf{0}, \mI) z ∼ N ( 0 , I ) 是由 d d d 个独立标准正态随机数组成的向量,任何数值计算库都提供这样的随机数(由均匀随机数构造它们的经典方法是 Box 与 Muller(1958) 的变换)。任取满足 L L ⊤ = Σ \mL\mL^\T = \mSigma L L ⊤ = Σ 的矩阵 L \mL L ,令
x = μ + L z . \vx = \vmu + \mL\vz. x = μ + Lz . (4.10)
由式(4.9) ,x \vx x 服从均值为 μ \vmu μ 、协方差为 L I L ⊤ = Σ \mL\mI\mL^\T = \mSigma LI L ⊤ = Σ 的高斯分布。L \mL L 通常取第 3.5 节 中的 Cholesky 因子,即对角线为正的下三角矩阵:它对任何正定的 Σ \mSigma Σ 都存在,计算一次需要 O ( d 3 ) O(d^3) O ( d 3 ) 次运算,此后每抽取一个样本只需一次三角矩阵与向量的乘法(Rasmussen 与 Williams,2006 ,附录 A.2) 。其他平方根同样可用,例如由特征分解得到的 U Λ e 1 / 2 \mathbf{U}\bm{\Lambda}_{\mathrm{e}}^{1/2} U Λ e 1/2 。它会把给定的 z \vz z 映射到不同的点,但这些点的分布不变。
二维时,式(4.8) 的 Cholesky 因子可以直接写出,再乘以 z \vz z ,便可看出每个坐标的构成:
L = [ σ 1 0 ρ σ 2 σ 2 1 − ρ 2 ] , x 1 = σ 1 z 1 , x 2 = ρ σ 2 z 1 + σ 2 1 − ρ 2 z 2 . \mL = \begin{bmatrix} \sigma_1 & 0 \\ \rho\sigma_2 & \sigma_2\sqrt{1 - \rho^2} \end{bmatrix},
\qquad
\begin{aligned}
x_1 &= \sigma_1 z_1, \\
x_2 &= \rho\sigma_2 z_1 + \sigma_2\sqrt{1 - \rho^2}\, z_2.
\end{aligned} L = [ σ 1 ρ σ 2 0 σ 2 1 − ρ 2 ] , x 1 x 2 = σ 1 z 1 , = ρ σ 2 z 1 + σ 2 1 − ρ 2 z 2 . (4.11)
展开乘积即可验证 L L ⊤ = Σ \mL\mL^\T = \mSigma L L ⊤ = Σ 。这个公式还从生成机制上说明了相关性的含义。坐标 x 2 x_2 x 2 一部分来自驱动 x 1 x_1 x 1 的同一个随机数 z 1 z_1 z 1 ,另一部分来自新的随机数 z 2 z_2 z 2 ;其方差中有 ρ 2 \rho^2 ρ 2 的比例来自共享部分。ρ = 0 \rho = 0 ρ = 0 时两个坐标毫无共享,ρ = ± 1 \rho = \pm 1 ρ = ± 1 时二者完全共享。
−2 0 2 x1 −2 0 2 x2 Cholesky 因子,L Lᵀ = Σ L = 1.00 0.00 0.70 0.71 x = L z, z ~ N(0, I) 灰点:z 的 250 个样本 蓝点:同一批样本映射为 L z 样本相关系数 0.70(ρ = 0.70) −2 0 2 x1 −2 0 2 x2 Cholesky 因子,L Lᵀ = Σ L = 1.00 0.00 0.70 0.71 x = L z, z ~ N(0, I) 灰点:z 的 160 个样本 蓝点:同一批样本映射为 L z 样本相关系数 0.70(ρ = 0.70) 图 4.2 用 Cholesky 因子采样(式(4.10) )。灰点是标准正态向量 z \vz z 的样本;蓝点是同一批样本经映射 L z \mL\vz Lz 后的位置,其协方差由滑块设置。橙色箭头标出六个样本从 z \vz z 到 L z \mL\vz Lz 的移动。虚线椭圆是 Mahalanobis 距离为 2 的等高线。“新样本”按钮重新抽取一组样本。
观察箭头 。所有灰点都由同一个矩阵移动。L \mL L 是下三角矩阵,因此 x 1 = σ 1 z 1 x_1 = \sigma_1 z_1 x 1 = σ 1 z 1 只依赖于 z 1 z_1 z 1 ;σ 1 = 1 \sigma_1 = 1 σ 1 = 1 时映射不改变第一个坐标,箭头都是竖直的。ρ \rho ρ 为正时,映射给第二个坐标加上 ρ σ 2 z 1 \rho\sigma_2 z_1 ρ σ 2 z 1 ,使左侧的点下移、右侧的点上移,并把 z 2 z_2 z 2 缩小为原来的 1 − ρ 2 \sqrt{1 - \rho^2} 1 − ρ 2 倍。圆形点云于是变为倾斜的椭圆。
比较样本相关系数与 ρ \rho ρ 。读数给出蓝点的相关系数,它与 ρ \rho ρ 相差百分之几,换一组样本,误差也随之改变:这是采样噪声,n n n 个点时其标准差约为 ( 1 − ρ 2 ) / n (1 - \rho^2)/\sqrt{n} ( 1 − ρ 2 ) / n 。
把 ρ \rho ρ 设为零,并让两个标准差不相等 。此时 L \mL L 是对角矩阵,只沿坐标轴拉伸点云。
对高斯过程,x \vx x 存放输入网格上的函数值,每个网格点对应一个坐标;后验样本之所以只能在几千个点的网格上抽取,正是受分解的立方级代价所限(第 8.5 节 )。随着输入维度增加,网格很快就不再可行:每个轴取 20 个点,直线上是 20 个值,正方形上是 400 个,三维立方体中是 8,000 个,其协方差矩阵有 6,400 万个元素。输入超过两三维时,样本改在几千个分散的候选点上抽取,而不在网格上抽取。
本节开头提出的另一个问题,是两个函数值之差。
例 4.2 两个函数值之差
设 A = f ( x 1 ) A = f(\vx_1) A = f ( x 1 ) 与 B = f ( x 2 ) B = f(\vx_2) B = f ( x 2 ) 联合服从高斯分布,均值为 μ A , μ B \mu_A, \mu_B μ A , μ B ,方差为 v A , v B v_A, v_B v A , v B ,协方差为 c c c 。差 D = A − B D = A - B D = A − B 是由单行 ( 1 , − 1 ) (1, -1) ( 1 , − 1 ) 给出的映射,由式(4.9) 知它服从均值为 μ A − μ B \mu_A - \mu_B μ A − μ B 的高斯分布,方差为
[ 1 − 1 ] [ v A c c v B ] [ 1 − 1 ] = v A + v B − 2 c . \begin{bmatrix} 1 & -1 \end{bmatrix}
\begin{bmatrix} v_A & c \\ c & v_B \end{bmatrix}
\begin{bmatrix} 1 \\ -1 \end{bmatrix}
= v_A + v_B - 2c. [ 1 − 1 ] [ v A c c v B ] [ 1 − 1 ] = v A + v B − 2 c .
协方差以负号进入方差。两个值强正相关时(例如光滑高斯过程下两个相邻的输入),二者之差的不确定性远小于任一值本身的不确定性。模型可以确信两个相似选项中哪一个更好,却不确定其中任何一个究竟有多好。第 16.3 节 在这个差的基础上建立人类比较的模型,第 19.4 节 则用它为查询对打分。
第 4.3 节引用的文献 3 Blitzstein 与 Hwang(2019) Introduction to ProbabilityBox 与 Muller(1958) A Note on the Generation of Random Normal DeviatesRasmussen 与 Williams(2006) Gaussian Processes for Machine Learning
4.4 边际化 #
高斯过程描述无穷多个函数值,而计算机只能存放有限多个。要使这种做法成立,关于少数几个值的信念,就不能取决于还选择追踪了其他哪些值。用第 2.4 节 的术语来说,需要的是子向量的边际分布,加法规则通过对其余变量积分得到它。对多数联合密度,这个积分是计算的难点;对高斯分布则毫无代价。
把向量分为两块:保留的坐标 a \mathbf{a} a 与舍弃的坐标 b \mathbf{b} b ,并相应地划分均值和协方差:
[ a b ] ∼ N ( [ μ a μ b ] , [ Σ a a Σ a b Σ a b ⊤ Σ b b ] ) . \begin{bmatrix} \mathbf{a} \\ \mathbf{b} \end{bmatrix}
\sim \N\!\left(
\begin{bmatrix} \vmu_a \\ \vmu_b \end{bmatrix},\;
\begin{bmatrix} \mSigma_{aa} & \mSigma_{ab} \\ \mSigma_{ab}^\T & \mSigma_{bb} \end{bmatrix}
\right). [ a b ] ∼ N ( [ μ a μ b ] , [ Σ aa Σ ab ⊤ Σ ab Σ bb ] ) . (4.12)
对角块 Σ a a \mSigma_{aa} Σ aa 和 Σ b b \mSigma_{bb} Σ bb 是各块内部的协方差,Σ a b \mSigma_{ab} Σ ab 是 a \mathbf{a} a 的坐标与 b \mathbf{b} b 的坐标之间的协方差。a \mathbf{a} a 的边际分布为
a ∼ N ( μ a , Σ a a ) . \mathbf{a} \sim \N(\vmu_a, \mSigma_{aa}). a ∼ N ( μ a , Σ aa ) . (4.13)
对高斯分布做边际化,就是读出一个子块。利用上一节的结果,证明只需一行:保留 a \mathbf{a} a 、舍弃 b \mathbf{b} b 是矩阵为 [ I 0 ] [\mI \;\; \mathbf{0}] [ I 0 ] 的线性映射(单位块旁接一个零块),由式(4.9) 得均值 [ I 0 ] μ = μ a [\mI \;\; \mathbf{0}]\vmu = \vmu_a [ I 0 ] μ = μ a ,协方差 [ I 0 ] Σ [ I 0 ] ⊤ = Σ a a [\mI \;\; \mathbf{0}]\mSigma[\mI \;\; \mathbf{0}]^\T = \mSigma_{aa} [ I 0 ] Σ [ I 0 ] ⊤ = Σ aa 。加法规则所需的积分由此一次性完成;也可以通过配方直接计算(Bishop,2006 ,第 2.3.2 节) 。
有两个推论在后文很重要。第一,边际分布具有一致性:a \mathbf{a} a 的分布既不依赖于 b \mathbf{b} b 包含多少其他坐标,也不依赖于包含哪些坐标。高斯过程正是依靠这一点才得以良定义,因为其定义只规定有限个函数值的联合分布(第 7.3 节 )。第二,边际分布舍弃了交叉协方差 Σ a b \mSigma_{ab} Σ ab ,也就舍弃了两块之间相互提供的全部信息。在图 4.1 中,图上方和右侧的条带就是两个边际分布;移动相关系数滑块会旋转并压扁联合密度,两个条带却都不变。许多联合分布具有相同的边际分布。
x 2 x_2 x 2 的边际分布回答的问题是:忽略 x 1 x_1 x 1 时,对 x 2 x_2 x 2 应持什么信念?下一节回答另一个问题:知道 x 1 x_1 x 1 之后,对 x 2 x_2 x 2 应持什么信念?
第 4.4 节引用的文献 1 Bishop(2006) Pattern Recognition and Machine Learning
4.5 条件化 #
本书其余内容都以这一运算为基础。贝叶斯优化器已在几个输入处评估了目标函数,需要据此得到对目标函数在其他各处取值的信念。若对所有这些输入处函数值的先验信念是联合高斯分布,问题就化为:观测到高斯向量的一部分坐标之后,其余坐标服从什么分布?与边际分布不同,答案必须用到观测值。
4.5.1 钟形曲面的切片 #
先看二维。由乘法规则,给定 x 1 = a x_1 = a x 1 = a 时 x 2 x_2 x 2 的条件密度为
p ( x 2 ∣ x 1 = a ) = p ( a , x 2 ) p ( a ) . p(x_2 \given x_1 = a) = \frac{p(a, x_2)}{p(a)}. p ( x 2 ∣ x 1 = a ) = p ( a ) p ( a , x 2 ) .
分子是联合密度沿竖直线 x 1 = a x_1 = a x 1 = a 的取值,即钟形曲面的一个切片。分母不依赖于 x 2 x_2 x 2 ,它只是把切片重新缩放到面积为一。因此条件密度的形状就是切片的形状。沿着切片,联合密度的指数是 x 2 x_2 x 2 的二次函数,因为固定二元二次式中的一个变量后,剩下的是另一变量的二次式。所以切片本身也是钟形,由式(4.2) 知其为高斯分布。
计算这个二次式,即可得到切片的均值和方差。设协方差为式(4.8) ,均值为 μ 1 , μ 2 \mu_1, \mu_2 μ 1 , μ 2 ,则
x 2 ∣ x 1 = a ∼ N ( μ 2 + ρ σ 2 σ 1 ( a − μ 1 ) , σ 2 2 ( 1 − ρ 2 ) ) . x_2 \given x_1 = a \;\sim\; \N\!\left(\mu_2 + \rho\,\frac{\sigma_2}{\sigma_1}(a - \mu_1),\;\; \sigma_2^2(1 - \rho^2)\right). x 2 ∣ x 1 = a ∼ N ( μ 2 + ρ σ 1 σ 2 ( a − μ 1 ) , σ 2 2 ( 1 − ρ 2 ) ) . (4.14)
习题 4.2 将由下面的一般公式推出这一结果。式中每一部分都有明确的含义。观测通过其 z 分数 ( a − μ 1 ) / σ 1 (a - \mu_1)/\sigma_1 ( a − μ 1 ) / σ 1 进入公式。x 2 x_2 x 2 的均值偏离 μ 2 \mu_2 μ 2 的量,以 x 2 x_2 x 2 自身的标准差为单位,等于该 z 分数的 ρ \rho ρ 倍:若 x 1 x_1 x 1 比其均值高一个标准差,则预测 x 2 x_2 x 2 比其均值高 ρ \rho ρ 个标准差。方差缩小为原来的 1 − ρ 2 1 - \rho^2 1 − ρ 2 倍,这正是 x 2 x_2 x 2 的方差中 x 1 x_1 x 1 无法解释的比例,而且与 a a a 完全无关。
−2 0 2 x1 −2 0 2 x2 观测值 x1 = 1.50 x2 | x 1 ~ N(m, s²) m = ρ (σ2 /σ 1 ) x 1 = 1.05 s = σ2 √(1 − ρ²) = 0.71 观测之前:标准差 σ2 = 1.00 消除的方差比例:ρ² = 49% x2 的条件分布 x2 的边际分布 条件均值 E[x2 | x 1 ] −2 0 2 x1 −2 0 2 x2 观测值 x1 = 1.50 x2 | x 1 ~ N(m, s²) m = ρ (σ2 /σ 1 ) x 1 = 1.05 s = σ2 √(1 − ρ²) = 0.71 观测之前:标准差 σ2 = 1.00 消除的方差比例:ρ² = 49% x2 的条件分布 x2 的边际分布 条件均值 E[x2 | x 1 ] 图 4.3 条件化即切片(式(4.14) )。橙色线标出观测值 x 1 x_1 x 1 ;在图上拖动或使用按钮可以移动它。右侧条带比较 x 2 x_2 x 2 的边际密度(蓝色)与给定观测时的条件密度(橙色),切片上的橙色粗线标出条件均值及其 95% 区间。品红色虚线描出各观测值对应的条件均值。
把切片从左拖到右 。条件密度沿虚线滑动,宽度保持不变。宽度只取决于相关系数,与观测值无关。
把 ρ \rho ρ 调向 ± 0.95 \pm 0.95 ± 0.95 。条件密度急剧收窄,读数显示消除的方差比例 ρ 2 \rho^2 ρ 2 超过 90%。ρ = 0 \rho = 0 ρ = 0 时没有消除任何方差,条件分布等于边际分布:与 x 2 x_2 x 2 不相关的观测不提供关于它的任何信息。
比较虚线与椭圆 。条件均值线不是椭圆的长轴,而是比长轴更平缓。它穿过每个椭圆的最左点和最右点,因为沿一条竖直切片,密度在切片恰好与某个椭圆相切处最高。
这一现象由来已久。Francis Galton 注意到,身材异常高的父母,其子女平均而言不像父母那样异常,他将这一效应称为向平庸回归(regression toward mediocrity)(Galton,1886 ) ;统计学术语“回归”(regression)即源于此。在两个标准差相等时的式(4.14) 中,x 2 x_2 x 2 的预测偏差是 x 1 x_1 x 1 观测偏差的 ρ \rho ρ 倍,只要 ∣ ρ ∣ < 1 \lvert\rho\rvert < 1 ∣ ρ ∣ < 1 ,就更接近均值。并没有什么力量把子女拉回均值。这种收缩只是对相关的高斯分布做条件化的结果。
4.5.2 一般公式 #
同样的推理适用于任意维数,只需以分块代替数。按式(4.12) 把向量分为已观测块 a \mathbf{a} a 与未观测块 b \mathbf{b} b ,则
b ∣ a ∼ N ( μ b + Σ a b ⊤ Σ a a − 1 ( a − μ a ) , Σ b b − Σ a b ⊤ Σ a a − 1 Σ a b ) . \mathbf{b} \given \mathbf{a} \;\sim\; \N\!\left(
\vmu_b + \mSigma_{ab}^\T \mSigma_{aa}^{-1} (\mathbf{a} - \vmu_a),\;\;
\mSigma_{bb} - \mSigma_{ab}^\T \mSigma_{aa}^{-1} \mSigma_{ab}
\right). b ∣ a ∼ N ( μ b + Σ ab ⊤ Σ aa − 1 ( a − μ a ) , Σ bb − Σ ab ⊤ Σ aa − 1 Σ ab ) . (4.15)
与二维情形对照:矩阵 Σ a b ⊤ Σ a a − 1 \mSigma_{ab}^\T\mSigma_{aa}^{-1} Σ ab ⊤ Σ aa − 1 对应 ρ σ 2 / σ 1 = Σ 12 / Σ 11 \rho\sigma_2/\sigma_1 = \Sigma_{12}/\Sigma_{11} ρ σ 2 / σ 1 = Σ 12 / Σ 11 ,减去的项 Σ a b ⊤ Σ a a − 1 Σ a b \mSigma_{ab}^\T\mSigma_{aa}^{-1}\mSigma_{ab} Σ ab ⊤ Σ aa − 1 Σ ab 对应 ρ 2 σ 2 2 = Σ 12 2 / Σ 11 \rho^2\sigma_2^2 = \Sigma_{12}^2/\Sigma_{11} ρ 2 σ 2 2 = Σ 12 2 / Σ 11 。
这个公式中的维数容易误读,下面看一个实际规模的例子。某机器学习模型有六个超参数待调,已完成 40 次训练。在贝叶斯优化器中,a \mathbf{a} a 存放 40 个观测到的验证误差,b \mathbf{b} b 存放尚未尝试的配置(例如 1,000 个)处的未知误差,因此 Σ a a \mSigma_{aa} Σ aa 为 40 × 40 40 \times 40 40 × 40 ,Σ a b \mSigma_{ab} Σ ab 为 40 × 1000 40 \times 1000 40 × 1000 。数字六在任何地方都没有出现:高斯分布定义在函数值上,每个配置对应一个坐标,输入空间的维数只通过核函数为各对配置指定的协方差发挥作用(第 9 章 )。条件化的代价随评估次数增长,而不随超参数个数增长,尽管维数越高,确定函数所需的评估越多(第 30 章 )。Snoek 等人(2012) 正是用这一计算为隐 Dirichlet 分配、结构化支持向量机和卷积网络调参,结果达到或超过了人类专家选定的设置;第 22 章 在真实数据上完整演示了这样一个调参问题。
推导要用到第 3.7 节 中的一个结论,这里用式(4.12) 的记号重述如下。块 Σ a a \mSigma_{aa} Σ aa 的 Schur 补为
S = Σ b b − Σ a b ⊤ Σ a a − 1 Σ a b , \mathbf{S} = \mSigma_{bb} - \mSigma_{ab}^\T \mSigma_{aa}^{-1} \mSigma_{ab}, S = Σ bb − Σ ab ⊤ Σ aa − 1 Σ ab , (4.16)
而精度矩阵 Λ = Σ − 1 \bm{\Lambda} = \mSigma^{-1} Λ = Σ − 1 的各块为
[ Λ a a Λ a b Λ a b ⊤ Λ b b ] = [ Σ a a − 1 + Σ a a − 1 Σ a b S − 1 Σ a b ⊤ Σ a a − 1 − Σ a a − 1 Σ a b S − 1 − S − 1 Σ a b ⊤ Σ a a − 1 S − 1 ] . \begin{bmatrix} \bm{\Lambda}_{aa} & \bm{\Lambda}_{ab} \\ \bm{\Lambda}_{ab}^\T & \bm{\Lambda}_{bb} \end{bmatrix}
=
\begin{bmatrix}
\mSigma_{aa}^{-1} + \mSigma_{aa}^{-1}\mSigma_{ab}\mathbf{S}^{-1}\mSigma_{ab}^\T\mSigma_{aa}^{-1} & -\mSigma_{aa}^{-1}\mSigma_{ab}\mathbf{S}^{-1} \\
-\mathbf{S}^{-1}\mSigma_{ab}^\T\mSigma_{aa}^{-1} & \mathbf{S}^{-1}
\end{bmatrix}. [ Λ aa Λ ab ⊤ Λ ab Λ bb ] = [ Σ aa − 1 + Σ aa − 1 Σ ab S − 1 Σ ab ⊤ Σ aa − 1 − S − 1 Σ ab ⊤ Σ aa − 1 − Σ aa − 1 Σ ab S − 1 S − 1 ] . (4.17)
将 Σ \mSigma Σ 与该矩阵相乘,逐块验证乘积为单位矩阵,即可检验这一公式(Petersen 与 Pedersen,2012 ) 。推导只需要最下面一行:Λ b b = S − 1 \bm{\Lambda}_{bb} = \mathbf{S}^{-1} Λ bb = S − 1 与 Λ a b ⊤ = − S − 1 Σ a b ⊤ Σ a a − 1 \bm{\Lambda}_{ab}^\T = -\mathbf{S}^{-1}\mSigma_{ab}^\T\mSigma_{aa}^{-1} Λ ab ⊤ = − S − 1 Σ ab ⊤ Σ aa − 1 。
推导 借助 Schur 补对高斯分布做条件化
由乘法规则,p ( b ∣ a ) = p ( a , b ) / p ( a ) p(\mathbf{b} \given \mathbf{a}) = p(\mathbf{a}, \mathbf{b}) / p(\mathbf{a}) p ( b ∣ a ) = p ( a , b ) / p ( a ) 。固定 a \mathbf{a} a 时,p ( a ) p(\mathbf{a}) p ( a ) 是常数,因此条件密度作为 b \mathbf{b} b 的函数,正比于联合密度式(4.5) 。
记 u = a − μ a \mathbf{u} = \mathbf{a} - \vmu_a u = a − μ a ,v = b − μ b \mathbf{v} = \mathbf{b} - \vmu_b v = b − μ b 。联合密度的对数等于 − 1 2 Q -\tfrac12 Q − 2 1 Q 加一个常数,其中 Q = ( x − μ ) ⊤ Λ ( x − μ ) Q = (\vx - \vmu)^\T\bm{\Lambda}(\vx - \vmu) Q = ( x − μ ) ⊤ Λ ( x − μ ) ,各块如式(4.17) 所示。
逐块展开 Q Q Q :Q = u ⊤ Λ a a u + 2 v ⊤ Λ a b ⊤ u + v ⊤ Λ b b v Q = \mathbf{u}^\T\bm{\Lambda}_{aa}\mathbf{u} + 2\,\mathbf{v}^\T\bm{\Lambda}_{ab}^\T\mathbf{u} + \mathbf{v}^\T\bm{\Lambda}_{bb}\mathbf{v} Q = u ⊤ Λ aa u + 2 v ⊤ Λ ab ⊤ u + v ⊤ Λ bb v 。两个交叉项 u ⊤ Λ a b v \mathbf{u}^\T\bm{\Lambda}_{ab}\mathbf{v} u ⊤ Λ ab v 与 v ⊤ Λ a b ⊤ u \mathbf{v}^\T\bm{\Lambda}_{ab}^\T\mathbf{u} v ⊤ Λ ab ⊤ u 相等,因为二者都是数,且互为转置。
只保留含 v \mathbf{v} v 的项;给定 a \mathbf{a} a 时,其余各项都是常数。于是 log p ( b ∣ a ) = − 1 2 v ⊤ Λ b b v − v ⊤ Λ a b ⊤ u + const \log p(\mathbf{b} \given \mathbf{a}) = -\tfrac12\mathbf{v}^\T\bm{\Lambda}_{bb}\mathbf{v} - \mathbf{v}^\T\bm{\Lambda}_{ab}^\T\mathbf{u} + \text{const} log p ( b ∣ a ) = − 2 1 v ⊤ Λ bb v − v ⊤ Λ ab ⊤ u + const 。
这正是式(4.6) 关于变量 v \mathbf{v} v 的形式,精度为 Λ b b \bm{\Lambda}_{bb} Λ bb ,h = − Λ a b ⊤ u \mathbf{h} = -\bm{\Lambda}_{ab}^\T\mathbf{u} h = − Λ ab ⊤ u 。(Λ b b \bm{\Lambda}_{bb} Λ bb 正定,因为正定矩阵的每个对角块都正定。)所以给定 a \mathbf{a} a 时,v \mathbf{v} v 服从协方差为 Λ b b − 1 \bm{\Lambda}_{bb}^{-1} Λ bb − 1 、均值为 − Λ b b − 1 Λ a b ⊤ u -\bm{\Lambda}_{bb}^{-1}\bm{\Lambda}_{ab}^\T\mathbf{u} − Λ bb − 1 Λ ab ⊤ u 的高斯分布;b = μ b + v \mathbf{b} = \vmu_b + \mathbf{v} b = μ b + v 的协方差与之相同,均值平移 μ b \vmu_b μ b 。
代入式(4.17) 的最下面一行。协方差为 Λ b b − 1 = S \bm{\Lambda}_{bb}^{-1} = \mathbf{S} Λ bb − 1 = S ,即 Schur 补。
均值的偏移量为 − S ( − S − 1 Σ a b ⊤ Σ a a − 1 ) u = Σ a b ⊤ Σ a a − 1 ( a − μ a ) -\mathbf{S}\,(-\mathbf{S}^{-1}\mSigma_{ab}^\T\mSigma_{aa}^{-1})\,\mathbf{u}
= \mSigma_{ab}^\T\mSigma_{aa}^{-1}(\mathbf{a} - \vmu_a) − S ( − S − 1 Σ ab ⊤ Σ aa − 1 ) u = Σ ab ⊤ Σ aa − 1 ( a − μ a ) 。
综上,b ∣ a \mathbf{b} \given \mathbf{a} b ∣ a 服从均值为 μ b + Σ a b ⊤ Σ a a − 1 ( a − μ a ) \vmu_b + \mSigma_{ab}^\T\mSigma_{aa}^{-1}(\mathbf{a} - \vmu_a) μ b + Σ ab ⊤ Σ aa − 1 ( a − μ a ) 、协方差为 Σ b b − Σ a b ⊤ Σ a a − 1 Σ a b \mSigma_{bb} - \mSigma_{ab}^\T\mSigma_{aa}^{-1}\mSigma_{ab} Σ bb − Σ ab ⊤ Σ aa − 1 Σ ab 的高斯分布,即式(4.15) 。
这一推导沿用 Bishop(2006) 第 2.3.1 节的做法,第 B.3 节 将这一结果与相关恒等式汇集在一起。由推导可得两点。其一,条件协方差就是 Schur 补式(4.16) 本身。其二,第 5 步表明条件精度就是联合精度的块 Λ b b \bm{\Lambda}_{bb} Λ bb :条件化读出精度矩阵的一个块,正如边际化读出协方差矩阵的一个块。
要点 高斯分布的条件化
观测高斯向量的一部分之后,其余部分仍服从高斯分布。其余部分的均值发生偏移,偏移量是观测值与其期望之差的线性函数;协方差则会缩小,缩小的量取决于观测了哪些坐标,而与观测值无关。
要点的后半句解释了为什么高斯过程的不确定性取决于评估的位置,而不取决于评估的结果(第 8.1 节 )。另一种推导可以使 Schur 补显得不那么神秘。
深入一步 另一种推导:减去观测所能预测的部分
定义残差 r = b − Σ a b ⊤ Σ a a − 1 a \mathbf{r} = \mathbf{b} - \mSigma_{ab}^\T\mSigma_{aa}^{-1}\mathbf{a} r = b − Σ ab ⊤ Σ aa − 1 a ,即从 b \mathbf{b} b 中减去由 a \mathbf{a} a 得到的最佳线性预测后剩下的部分。
( a , r ) (\mathbf{a}, \mathbf{r}) ( a , r ) 是 ( a , b ) (\mathbf{a}, \mathbf{b}) ( a , b ) 的线性映射,由式(4.9) 知二者联合服从高斯分布。
交叉协方差为 Cov [ r , a ] = Cov [ b , a ] − Σ a b ⊤ Σ a a − 1 Cov [ a , a ] = Σ a b ⊤ − Σ a b ⊤ = 0 \Cov[\mathbf{r}, \mathbf{a}] = \Cov[\mathbf{b}, \mathbf{a}] - \mSigma_{ab}^\T\mSigma_{aa}^{-1}\Cov[\mathbf{a}, \mathbf{a}]
= \mSigma_{ab}^\T - \mSigma_{ab}^\T = \mathbf{0} Cov [ r , a ] = Cov [ b , a ] − Σ ab ⊤ Σ aa − 1 Cov [ a , a ] = Σ ab ⊤ − Σ ab ⊤ = 0 。
对联合高斯的向量,不相关即意味着独立(第 4.2 节 ),因此观测 a \mathbf{a} a 不提供关于 r \mathbf{r} r 的任何信息。
于是给定 a \mathbf{a} a 时,b = r + Σ a b ⊤ Σ a a − 1 a \mathbf{b} = \mathbf{r} + \mSigma_{ab}^\T\mSigma_{aa}^{-1}\mathbf{a} b = r + Σ ab ⊤ Σ aa − 1 a 等于一个已知向量加上一个分布未变的高斯变量。该分布的均值为 μ b − Σ a b ⊤ Σ a a − 1 μ a \vmu_b - \mSigma_{ab}^\T\mSigma_{aa}^{-1}\vmu_a μ b − Σ ab ⊤ Σ aa − 1 μ a ;展开 Cov [ r ] \Cov[\mathbf{r}] Cov [ r ] 可知其协方差为 Σ b b − Σ a b ⊤ Σ a a − 1 Σ a b = S \mSigma_{bb} - \mSigma_{ab}^\T\mSigma_{aa}^{-1}\mSigma_{ab} = \mathbf{S} Σ bb − Σ ab ⊤ Σ aa − 1 Σ ab = S 。
把已知向量加到均值上,即得式(4.15) 。
条件协方差就是 b \mathbf{b} b 中无法由 a \mathbf{a} a 预测的那部分的协方差。
一个简单的数值例子即可展示高斯过程回归的缩影。
4.5.3 计算方法 #
代码中计算式(4.15) 时,使用 Σ a a \mSigma_{aa} Σ aa 的 Cholesky 因子和三角求解,从不显式求逆(第 3.5 节 )。设 L L ⊤ = Σ a a \mL\mL^\T = \mSigma_{aa} L L ⊤ = Σ aa ,令 V = L − 1 Σ a b \mathbf{V} = \mL^{-1}\mSigma_{ab} V = L − 1 Σ ab ,w = L − 1 ( a − μ a ) \vw = \mL^{-1}(\mathbf{a} - \vmu_a) w = L − 1 ( a − μ a ) 。由于 Σ a a − 1 = L − ⊤ L − 1 \mSigma_{aa}^{-1} = \mL^{-\T}\mL^{-1} Σ aa − 1 = L − ⊤ L − 1 ,均值的偏移量为 V ⊤ w \mathbf{V}^\T\vw V ⊤ w ,减去的协方差为 V ⊤ V \mathbf{V}^\T\mathbf{V} V ⊤ V 。
代码实现 NumPy
import numpy as np
def condition (mu, Sigma, ia, ib, a ):
"""Mean and covariance of x[ib] given x[ia] = a, for x ~ N(mu, Sigma)."""
Saa = Sigma[np.ix_(ia, ia)]
Sab = Sigma[np.ix_(ia, ib)]
Sbb = Sigma[np.ix_(ib, ib)]
L = np.linalg.cholesky(Saa)
V = np.linalg.solve(L, Sab)
w = np.linalg.solve(L, a - mu[ia])
return mu[ib] + V.T @ w, Sbb - V.T @ V
均值为零、Sigma 取核矩阵时,这个函数就是算法 8.1 中的高斯过程预测器,只是变量名不同。
当观测坐标几乎决定了其余坐标时,减法 Σ b b − V ⊤ V \mSigma_{bb} - \mathbf{V}^\T\mathbf{V} Σ bb − V ⊤ V 会抵消掉大部分有效数字,结果可能略不对称,或出现极小的负特征值。再次分解之前(例如为了抽取样本),先将其对称化并加上一个小的抖动项,即可修复这一问题。
第 4.5 节引用的文献 4 Galton(1886) Regression Towards Mediocrity in Hereditary StatureSnoek 等人(2012) Practical Bayesian Optimization of Machine Learning AlgorithmsPetersen 与 Pedersen(2012) The Matrix CookbookBishop(2006) Pattern Recognition and Machine Learning
4.6 和与积 #
另有两种组合高斯分布的运算,二者都以两个高斯分布为输入、得到一个高斯分布,因而容易混淆。两个独立高斯随机变量相加,描述由两个不确定部分构成的量,例如函数值加上测量噪声。两个高斯密度相乘,描述关于同一个量的两条独立证据,这正是贝叶斯定理对高斯先验和高斯似然所做的运算。前者使不确定性增大,后者使其减小。
4.6.1 独立高斯变量之和 #
若 X ∼ N ( μ 1 , σ 1 2 ) X \sim \N(\mu_1, \sigma_1^2) X ∼ N ( μ 1 , σ 1 2 ) 与 Y ∼ N ( μ 2 , σ 2 2 ) Y \sim \N(\mu_2, \sigma_2^2) Y ∼ N ( μ 2 , σ 2 2 ) 相互独立,则 ( X , Y ) (X, Y) ( X , Y ) 联合服从协方差为对角矩阵的高斯分布,而 X + Y X + Y X + Y 是由单行 ( 1 , 1 ) (1, 1) ( 1 , 1 ) 给出的线性映射。由式(4.9) ,
X + Y ∼ N ( μ 1 + μ 2 , σ 1 2 + σ 2 2 ) . X + Y \sim \N\!\left(\mu_1 + \mu_2,\; \sigma_1^2 + \sigma_2^2\right). X + Y ∼ N ( μ 1 + μ 2 , σ 1 2 + σ 2 2 ) . (4.18)
相加的是方差,而不是标准差。标准差分别为 3 和 4 的两个独立误差,相加后标准差为 5,而不是 7。若 X X X 与 Y Y Y 相关,同一映射给出的方差为 σ 1 2 + σ 2 2 + 2 Cov [ X , Y ] \sigma_1^2 + \sigma_2^2 + 2\Cov[X, Y] σ 1 2 + σ 2 2 + 2 Cov [ X , Y ] 。书中有两种用法反复出现。观测 y = f ( x ) + ε y = f(\vx) + \varepsilon y = f ( x ) + ε 带有独立噪声 ε ∼ N ( 0 , σ n 2 ) \varepsilon \sim \N(0, \sigma_n^2) ε ∼ N ( 0 , σ n 2 ) ,其方差为 Var [ f ( x ) ] + σ n 2 \Var[f(\vx)] + \sigma_n^2 Var [ f ( x )] + σ n 2 ,即第 8.3 节 中的预测方差。n n n 次独立测量(每次方差为 σ 2 \sigma^2 σ 2 )的平均值,方差为 σ 2 / n \sigma^2/n σ 2 / n ,因此标准差按 1 / n 1/\sqrt{n} 1/ n 下降。
4.6.2 高斯密度之积 #
现在取同一变量 x x x 上的两个高斯密度,将其逐点相乘。乘积未经归一化,但形状是高斯的:两个二次指数之和仍是二次的。
推导 两个高斯密度之积
取密度 N ( x ; μ 1 , σ 1 2 ) \N(x;\, \mu_1, \sigma_1^2) N ( x ; μ 1 , σ 1 2 ) 与 N ( x ; μ 2 , σ 2 2 ) \N(x;\, \mu_2, \sigma_2^2) N ( x ; μ 2 , σ 2 2 ) 。
指数函数相乘即指数相加:− 1 2 [ ( x − μ 1 ) 2 / σ 1 2 + ( x − μ 2 ) 2 / σ 2 2 ] -\tfrac12\left[(x - \mu_1)^2/\sigma_1^2 + (x - \mu_2)^2/\sigma_2^2\right] − 2 1 [ ( x − μ 1 ) 2 / σ 1 2 + ( x − μ 2 ) 2 / σ 2 2 ] 。
按 x x x 的幂次整理:− 1 2 x 2 -\tfrac12 x^2 − 2 1 x 2 的系数是 1 / σ 1 2 + 1 / σ 2 2 1/\sigma_1^2 + 1/\sigma_2^2 1/ σ 1 2 + 1/ σ 2 2 ,x x x 的系数是 μ 1 / σ 1 2 + μ 2 / σ 2 2 \mu_1/\sigma_1^2 + \mu_2/\sigma_2^2 μ 1 / σ 1 2 + μ 2 / σ 2 2 。
由式(4.2) ,乘积正比于精度为 1 / σ 2 = 1 / σ 1 2 + 1 / σ 2 2 1/\sigma^2 = 1/\sigma_1^2 + 1/\sigma_2^2 1/ σ 2 = 1/ σ 1 2 + 1/ σ 2 2 、均值为 μ = σ 2 ( μ 1 / σ 1 2 + μ 2 / σ 2 2 ) \mu = \sigma^2\left(\mu_1/\sigma_1^2 + \mu_2/\sigma_2^2\right) μ = σ 2 ( μ 1 / σ 1 2 + μ 2 / σ 2 2 ) 的高斯密度。
不含 x x x 的项是 − 1 2 [ μ 1 2 / σ 1 2 + μ 2 2 / σ 2 2 − μ 2 / σ 2 ] -\tfrac12\left[\mu_1^2/\sigma_1^2 + \mu_2^2/\sigma_2^2 - \mu^2/\sigma^2\right] − 2 1 [ μ 1 2 / σ 1 2 + μ 2 2 / σ 2 2 − μ 2 / σ 2 ] 。通分后,方括号化简为 ( μ 1 − μ 2 ) 2 / ( σ 1 2 + σ 2 2 ) (\mu_1 - \mu_2)^2/(\sigma_1^2 + \sigma_2^2) ( μ 1 − μ 2 ) 2 / ( σ 1 2 + σ 2 2 ) 。
两个归一化因子的乘积为 1 / ( 2 π σ 1 σ 2 ) 1/(2\pi\sigma_1\sigma_2) 1/ ( 2 π σ 1 σ 2 ) 。由于 σ 2 ( σ 1 2 + σ 2 2 ) = σ 1 2 σ 2 2 \sigma^2(\sigma_1^2 + \sigma_2^2) = \sigma_1^2\sigma_2^2 σ 2 ( σ 1 2 + σ 2 2 ) = σ 1 2 σ 2 2 ,它等于 [ 1 / 2 π σ 2 ] [ 1 / 2 π ( σ 1 2 + σ 2 2 ) ] \big[1/\sqrt{2\pi\sigma^2}\big]\big[1/\sqrt{2\pi(\sigma_1^2 + \sigma_2^2)}\big] [ 1/ 2 π σ 2 ] [ 1/ 2 π ( σ 1 2 + σ 2 2 ) ] 。
合并各因子:N ( x ; μ 1 , σ 1 2 ) N ( x ; μ 2 , σ 2 2 ) = N ( μ 1 ; μ 2 , σ 1 2 + σ 2 2 ) N ( x ; μ , σ 2 ) \N(x;\, \mu_1, \sigma_1^2)\,\N(x;\, \mu_2, \sigma_2^2) = \N(\mu_1;\, \mu_2, \sigma_1^2 + \sigma_2^2)\;\N(x;\, \mu, \sigma^2) N ( x ; μ 1 , σ 1 2 ) N ( x ; μ 2 , σ 2 2 ) = N ( μ 1 ; μ 2 , σ 1 2 + σ 2 2 ) N ( x ; μ , σ 2 ) 。
d d d 维时,以式(4.6) 代替式(4.2) ,同样的步骤给出
N ( x ; μ 1 , Σ 1 ) N ( x ; μ 2 , Σ 2 ) = Z N ( x ; μ , Σ ) , Σ = ( Σ 1 − 1 + Σ 2 − 1 ) − 1 , μ = Σ ( Σ 1 − 1 μ 1 + Σ 2 − 1 μ 2 ) , \N(\vx;\, \vmu_1, \mSigma_1)\,\N(\vx;\, \vmu_2, \mSigma_2)
= Z\;\N(\vx;\, \vmu, \mSigma),
\qquad
\mSigma = \left(\mSigma_1^{-1} + \mSigma_2^{-1}\right)^{-1},\;\;
\vmu = \mSigma\left(\mSigma_1^{-1}\vmu_1 + \mSigma_2^{-1}\vmu_2\right), N ( x ; μ 1 , Σ 1 ) N ( x ; μ 2 , Σ 2 ) = Z N ( x ; μ , Σ ) , Σ = ( Σ 1 − 1 + Σ 2 − 1 ) − 1 , μ = Σ ( Σ 1 − 1 μ 1 + Σ 2 − 1 μ 2 ) , (4.19)
其中常数 Z = N ( μ 1 ; μ 2 , Σ 1 + Σ 2 ) Z = \N(\vmu_1;\, \vmu_2,\, \mSigma_1 + \mSigma_2) Z = N ( μ 1 ; μ 2 , Σ 1 + Σ 2 ) (Rasmussen 与 Williams,2006 ,附录 A.2) 。
这一结果可以从精度的角度解读。精度相加,因此乘积比任一因子都窄。均值是两个均值的加权平均,权重与精度成正比,因此更尖锐的密度对均值的牵引更强。常数 Z Z Z 是原始乘积曲线下的面积:两个密度一致时它较大,两者的质量分布在不同位置时它很小。
这正是高斯先验与高斯测量下的贝叶斯定理。设对某个量 θ \theta θ 的先验信念为 N ( μ 0 , σ 0 2 ) \N(\mu_0, \sigma_0^2) N ( μ 0 , σ 0 2 ) ,观测为 y = θ + ε y = \theta + \varepsilon y = θ + ε ,噪声 ε ∼ N ( 0 , σ n 2 ) \varepsilon \sim \N(0, \sigma_n^2) ε ∼ N ( 0 , σ n 2 ) 。由于公式关于 y y y 和 θ \theta θ 对称,似然 N ( y ; θ , σ n 2 ) \N(y;\, \theta, \sigma_n^2) N ( y ; θ , σ n 2 ) 作为 θ \theta θ 的函数,就是密度 N ( θ ; y , σ n 2 ) \N(\theta;\, y, \sigma_n^2) N ( θ ; y , σ n 2 ) 。后验正比于先验乘以似然,因此是高斯分布,精度为 1 / σ 0 2 + 1 / σ n 2 1/\sigma_0^2 + 1/\sigma_n^2 1/ σ 0 2 + 1/ σ n 2 ,均值介于先验均值与观测值之间。常数 Z = N ( y ; μ 0 , σ 0 2 + σ n 2 ) Z = \N(y;\, \mu_0, \sigma_0^2 + \sigma_n^2) Z = N ( y ; μ 0 , σ 0 2 + σ n 2 ) 是观测值在先验下的密度,第 5.6 节 称之为模型证据。注意,它恰好是式(4.18) 中和 θ + ε \theta + \varepsilon θ + ε 的分布:本节的两种运算在此交汇。第 5.1 节 将展开这一观点,第 5.4 节 将其从单个数推广到权重向量。
p(x) = N(x; μ1 , σ 1 ²) q(x) = N(x; μ2 , σ 2 ²) 归一化的乘积 原始乘积 p(x) q(x) 0.0 0.2 0.4 0.6 0.8 密度 −6 −4 −2 0 2 4 6 x 精度 1/σ² = 1/σ1 ² + 1/σ 2 ² = 3.47,标准差 0.54 均值 = 0.20 μ1 + 0.80 μ 2 = 1.00(权重 ∝ 精度) 原始乘积的面积 Z = N(μ1 ; μ 2 , σ 1 ² + σ 2 ²) = 0.052 p(x) = N(x; μ1 , σ 1 ²) q(x) = N(x; μ2 , σ 2 ²) 归一化的乘积 原始乘积 p(x) q(x) 0.0 0.2 0.4 0.6 0.8 密度 −6 −4 −2 0 2 4 6 x 精度 1/σ² = 1/σ1 ² + 1/σ 2 ² = 3.47,标准差 0.54 均值 = 0.20 μ1 + 0.80 μ 2 = 1.00(权重 ∝ 精度) 原始乘积的面积 Z = N(μ1 ; μ 2 , σ 1 ² + σ 2 ²) = 0.052 图 4.4 组合两个高斯分布的两种方式。“变量之和”显示独立的 X X X 与 Y Y Y 之和 X + Y X + Y X + Y 的密度(式(4.18) ),比两个输入都宽。“密度之积”显示两条密度曲线逐点相乘并归一化的结果(式(4.19) ),比两者都窄,均值偏向更尖锐的输入。虚线是原始乘积,其面积为 Z Z Z 。可用滑块设置均值和标准差,或在峰值附近拖动以移动该输入。
保持输入不变,切换两种运算 。和以 μ 1 + μ 2 \mu_1 + \mu_2 μ 1 + μ 2 为中心,比任一输入都宽;积位于 μ 1 \mu_1 μ 1 与 μ 2 \mu_2 μ 2 之间,比任一输入都窄。
在积中把一个输入调得很宽 。σ 1 \sigma_1 σ 1 为 2.5 时,乘积几乎与第二个输入重合:模糊的先验几乎不改变精确测量提供的信息。
把两个均值拉开 。归一化乘积的宽度不变,因为精度与均值无关;但原始乘积向零下沉,Z Z Z 也随之变小。两个互相矛盾的自信密度,会在两者都几乎没有质量的区域给出一个自信的折中。Z Z Z 很小,是先验与测量相互冲突的警示信号。
易错点 两个高斯变量之积不服从高斯分布
式(4.19) 相乘的是密度函数。两个高斯随机变量相乘是另一种运算,结果也不同:若 X X X 与 Y Y Y 是独立的标准正态变量,其积 X Y XY X Y 的密度在零附近无界增长,尾部也比任何高斯分布都重。高斯随机变量对加法和线性映射封闭;高斯密度对乘法封闭。阅读推导时须区分两者。
第 4.6 节引用的文献 1 Rasmussen 与 Williams(2006) Gaussian Processes for Machine Learning
4.7 在代码中使用高斯分布 #
养成三个习惯,可以避免大多数数值问题。
使用对数密度 。高维时,密度式(4.5) 是许多小因子之积,会发生下溢。对 d = 1000 d = 1000 d = 1000 维的标准正态分布,即使均值处的密度 ( 2 π ) − 500 (2\pi)^{-500} ( 2 π ) − 500 也约为 10 − 399 10^{-399} 1 0 − 399 ,低于双精度浮点数所能表示的最小正数。对数密度则是若干大小适中的数之和。可用 Σ \mSigma Σ 的 Cholesky 因子 L \mL L 计算:令 w = L − 1 ( x − μ ) \vw = \mL^{-1}(\vx - \vmu) w = L − 1 ( x − μ ) ,二次型即为 w ⊤ w \vw^\T\vw w ⊤ w ,而 log ∣ Σ ∣ = 2 ∑ i log L i i \log\lvert\mSigma\rvert = 2\sum_i \log L_{ii} log ∣ Σ ∣ = 2 ∑ i log L ii (第 3.6 节 )。
代码实现 NumPy
import numpy as np
def gaussian_logpdf (x, mu, Sigma ):
L = np.linalg.cholesky(Sigma)
w = np.linalg.solve(L, x - mu)
d = len (mu)
return -0.5 * w @ w - np.log(np.diag(L)).sum () - 0.5 * d * np.log(2 * np.pi)
切勿构造 Σ − 1 \mSigma^{-1} Σ − 1 。本章凡是含逆矩阵的公式,都应像上面的条件化代码那样,用 Cholesky 分解和三角求解计算,理由见第 3.5.1 节 。
核对参数化方式 。记号 N ( μ , σ 2 ) \N(\mu, \sigma^2) N ( μ , σ 2 ) 的第二个参数是方差,但多数程序库接受的是标准差:NumPy 的 random.normal(loc, scale)、SciPy 的 stats.norm(loc, scale) 与 PyTorch 的 Normal(loc, scale) 都要求传入 σ \sigma σ 。在应传标准差处传入方差,是一种不报错却很常见的错误。多元版本接受协方差矩阵,有时也接受其 Cholesky 因子,例如 PyTorch 的 MultivariateNormal(loc, scale_tril=L)。
4.8 习题 #
习题 4.1
值 f ( x 1 ) f(\vx_1) f ( x 1 ) 与 f ( x 2 ) f(\vx_2) f ( x 2 ) 联合服从高斯分布,均值分别为 0.3 和 0.1,标准差都是 0.2,相关系数为 0.75。计算 f ( x 1 ) > f ( x 2 ) f(\vx_1) > f(\vx_2) f ( x 1 ) > f ( x 2 ) 的概率。再取相关系数为 0 重新计算,并解释两者的差别。
解答
由例 4.2 ,D = f ( x 1 ) − f ( x 2 ) D = f(\vx_1) - f(\vx_2) D = f ( x 1 ) − f ( x 2 ) 的均值为 0.2 0.2 0.2 ,方差为 0.04 + 0.04 − 2 × 0.75 × 0.04 = 0.02 0.04 + 0.04 - 2 \times 0.75 \times 0.04 = 0.02 0.04 + 0.04 − 2 × 0.75 × 0.04 = 0.02 ,因此标准差为 0.141 0.141 0.141 ,P ( D > 0 ) = Φ ( 0.2 / 0.141 ) = Φ ( 1.41 ) ≈ 0.92 \Prob(D > 0) = \Phi(0.2/0.141) = \Phi(1.41) \approx 0.92 P ( D > 0 ) = Φ ( 0.2/0.141 ) = Φ ( 1.41 ) ≈ 0.92 。相关系数为 0 时,方差为 0.08 0.08 0.08 ,标准差为 0.283 0.283 0.283 ,概率为 Φ ( 0.71 ) ≈ 0.76 \Phi(0.71) \approx 0.76 Φ ( 0.71 ) ≈ 0.76 。正相关意味着两个值的误差倾向于同向,在差中部分抵消,因此二者的大小顺序比任一值本身更确定。
习题 4.2
由式(4.15) 推导式(4.14) 。然后证明:一般情况下,观测 a \mathbf{a} a 不会增大任何线性组合 w ⊤ b \vw^\T\mathbf{b} w ⊤ b 的方差。
解答
取 a = x 1 \mathbf{a} = x_1 a = x 1 ,b = x 2 \mathbf{b} = x_2 b = x 2 ,则 Σ a a = σ 1 2 \mSigma_{aa} = \sigma_1^2 Σ aa = σ 1 2 ,Σ a b = ρ σ 1 σ 2 \mSigma_{ab} = \rho\sigma_1\sigma_2 Σ ab = ρ σ 1 σ 2 ,Σ b b = σ 2 2 \mSigma_{bb} = \sigma_2^2 Σ bb = σ 2 2 。均值为 μ 2 + ( ρ σ 1 σ 2 / σ 1 2 ) ( a − μ 1 ) = μ 2 + ρ ( σ 2 / σ 1 ) ( a − μ 1 ) \mu_2 + (\rho\sigma_1\sigma_2/\sigma_1^2)(a - \mu_1) = \mu_2 + \rho(\sigma_2/\sigma_1)(a - \mu_1) μ 2 + ( ρ σ 1 σ 2 / σ 1 2 ) ( a − μ 1 ) = μ 2 + ρ ( σ 2 / σ 1 ) ( a − μ 1 ) ,方差为 σ 2 2 − ρ 2 σ 1 2 σ 2 2 / σ 1 2 = σ 2 2 ( 1 − ρ 2 ) \sigma_2^2 - \rho^2\sigma_1^2\sigma_2^2/\sigma_1^2 = \sigma_2^2(1 - \rho^2) σ 2 2 − ρ 2 σ 1 2 σ 2 2 / σ 1 2 = σ 2 2 ( 1 − ρ 2 ) 。一般地,w ⊤ b \vw^\T\mathbf{b} w ⊤ b 的方差从 w ⊤ Σ b b w \vw^\T\mSigma_{bb}\vw w ⊤ Σ bb w 降为 w ⊤ Σ b b w − w ⊤ Σ a b ⊤ Σ a a − 1 Σ a b w \vw^\T\mSigma_{bb}\vw - \vw^\T\mSigma_{ab}^\T\mSigma_{aa}^{-1}\mSigma_{ab}\vw w ⊤ Σ bb w − w ⊤ Σ ab ⊤ Σ aa − 1 Σ ab w 。令 q = Σ a b w \mathbf{q} = \mSigma_{ab}\vw q = Σ ab w ,减去的量为 q ⊤ Σ a a − 1 q ≥ 0 \mathbf{q}^\T\mSigma_{aa}^{-1}\mathbf{q} \ge 0 q ⊤ Σ aa − 1 q ≥ 0 ,因为正定矩阵的逆也是正定的。当且仅当 q = 0 \mathbf{q} = \mathbf{0} q = 0 ,即 w ⊤ b \vw^\T\mathbf{b} w ⊤ b 与每个观测到的坐标都不相关时,减少量为零。
习题 4.3
设 X ∼ N ( 0 , 1 ) X \sim \N(0, 1) X ∼ N ( 0 , 1 ) ,S S S 与 X X X 独立,以各二分之一的概率取 + 1 +1 + 1 或 − 1 -1 − 1 。令 Y = S X Y = SX Y = S X 。证明 Y Y Y 服从标准正态分布,且 X X X 与 Y Y Y 不相关,但二者既不独立,也不服从联合高斯分布。
解答
N ( 0 , 1 ) \N(0, 1) N ( 0 , 1 ) 是对称的,− X -X − X 与 X X X 同分布,因此 P ( Y ≤ y ) = 1 2 P ( X ≤ y ) + 1 2 P ( − X ≤ y ) = Φ ( y ) \Prob(Y \le y) = \tfrac12\Prob(X \le y) + \tfrac12\Prob(-X \le y) = \Phi(y) P ( Y ≤ y ) = 2 1 P ( X ≤ y ) + 2 1 P ( − X ≤ y ) = Φ ( y ) 。协方差为 E [ X Y ] = E [ S ] E [ X 2 ] = 0 × 1 = 0 \E[XY] = \E[S]\,\E[X^2] = 0 \times 1 = 0 E [ X Y ] = E [ S ] E [ X 2 ] = 0 × 1 = 0 。二者不独立,因为 ∣ Y ∣ = ∣ X ∣ \lvert Y\rvert = \lvert X\rvert ∣ Y ∣ = ∣ X ∣ :知道 X X X 之后,Y Y Y 只剩两个可能的值。二者不服从联合高斯分布,因为线性组合 X + Y = ( 1 + S ) X X + Y = (1 + S)X X + Y = ( 1 + S ) X 以二分之一的概率等于零,其余情况下服从 N ( 0 , 4 ) \N(0, 4) N ( 0 , 4 ) ;而联合高斯变量的线性组合应当服从高斯分布(第 4.3 节 )。只有对联合高斯的变量,不相关才意味着独立。
习题 4.4
量 θ \theta θ 的先验为 N ( 0 , σ 0 2 ) \N(0, \sigma_0^2) N ( 0 , σ 0 2 ) ,对其测量 n n n 次,y i = θ + ε i y_i = \theta + \varepsilon_i y i = θ + ε i ,噪声 ε i ∼ N ( 0 , σ n 2 ) \varepsilon_i \sim \N(0, \sigma_n^2) ε i ∼ N ( 0 , σ n 2 ) 相互独立。用式(4.19) 求 θ \theta θ 的后验。σ 0 → ∞ \sigma_0 \to \infty σ 0 → ∞ 时结果如何?σ 0 = 1 \sigma_0 = 1 σ 0 = 1 时后验方差是多少?
解答
每次测量贡献一个似然因子 N ( θ ; y i , σ n 2 ) \N(\theta;\, y_i, \sigma_n^2) N ( θ ; y i , σ n 2 ) 。把先验依次乘以这 n n n 个因子,精度相加:后验精度为 1 / σ 0 2 + n / σ n 2 1/\sigma_0^2 + n/\sigma_n^2 1/ σ 0 2 + n / σ n 2 ,后验均值为 ( ∑ i y i / σ n 2 ) / ( 1 / σ 0 2 + n / σ n 2 ) \left(\sum_i y_i/\sigma_n^2\right)\big/\left(1/\sigma_0^2 + n/\sigma_n^2\right) ( ∑ i y i / σ n 2 ) / ( 1/ σ 0 2 + n / σ n 2 ) 。当 σ 0 → ∞ \sigma_0 \to \infty σ 0 → ∞ 时,先验精度趋于零,均值趋于样本平均值 y ˉ \bar{y} y ˉ ,方差趋于 σ n 2 / n \sigma_n^2/n σ n 2 / n ,即熟知的平均值标准误。σ 0 = 1 \sigma_0 = 1 σ 0 = 1 时,方差为 1 / ( 1 + n / σ n 2 ) = σ n 2 / ( n + σ n 2 ) 1/(1 + n/\sigma_n^2) = \sigma_n^2/(n + \sigma_n^2) 1/ ( 1 + n / σ n 2 ) = σ n 2 / ( n + σ n 2 ) 。同一个数将在习题 8.2 中再次出现,那里对高斯过程在同一输入处评估 n n n 次。
延伸阅读 #
参考文献
Bishop, C. M. (2006) . Pattern Recognition and Machine Learning . Springer . 引用于 §4.4 §4.5
Blitzstein, J. K., and Hwang, J. (2019) . Introduction to Probability . Chapman and Hall/CRC . 引用于 §4.1 §4.3
Box, G. E. P., and Muller, M. E. (1958) . A Note on the Generation of Random Normal Deviates . The Annals of Mathematical Statistics . 引用于 §4.3
Cover, T. M., and Thomas, J. A. (2006) . Elements of Information Theory . Wiley . 引用于 §4.1
Galton, F. (1886) . Regression Towards Mediocrity in Hereditary Stature . The Journal of the Anthropological Institute of Great Britain and Ireland . 引用于 §4.5
Murphy, K. P. (2022) . Probabilistic Machine Learning: An Introduction . MIT Press .
Petersen, K. B., and Pedersen, M. S. (2012) . The Matrix Cookbook . Technical University of Denmark . 非同行评审 引用于 §4.5
Rasmussen, C. E., and Williams, C. K. I. (2006) . Gaussian Processes for Machine Learning . MIT Press . 引用于 §4.3 §4.6
Snoek, J., Larochelle, H., and Adams, R. P. (2012) . Practical Bayesian Optimization of Machine Learning Algorithms . Advances in Neural Information Processing Systems 25 (NeurIPS 2012) . 引用于 §4.5