NLP学习笔记30-SVM 对偶、KTT,核函数

NLP学习笔记30-SVM 对偶、KTT,核函数一序本文属于贪心 NLP 训练营学习笔记系列 二 MappingFeatu 如图所示 转换是包含两部分的工作的 第一步是从低维特征向量转换为高维特征向量 第二步是根据高维向量特征训练分类器 那么现在的任务也从原来的 变成了 或者其中 x 是 D 维 u 是维 至于具体升维操作 也就是把原来的特征做一些加减乘除 变成更多的特征 这种方法在实操的时候有一个问题 时间复杂度增加 例如原来的 D 10 新的 10000 第

一 序

  本文属于贪心NLP训练营学习笔记系列。

Mapping Feature to High Dimensional Space

NLP学习笔记30-SVM 对偶、KTT,核函数

如图所示,转换是包含两部分的工作的,第一步是从低维特征向量转换为高维特征向量,第二步是根据高维向量特征训练分类器。

那么现在的任务也从原来的:f(x)\to y 变成了f( \phi(x) ) \to y,或者f(u)=y

其中x是D维,u是D^' 维。

至于具体升维操作,也就是把原来的特征做一些加减乘除,变成更多的特征。

x=\begin{pmatrix} x_1 \\ x_2 \end{pmatrix} \to u = \begin{pmatrix} x_1 \\ x_2 \\ x_1^2 \\ x_2^2 \end{pmatrix} 

这种方法在实操的时候有一个问题:时间复杂度增加。

例如原来的D=10,新的D^'=10000,第一步时间复杂度的增加是1000倍。第二步也需要大量的时间。

解决这个问题的方法就是核函数(kernel trick),它的思想就是把上面的转换维度和构造分类器两个事情结合到一起。使得时间的复杂度没有明显的增加。

优化的技巧-拉格朗日: 等号条件处理

  1无约束条件下的最优化问题
这种最优化问题比较简单,直接求导为0就可以得到。

2等式约束下的最优化问题

即除了目标函数之外,还有一些约束条件。通常这种最优化问题有两种方法

NLP学习笔记30-SVM 对偶、KTT,核函数

假设目标函数为f(x),约束条件为g_i(x)

关于为什么拉格朗日函数能写成 min f(x)+ \lambda g(x),老师从几何角度去讲解:

NLP学习笔记30-SVM 对偶、KTT,核函数

最优解x^*有什么特点?就是这点上目标函数的梯度和直线的梯度是平行的,\nabla f(x)|| \nabla g(x)

基于这个特点,如果要变成相等就是要乘上一个系数\lambda :∇f(x)=λ∇g(x),剩下就是公式位移变化,可得出带约束条件的对x偏导等于目标函数对x的偏导。

因此从几何上推导出来变形后的目标函数和原来带约束的目标函数是等价的。

3 多个条件multiple Equalities(泛化)

等式约束条件是有多个的。经过拉格朗日处理后:

Minimize f(x)+\sum_{i=1}^{R}\lambda _ig_i(x)

然后就是分别求偏导后等于0:

NLP学习笔记30-SVM 对偶、KTT,核函数

拉格朗日: 不等号条件处理

minf(x) \\ st.h(x) \leq 0

这里只有小于等于0的情况,因为即使是大于等于0的不等式也可以转换为《=0;

第1步:求出没有加限制条件的目标函数的最优解x^*

 

第2步:验证x^* 符合约束条件。此时\lambda =0,h(x) \leq 0

2没有加限制条件的目标函数的最优解不满足约束条件

此时\lambda =0起不到作用。那么最优解只能h(x)=0

综合条件1、2,=》\lambda h(x)=0

从几何上理解:见下面截图:f(x)最优解应该x^*,但是不在h(x)\leq 0范围内,最优解应该是绿色的x^{*'},对应h(x)=0线上。

NLP学习笔记30-SVM 对偶、KTT,核函数

KTT conditions

现在根据上面的结论,

minf(x) \\st.g_i(x)=0 ;i=1,2,3,...,R \\ h_j(x) \leq 0;j=1,2,3,...,R^'

我们可以写成:minf(x)+\sum_{i=1}^{R}\lambda _i g_i(x)+ \sum_{j=1}^{ {R}'} \mu _jh_j(x)

st. \lambda _i,\mu _j \geq 0 \\ \mu _j h_j(x) =0 \ \forall j \\ h_j(x) \leq 0 \ \forall j 这三个约束称为 KKT条件。

NLP学习笔记30-SVM 对偶、KTT,核函数

KKT Condition of SVM

先回顾之前的SVM硬目标函数(不允许有误差)

min\frac{1}{2}||w||^2 \\st. (w^T\cdot x_i+b)y_i-1\geq 0

根据拉格朗日不等式的处理过程:

Minimize \frac{1}{2}||w||^2+\sum_{i=1}^{n} \lambda_i [1-y_i(w^T\cdot x_i+b)]

st. \lambda _i \geq 0 \\\lambda_i [1-y_i(w^T\cdot x_i+b)] =0 \, \forall i \\1-y_i(w^T\cdot x_i+b) \leq 0 这就是SVM版本的KKT条件。

SVM由primal-form到dual-form

primal-form指的是用正常的逻辑思维进行构建的目标函数,那么为什么转换到dual-form(对偶的问题)

1、primal-form的问题比较难以解决因此转换到dual-form

2、在dual-form中可以看到一些有趣的insight。对于svm就是kernel trick。后面会讲(自己临时理解把特征空间从低维映射到高维从而线性可分,就是把非线性变成线性而且不增加计算量)。

kernel trick 不仅仅试用svm.还适合其他模型。

从dual-form求出的解,不一定能对应的primal-form,有时候不一样,Primal问题一般是全局解(optimal),Dual问题一般是子目标解(sub-optimal)。我们把全局解(optimal)和子目标解(sub-optimal)的差距叫gap,理想上gap是0。

SVM的dual-form

上面我们已经得到SVM的KKT表达式:

Minimize \frac{1}{2}||w||^2+\sum_{i=1}^{n} \lambda_i [1-y_i(w^T\cdot x_i+b)]

st. \lambda _i \geq 0 \\\lambda_i [1-y_i(w^T\cdot x_i+b)] =0 \, \forall i \\1-y_i(w^T\cdot x_i+b) \leq 0

分别对参数进行求偏导:

\frac{\partial L}{\partial w} =0\to w+ \sum_{i=1}^{n} \lambda _i(-y_ix_i)=0\to w= \sum_{i=1}^{n} \lambda _i(y_ix_i)

\frac{\partial L}{\partial b} =0\to \sum_{i=1}^{n} \lambda _i(-y_i)=0\to \sum_{i=1}^{n} \lambda _i(y_i)=0

代入目标函数,先看第一项:

\frac{1}{2}||w||^2=\frac{1}{2}w^Tw=\frac{1}{2}(\sum_{i=1}^{n} \lambda _i(y_ix_i)) ^T(\sum_{j=1}^{n} \lambda _j(y_jx_j)) =\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\lambda _i\lambda _jy_iy_jx_i^Tx_j

第二项:

\sum_{i=1}^{n} \lambda_i [1-y_i(w^T\cdot x_i+b)]=\sum_{i=1}^{n}\lambda_i -\sum_{i=1}^{n}\lambda_iy_i(w^T\cdot x_i+b ) \\=\sum_{i=1}^{n}\lambda_i -\sum_{i=1}^{n}\lambda_iy_i w^T\cdot x_i -\sum_{i=1}^{n}\lambda_iy_i b

\sum_{i=1}^{n} \lambda _i(y_i)=0 ,以及w 代入。

=\sum_{i=1}^{n}\lambda_i -\sum_{i=1}^{n}\lambda_iy_i (\sum_{i=1}^{n}\lambda_i x_iy_i )^T \cdot x_i =\sum_{i=1}^{n}\lambda_i-\sum_{i=1}^{n}\sum_{j=1}^{n}\lambda _i\lambda _jy_iy_jx_i^Tx_j

因此我们的公式就变成:

\sum_{i=1}^{n}\lambda_i- \frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\lambda _i\lambda _jy_iy_jx_i^Tx_j

st. \: \forall i \ \lambda _i \geq 0 \\ \: \: \: \: \forall i \ \sum_{i=1}^{n} \lambda_iy_i =0 ,w=\sum_{i=1}^{n}\lambda _ix_iy_i \\ \forall i \ \lambda_i [1-y_i(w^T\cdot x_i+b)] =0

 

这里只有\lambda一个未知的参数,为什么要这样转换呢?

主要是因为在我们的目的让dual-from的公式中出现了x_i^Tx_j,我们就可以使用Kernel-Trick 核函数 减少时间复杂度,甚至不增加复杂度。

接下来学习核函数的入门。

Kernel Trick

先回顾下之前将低维特征向量映射到高维特征向量会有什么问题,主要就是维度变大了,对应时间复杂度变大了。

下面截图 的,用到了向量内积: 两个向量a = [a1, a2,…, an]和b = [b1, b2,…, bn]的点积定义为: a·b=a1b1+a2b2+……+anbn

NLP学习笔记30-SVM 对偶、KTT,核函数

由上面的推导操作我们可以看到,虽然维度变成更高维的了,但是某些特定的操作(这里是计算内积)时间复杂度居然没有增加。

所以现在的任务就是怎么设计\phi(x) , \phi(z),使得O(\phi (x)^T\cdot \phi (z) )\approx O( x^Tz),这个\phi就是SVM的Kernel trick。

k(x,y)=x^Ty

多项式核(Polynomial Kernel):

k(x,y)=( 1+x^Ty)^d

高斯核(Gaussian Kernel)

\LARGE k(x,y)=e^{(\frac{ -||x-y||^2}{2\sigma ^2})}

关于如何设计核函数可以去搜索:mercer’s theorem 相关内容,这里比较复杂,老师没有展开讲。

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213717.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午5:48
下一篇 2026年3月18日 下午5:48


相关推荐

  • CListCtrl 使用大全

    CListCtrl 使用大全转载文章:今天第一次用CListCtrl控件,遇到不少问题,查了许多资料,现将用到的一些东西总结如下:以下未经说明,listctrl默认view风格为report相关类及处理函数MFC:CListCtrl类SDK:以“ListView_”开头的一些宏。如ListView_InsertColumn1.CListCtrl风格

    2022年6月23日
    25
  • 基于JavaSwing+mysql的酒店管理系统设计和实现

    基于JavaSwing+mysql的酒店管理系统设计和实现前言 项目是使用 Javaswing 开发 可实现基础数据维护用户登录 系统首页酒店信息管理 主要模块是开房管理 退房管理 房间信息管理 顾客信息管理等功能 界面设计比较简介 适合作为 Java 课设设计以及学习技术使用 引言在信息高度发达的今天 酒店业务涉及的各个工作环节已不再仅仅是传统的住宿 结算业务 而是更广 更全面的服务性行业代表 酒店宾馆作为一个服务性行业 从客房的营销即客人的预定开始 到入住登记直到最后退房结账 整个过程应该能够体现以宾客为

    2026年3月18日
    1
  • [DEEP LEARNING An MIT Press book in preparation]Linear algebra

    [DEEP LEARNING An MIT Press book in preparation]Linear algebra

    2022年1月11日
    46
  • 服务器硬件组成及分级

    服务器硬件组成及分级一 服务器概述服务器 server 指的是网络环境下为客户机 client 提供某种服务的专用计算机 服务器装有网络操作系统和各种服务器应用系统软件 服务器的处理速度和系统可靠性比普通 PC 要高得多 二 服务器的种类按照不同的分类标准 服务器分为许多种 主要有按网络规模 按架构 芯片 按用途 按机箱结构 1 按网络规模划分工作组级服务器 用于联网计算机在几十台左右或者对处理速度和系统可靠

    2026年3月26日
    1
  • 高校集体官宣:“严禁在任何办公设备,安装使用‘龙虾’”

    高校集体官宣:“严禁在任何办公设备,安装使用‘龙虾’”

    2026年3月14日
    3
  • maven学习系列——(一)maven简介[通俗易懂]

    这个系列学习maven,主要是看maven实战和其他网站上整理出自己一些知识点,方便自己以后查找和使用! 这个系列的我先根据自己在公司经常使用到的一些知识点进行整理,后期在做完善! 计划:要在2017 年之前学习和整理完成!

    2022年2月25日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号