Haicang
注:
对于一些专有名词的翻译可能不准确。
对公式的编号与 PRML 中相同。
Kernel Methods
Overview
在 linear parametric models (参数模型)中,我们通过学习 y=wTx+b y = w T x + b 中的 w w ,而在学习完成后,我们丢弃了整个训练集,使用这个式子对新的数据进行预测。
而在另外一类模型比如 KNN (K-临近)中,模型只是记住了整个训练集,在预测时,通过某种准则(metric)(例如:距离该点最近的几个点是什么类别)来进行预测。这类模型通常训练很快,但做预测时相对比较慢。
那么,能否将两者结合起来呢?事实上 linear parametric models (线性参数模型)可以通过某种 dual representation (对偶表示)[1] 转化为依赖训练样本点的模型。这种 dual representation 通过kernel function(核函数)进行实现:
很明显,kernel 具有对称性: k(x,x′)=k(x′,x) k ( x , x ′ ) = k ( x ′ , x ) 。可以将 kernel 看作某种形式的内积,因此,kernel 的结果是一个 scalar(标量)。
在 (6.1) 中,
ϕ(x)
ϕ
(
x
)
是 feature space mapping(特征映射),通常映射到一个高维向量。为什么要这么做,因为对于 N 个点,它们在 N 维的空间中总是线性可分的[2]!这样,我们可以将 linear parametric model 改写为下面的形式,这其实就是一个 generalized linear model (广义线性模型):
由于在高维空间中, ϕ(x) ϕ ( x ) 是线性可分的,因此上面的线性分类就有很好的效果。
那么,现在的问题是,
ϕ(x)
ϕ
(
x
)
和
w
w
都是高维的,这样就带来了很大的计算开销,而且 也无法训练。这样,前面的 kernel function 就能够有用了。也许
ϕ(x)
ϕ
(
x
)
维度很高,难以计算,但 kernel 通常容易计算(维度很低),这样,即便
ϕ(x)
ϕ
(
x
)
是无限维的向量,其 kernel 也是可计算的(这种方法被称作 kernel trick 或者 kernel substitution) 。而通过 dual representation 的推导(PRML 6.1.),式子中的
w
w
也消失。跳过中间的求导步骤(那些式子的总是长得非常可怕,但其实际意义却是简单的),最终的得到的式子如下:
这个式子中, k(x) k ( x ) 是新的测试数据与每个训练数据之间的 kernel ,维度是 RN×1 R N × 1 ,这里的 N N 是训练样本数量。 是每对训练数据之间的 kernel,维度是 RN×N R N × N 。 t t 是 N 个训练数据的 target(标签),维度是。不必具体理解每个符号的含义,总之,在这个模型中,我们通过可以通过有限维的 Kernel 计算无限维的 linear parametric model,因此,所有的数据点在这无限维的空间上都是线性可分的。
但问题是,如果 N N 很大,这个计算开销也是很大的,因此实际中也几乎不用这个公式。这个问题的解决方法是,使用之后的 SVM(support vector machine,支持向量机);在分类问题中,我们更关心的是类边界上的点,SVM 就是通过计算一些关键点的 kernel 来进行分类的,而这些关键点(support vector)是非常少的。
Constructing Kernels
可以先找到 再通过计算得到 kernel,也可以直接定义 kernel,但是在定义 kernel 之后,我们怎样确定它一定是一个有效的 kernel 呢?两个条件如下:
kernel 必须对称
K 必须半正定 [3]
这里的
K
K
就是 (6.9) 式子中的 ,它有个名字叫做 Gram matrix ,它长成这个样子
Kij=(k(xi,xj))
K
i
j
=
(
k
(
x
i
,
x
j
)
)
, 也就是:
两种常见的 kernel 是:
- 多项式核: k(x,x′)=(xTx′+b)m k ( x , x ′ ) = ( x T x ′ + b ) m
- 高斯核: k(x,x′)=exp{−||x−x′||22σ2} k ( x , x ′ ) = exp { − | | x − x ′ | | 2 2 σ 2 }
如果对高斯核进行 Taylor 展开,发现它是无限维的。PRML 书上给出了构造核函数的一些公式。
Footnotes
[1] “dual” 的本意是“成双的”,对此,我的理解是,在 dual representation 的式子,
x
x
都是出现在 kernel 里,而 的形式中,
x
x
总是 dual 的。但我并不理解很多人将其翻译为“对偶”的含义。
[2] 如果这 N 个点是真的在 N 维中的话,像三维空间中的一条直线就不能真的算是三维。
[3] 称矩阵 是半正定的(positive semidefinitive),如果
∀x∈Rn
∀
x
∈
R
n
,都有
xTMx≥0
x
T
M
x
≥
0
;如果
xTMx>0
x
T
M
x
>
0
,则称
M
M
<script type="math/tex" id="MathJax-Element-60">M</script> 是正定的(positive defivitive)
Reference
[1] Bishop, PRML (Pattern Recognition and Machine Learning).
[2] cs229
[3] Machine learning course at Univ. Wien