尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

核方法核心解析:从线性不可分到高斯过程实战

核方法核心解析:从线性不可分到高斯过程实战 1. 从线性到非线性为什么我们需要核方法如果你做过一些机器学习项目尤其是分类或回归任务大概率会碰到一个经典困境数据在原始特征空间里是线性不可分的。比如一个简单的二维异或问题用一条直线无论如何也分不开那两个类别。这时候教科书会告诉你可以尝试把数据映射到一个更高维、甚至无限维的特征空间里去在那里数据可能就变得线性可分了。这个想法听起来很美但实操起来有个致命问题计算量爆炸。高维空间的内积计算会变得极其昂贵这就是所谓的“维数灾难”。核方法Kernel Methods的精妙之处就在于它用一种极其聪明的方式绕开了这个计算难题。它不显式地进行高维映射而是通过一个叫做“核函数”的东西直接在原始的低维空间里计算出数据在高维空间中的内积结果。这个核函数就是本章的灵魂。我第一次接触这个概念时感觉像发现了一个“数学魔术”我们明明在三维空间里操作却获得了在无限维空间里才有的表达能力而且计算成本几乎没有增加。这不仅仅是技巧更是一种看待问题的范式转换——从“设计复杂的特征变换”转向“设计一个衡量数据相似度的函数”。本章内容庞杂从最基础的静止核、对偶表示到如何构造核、经典的高斯核再到相对小众但思想深刻的Fisher核最后延伸到两个重要的模型框架径向基函数网络/Nadaraya-Watson模型一种基于核的回归/密度估计方法和高斯过程一个贝叶斯视角的非参数模型。我会结合自己的理解重点拆解那些容易混淆的核心概念以及在实际应用中真正需要注意的坑。我们不止要会调sklearn里的RBFKernel更要明白它背后在做什么以及什么时候该用、什么时候不该用。2. 核函数基石静止核、对偶表示与Mercer定理在深入具体模型之前我们必须打好地基。核方法的核心是核函数而理解核函数要从两个基本概念和一个关键定理开始。2.1 静止核Stationary Kernel平移不变性的威力静止核也叫平移不变核是实践中最常用的一类核函数。它的定义很简单如果一个核函数 $k(\mathbf{x}, \mathbf{x})$ 的值只依赖于两个输入点之间的差 $\mathbf{x} - \mathbf{x}$即 $k(\mathbf{x}, \mathbf{x}) k(\mathbf{x} - \mathbf{x})$那么它就是静止的。为什么这个性质重要因为它意味着模型的预测对于输入空间的整体平移是不变的。想象你在做图像分类如果图片整体亮度增加了一点所有像素值加了一个常数一个基于静止核的模型不应该改变它的分类决策。这符合我们对许多任务的直观认知相似的模式无论出现在图像的哪个位置都应该被识别为相似。最经典的静止核就是高斯核也叫径向基函数核RBF Kernel $$ k(\mathbf{x}, \mathbf{x}) \exp\left(-\frac{|\mathbf{x} - \mathbf{x}|^2}{2\sigma^2}\right) $$ 这里$\sigma$ 控制了函数的“宽度”或平滑程度。$\sigma$ 越大函数越平滑远距离的点之间也有较大的相似度$\sigma$ 越小函数越“尖锐”只有非常近的点才被认为相似。在实际调参中$\sigma$ 是第一个需要仔细调整的超参数它直接决定了模型的复杂度和泛化能力。注意很多人会把高斯核的公式错记成 $\exp(-\gamma |\mathbf{x} - \mathbf{x}|^2)$其中 $\gamma 1/(2\sigma^2)$。在sklearn的SVR或SVC中你看到的参数正是gamma。务必搞清楚你用的库是用的哪种参数化形式这直接影响你设置参数的范围。我曾在项目初期因为混淆了$\sigma$和$\gamma$导致模型要么严重过拟合要么完全学不到东西调试了半天才发现是参数尺度的问题。2.2 对偶表示Dual Representation揭开支持向量机的面纱对偶表示是理解支持向量机SVM乃至许多核化线性模型的关键。它的核心思想是在高维特征空间中模型的最优参数向量 $\mathbf{w}$可以表示为所有训练样本的线性组合。具体来说考虑一个线性模型 $y(\mathbf{x}) \mathbf{w}^T \phi(\mathbf{x}) b$通过优化如SVM的最大间隔或回归的最小二乘后我们得到 $\mathbf{w} \sum_{n1}^{N} a_n \phi(\mathbf{x}_n)$。这里的 $a_n$ 就是拉格朗日乘子在SVM中或类似的系数。这个表示法的威力在于当我们需要对新样本 $\mathbf{x}$ 进行预测时 $$ y(\mathbf{x}) \left( \sum_{n1}^{N} a_n \phi(\mathbf{x}n) \right)^T \phi(\mathbf{x}) b \sum{n1}^{N} a_n \phi(\mathbf{x}n)^T \phi(\mathbf{x}) b \sum{n1}^{N} a_n k(\mathbf{x}_n, \mathbf{x}) b $$看到了吗我们根本不需要知道高维映射 $\phi(\cdot)$ 的具体形式也不需要显式计算高维向量 $\mathbf{w}$。我们只需要计算新样本 $\mathbf{x}$ 与所有训练样本 $\mathbf{x}_n$ 之间的核函数值 $k(\mathbf{x}_n, \mathbf{x})$再乘以对应的系数 $a_n$ 求和即可。这完美地规避了高维计算。这里有一个非常重要的实操心得对偶表示意味着模型的“记忆”都存储在那些 $a_n \neq 0$ 的样本上这些样本就是支持向量。模型预测的计算复杂度正比于支持向量的数量而不是特征维度。因此当支持向量很多时比如用高斯核且参数很小时预测速度会变慢。在部署对实时性要求高的模型时必须关注支持向量的数量有时甚至需要采用模型剪枝或近似方法来减少计算量。2.3 Mercer定理核函数合法性的“营业执照”不是任意一个关于两个变量的函数都能作为核函数。一个函数 $k(\mathbf{x}, \mathbf{x})$ 能成为有效的核函数必须满足一个核心条件对于任意一组点 ${\mathbf{x}_1, ..., \mathbf{x}_N}$由 $k(\mathbf{x}_i, \mathbf{x}_j)$ 构成的格拉姆矩阵Gram Matrix $\mathbf{K}$ 必须是半正定的即所有特征值非负。这就是Mercer定理的核心内容。它保证了存在某个可能是无限维的特征空间 $\phi(\cdot)$使得 $k(\mathbf{x}, \mathbf{x}) \phi(\mathbf{x})^T \phi(\mathbf{x})$。换句话说Mercer条件是核函数存在的充要条件它给了我们一个验证工具。在构造新的核函数时Mercer定理也提供了一些“安全”的运算规则缩放如果 $k$ 是核函数$c 0$那么 $c \cdot k$ 也是。加法如果 $k_1$ 和 $k_2$ 是核函数那么 $k_1 k_2$ 也是。乘法如果 $k_1$ 和 $k_2$ 是核函数那么 $k_1 \cdot k_2$ 也是。函数变换如果 $k$ 是核函数$f$ 是任意函数那么 $f(\mathbf{x}) k(\mathbf{x}, \mathbf{x}) f(\mathbf{x})$ 也是。这些规则是我们下一节“构造核”的基础。在实际中我们很少需要手动验证Mercer条件因为常用的核函数如高斯核、多项式核都已被证明是合法的。但当你试图组合或自定义核函数时心里必须有这根弦。3. 从使用到创造核函数的构造艺术掌握了基本核我们自然会想能不能针对我的特定问题设计一个更合适的核答案是肯定的。核函数本质上定义了两个数据点之间的相似性度量。针对不同的数据文本、图像、图结构和不同的任务设计专用的核函数是一个重要的研究方向。这里介绍几种基础的构造方法。3.1 从简单核到复杂核加、乘与函数变换基于上一节提到的运算规则我们可以像搭积木一样构造复杂的核。加法核$k(\mathbf{x}, \mathbf{x}) k_1(\mathbf{x}, \mathbf{x}) k_2(\mathbf{x}, \mathbf{x})$。这相当于把数据同时映射到两个特征空间然后将它们的特征拼接起来。适用于我们认为数据的不同方面需要不同的相似性度量。乘法核$k(\mathbf{x}, \mathbf{x}) k_1(\mathbf{x}, \mathbf{x}) \times k_2(\mathbf{x}, \mathbf{x})$。这比加法核产生更强的交互效应能生成更复杂的特征空间。一个常见的特例是高斯径向基核它可以看作是一个无限维的多项式核的极限形式。函数变换$k_{new}(\mathbf{x}, \mathbf{x}) f(\mathbf{x}) k(\mathbf{x}, \mathbf{x}) f(\mathbf{x})$。这相当于在每个数据点映射到特征空间后再乘上一个标量权重 $f(\mathbf{x})$。可以用于引入先验知识例如如果我们知道某些区域的数据更可靠可以给它们更高的权重。3.2 针对结构化数据的核构造对于非向量化的结构化数据如字符串、图、树核方法尤其强大。核心思想是设计一个函数来计算两个结构之间的“相似度”。字符串核比较两个字符串的公共子序列。例如可以计算两个字符串中长度为k的所有子序列的共同出现次数加权或未加权。这在生物信息学DNA/蛋白质序列分析和文本分类中非常有用。图核比较两个图结构的相似性。思路有很多比如比较随机游走路径、比较子树模式、比较图拉普拉斯矩阵的特征值等。在化学信息学分子性质预测和社交网络分析中应用广泛。实操中的坑自定义核函数虽然灵活但计算复杂度可能很高。比如一个朴素的字符串子序列核计算复杂度可能是指数级的。因此工业级实现中会用到大量的动态规划、后缀树等优化技巧。如果你在sklearn中自定义核函数需要确保它的计算效率否则在大数据集上会寸步难行。我的经验是优先尝试经典的通用核如RBF只有当它们效果明显不佳且你对数据领域有深刻理解时才考虑设计专用核。3.3 Fisher核一种生成模型与判别模型的桥梁Fisher核是一个特别有趣的思想它提供了一种将生成模型的知识注入判别模型的方法。假设我们有一个带参数 $\theta$ 的概率生成模型 $p(\mathbf{x}|\theta)$比如一个高斯混合模型。Fisher得分向量对于一个数据点 $\mathbf{x}$我们计算其对数似然关于模型参数的梯度$\mathbf{g}(\mathbf{x}, \theta) \nabla_\theta \log p(\mathbf{x}|\theta)$。这个梯度向量描述了为了更好拟合数据点 $\mathbf{x}$模型参数应该如何调整。它编码了该数据点在生成模型下的“特征”。Fisher信息矩阵$F \mathbb{E}_{\mathbf{x} \sim p(\cdot|\theta)}[\mathbf{g}(\mathbf{x}, \theta) \mathbf{g}(\mathbf{x}, \theta)^T]$。它度量了参数空间的曲率用于标准化得分向量。Fisher核定义为 $k(\mathbf{x}, \mathbf{x}) \mathbf{g}(\mathbf{x}, \theta)^T F^{-1} \mathbf{g}(\mathbf{x}, \theta)$。这个核的意义在于如果两个数据点 $\mathbf{x}$ 和 $\mathbf{x}$ 对生成模型的参数有相似的“修正要求”即梯度方向相似那么它们就被认为是相似的。这相当于用生成模型对数据进行了理解然后将这种理解作为特征用于判别任务如SVM。我曾在一个音频事件检测项目中尝试过Fisher核。我们先用一个隐马尔可夫模型HMM对正常环境声音建模然后计算每个音频片段的Fisher得分向量再用这个向量作为特征输入SVM去检测异常声音。效果比直接用MFCC特征好因为它融入了声音的动态序列信息。但缺点也很明显训练生成模型和计算Fisher信息矩阵的逆计算开销很大且非常依赖于生成模型的质量。4. 两大核化模型实战径向基网络与高斯过程理论最终要服务于模型。本章介绍了两个重要的、直接建立在核函数之上的模型框架。它们代表了两种不同的建模哲学。4.1 径向基函数网络与Nadaraya-Watson模型基于记忆的局部拟合径向基函数网络RBF Network的结构非常直观选择一组“中心点” $\mathbf{c}_j$可以是训练样本的子集或通过聚类得到。对于输入 $\mathbf{x}$计算它到每个中心点的径向基函数通常是高斯函数值$\phi_j(\mathbf{x}) \exp(-\beta_j |\mathbf{x} - \mathbf{c}_j|^2)$。这可以看作是一种非线性特征变换。输出是这些基函数输出的线性组合$y(\mathbf{x}) \sum_{j1}^{M} w_j \phi_j(\mathbf{x}) w_0$。这本质上是一个单隐层的神经网络隐层激活函数是径向基函数。它的训练通常分两步先用无监督方法如K-Means确定中心点 $\mathbf{c}_j$ 和宽度参数 $\beta_j$再用有监督方法如最小二乘求解输出权重 $w_j$。Nadaraya-Watson模型是RBF思想在核密度估计和回归中的一个经典应用。对于回归问题它的预测公式非常优美 $$ y(\mathbf{x}) \frac{\sum_{n1}^{N} k(\mathbf{x}, \mathbf{x}n) t_n}{\sum{n1}^{N} k(\mathbf{x}, \mathbf{x}_n)} $$ 其中 $t_n$ 是训练样本的标签。你可以把它理解为预测点 $\mathbf{x}$ 的输出是所有训练样本标签 $t_n$ 的加权平均权重正是 $\mathbf{x}$ 与 $\mathbf{x}_n$ 的核函数相似度。这就像一个“局部常数拟合器”。重要心得Nadaraya-Watson模型是一种懒惰学习lazy learning方法它没有显式的训练过程除了可能选择核参数所有计算都在预测时进行。这意味着优点模型极其简单无需迭代训练理论上可以拟合任意复杂的函数。缺点预测成本高需计算与所有训练样本的核且对噪声敏感每个样本都直接影响预测。在实践中对于大规模数据集这种方法几乎不可行必须结合样本剪枝或快速近邻搜索如KD-Tree进行优化。4.2 高斯过程贝叶斯视角的非参数化王者如果说RBF网络是“基于记忆”的局部模型那么高斯过程Gaussian Process, GP则提供了一种全局的、贝叶斯概率化的建模框架。这是本章乃至整本书中最优雅的概念之一。高斯过程的核心思想我们不对函数 $f(\mathbf{x})$ 的具体参数形式做假设如线性、多项式而是直接对函数本身定义一个先验概率分布。高斯过程先验假设对于输入空间中的任意有限个点 $\mathbf{x}_1, ..., \mathbf{x}_N$其函数值 $f(\mathbf{x}_1), ..., f(\mathbf{x}_N)$ 的联合分布是一个多元高斯分布。这个多元高斯分布由两部分完全确定均值函数 $m(\mathbf{x})$通常设为0数据可以预先标准化。协方差函数核函数 $k(\mathbf{x}, \mathbf{x})$它定义了任意两点函数值之间的相关性。这正是核函数大显身手的地方我们常用的高斯核RBF核在这里就是高斯过程的一个协方差函数它表达了“输入点越近其函数值越相关”的信念。高斯过程回归GPR的流程堪称贝叶斯推断的典范先验假设观测到的数据 $\mathbf{t}$ 来自带有高斯噪声的函数$t_n f(\mathbf{x}_n) \epsilon_n$其中 $\epsilon_n \sim \mathcal{N}(0, \beta^{-1})$。函数 $f$ 服从一个GP先验均值为0协方差为 $k$。后验给定训练数据 $(\mathbf{X}, \mathbf{t})$对于新的测试点 $\mathbf{x}^$我们可以计算出其后验分布 $p(f^| \mathbf{x}^*, \mathbf{X}, \mathbf{t})$。这个后验分布仍然是一个高斯分布其均值和方差有闭式解后验均值$\mathbb{E}[f^*] \mathbf{k}^T (\mathbf{K} \beta^{-1}\mathbf{I})^{-1} \mathbf{t}$后验方差$\text{var}[f^] k(\mathbf{x}^, \mathbf{x}^*) - \mathbf{k}^T (\mathbf{K} \beta^{-1}\mathbf{I})^{-1} \mathbf{k}$ 其中$\mathbf{K}$ 是训练点之间的协方差矩阵$\mathbf{k}$ 是测试点与所有训练点之间的协方差向量。预测我们不仅得到一个点预测后验均值还得到了一个不确定性估计后验方差。这个不确定性会随着我们远离已有的观测数据而增大这完美地体现了模型对未知区域的认知不确定性。高斯过程分类GPC则更复杂一些因为分类的似然如伯努利似然不是高斯的导致后验不再有解析解。我们需要用近似推断方法如拉普拉斯近似或期望传播EP来逼近这个非高斯的后验。虽然计算更复杂但GPC同样能提供预测的概率输出这在许多需要不确定性校准的场景如医疗诊断、自动驾驶中至关重要。自动相关确定Automatic Relevance Determination, ARD是高斯过程中一个极其强大的特性。当我们使用如下的ARD版本的RBF核时 $$ k(\mathbf{x}, \mathbf{x}) \theta_0 \exp\left(-\frac{1}{2} \sum_{d1}^{D} \eta_d (x_d - x_d)^2\right) $$ 每个输入维度 $d$ 都有一个独立的长度尺度参数 $\eta_d$或 $\ell_d 1/\sqrt{\eta_d}$。在模型训练通过最大化边缘似然过程中如果某个维度 $d$ 对解释输出变量没有帮助其对应的 $\eta_d$ 会变得非常小$\ell_d$ 变得非常大。这意味着在该维度上函数变化非常缓慢该维度被 effectively “关闭”了。ARD因此实现了内置的特征选择。我在处理高维但特征重要性不均的数据时如基因表达数据ARD-GP的效果往往比手动特征选择或普通GP要好得多。高斯过程的实战陷阱与技巧计算复杂度训练需要计算 $(\mathbf{K} \sigma^2\mathbf{I})^{-1}$ 和其行列式用于边缘似然复杂度是 $O(N^3)$其中 $N$ 是样本数。这使得标准GP难以处理超过几千个样本的数据集。必须使用稀疏近似、随机特征展开等技巧。核函数选择核函数定义了函数的先验平滑度、周期性等性质。选错核结果可能很差。通常从RBF核开始如果数据有周期性可以尝试RBF * Periodic核。超参数优化通过最大化边缘似然来优化核超参数如长度尺度 $\ell$、噪声方差 $\sigma^2$。这是一个非凸优化问题需要多次随机初始化以避免局部最优。scikit-learn的GaussianProcessRegressor提供了这个功能但要注意初始值的设置。5. 核方法全景图优势、局限与选用指南走完了从理论到模型的旅程我们最后站在高处审视一下核方法这个强大的工具箱。核方法的优势理论优雅有坚实的函数空间理论再生核希尔伯特空间RKHS作为支撑。非线性能力强大通过核技巧可以隐式地在高维甚至无限维空间进行线性操作拟合复杂的非线性关系。全局最优对于像SVM这样的凸优化问题能保证找到全局最优解避免了神经网络可能陷入局部最优的问题。概率化输出特指GP高斯过程天然提供预测不确定性这是很多点估计模型不具备的。适用性广通过设计结构化核可以处理字符串、图等非向量数据。核方法的局限计算与存储瓶颈对偶表示和GP都涉及计算和存储整个 $N \times N$ 的核矩阵。$O(N^3)$ 的训练复杂度和 $O(N^2)$ 的存储复杂度使其难以扩展到大数据10k样本。核函数与超参数选择核函数的选择和超参数如RBF的 $\gamma$的调优非常关键且缺乏自动化的标准流程严重依赖经验。可解释性差模型最终表示为支持向量的组合或者是一个复杂的协方差结构其决策过程不像线性模型或树模型那样直观。在线学习困难新来一个样本可能改变所有支持向量系数SVM或需要重新计算整个后验GP难以进行高效的在线更新。如何选择一些个人经验数据量小几千且需要不确定性估计首选高斯过程回归/分类。它在小数据上能发挥最大威力超参数可以通过最大化边缘似然自动调整ARD还能做特征选择。数据量中等核心任务是分类/回归且对概率输出不敏感支持向量机SVM依然是强大的基准模型。从RBF核开始调参重点关注C正则化系数和gamma。数据量大1万核方法的原生形态会非常慢。可以考虑使用线性核SVM相当于逻辑回归的加强版。使用随机傅里叶特征等核近似方法将核方法转化为显式的线性模型。直接转向深度学习模型它们在大量数据下更能发挥优势。需要快速原型或极度简单的模型可以尝试Nadaraya-Watson式的核平滑方法配合快速的近邻搜索库。数据是序列、图等结构化数据研究并使用专门的结构化核这可能是核方法最能体现其独特价值的领域。核方法尤其是高斯过程给我最大的启示是一种建模哲学我们对世界的认知总是伴随着不确定性一个好的模型应该能同时告诉我们“它认为是什么”以及“它有多确定”。虽然在今天深度学习当道的时代核方法因其计算瓶颈在主流大数据应用上有所式微但它在小数据、需要不确定性量化、以及具有特殊结构数据的场景下依然有着不可替代的价值。理解它不仅能多掌握一种工具更能深化我们对“学习”本身的理解——从基于相似性的推理核到概率化的信念更新高斯过程这是一条清晰而优美的思想脉络。
返回列表