向量值 RBF、核函数与归一化混合

从标量 RBF 推广到向量输出,讨论 matrix-valued kernel、常见核函数和 normalized RBF blend。

上一章讨论的是标量输出

f:RmRf:\mathbb{R}^m\to \mathbb{R}

但很多实际问题的输出不是一个数,而是一个向量。例如一个 sample correction 可能输出 3D 位移、3D rotation vector、若干权重,或者一整组高维 correction vector。此时 RBF 要描述的是

f:RmRd\mathbf{f}:\mathbb{R}^m\to \mathbb{R}^d

这时最重要的一点是:RBF 基函数本身仍然是标量,变成向量的是每个基函数携带的系数。

向量输出的形式

对第 ii 个样本,设

xiRm,yiRd\mathbf{x}_i\in \mathbb{R}^m,\qquad \mathbf{y}_i\in \mathbb{R}^d

向量值 RBF 写成

f(x)=i=1Nϕ(xxi2)wi\mathbf{f}(\mathbf{x}) = \sum_{i=1}^{N} \phi(\|\mathbf{x}-\mathbf{x}_i\|_2)\mathbf{w}_i

其中

wiRd\mathbf{w}_i\in \mathbb{R}^d

也就是说,ϕ(xxi2)\phi(\|\mathbf{x}-\mathbf{x}_i\|_2) 只负责给出一个标量影响强度,而 wi\mathbf{w}_i 决定这个影响在输出空间中指向哪里、幅度多大。

可以把它理解成图像混合里的 mask 与颜色:

RBF 基函数 = 输入空间中的 scalar influence / soft mask
向量系数 = 这个 influence 携带的输出方向和幅度

mask 是标量,但颜色可以是 RGB 向量。同理,RBF 的影响场是标量,但它携带的 correction 可以是多维向量。

三个 3D 输出样本的展开

假设有 3 个样本

x1y1,x2y2,x3y3\mathbf{x}_1\to \mathbf{y}_1,\quad \mathbf{x}_2\to \mathbf{y}_2,\quad \mathbf{x}_3\to \mathbf{y}_3

并且每个输出都是 3D 向量:

yi=[yixyiyyiz]\mathbf{y}_i= \begin{bmatrix} y_{ix}\\ y_{iy}\\ y_{iz} \end{bmatrix}

向量值 RBF 是

f(x)=ϕ(xx12)w1+ϕ(xx22)w2+ϕ(xx32)w3\begin{align*} \mathbf{f}(\mathbf{x}) &= \phi(\|\mathbf{x}-\mathbf{x}_1\|_2)\mathbf{w}_1 +\phi(\|\mathbf{x}-\mathbf{x}_2\|_2)\mathbf{w}_2 +\phi(\|\mathbf{x}-\mathbf{x}_3\|_2)\mathbf{w}_3 \end{align*}

其中

wi=[wixwiywiz]\mathbf{w}_i= \begin{bmatrix} w_{ix}\\ w_{iy}\\ w_{iz} \end{bmatrix}

要求函数经过三个样本点:

f(x1)=y1,f(x2)=y2,f(x3)=y3\mathbf{f}(\mathbf{x}_1)=\mathbf{y}_1,\qquad \mathbf{f}(\mathbf{x}_2)=\mathbf{y}_2,\qquad \mathbf{f}(\mathbf{x}_3)=\mathbf{y}_3

展开第一条:

ϕ(x1x12)w1+ϕ(x1x22)w2+ϕ(x1x32)w3=y1\phi(\|\mathbf{x}_1-\mathbf{x}_1\|_2)\mathbf{w}_1 +\phi(\|\mathbf{x}_1-\mathbf{x}_2\|_2)\mathbf{w}_2 +\phi(\|\mathbf{x}_1-\mathbf{x}_3\|_2)\mathbf{w}_3 =\mathbf{y}_1

展开第二条:

ϕ(x2x12)w1+ϕ(x2x22)w2+ϕ(x2x32)w3=y2\phi(\|\mathbf{x}_2-\mathbf{x}_1\|_2)\mathbf{w}_1 +\phi(\|\mathbf{x}_2-\mathbf{x}_2\|_2)\mathbf{w}_2 +\phi(\|\mathbf{x}_2-\mathbf{x}_3\|_2)\mathbf{w}_3 =\mathbf{y}_2

展开第三条:

ϕ(x3x12)w1+ϕ(x3x22)w2+ϕ(x3x32)w3=y3\phi(\|\mathbf{x}_3-\mathbf{x}_1\|_2)\mathbf{w}_1 +\phi(\|\mathbf{x}_3-\mathbf{x}_2\|_2)\mathbf{w}_2 +\phi(\|\mathbf{x}_3-\mathbf{x}_3\|_2)\mathbf{w}_3 =\mathbf{y}_3

ϕji=ϕ(xjxi2)\phi_{ji}=\phi(\|\mathbf{x}_j-\mathbf{x}_i\|_2)

则三条向量方程可以压缩成

[ϕ11ϕ12ϕ13ϕ21ϕ22ϕ23ϕ31ϕ32ϕ33][w1w2w3]=[y1y2y3]\begin{bmatrix} \phi_{11} & \phi_{12} & \phi_{13}\\ \phi_{21} & \phi_{22} & \phi_{23}\\ \phi_{31} & \phi_{32} & \phi_{33} \end{bmatrix} \begin{bmatrix} \mathbf{w}_1^\top\\ \mathbf{w}_2^\top\\ \mathbf{w}_3^\top \end{bmatrix} = \begin{bmatrix} \mathbf{y}_1^\top\\ \mathbf{y}_2^\top\\ \mathbf{y}_3^\top \end{bmatrix}

W\mathbf{W}Y\mathbf{Y} 里的向量进一步展开成标量分量,就是

[ϕ11ϕ12ϕ13ϕ21ϕ22ϕ23ϕ31ϕ32ϕ33][w1xw1yw1zw2xw2yw2zw3xw3yw3z]=[y1xy1yy1zy2xy2yy2zy3xy3yy3z]\begin{bmatrix} \phi_{11} & \phi_{12} & \phi_{13}\\ \phi_{21} & \phi_{22} & \phi_{23}\\ \phi_{31} & \phi_{32} & \phi_{33} \end{bmatrix} \begin{bmatrix} w_{1x} & w_{1y} & w_{1z}\\ w_{2x} & w_{2y} & w_{2z}\\ w_{3x} & w_{3y} & w_{3z} \end{bmatrix} = \begin{bmatrix} y_{1x} & y_{1y} & y_{1z}\\ y_{2x} & y_{2y} & y_{2z}\\ y_{3x} & y_{3y} & y_{3z} \end{bmatrix}

也就是同一个 K\mathbf{K} 同时作用在 x,y,zx,y,z 三列输出上。

进一步记为

KW=Y\mathbf{K}\mathbf{W}=\mathbf{Y}

其中

KRN×N,WRN×d,YRN×d\mathbf{K}\in \mathbb{R}^{N\times N},\qquad \mathbf{W}\in \mathbb{R}^{N\times d},\qquad \mathbf{Y}\in \mathbb{R}^{N\times d}

从分量角度看,向量值 RBF 就是多个标量 RBF 共享同一套 basis:

fx(x)=iϕi(x)wixfy(x)=iϕi(x)wiyfz(x)=iϕi(x)wiz\begin{align*} f_x(\mathbf{x}) &= \sum_i \phi_i(\mathbf{x})w_{ix}\\ f_y(\mathbf{x}) &= \sum_i \phi_i(\mathbf{x})w_{iy}\\ f_z(\mathbf{x}) &= \sum_i \phi_i(\mathbf{x})w_{iz} \end{align*}

与张量或线性算子的关系

普通向量值 RBF 可以写成

f(x)=iϕ(xxi2)wi\mathbf{f}(\mathbf{x}) = \sum_i \phi(\|\mathbf{x}-\mathbf{x}_i\|_2)\mathbf{w}_i

也可以写成

f(x)=i[ϕ(xxi2)I]wi\mathbf{f}(\mathbf{x}) = \sum_i \left[ \phi(\|\mathbf{x}-\mathbf{x}_i\|_2)\mathbf{I} \right]\mathbf{w}_i

从这个角度看,它相当于使用了一个很简单的 matrix-valued kernel:

K(x,xi)=ϕ(xxi2)I\mathbf{K}(\mathbf{x},\mathbf{x}_i) = \phi(\|\mathbf{x}-\mathbf{x}_i\|_2)\mathbf{I}

更一般的向量值 RBF 可以写成

f(x)=iK(x,xi)ci\mathbf{f}(\mathbf{x}) = \sum_i \mathbf{K}(\mathbf{x},\mathbf{x}_i)\mathbf{c}_i

其中

K(x,xi)Rd×d\mathbf{K}(\mathbf{x},\mathbf{x}_i)\in \mathbb{R}^{d\times d}

这时 kernel 本身就可以表达输出分量之间的耦合,有点像一个位置相关的线性算子。

从响应关系的角度看,普通的 scalar RBF kernel 乘单位矩阵:

K(x,xi)=ϕi(x)I\mathbf{K}(\mathbf{x},\mathbf{x}_i) = \phi_i(\mathbf{x})\mathbf{I}

表示同一个空间影响强度 ϕi(x)\phi_i(\mathbf{x}) 同等作用到所有输出分量上。也就是说,x,y,zx,y,z 三个分量共享同一个 basis,只是每一列的系数不同。

如果希望不同分量有不同的影响权重,可以使用 diagonal matrix-valued kernel:

K(x,xi)=[ϕix(x)000ϕiy(x)000ϕiz(x)]\mathbf{K}(\mathbf{x},\mathbf{x}_i) = \begin{bmatrix} \phi_{ix}(\mathbf{x}) & 0 & 0\\ 0 & \phi_{iy}(\mathbf{x}) & 0\\ 0 & 0 & \phi_{iz}(\mathbf{x}) \end{bmatrix}

这表示来自第 ii 个样本中心的影响,对输出的 x,y,zx,y,z 分量可以有不同强度。

更一般地,如果分量之间也会互相影响,可以使用 full matrix-valued kernel:

K(x,xi)=[KxxKxyKxzKyxKyyKyzKzxKzyKzz]\mathbf{K}(\mathbf{x},\mathbf{x}_i) = \begin{bmatrix} K_{xx} & K_{xy} & K_{xz}\\ K_{yx} & K_{yy} & K_{yz}\\ K_{zx} & K_{zy} & K_{zz} \end{bmatrix}

例如 KxyK_{xy} 可以理解为:第 ii 个中心携带的 yy 分量系数,会如何影响查询点输出的 xx 分量。

所以它和 FEM 里的弹性张量有一点共同直觉:二者都在描述某种“响应关系”,也就是输入的某种量如何引起输出的某种变化。但两者所在的层级不同,不能直接等同。

FEM 里的弹性张量描述的是同一个材料点内部从 strain 到 stress 的本构关系:

σ(x)=C(x):ε(x)\boldsymbol{\sigma}(\mathbf{x}) = \mathbf{C}(\mathbf{x}):\boldsymbol{\varepsilon}(\mathbf{x})

这里的 constitutive rule 可以理解成材料本身的响应规则。它回答的不是 “位置 A 如何影响位置 B”,而是“同一个材料点上,发生了某种 strain 之后,会产生怎样的 stress”。

最简单的一维例子是 Hooke's law:

σ=Eε\sigma=E\varepsilon

其中 EE 是 Young's modulus。它表示同样的 strain ε\varepsilon,不同材料会产生不同的 stress σ\sigma。例如钢、橡胶、软组织的 EE 不同,所以它们被拉伸或压缩时的反抗方式也不同。

所以 constitutive rule 的直觉是:材料在局部被拉、压、剪之后,会如何产生内部反作用。在线弹性 FEM 里,这个规则由 elastic tensor C\mathbf{C} 描述;在更复杂的材料模型里,它也可以是非线性的、各向异性的,甚至依赖历史状态。

而 RBF 的 kernel 描述的是一个样本中心的系数如何对某个输入位置的输出产生贡献:

f(x)=iK(x,xi)ci\mathbf{f}(\mathbf{x}) = \sum_i \mathbf{K}(\mathbf{x},\mathbf{x}_i)\mathbf{c}_i

也就是说,RBF kernel 更直接是空间上的 influence rule;弹性张量更直接是材料点内部的 constitutive rule。FEM 中不同位置之间的相互影响,是弹性张量经过网格离散、stiffness matrix 组装、边界条件和整体平衡方程之后才体现出来的。

大多数情况下,用标量 RBF 基函数乘向量系数已经足够。

核函数接收的是什么

经典 RBF 核函数接收的是一个非负标量距离

ri=xxi2r_i=\|\mathbf{x}-\mathbf{x}_i\|_2

所以

ϕi(x)=ϕ(ri)\phi_i(\mathbf{x})=\phi(r_i)

通常可以认为

ϕ:R0R\phi:\mathbb{R}_{\ge 0}\to \mathbb{R}

工程上也经常使用加权距离,而不是直接使用普通欧氏距离:

ri2=(xxi)M(xxi)r_i^2 = (\mathbf{x}-\mathbf{x}_i)^\top \mathbf{M} (\mathbf{x}-\mathbf{x}_i)

例如输入向量由多个 feature block 拼接而成时,可以把不同 block 的影响尺度分开:

ri2=αauaua,i22+αbubub,i22r_i^2 = \alpha_a\|\mathbf{u}_a-\mathbf{u}_{a,i}\|_2^2 + \alpha_b\|\mathbf{u}_b-\mathbf{u}_{b,i}\|_2^2

这里 αa\alpha_aαb\alpha_b 决定两个 feature block 在距离度量中的相对重要性。

常见核函数与外推倾向

不同核函数主要区别在于:影响是局部还是全局、远离样本后是衰减还是增长、外推是否保守。

核函数公式是否局部远处行为外推倾向
Gaussiane(ϵr)2e^{-(\epsilon r)^2}强局部趋近 00保守,远处趋向基准值
Inverse Multiquadric1r2+c2\frac{1}{\sqrt{r^2+c^2}}局部但长尾趋近 00比 Gaussian 衰减慢
Compact SupportWendland 等非常局部半径外为 00很安全,但需要 fallback
Linearrr全局线性增长有趋势,但可能漂
Cubicr3r^3全局快速增长平滑,但容易 overshoot
Thin Plater2logrr^2\log r全局增长很平滑,但远处可能变大
Multiquadricr2+c2\sqrt{r^2+c^2}全局近似线性增长有趋势,但不局部

对于需要保守外推的 correction problem,通常更偏向 Gaussian 或 compact support,因为它们的外推更保守,不容易在远离样本区时产生夸张结果。

exact RBF 与 normalized RBF blend

前面讨论的是 exact RBF interpolation:

f(x)=iϕi(x)wi\mathbf{f}(\mathbf{x}) = \sum_i \phi_i(\mathbf{x})\mathbf{w}_i

其中 wi\mathbf{w}_i 通过

KW=Y\mathbf{K}\mathbf{W}=\mathbf{Y}

解出来。它的目标是严格满足

f(xi)=yi\mathbf{f}(\mathbf{x}_i)=\mathbf{y}_i

另一种常见工程方案是 normalized RBF blend。它先把 kernel value 归一化成非负软权重:

ai(x)=ϕi(x)jϕj(x)a_i(\mathbf{x}) = \frac{\phi_i(\mathbf{x})} {\sum_j \phi_j(\mathbf{x})}

然后直接混合样本输出:

f(x)=iai(x)yi\mathbf{f}(\mathbf{x}) = \sum_i a_i(\mathbf{x})\mathbf{y}_i

它不需要解线性系统,也不一定严格经过样本点。更准确地说,它更像一个基于距离的 sample-driven lookup。

维度exact RBF interpolationnormalized RBF blend
形式iϕi(x)wi\sum_i \phi_i(\mathbf{x})\mathbf{w}_iiai(x)yi\sum_i a_i(\mathbf{x})\mathbf{y}_i
系数wi\mathbf{w}_i 需要求解直接使用样本 yi\mathbf{y}_i
是否严格命中样本通常不是
样本点准确性可能偏软
稳定性可能 overshoot通常更稳
外推可能不可控通常趋向最近样本或平均
是否可能超出样本范围可能非负权重时基本不会
是否需要解矩阵需要不需要
可解释性wi\mathbf{w}_i 不直观aia_i 很直观
调参友好度中等

如果目标是精确命中样本输出,例如预先定义好的 correction vector,那么 exact RBF 更合适,但常常需要 regularization:

(K+λI)W=Y(\mathbf{K}+\lambda \mathbf{I})\mathbf{W}=\mathbf{Y}

如果目标是做稳定、直观、调参友好,通常可以先用

normalized RBF blend + Gaussian/Wendland kernel + fallback + 样本点 snap + 输出 clamp

exact RBF 更像数学插值器,精确但可能不稳;normalized RBF blend 更像 sample-driven lookup,不完全精确但稳定、直观、工程友好。