RBF 全称 径向基函数(**Radial Basis Functions**) ,用于将一个空间中的一组值内插到另一个空间中的另一组值。有点类似于 maya 中的 set driven key ,但是不是一个数值的相互差值,而是拓展到了任意类型的任意属性。
这有许多应用,如 [driving corrective shapes](<https://www.youtube.com/watch?v=QEmsEId_nYk>) ,[retargeting meshes](<https://twitter.com/chadvernon/status/1114752700954992640>),或机器学习根据一组已知样本来预测数值。
给出一组 包含 n 个数据点和相应的输出值 的数据集,RBF solver 出一个参数向量,他可以使我们能够从一组新的数据点,计算或预测相应的输出值。他解决的问题,只是一个线性方程组。可以把他归纳为
$$ M \theta = B $$
$M$ 是 n 个数据点的矩阵。$B$ 是我们相应输出值的矩阵。我们需要计算参数向量 $θ:$
$$ \theta = M^{-1} B $$
有多种方法可以求解一个方程组,包括 [LU decomposition](<https://en.wikipedia.org/wiki/LU_decomposition>) ,[Cholesky decomposition](<https://en.wikipedia.org/wiki/Cholesky_decomposition>),或者使用 [pseudoinverse](<https://en.wikipedia.org/wiki/Moore%E2%80%93Penrose_inverse>) . 我们这里将使用 伪逆运算 来实现 RBF ,这是一种叫做 正则化线性回归 的技术。求解的正则化部分可以使得我们的输入数据点可以平滑插值
正则化线性回归的等式是:
$$ \theta = ( M ^ T M + λ)^{-1} M ^ TB $$
$M$ 是我们的输入的数据点矩阵,我们称之为特征矩阵。$B$ 是我们的输出参数矩阵。λ 是我们的正则化参数 , 它只是一个使用标量正则化参数的对角矩阵 .
$$ \lambda=\left[\begin{array}{lll}\lambda & & \\ & \ddots & \\ & & \lambda\end{array}\right] $$
要使用 RBF ,我们需要参考距离值。目前,我一直把 M 描述为输入数据点的矩阵。为了使用 RBF,我们将使用从每个数据点到每个其他数据点的距离, 而不是使用输入数据点值本身.
The distance data is what really drives everything here and this can be applied to any dataset, as long as we have a valid distance function.