图谱连接

草稿

核函数

像已经把输入映射进特征空间一样比较两个输入,而且通常不需要显式构造那个空间。

concept intermediate machine-learningkernelssimilarity

Hook problem:先映射可能很贵

特征映射说的是:“先改写每个输入,再比较改写后的向量。”这很清楚,但当新向量非常大时会很浪费。

**核函数(kernel function)**直接询问这个比较结果。

核函数捷径核函数返回映射后的内积,通常不需要真的构造映射向量。
显式路线9

phi(A) * phi(B)

核函数路线9

K(A, B) = (A * B)^2

结果相同

当 phi 很大甚至无限维时,这条捷径很有用。

First naive idea:显式构造所有特征

直接路线是:

  1. 计算 phi(x)
  2. 计算 phi(z)
  3. 对它们做内积。

小的二次映射这样做没问题。但当特征空间有成千上万、上百万,甚至无限多个坐标时,这条路会变得很痛苦。

Core invention:用捷径完成比较

核函数的形式是:

K(x,z)=ϕ(x),ϕ(z)K(x,z)=\langle \phi(x), \phi(z)\rangle

输入 xz 留在原空间里。函数返回它们经过特征映射 phi 后本应得到的内积。

Interactive similarity lab

核相似度实验台

exp(-gamma ||x - z||^2), gamma = 0.500: 把距离近转成相似度高;远点会衰减到接近 0。

把每个点都和选中的锚点比较。注意每种核函数对“接近”的理解不同。

A -> A1

相似度; 点积 2, 距离平方 0

A -> B0.607

相似度; 点积 3, 距离平方 1

A -> C0.082

相似度; 点积 1, 距离平方 5

A -> D0.007

相似度; 点积 -2, 距离平方 10

静态无 JS 兜底:

相似度随距离衰减RBF 让近点高度相似,让远点几乎不相关。
从锚点 A 出发的RBF 核
点积距离平方K(A, z)
A201
B310.607
C150.082
D-2100.007

Valid-kernel boundary

不是任意相似度分数都能作为核方法里的有效核。有效核必须表现得像某个特征空间里的内积,也就是对任意有限样本,它的 Gram 矩阵应当是正半定的。

在这个节点里先记住实用规则:常见核函数有已知的几何含义和适用条件。证明细节留给后续节点。

Implementation sketch

function rbfKernel(x: Point, z: Point, gamma: number) {
  const squaredDistance = (x.a - z.a) ** 2 + (x.b - z.b) ** 2;
  return Math.exp(-gamma * squaredDistance);
}

Common confusions

  • 核函数是关于两个输入的函数,不是新的坐标向量。
  • 核值是某种选定几何下的相似度,不是万能语义相似度。
  • 有些核函数有参数;参数改变,几何也会改变。
核函数学习路径特征映射引出核函数;不同核函数选择不同的相似度含义。
特征映射

基础思想

核函数

基础思想

线性核

具体选择

多项式核

具体选择

RBF 核

具体选择

Sigmoid 核

具体选择

Exercises

  1. K(x,z) 返回什么?
  2. 为什么我们可能不想显式构造 phi(x)
  3. 为什么 Sigmoid 核要比 RBF 核更谨慎地使用?

图谱连接 : 核函数