MachineLearning(4)-核函数与再生核希尔伯特空间

核函数与再生核希尔伯特空间

  • 1.支持向量积-核函数
  • 2.一个函数为核函数的条件
  • 3.核函数与希尔伯特空间
    • 3.1希尔伯特空间-Hilbert空间

1.支持向量积-核函数

核(kernel)的概念由Aizenman et al.于1964年引入模式识别领域,原文介绍的是势函数的方法。在那之后,核函数在模式识别领域沉积了很久。1992年Boser 等人的在解决支持向量机算法时,重新将的概念引入机器学习领域;从此引发了核函数研究应用的热潮。一个最简单的应用就是:利用核方法扩展经典算法,将算法中的内积替换成核函数。

在支持向量机中,核函数是 将 原线性不可分的特征空间中的特征向量xxx,映射到 线性可分的高维特征空间的特征向量ϕ(x)\phi(x)ϕ(x),然后,特征向量ϕ(x)\phi(x)ϕ(x)之间求内积的一个表达式。(核函数就是一个表达式)
k(xn,xm)=ϕ(xn)Tϕ(xm)k(x_n,x_m)=\phi(x_n)^T\phi(x_m)k(xn,xm)=ϕ(xn)Tϕ(xm)

核函数的巧妙之处:高维空间中特征向量的内积表达式,可以直接用低维特征向量的各个维度的坐标表示。所以,只需将低维度特征x,x′x,x'x,x带入核函数k(x,x′)k(x,x')k(x,x)求函数值,就等价于x−>ϕ(x),x′−>ϕ(x′)=>求内积<ϕ(x),ϕ(x′)>x->\phi(x) ,x'->\phi(x')=>求内积<\phi(x),\phi(x')>x>ϕ(x),x>ϕ(x)=><ϕ(x),ϕ(x)>的过程,当高维空间维很高时,内积求解十分缓慢,所以核函数是一个十分便利的工具。

基本概念: 核函数k(x,x′)k(x,x')k(x,x),样本(特征向量){xin}\{x_i^n\}{xin},gram矩阵K={Ki,j}K=\{ K_{i,j} \}K={Ki,j},Ki,j=k(xi,xj)K_{i,j}=k(x_i,x_j)Ki,j=k(xi,xj)
[k(x1,x1)k(x1,x2)...k(x1,xn)k(x2,x1)k(x2,x2)...k(x2,xn)............k(xn,x1)k(xn,x2)...k(xn,xn)]\left[ \begin{matrix} k(x_1,x_1) & k(x_1,x_2) & ... & k(x_1,x_n)\\ k(x_2,x_1) & k(x_2,x_2) & ... & k(x_2,x_n)\\ ... & ...& ... & ... & \\ k(x_n,x_1) & k(x_n,x_2) & ... & k(x_n,x_n) \end{matrix} \right] k(x1,x1)k(x2,x1)...k(xn,x1)k(x1,x2)k(x2,x2)...k(xn,x2)............k(x1,xn)k(x2,xn)...k(xn,xn)

详细SVM与核函数参见(对偶问题的求解巴拉巴拉):https://cuijiahua.com/blog/2017/11/ml_9_svm_2.html



2.一个函数为核函数的条件

可以通过多种方式构造核函数,(1)原始的映射构造法、(2)核函数性质+简单核函数构造法[RBF核函数就可以从此构造出来]、(3)概率生成式模型开始构造。

高维特征向量的内积 实际是 低维特征向量 各个分量的函数=》高维内积 是一个函数。但是,并非每一个函数都对应着一个高维内积。只有当一个函数满足mercer定理时,它才能作为一个核函数。所以可以通过mercer定义判断一个函数是否可以作为一个核函数。


Mercer定理: 对称半正定的函数可以作为一个核函数。

(离散化)简单理解:“半正定”三个字常见于矩阵分析中。此处,可通过判定对称函数Gram 矩阵的半正定性,进而判断源函数的半正定性质。一个n × n的实对称矩阵A是正定的当且仅当对于所有的非零实系数向量z,都有zTAz>0z^TAz > 0zTAz>0

具体做法:将样本{xi=1i=n}\{x_{i=1}^{i=n}\}{xi=1i=n}带入函数k(x,x′)k(x,x')k(x,x),计算gram矩阵K={Ki,j}K=\{ K_{i,j} \}K={Ki,j},Ki,j=k(xi,xj)K_{i,j}=k(x_i,x_j)Ki,j=k(xi,xj),判定gram矩阵的半正定性。

(连续化)定义:一个对称函数k(x,x′)k(x,x')k(x,x)是半正定的,当且仅当对于任意的函数g下式成立:
∫Xg(x)k(x,x′)g(x′)dxdx′≥0\int_\mathcal{X}g(x)k(x,x')g(x')dxdx'\ge0Xg(x)k(x,x)g(x)dxdx0


通过Gram矩阵特征值分解(谱分解),可以将k(xi,xj)k(x_i,x_j)k(xi,xj)表示成gram矩阵特征值与特征向量分量组合的形式:
QTKQ=diag(λ1,λ2,...,λn)=ΛQ^TKQ=diag(\lambda_1,\lambda_2,...,\lambda_n)=\LambdaQTKQ=diag(λ1,λ2,...,λn)=Λ

K=QΛQTK=Q\Lambda Q^TK=QΛQT

QQQ为特征向量矩阵,viv_ivi为n维向量,其第二个下标表示该向量分量:
Q=[v1,v2,...,vn]Q=[v_1,v_2,...,v_n]Q=[v1,v2,...,vn]

K=QΛQT=[λ1v1,λ2v2,...,λnvn][v1,v2,...,vn]TK=Q\Lambda Q^T=[\lambda_1v_1,\lambda_2v_2,...,\lambda_nv_n][v_1,v_2,...,v_n]^TK=QΛQT=[λ1v1,λ2v2,...,λnvn][v1,v2,...,vn]T
=[λ1v11λ2v21...λnvn1λ1v12λ2v22...λnvn2............λ1v1nλ2v2n...λnvnn][v11v12...v1nv21v22...v2n............vn1vn2...vnn]=\left[ \begin{matrix} \lambda_1v_{11}&\lambda_2v_{21}&...&\lambda_nv_{n1}\\ \lambda_1v_{12}&\lambda_2v_{22}&...&\lambda_nv_{n2}\\ ... & ...& ... & ... & \\ \lambda_1v_{1n}&\lambda_2v_{2n}&...&\lambda_nv_{nn} \end{matrix} \right] \left[ \begin{matrix} v_{11}&v_{12}&...&v_{1n}\\ v_{21}&v_{22}&...&v_{2n}\\ ... & ...& ... & ... & \\ v_{n1}&v_{n2}&...&v_{nn} \end{matrix} \right]=λ1v11λ1v12...λ1v1nλ2v21λ2v22...λ2v2n............λnvn1λnvn2...λnvnnv11v21...vn1v12v22...vn2............v1nv2n...vnn

k(xi,xj)=∑k=1nλkvkivkjk(x_i,x_j)=\sum_{k=1}^n\lambda_kv_{ki}v_{kj}k(xi,xj)=k=1nλkvkivkj

注意:vkiv_{ki}vki第一个下标表示:这是第kkk个特征向量,第二个下标表示:这是第kkk个特征向量的第iii个分量。
当特征n→∞n\rightarrow \inftyn时,离散-》连续。vkiv_{ki}vki可以看做第k个特征函数的第i个函数值,即ψk(xi)\psi_k(x_i)ψk(xi)。此时,核函数可以写为:
k(x,x′)=∑jλjψj(x)ψj(x′)k(x,x')=\sum_{j}\lambda_j\psi _j(x)\psi _j(x')k(x,x)=jλjψj(x)ψj(x)


用到的工具:

Mercer定理的一点证明: https://blog.csdn.net/sinat_22510827/article/details/79116612
矩阵特征值分解:https://blog.csdn.net/weixin_42018112/article/details/80250206:
矩阵A的特征向量特征值:Ax=λxAx=\lambda xAx=λx,矩阵A作用于(每一矩阵都对应一个变换)特征向量xxx,其效果等价与对向量xxx做尺度变换。(所以xxx真是一个很神奇的方向呢!!)

每一个矩阵A都相似于一个上三角矩阵:通初等变换可以将一个矩阵转换成一个上三角阵,将这些初等变换乘在一起,就构成了一个变换矩阵。

每次的初等变换选择 特征值变换,且,矩阵A是一个对称矩阵,那矩阵A可以进行特征值分解:
QTAQ=diag(λ1,λ2,...,λn)Q^TAQ=diag(\lambda_1,\lambda_2,...,\lambda_n)QTAQ=diag(λ1,λ2,...,λn)

QQQ的列向量组成AAA的一个完备标准正交向量系。



3.核函数与希尔伯特空间

原来线性映射ϕ(x)\phi(x)ϕ(x) ,它将原始特征空间中的数据点映射到另一个高维空间中。其实这个高维空间在这里有一个华丽的名字——“再生核希尔伯特空间 (Reproducing Kernel Hilbert Space, RKHS)”[1]

所以:每一个核函数都对应着自己的一个再生核希尔伯特空间。

下面先介绍希尔波特空间,再介绍再生核希尔伯特空间。

3.1希尔伯特空间-Hilbert空间

从 泛函 说 希尔伯特空间[2]
希尔伯特空间 是 希尔伯特 在解决 无穷维线性方程组 时提出的概念,原来的线性代数理论都是基于有限维欧几里得空间的,无法适用,这迫使希尔伯特去思考无穷维欧几里得空间,也就是无穷序列空间的性质。

l2l^2l2空间:所有2范数∑xn2\sum x_n^2xn2(n为向量的下标)为有限的 无穷维向量xxx 组成的空间。这是最早的Hilbert space。

L2L^2L2空间:单位闭区间上所有平方可积的实函数(就是说 f(x)的平方在[0,1]上的积分存在且有限)按照函数的加法和数乘成为一个线性空间。
∫f2(x)dx\int f^2(x)dxf2(x)dx

L2L^2L2希尔伯特空间是一个函数空间,其中定义内积如下:
<f,g>=∫∣f∗g∣dx<f,g>= \int|f*g|dx<fg>=fgdx

范数:
‖f‖=<f,f>=∫f2(x)dx‖f‖=\sqrt{<f,f>}=\sqrt{\int f ^2(x)dx}f=<ff>=f2(x)dx

泛函:就是自变量为函数,因变量为实数的映射。一个简单的例子,某一个泛函的定义域在L2L^2L2Hilbert space上。


从 定义 说 希尔伯特空间
向量空间:空间中的点具有加法和数乘的操作
内积空间:向量空间上定义一个内积操作
赋范空间:根据内积可以定义一个范数
度量空间:范数可以用于定义一个度量
Hilbert Space:如果一个空间在其定义的度量下是完备的,那么这个空间叫做 Hilbert Space。[1]
完备性:一个空间上的任意柯西序列必收敛于空间中的某一点——相当于闭集的定义

对于常见的Rn\mathbb{R}^nRn,满足内积运算,能够推导出l2l_2l2范数,且是完备的,所以是希尔伯特空间。欧几里德空间 是 希尔伯特空间的一个重要特例,一个抽象的希尔伯特空间中的元素往往被称为向量。在实际应用中,它可能代表了一列复数或是一个函数。


核函数的再生性
对于任意的f∈Hf\in \mathcal{H}fH,都有:
f(x)=<f(.),k(.,x)>f(x)=<f(.),k(.,x)>f(x)=<f(.),k(.,x)>

k(.,.)被称为希尔伯特空间H\mathcal{H}H的再生核。
由核的再生性还可以推到出:
k(x,x′)=<k(x,.),k(.,x′)>k(x,x')=<k(x,.),k(.,x')>k(x,x)=<k(x,.),k(.,x)>


再生核希尔伯特空间: 由具有再生性的核 张成的希尔伯特空间
定义:对于一个紧致的X∈Rd\mathcal{X}\in \mathbb{R}^dXRd;和希尔伯特空间H\mathcal{H}H,其中元素为f:X→Rf:\mathcal{X}\rightarrow \mathbb{R}f:XR,如果存在k:X→Rk:\mathcal{X}\rightarrow \mathbb{R}k:XR,满足如下条件,就叫H\mathcal{H}H为再生核希尔伯特空间。
1.kkk有再生性:f(x)=<f(.),k(.,x)>f(x)=<f(.),k(.,x)>f(x)=<f(.),k(.,x)>
2.kkk张成H\mathcal{H}HH=span{k(.,x):x∈X}‾\mathcal{H}=\overline{span\{k(.,x):x\in \mathcal{X}\}}H=span{k(.,x):xX}

所以说具有再生性的核都可以张成自己的一个再生核希尔伯特空间。

参考资料:
[1]https://blog.csdn.net/hggjgff/article/details/83828394
[2]再生核希尔伯特空间:https://wenku.baidu.com/view/09df5b7a11a6f524ccbff121dd36a32d7375c7c6.html
[3]希尔伯特空间,数学空间的神秘之地 :http://www.sohu.com/a/315344647_348129介绍了一个大概,从定义出发去验证希尔伯特空间


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445125.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CRegKey 注册表操作

1.简介 CRegKey提供了对系统注册表的操作方法&#xff0c;通过CRegKey类&#xff0c;可以方便的打开注册表的某个分支或子键&#xff08;CRegKey::Open&#xff09;&#xff0c;可以方便的修改一个键的键值&#xff08;CRegKey::SetValue&#xff09;&#xff0c;也可以查询某…

进程基础

进程的基本概念 程序顺序执行的特征&#xff1a; 1&#xff09;顺序性&#xff1a;处理机严格按照程序所规定的顺序执行&#xff0c;每一步操作必须在下一步操作开始前执行 2&#xff09;封闭性&#xff1a;程序在封闭的环境下运行&#xff0c;程序独占资源&#xff0c;资源的状…

用Docker容器自带的tensorflow serving部署模型对外服务

相信很多人和我一样&#xff0c;在试图安装tensorflow serving的时候&#xff0c;翻遍了网上的博客和官网文档&#xff0c;安装都是以失败而告终&#xff0c;我也是一样&#xff0c;这个问题折磨了我两个星期之久&#xff0c;都快放弃了。幸运的是在同事的建议下&#xff0c;我…

C资源

云风最近写了一篇博客《C语言的前世今生》。作为长期使用C语言开发网络游戏服务器的程序员&#xff0c;云风是有理由写这样一篇文字&#xff0c;不过还是感觉谈的不够深入&#xff0c;C语言在业界使用的现状没有怎么描写&#xff0c;有些意犹未尽。在这里想比较系统的谈谈个人对…

学点数学(2)-特征函数

特征函数1.数列特征方程2.矩阵特征方程3.微分方程特征方程4.积分方程特征方程特征方程是为研究相应的数学对象而引入的一些等式&#xff0c;这些等式描述了特定对象的特性。依据研究的对象不同&#xff0c;特征方程包括数列特征方程、矩阵特征方程、微分方程特征方程、积分方程…

GCC如何产生core dump

先决条件1.安装apport&#xff08;automatically generate crash reports for debugging&#xff09;2.修改/etc/security/limits.conf文件&#xff0c;使允许core dump&#xff0c;或者用ulimit -c unlimited设置core dump文件的大小为unlimited3.C/C的编译开关-g&#xff08;…

经典的进程同步问题

经典的进程同步问题 普通版&#xff1a;一类进程作为生产者&#xff0c;生产产品&#xff0c;生产的产品放入一个缓冲区&#xff0c;消费者从缓冲区中取出产品&#xff0c;需要保证生产者不可以向满的缓冲区中添加产品&#xff0c;消费者不可以从空的缓冲区中取出产品。同一时刻…

面试题汇总---深度学习(图像识别,NLP内容)

文章目录1.基本概念1.1 为什么神经网络中深度网络的表现比广度网络表现好&#xff1f;1.2 推导BP算法1.3 什么是梯度消失和梯度爆炸&#xff1f;1.4 常用的激活函数有哪些&#xff1f;1.5 常用的参数更新方法有哪些&#xff1f;1.6 解决过拟合的方法&#xff1f;数据层面模型层…

Linux-2.6.25 TCPIP函数调用大致流程

Linux-2.6.25 TCPIP函数调用大致流程学习目的&#xff0c;随手笔记。函数和文字说明会不断补充更新。Changelog2008.10.08 最近找工作忙。暂时缓缓插口层系统调用sendsys_sendsys_sendtosendtosys_sendtosock_sendmsgsendmsgsys_sendmsgsock_sendmsgwritesys_writevfs_write…

Python(28)-文件,os模块

文件1. 文件2. 文件的基本操作3. 读取文件open()3.1 文件指针: 标记从哪一个位置开始读取数据.3.2 文件的打开方式mode3.3 文件按行读取3.3.1 readline()3.3.2 readlines()4.文件输出f.write(),print()5.文件复制5.1 小文件复制&#xff08;搬家&#xff09;5.2 大文件复制&…

IOCP的程序

C代码 #include <winsock2.h> #include <mswsock.h> #include <windows.h> #include <stdio.h> #include <stdlib.h> #include <assert.h> #include "vld.h" #pragma message("automatic link to ws2_32.lib and…

PaperNotes(3)-图像分割-RCNN-FCN-Boxsup

图像分割算法对比小结1.{基本概念}2.{R-CNN}2.1R-CNN 网络结构选择性搜索算法为什么选择SVM作分类器边框回归2.2{R-CNN 训练}2.3{R-CNN实验结果}2.4{R-CNN语义分割}2.5{补充材料}2.5.1{R-CNN建议区域放缩}2.5.2{IOU阈值设置不一样的原因}2.5.3{Bounding-box回归修正}2.6{R-CNN存…

Python模块(3)--PIL 简易使用教程

PIL模块-用与记1.图片导入Image.open()2.图像显示.show()4.查看图片属性.format,.size,.mode3.图像格式转换.convert()4.图像模式“L”&#xff0c;“RGB”,"CYMK"5. 图片旋转.rotate()旋转方式1&#xff1a;旋转不扩展旋转方式2&#xff1a;旋转扩展旋转方式3&#…

日志级别 debug info warn eirror fatal

日志级别 debug info warn eirror fatal 软件中总免不了要使用诸如 Log4net, Log4j, Tracer 等东东来写日志&#xff0c;不管用什么&#xff0c;这些东东大多是大同小异的&#xff0c;一般都提供了这样5个日志级别&#xff1a; Debug Info Warn Error Fatal一个等级比一个高&…

输入输出系统

I/O设备&#xff1a;输入输出和存储功能的设备 I/O设备的分类 按传输的速度&#xff1a; 低速设备&#xff08;如键盘、鼠标、语音输入输出设备&#xff09; 中速设备&#xff08;如行式打印机、激光打印机等&#xff09; 高速设备&#xff08;如磁带机、磁盘机、光盘机等&…

vue2源码解析---v-model双向数据绑定

什么是v-model v-model 是 Vue 中的一个指令&#xff0c;用于实现表单元素与 Vue 实例中数据的双向绑定。这意味着当表单元素的值发生变化时&#xff0c;Vue 实例中的数据也会随之更新 工作原理 生成ast树 本质上是语法糖 结合了v-bind和v-on两个指令 示例代码 new Vue({e…

php收集的精典代码

1. οncοntextmenu"window.event.return&#xff06;#118aluefalse" 将彻底屏蔽鼠标右键 <table border οncοntextmenureturn(false)><td>no</table> 可用于Table 2. <body onselectstart"return false"> 取消选取、防止复制…

python外卷(7)--glob

glob模块1.glob.glob()2.对比os.listdir()glob是python自带的一个操作文件的模块&#xff0c;可用于查找 指定路径 中 匹配的 文件。1.glob.glob() 下面是一个测试文件路径&#xff1a; (base) pppp-System-Product-Name:~/Desktop/test_glob$ tree . ├── a │ ├── 1…

Sublime Text 2配置强大的IDE开发环境,运行java

Sublime Text 2是我无意中发现的、据说十分强大的、便捷的编辑器&#xff0c;许多程序员都投入到Sublime Text 2的怀抱中。 1 配置java开发环境的方法如下&#xff1a; 在jdk安装目录下的bin文件夹下新建一个bat格式的文件&#xff0c;文件命为javacexec.bat。 如果是在Wind…

thinkphp的快捷方法实例化对象

D、F、S、C、L、A、I 他们都在functions.php这个文件家 下面我分别说明一下他们的功能 D&#xff08;&#xff09; 加载Model类 M&#xff08;&#xff09; 加载Model类 A&#xff08;&#xff09; 加载Action类 L&#xff08;&#xff09; 获取语言定义 C&#xff08;&#xf…