Loading [MathJax]/extensions/TeX/mathchoice.js

Boostable

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  116 随笔 :: 0 文章 :: 28 评论 :: 92566 阅读
Kernels

    我们首先来回顾kernel函数的定义:一个函数K(x,y)为kernel函数当且仅当对g,K(x,y)g(x)g(y)dxdy0成立。另外,根据Mercer's theorem,存在一个映射Φ使K(x,y)=Φ(x),Φ(y),并且对任意有限的点,kernel矩阵是半正定的。

一、核函数的封闭性

Hadamard product:

AB=[a11b11a12b12a1nb1nam1bm1am2bm2amnbmn] Kronecked product:

AB=[a11Ba12Ba1nBam1Bam2BamnB]

K1(x,y),K2(x,y)为kernel函数,则以下式子仍为kernel函数。

  1. K1(x,y)+K2(x,y)
  2. aK1(x,y),(a>0)
  3. K1(x,y)K2(x,y)
  4. f(x)f(y)f
  5. xAy,for positive semidefinite A 
  6. f(x)K1(x,y)f(y),f
  7. q(K1(x,y)), 其中q是非负系数的多项式
  8. exp{K1(x,y)}

二、例子

 令K(x,y)=(\langle x,y\rangle+C)^d=\sum_{s=0}^d\binom{d}{s}C^s\langle x,y\rangle^{d-s},(C\geq 0)

这个函数可以看成单项为\langle x,y\rangle^{d-s}的一个多项式,系数为\binom{d}{s}C^s,所以它是个核函数。当C=0时,(\langle x,y\rangle)^r=(x_1y_1+x_2y_2+\cdots+x_my_m)^r

可以把上式看成一个单项为x_1^{i_1}y_1^{i_1}x_2^{i_2}y_2^{i_2}\cdots x_m^{i_m}y_m^{i_m}所组成的多项式,其中i_1+i_2+\cdots+i_m=r,i_1,i_2,\cdots,i_m\geq 0

\Phi(x)\triangleq\left[\begin{array}&\vdots\\x_1^{i_1}x_2^{i_2}\cdots x_m^{i_m}\\\vdots\end{array}\right],则(\langle x,y\rangle)^r=\langle\Phi(x),\Phi(y)\rangle=K(x,y),可以证明上式的映射\Phi(x)\binom{M+r-1}{r}维。

 证明:(重复排列的证明)

命题等价于从1,2,\cdots,m中选出r个数的重复排列。设选出的数为a_1,a_2,\cdots,a_r,其中令a_1\leq a_2\leq\cdots\leq a_r。命题等价于求满足上述不等式a_1,a_2,\cdots,a_r的组合个数。构造b_1=a_1,b_2=a_2+1,\cdots,b_i=a_i+(i-1),\cdots,b_r=a_r+(r-1),其中b_1<b_2<\cdots<b_rb_ia_i对应,所以命题又等价于求b_i的组合数,而b_i取值于1\sim (n+m-1),故b_i的组合数为\binom{n+m-1}{m}

 从上述可以看出映射后的空间维数是非常大的,而引入核函数使我们只需要利用核函数进行计算,从而可以省去中间的映射过程。

高斯核函数:K(x,y)=exp\{-\frac{1}{2}\|x-y\|^2\},as the pointwise limit of polynomials。高斯核函数对应的映射为无限维。

Pointwise convergence:假定\{f_n\}是一个有相同定义域和上域的函数序列,\{f_n\}逐点收敛于f,记\lim_{n\to\infty}f_n=f,当且仅当\lim_{n\to\infty}f_n(x)=f(x)\forall x属于定义域都成立。

 三、不同核函数所对应的映射

     对于每一个核函数K_i,必定对应着至少一个映射\Phi_i。假设K_1(x,y),K_2(x,y)对应的映射为\Phi_1,\Phi_2,则:

  1. K(x,y)=K_1(x,y)+K_2(x,y)对应的映射为\Phi(x)=(\Phi_1(x),\Phi_2(x))^\prime
  2. K(x,y)=aK_1(x,y),a>0对应的映射为\Phi(x)=\sqrt{a}\Phi_1(x)
  3. K(x,y)=K_1(x,y)K_2(x,y)对应的映射为\Phi(x)_{ij}=\Phi_1(x)_i\Phi_2(x)_j,即\Phi(x)=\left[\begin{array}&\Phi_1(x)_1\Phi_2(x)_1\\\vdots\\\Phi_1(x)_1\Phi_2(x)_n\\\vdots\\\Phi_1(x)_n\Phi_2(x)_1\\\vdots\\\Phi_1(x)_n\Phi_2(x)_n\end{array}\right]
  4. K(x,y)=f(x)f(y),\forall f对应的映射的\Phi(x)=f(x)
  5. K(x,y)=x^\prime\mathbf{A}y,其中\mathbf{A}为半正定,对应的映射为\Phi(x)=\mathbf{L}^\prime x,其中\mathbf{A}=\mathbf{L}\mathbf{L}^\prime(Cholesky分解)

 四、在映射后的空间中操作

 1)\|\Phi(x)\|=\sqrt{\langle\Phi(x),\Phi(x)\rangle}=\sqrt{K(x,x)}

 2) 单位化:\tilde{\Phi}(x)=\frac{\Phi(x)}{\|\Phi(x)\|}

\tilde{K}(x,y)=\langle \tilde{\Phi}(x),\tilde{\Phi}(y)\rangle=\frac{\langle \Phi(x),\Phi(y)\rangle}{\|\Phi(x)\|\|\Phi(y)\|}=\frac{K(x,y)}{\sqrt{k(x,x)K(y,y)}},为正则化的kernel(Normalized kernel)。

 3)线性组合的范数

\begin{align*}\|\sum_{i}\alpha_i\Phi(x_i)\|^2&=\langle \sum_i\alpha_i\Phi(x_i),\sum_j\alpha_j\Phi(x_j)\rangle\\&=\sum_{i,j}\alpha_i\alpha_j\langle\Phi(x_i),\Phi(x_j)\rangle\\&=\sum_{i,j}\alpha_i\alpha_jK(x_i,x_j)\\&=\alpha^\prime K\alpha\end{align*}

五、最后

    关于kernel的内容有非常多的东西,这里我只是简单的介绍(其实我对kernel也就懂这么点皮毛)。有兴趣的可以看看这本专门介绍kernel的书籍<Kernel Methods for Pattern Analysis>,还有论文<An Introduction to Kernel-Based Learning Algorithms>。

 

posted on   Boostable  阅读(356)  评论(0)    收藏  举报
编辑推荐:
· 如何统计不同电话号码的个数?—位图法
· C#高性能开发之类型系统:从 C# 7.0 到 C# 14 的类型系统演进全景
· 从零实现富文本编辑器#3-基于Delta的线性数据结构模型
· 记一次 .NET某旅行社酒店管理系统 卡死分析
· 长文讲解 MCP 和案例实战
阅读排行:
· C#高性能开发之类型系统:从 C# 7.0 到 C# 14 的类型系统演进全景
· 管理100个小程序-很难吗
· 基于Blazor实现的运输信息管理系统
· 如何统计不同电话号码的个数?—位图法
· 微信支付功能的设计实现与关键实践(UniApp+Java)全代码
点击右上角即可分享
微信分享提示