CS229 笔记07

CS229 笔记07

Optimal Margin Classifier

  • 回顾SVM

    \[
    \begin{eqnarray*}
    h_{W,b}&=&g(W^{\rm T}x+b)\\[1em]
    g(z)&=&\begin{cases}1&z\geq0\\[1em]-1&z<0\end{cases}\\[1em]
    y&\in&\{-1,1\}\\[1em]
    \hat\gamma^{(i)}&=&y^{(i)}\left(W^{\rm T}x+b\right)\tag{Functional Margin}\\[1em]
    \gamma^{(i)}&=&y^{(i)}\left(\frac{W^{\rm T}}{||W||}x+\frac{b}{||W||}\right)\tag{Geometric Margin}\\[1em]
    \hat\gamma&=&\min_i \hat\gamma^{(i)}\\[1em]
    \gamma&=&\min_i \gamma^{(i)}\\[1em]
    \end{eqnarray*}
    \]

  • Optimal Margin Classifier(最大间隔分类器)

    由于函数间隔 \(\hat\gamma?\) 是可以通过改变 \(W?\) 和 \(b?\) 来任意缩放的,所以这里说的“最大间隔”指的是几何间隔 \(\gamma?\) ,而几何间隔所需要满足的条件是,对于任意的样本 \((x^{(i)},y^{(i)})?\) ,都有 \(\gamma^{(i)}\geq\gamma?\) ,即:

    \[
    \max \gamma\{\text{s.t. }}y^{(i)}\left(\frac{W^{\rm T}}{||W||}x+\frac{b}{||W||}\right)\geq\gamma
    \]

    这就是最大间隔分类器最原始的想法,在满足所有样本到超平面的距离都大于 \(\gamma\) 的前提下,最大化这个 \(\gamma\) 。但是这就有一个问题,当找到这么一组 \((W,b)\) 满足上面的最优化条件后, \((2W,2b)\) 也将满足上面的最优化条件(因为 \((W,b)\) 和 \((2W,2b)\) 其实就是同一个超平面),所以需要限定一下缩放的原则,比如规定 \(||W||=1\) ,或者 \(W_1=1\) 等等,这个原则可以有多种方式选定。假设约定 \(||W||=1\) ,那么上面的优化问题就转变成以下的形式:

    \[
    \max \gamma\{\text{s.t. }}y^{(i)}\left(W^{\rm T}x^{(i)}+b\right)\geq\gamma {\text{ and }} ||W||=1
    \]

    然而这并不是一个很好的优化问题,因为这个 \(||W||=1\) 是一个很糟糕的非凸性约束( \(W\) 将在一个球面上取值,而球面集并不是一个凸集),所以还需要把优化问题再换一种表达方式。既然在约束条件里面很难给 \(W\) 作一个约束(因为很难找到一个约束条件既能防止 \(W\) 任意缩放,又能保证 \(W\) 的取值集合是一个凸集),那么可以尝试把 \(W\) 放到目标优化函数里面:

    \[
    \max \gamma=\max \frac{\hat\gamma}{||W||}\{\text{s.t. }}y^{(i)}\left(W^{\rm T}x^{(i)}+b\right)\geq\hat\gamma
    \]

    但是这时候目标函数 \(\hat\gamma/||W||\) 又不是一个凸函数了。注意到 \(\hat\gamma\) 是可以任意缩放的,那么可以令 \(\hat\gamma=1\) ,得到:

    \[
    \max \frac{1}{||W||}\{\text{s.t. }}y^{(i)}\left(W^{\rm T}x^{(i)}+b\right)\geq1
    \]

    把最大化目标函数转为最小化其倒数,并平方:

    \[
    \min ||W||^2\{\text{s.t. }}y^{(i)}\left(W^{\rm T}x^{(i)}+b\right)\geq1
    \]

    这就是最大间隔分类器的最终形式,其目标优化函数是一个凸函数,约束集是一个凸集。

Lagrange Multiplier

  • Lagrange Multiplier(拉格朗日常数法)的一般形式

    要解决的问题为:

    \[
    \min f(w)\{\text{s.t. }}h_i(w)=0,\,(i=1,2,\cdots,l)
    \]

    要求解以上问题,首先要创建一个拉格朗日算子:

    \[
    {\mathcal L}(w,\beta)=f(w)+\sum_i\beta_ih_i(w)
    \]

    其中的 \(\beta_i\) 被称为Lagrange Multiplier(拉格朗日乘数)。

    然后令它的偏导数为0,求解方程组即可:

    \[
    \begin{eqnarray*}
    \frac{\partial{\mathcal L}(w,\beta)}{\partial w}&=&0\\[1em]
    \frac{\partial {\mathcal L}(w,\beta)}{\partial\beta}&=&0\\[1em]
    \end{eqnarray*}
    \]

  • Lagrange Multiplier(拉格朗日常数法)的扩展形式

    要求解的问题为:

    \[
    \min_w f(w)\\begin{eqnarray*}
    {\text{s.t. }}g_i(w)&\leq&0,\,(i=1,2,\cdots,k)\tag{1}\h_i(w)&=&0,\,(i=1,2,\cdots,l)\tag{2}\\end{eqnarray*}
    \]

    拉格朗日算子为:

    \[
    {\mathcal L}(w,\alpha,\beta)=f(w)+\sum_{i=1}^k\alpha_ig_i(w)+\sum_{i=1}^l\beta_ih_i(w)\tag{3}
    \]

    定义 \(\Theta_P(w)\) 为:

    \[
    \Theta_P(w)\xlongequal{def}\max_{\alpha,\beta,\,{\text{s.t.}}\,\alpha\geq0}{\mathcal L}(w,\alpha,\beta)\tag{4}
    \]

    现在考虑另一个优化问题:

    \[
    p^*=\min_w\max_{\alpha,\beta,\,{\text{s.t.}}\,\alpha\geq0}{\mathcal L}(w,\alpha,\beta)=\min_w\Theta_P(w)
    \]

    若 \(g_i(w)>0\) ,不满足条件 \((1)\) ,那么根据等式 \((3)\) 和 \((4)\) , \(\Theta_P(w)\) 将是一个无穷大值。若 \(h_i(w)\neq0\) ,不满足条件 \((2)\) ,同理 \(\Theta_P(w)\) 也将是一个无穷大值。

    若同时满足条件 \((1)\) 和条件 \((2)\) ,那么显然:

    \[
    \Theta_P(w)=f(w)
    \]

    所以原来的优化问题也转变成新的优化问题:

    \[
    \min_w f(w)=\min_w \Theta_P(w)=p^*
    \]

Dual Problem

  • Dual Problem(对偶问题)

    定义:

    \[
    \Theta_D(\alpha, \beta)=\min_w{\mathcal L}(w,\alpha,\beta)\d^*=\max_{\alpha,\beta,\,{\text{s.t.}}\,\alpha\geq0}\min_w{\mathcal L}(w,\alpha,\beta)=\max_{\alpha,\beta,\,{\text{s.t.}}\,\alpha\geq0}\Theta_D(\alpha,\beta)
    \]

    则 \(d^*\) 就是 \(p^*\) 的对偶问题,其实就是交换了 \(\min\) 和 \(\max\) 的位置。在通常情况下, \(d^*\leq p^*\) ,

时间: 2024-10-28 01:43:35

CS229 笔记07的相关文章

C++ GUI Qt4学习笔记07

C++ GUI Qt4 qtc++scrollobject编程 事件(event)是由串口系统或者Qt自身产生的,用以响应所发生的各类事情.当用户按下或者松开键盘或者鼠标上的按键时,就可以产生一个键盘或者鼠标事件:当某个窗口第一次显示的时候,就会产生一个绘制事件.用来告知窗口需要重绘制它本身,从而使得该窗口可见. 使用Qt进行编程开发时,基本不需要考虑事件,Qt窗口部件都会发射信号.但是当我们需要编写自己的自定义窗口部件,或者是当我们希望改变已经存在的Qt窗口部件的行为时,事件就变得非常有用了.

《30天自制操作系统》笔记(07)——内存管理

<30天自制操作系统>笔记(07)--内存管理 进度回顾 上一篇中处理掉了绝大部分与CPU配置相关的东西.本篇介绍内存管理的思路和算法. 现在想想,从软件工程师的角度看,CPU也只是一个软件而已:它的功能就是加载指令.执行指令和响应中断,而响应中断也是在加载指令.执行指令.就像火车沿着一条环形铁轨前进:当中断发生时,就好像铁轨岔口处变轨了,火车就顺着另一条轨迹走了:走完之后又绕回来重新开始.决定CPU是否变轨的,就是CPU里的特定寄存器. 这是题外话,就此为止. 什么是内存管理 假设内存大小是

学习笔记 07 --- JUC集合

学习笔记 07 --- JUC集合 在讲JUC集合之前我们先总结一下Java的集合框架,主要包含Collection集合和Map类.Collection集合又能够划分为LIst和Set. 1. List的实现类主要有: LinkedList, ArrayList, Vector, Stack. (01) LinkedList是双向链表实现的双端队列:它不是线程安全的.仅仅适用于单线程. (02) ArrayList是数组实现的队列,它是一个动态数组.它也不是线程安全的,仅仅适用于单线程. (03

《机电传动控制》学习笔记-07

<机电传动控制>学习笔记07 胡恒谦 机卓1301 (注:本周补上第7周的学习笔记) PLC的编程元件: PLC内部有许多不同功能的器件,实际上这些器件是由电子电路和存储器组成的. 1.  输入继电器X 输入继电器由输入电路和输入寄存器组成,输入电路进行开关信号到数字量的转换,输入寄存器为映像输入信号的存储器. 2.  输出继电器Y 输出继电器由输出电路和输出寄存器组成.为适应不同的负载,输出电路一般有晶体管.晶闸管和继电器输出三种方式. 3.  定时器T 定时器又称时间继电器,由设定值寄存器

Ext.Net学习笔记07:Ext.Net DirectMethods用法详解

前面两篇内容中,我们看到了DirectEvents方便调用服务器端方法.DirectEvents调用WebService方法的使用方法,今天我们来看看DirectMethods,这家伙可比DirectEvents更加灵活了,它可以像调用JS方法一样来异步调用服务器端的方法. 使用DirectMethods在JS中调用C#方法 我承认,这个标题有点噱头,其实应该是通过DirectMethods,在JS中通过异步调用的方式执行服务器端的方法. 来看一个例子吧: [DirectMethod] publ

CS229 笔记02

CS229 笔记02 公式推导 $ {\rm Let}, A, B, C \in {\rm {R}}^{n \times n}. $ $ \text{Fact.1: If}, a \in {\rm R},, {\rm tr},a=a $ 显然. $\text{Fact.2:}, {\rm{tr}}A={\rm{tr}}A^T $ \[ \begin{eqnarray*} {\rm {tr}}\,A&=&\prod_{i=1}^n{a_{ii}} \\ &=&{\rm {tr

CS229 笔记03

CS229 笔记03 局部加权线性回归 Non-Parametric Learning Algorithm (非参数学习方法) Number of parameters grows with the size of sample. (参数的数目随着样本的数目增加而增加.) Locally Weighted Regression (局部加权线性回归) 损失函数的定义为: $ J_\Theta=\sum_i{w^{(i)}(y^{(i)}-\Theta^{{\rm T}}x^{(i)})^2} $

stm32寄存器版学习笔记07 ADC

STM32F103RCT有3个ADC,12位主逼近型模拟数字转换器,有18个通道,可测量16个外部和2个内部信号源.各通道的A/D转换可以单次.连续.扫描或间断模式执行. 1.通道选择 stm32把ADC转换分成2个通道组:规则通道组相当于正常运行的程序:注入通道组相当于中断.程序初始化阶段设置好不同的转换组,系统运行中不用变更循环转换的配置,从而达到任务互不干扰和快速切换. 有16个多路通道.可以把转换组织成两组:规则组和注入组.在任意多个通道上以任意顺序进行的一系列转换构成成组转换.例如,可

MySQL学习笔记07基于GTID的复制

1.1.1. 相关概念 (1)GTID GTID是Global Transaction Identifier的缩写.GTID是一个跟提交的事务有关的标识符,由提交事务所在的原始MySQL的UUID和事务的编号组成:因此,每个GTID在每个参与的MySQL中都是唯一的,而且由GTID可以取得该事务所在的原始MySQL以及事务在原始MySQL上的编号. GTID格式如下: GTID = MySQL原始UUD:事务编号 GTID的例子如下: GTID=a2392929-6dfb-11e7-b294-0