机器学习中的核方法

一、说明

线性模型很棒,因为它们易于理解且易于优化。他们受苦是因为他们只能学习非常简单的决策边界。神经网络可以学习更复杂的决策边界,但失去了线性模型良好的凸性特性。

使线性模型表现出非线性的一种方法是转换输入。例如,通过添加特征对作为附加输入。在这种表示上学习线性模型是凸的,但在除了非常低维的空间之外的所有空间中,计算量都是令人望而却步的。有人可能会问:是否可以保留原始数据表示,而不是显式扩展特征空间,并且所有特征都会破坏 隐式 ?令人惊讶的是,答案通常是"是",而使这成为可能的技术系列被称为内核方法。

二、从特征组合到内核

增加线性模型表达能力的一种方法是爆炸特征空间。例如,"二次"特征爆炸可能会将特征向量x = <x_1, x_2,x_3,...,x_D> 映射到表示为 φ(x) 的扩展版本:

然后我们可以在扩展的特征空间上训练分类器。这样做有两个主要问题。第一个是计算性的:如果您的线性算法在特征数量上线性扩展,那么您只需对需要执行的计算量进行平方即可;您还计算了所需内存量的平方。第二个是统计方面的:如果您按照启发式,每个特征应该有大约两个示例,那么您现在将需要二次方数量的训练示例,以避免过度拟合。

我们将在这篇文章中尝试解决计算问题。

基于内核的学习的关键见解是,您可以以不需要显式计算 φ( x) 的方式重写许多线性模型。 首先,您可以将其视为纯粹的计算"技巧",使您能够使用二次特征映射的强大功能,而无需实际计算和存储映射向量。稍后你会发现它更深一些。我们讨论的大多数算法在执行特征映射后都涉及w · φ( x )形式的乘积。目标是重写这些算法,以便它们只依赖于两个示例(例如xz)之间的点积; 即,它们取决于 φ( x ) · φ( z )。要理解为什么这很有用,请考虑上面的二次展开和两个向量之间的点积。你得到:



因此,计算 φ( x ) · φ( z ) 所需的时间与计算 x · z所用的时间完全相同(加上执行加法和乘法所需的时间)。

其余的实际挑战是重写算法,以便它们依赖于示例之间的点积,而不是任何显式的权重向量。

三、核化感知器

让我们考虑上一篇文章中的原始感知器算法,这里使用线性代数符号和特征扩展符号 φ(x ) 进行重复。

ba 复制代码
PerceptronTrain(D,MaxIter) 

w <- 0                    // initialize weights
b <- 0                                 // initialize bias
for iter=1 to MaxIter do
  for all (x,y) ∈ D do
     a ←  w · φ( x) + b                  // compute activation for this example
     if ya <= 0 then
       w ← w + y φ(x )                           // update weights
       b <- b + y                          // update bias 
     endif
  endfor
endfor
return w, b  

在这个算法中,有两个地方明确使用了φ( **x ) 。**第一个是计算激活(第 4 行),第二个是更新权重(第 6 行)。目标是消除该算法对 φ 和权重向量的显式依赖。

为此,您可以观察到在算法中的任何点,权重向量w 都可以写成扩展训练数据的线性组合。特别是,在任意点,对于某些参数 α, w = Σ α_nφ(x_n)。最初,w = 0, 因此选择α = 0 会产生此结果。如果第一次更新发生在第 n 个训练样本上,则分辨率权重向量就是 y_n φ(x_n),相当于设置 α_n = y_n。如果第二次更新发生在第 m 个训练样本上,那么您所需要做的就是更新 α_m ← α_m + y_m。这一观察结果引出了以下表示定理, 该定理指出感知器的权重向量位于训练数据的范围内。

感知器表示定理: 在感知器算法运行期间,权重向量 w 始终位于(假设非空)训练数据φ(x_1 ), 的范围内。。。, φ (x_N)。

证明。 通过归纳法。基本情况:任何非空集的跨度都包含零向量,即初始权重向量。归纳情况:假设定理在第 k 次更新之前为真,并假设第 k 次更新发生在示例 n 上。根据归纳假设,可以在更新前写出**w = Σ α_i φ(x_i) 。**新的权重向量为 [Σ α_i φ(x_i )] + y_n φ( x_n ) = Σ (α_i + y_n [ i = n])φ (x_i ),仍然在训练数据的范围内。

并不是说我们知道对于某些 α_is 总是可以写出w = Σα_nφ(x_n),我们还可以将激活(第 4 行)计算为:

现在,这仅取决于数据点之间的点积,并且从不明确需要权重向量。您现在可以重写整个感知器算法,以便它永远不会明确引用权重,而仅依赖于示例之间的成对点积

这种"核化"算法的优点是,您可以"免费"执行特征扩展,例如简介中的二次特征扩展。例如,对于与二次特征完全相同的成本,您可以使用**三次特征图,**计算为 φ( ̈ x)φ(z) = (1 + x · z)³,它对应于变量之间的三向交互。(而且,一般来说,您可以在相同的计算复杂度下对任何多项式次数 p 执行此操作。)

四、什么构成了内核?

内核只是广义点积的一种形式。您也可以将其视为 φ( x ) · φ( z ) 的简单简写。这通常称为xaz之间的内核乘积。

从这个角度来看,我们在上一节中看到的是,您可以重写感知器算法(这同样适用于许多其他算法),以便它们仅依赖于数据点之间的内核乘积,而不依赖于实际数据*点他们自己。*这是一个非常强大的概念,因为它使得大量非线性算法的开发基本上"免费"(通过应用所谓的内核技巧)。

4.1 核函数的特点

机器学习(包括 SVM(支持向量机))中使用的核函数具有几个重要特征,包括:

  • **Mercer 条件:**核函数必须满足 Mercer 条件才有效。这个条件确保核函数是半正定的,这意味着它总是大于或等于零。
  • **正定性:**如果核函数始终大于零(除非输入彼此相等),则该核函数是正定的。
  • **非负性:**核函数是非负的,这意味着它为所有输入生成非负值。
  • **对称性:**核函数是对称的,这意味着无论输入的顺序如何,它都会产生相同的值。
  • **再现性:**如果核函数可以用来重建特征空间中的输入数据,则它满足再现性。
  • **平滑度:**如果核函数能够将输入数据平滑地变换到特征空间,则称该核函数是平滑的。
  • **复杂性:**核函数的复杂性是一个重要的考虑因素,因为更复杂的核函数可能会导致过度拟合并降低泛化性能。

基本上,核函数的选择取决于具体问题和数据的特征,选择合适的核函数可以显着影响机器学习算法的性能。

4.2 内核函数

核是用于将原始输入数据点映射到高维特征空间的数学函数,因此,即使数据点在原始输入空间中不是线性可分的,也可以轻松找到超平面。一些常见的核函数包括线性核函数、多项式核函数、径向基函数 (RBF) 和 sigmoid 核函数。

标准核函数方程:

高斯核:

高斯核用于在没有数据先验知识的情况下执行变换。

sigmoid函数:

该函数相当于神经网络的第二层感知器模型l,用作人工神经元的激活函数。

五、结论

关于内核函数,将数据通过一个非线性函数映射,通过阔维,可以将不可分问题,形成线性可分问题。关于此问题我们后面将用更多文章论述。
参考资料:
内核方法
算法
机器学习
数据科学
弗朗西斯科·佛朗哥

相关推荐
千匠网络2 小时前
破局出海壁垒,千匠网络新能源汽车跨境出海解决方案
人工智能
马丁聊GEO4 小时前
解码AI用户心智,筑牢可信GEO根基——悠易科技深度参与《中国AI用户态度与行为研究报告(2026)》发布会
人工智能·科技
nap-joker4 小时前
Fusion - Mamba用于跨模态目标检测
人工智能·目标检测·计算机视觉·fusion-mamba·可见光-红外成像融合·远距离/伪目标问题
一只幸运猫.4 小时前
2026Java 后端面试完整版|八股简答 + AI 大模型集成技术(最新趋势)
人工智能·面试·职场和发展
Promise微笑4 小时前
2026年国产替代油介损测试仪:油介损全场景解决方案与技术演进
大数据·网络·人工智能
深海鱼在掘金4 小时前
深入浅出 LangChain —— 第三章:模型抽象层
人工智能·langchain·agent
生信碱移4 小时前
PACells:这个方法可以鉴定疾病/预后相关的重要细胞亚群,作者提供的代码流程可以学习起来了,甚至兼容转录组与 ATAC 两种数据类型!
人工智能·学习·算法·机器学习·数据挖掘·数据分析·r语言
workflower4 小时前
具身智能行业应用-生活服务业
大数据·人工智能·机器人·动态规划·生活
GitCode官方5 小时前
基于昇腾 MindSpeed LLM 玩转 DeepSeekV4-Flash 模型的预训练复现部署
人工智能·开源·atomgit
大刘讲IT5 小时前
AI重塑企业信息价值标准:从“系统供给”到“用户定义”的企业数字化新范式
人工智能·经验分享·ai·制造