基函数、核函数与Kernel trick

文章目录

  • [1. 什么是基函数](#1. 什么是基函数)
  • [2. 什么是核函数(kernel function)](#2. 什么是核函数(kernel function))
    • [2.1 简单直观理解](#2.1 简单直观理解)
    • [2.2 深入理解核函数](#2.2 深入理解核函数)
    • [2.3 核函数与内核空间定义](#2.3 核函数与内核空间定义)
  • [3. 常用一些核函数](#3. 常用一些核函数)
    • [3.1 线性核函数](#3.1 线性核函数)
    • [3.2 多项式核函数](#3.2 多项式核函数)
    • [3.3 径向基函数(RBF)/高斯核函数](#3.3 径向基函数(RBF)/高斯核函数)
  • [4. 理解误区------核函数就是映射函数](#4. 理解误区——核函数就是映射函数)
  • References

1. 什么是基函数

基函数是在函数空间中的一组基础函数,构成函数空间的基本单元,可以用来表示其他函数,类似于向量空间中的基向量。

作用是线性组合以逼近复杂函数,显式地构建函数表达。

常见的基函数有:

  • 指数基函数: b i ( x ) = e a i x bi(x) = e^{ai x} bi(x)=eaix
  • 指数幂基函数: b i ( x ) = ( e a i x ) p bi(x) = (e^{ai x})^p bi(x)=(eaix)p
  • 正弦基函数: b i ( x ) = sin ⁡ ( a i x ) bi(x) = \sin(ai x) bi(x)=sin(aix)
  • 余弦基函数: b i ( x ) = cos ⁡ ( a i x ) bi(x) = \cos(ai x) bi(x)=cos(aix)
  • 多项式基函数: b i ( x ) = x p b_i(x) = x^p bi(x)=xp
  • 高斯基函数: b i ( x ) = e − ( x − a i ) 2 / 2 σ 2 bi(x) = e^{-(x - ai)^2 / 2 \sigma^2} bi(x)=e−(x−ai)2/2σ2

这些基函数可以组合起来构成更复杂的函数,以适应不同的数据分布和特征关系。


2. 什么是核函数(kernel function)

2.1 简单直观理解

简单来说,核函数就是距离函数。

就是输入任意两个点的坐标,核函数就可以输出他们的距离。

为什么定义核函数?之所以要把核函数单独定义出来,是因为在不同场景下,会定义不同的距离,即不同核函数提取了不同的特征。

如果单纯应用核函数的话,了解到这里就足够了。


2.2 深入理解核函数

理解:核函数的作用是将数据从原始空间映射到更高维空间。

假设我们总能使用点积的形式来计算两个向量之间的距离:
< a , b > = a ⋅ b = ∣ a ∣ ⋅ ∣ b ∣ ⋅ c o s θ . <\mathbf{a},\mathbf{b}>=\mathbf{a} \cdot \mathbf{b}=|\mathbf{a}|\cdot |\mathbf{b}| \cdot cos \theta. \quad\quad\quad <a,b>=a⋅b=∣a∣⋅∣b∣⋅cosθ.

然而,考虑下面一组点,其中一些位于圆心附近,一些位于圆的边缘。如果只使用点积,我们无法有效地区分这两组点。

这时,高斯核函数就显得非常有用,其可以有效地区分这些点。其相当于将原始数据由二维变换到三维空间中,在三维空间中,变成了线性可分的问题,只需要一个平面就能划分。具体的高斯核函数在3.3节介绍。

然而,现在面临一个问题:径向基函数不符合点积的形式。在不改变我们对点积形式的基本假设的情况下,如何实现高斯核函数的效果呢?

答案在于将原始的二维数据映射到一个更高维的空间,在这个高维空间中,数据点之间的点积刚好对应于高斯核的形式!
即,总存在一种将原始数据空间映射到更高维空间的方法,这样在更高维空间中,两个数据点的点积就等同于高斯核函数。


2.3 核函数与内核空间定义

如图所示,图1为在当前二维空间下线性不可分的情况,我们将其变换到三维空间,在这个空间中,变为了线性可分问题,如图2所示。这个线性平面,返回到原空间就是一个形状类似椭圆的决策边界(图3),从而找到了原空间的非线性分类边界。

内核策略(kernel trick)主要用于将非线性问题转化为线性问题

基本思想是将输入空间的数据映射到高维特征空间,使得原本在低维空间中不可分的问题在高维空间中变得线性可分。

核心 在于使用核函数(kernel function) 来计算数据点在高维空间中的内积(距离),从而避免了显式地将数据映射到高维空间,大大节省了计算资源。

假设有一个映射函数 Φ = X → H \Phi =\mathcal{X} \to \mathcal{H} Φ=X→H,将输入空间 X \mathcal{X} X 中的数据点映射到特征空间 H \mathcal{H} H。

在特征空间中,数据点之间的相似度可以通过内积 ⟨ Φ ( x ) , Φ ( y ) ⟩ \left \langle \Phi(x),\Phi(y) \right \rangle ⟨Φ(x),Φ(y)⟩ 来度量。

然而,直接计算映射 Φ \Phi Φ 可能是非常昂贵的,尤其是在特征空间维度极高时。

因此,核函数 κ : X × X → R \kappa : \mathcal{X} \times \mathcal{X} \to \mathbb{R} κ:X×X→R 定义为: κ ( x , y ) = ⟨ Φ ( x ) , Φ ( y ) ⟩ \kappa(x,y)=\left \langle \Phi(x),\Phi(y) \right \rangle κ(x,y)=⟨Φ(x),Φ(y)⟩

它允许我们在不显式地计算 Φ ( x ) \Phi(x) Φ(x) 的情况下,直接计算映射后数据点的内积


3. 常用一些核函数

3.1 线性核函数

κ ( x , y ) = ⟨ x , y ⟩ \kappa(x,y) = \left \langle x,y \right \rangle κ(x,y)=⟨x,y⟩

3.2 多项式核函数

κ ( x , y ) = ( γ ⟨ x , y ⟩ + r ) d \kappa(x,y) = (\gamma \left \langle x,y \right \rangle + r)^d κ(x,y)=(γ⟨x,y⟩+r)d

其中, γ \gamma γ是内积的缩放函数, r r r 是偏置项, d d d 是多项式的阶数。

3.3 径向基函数(RBF)/高斯核函数

κ ( x , y ) = exp ( − ∥ x − y ∥ 2 2 σ 2 ) = exp ( − γ ∥ x − y ∥ 2 ) \kappa(x,y)=\text{exp}(-\frac{\|x-y\|^2}{2\sigma^2})=\text{exp}(-\gamma \|x-y\|^2) κ(x,y)=exp(−2σ2∥x−y∥2)=exp(−γ∥x−y∥2)

其中 σ \sigma σ是宽度参数,决定了高斯核的平滑程度。即 γ \gamma γ 参数决定了数据映射到高维空间中的"紧密程度"。参考取值为所有数据距离的中位数。

径向基函数可以将数据点映射到无限维的特征空间,适用于处理非线性关系。


4. 理解误区------核函数就是映射函数

【e.g.】举个简单的例子,如图所示,一维数据线性不可分,增加一维变为 x 2 x^2 x2,就变为线性可分了。

这里的 x 2 x^2 x2 是核函数还是映射函数?答案是映射函数。

再回顾一下核函数的定义,核函数是计算数据点在高维空间中的内积(距离) ,从而避免了显式地将数据映射到高维空间,大大节省了计算资源。

也就是说,核函数不会 将低维不可分数据映射为高维数据,即不需要生成映射数据,不用知道具体的映射函数是什么,而是直接生成 等同于映射为高维数据点之间的内积结果

核函数和映射函数没有关系!核函数只是用来计算映射到高维空间之后数据间内积的一种简便方法。

只要核函数满足一定条件,那么映射空间一定存在。


References

  1. 基函数与函数内积: 高级概念解析
  2. 核函数介绍
  3. 高斯核函数背后的哲学思想与数学思想
  4. 内核策略(Kernel Trick)
  5. 核函数(多项式,高斯核)以及svm解决回归问题
相关推荐
海棠AI实验室15 分钟前
AI的进阶之路:从机器学习到深度学习的演变(一)
人工智能·深度学习·机器学习
hunteritself17 分钟前
AI Weekly『12月16-22日』:OpenAI公布o3,谷歌发布首个推理模型,GitHub Copilot免费版上线!
人工智能·gpt·chatgpt·github·openai·copilot
IT古董1 小时前
【机器学习】机器学习的基本分类-强化学习-策略梯度(Policy Gradient,PG)
人工智能·机器学习·分类
centurysee1 小时前
【最佳实践】Anthropic:Agentic系统实践案例
人工智能
mahuifa1 小时前
混合开发环境---使用编程AI辅助开发Qt
人工智能·vscode·qt·qtcreator·编程ai
四口鲸鱼爱吃盐1 小时前
Pytorch | 从零构建GoogleNet对CIFAR10进行分类
人工智能·pytorch·分类
蓝天星空1 小时前
Python调用open ai接口
人工智能·python
睡觉狂魔er1 小时前
自动驾驶控制与规划——Project 3: LQR车辆横向控制
人工智能·机器学习·自动驾驶
scan7242 小时前
LILAC采样算法
人工智能·算法·机器学习
leaf_leaves_leaf2 小时前
win11用一条命令给anaconda环境安装GPU版本pytorch,并检查是否为GPU版本
人工智能·pytorch·python