zoukankan      html  css  js  c++  java
  • 支持向量机(Support Vector Machine):对偶

    前言

    学SVM看到对偶问题的时候很难受,因为看不懂,数学知识真的太重要了。后来在B站看到某up主的精彩推导,故总结如下。

    SVM基本型

    由之前最大化间隔的计算可得SVM的基本型为:

                             $underset{mathbf{w},b}{min}      frac{1}{2}left | mathbf{w} ight |^{2}$

                           $s.t. y_{i}(mathbf{w}^{T}mathbf{x}_{i})+bgeqslant 1, i=1,2,cdots ,m.$

     

    对偶问题

    SVM的基本型是一个带约束优化问题,试想如果我们可以构造一个函数,使得该函数在可行解区域内与原目标函数完全一致,而在可行解区域外的数值非常大,甚至是无穷大,那么这个没有约束条件的新目标函数的优化问题就与原来有约束条件的原始目标函数的优化问题是等价的问题。这就是使用拉格朗日方程的目的,它将约束条件放到目标函数中,从而将有约束优化问题转换为无约束优化问题。

     

    所以,利用对偶来求解原问题需要两个步骤:

    1. 将有约束的原始目标函数转换为无约束的新构造的拉格朗日目标函数

    2. 使用拉格朗日对偶性,将不易求解的优化问题转化为易求解的优化

    首先根据拉格朗日乘子法,对上式的每条约束添加拉格朗日乘子$lambda _{i} geqslant 0$,于是该问题的拉格朗日函数可写为:

    $L(mathbf{w},b,lambda ) = frac{1}{2}left | mathbf{w} ight |^{2}+sum_{i=1}^{m}lambda _{i}(1-y_{i}(mathbf{w}^{T}mathbf{x}_{i}+b))$       $mathbf{lambda }=(lambda _{1};lambda _{2};cdots ;lambda _{m})$

     

    由此得到了重要的第一步,将带约束的原问题转化为了无约束的原问题,即:

    $underset{mathbf{w},b}{min}      frac{1}{2}left | mathbf{w} ight |^{2}$                                                           ------------------->       $ underset{mathbf{w},b}{min} underset{mathbf{lambda }}{max} L(mathbf{w},b,mathbf{lambda})$ 

    $s.t. y_{i}(mathbf{w}^{T}mathbf{x}_{i})+bgeqslant 1, i=1,2,cdots ,m.$                       ------------------->                       $s.t. lambda _{i}geqslant 0$

    为什么这两种是等价的呢?从逻辑上可以简单分析:

    接下来第二步转化就是将无约束的原问题转化为对偶问题,即:

    $ underset{mathbf{w},b}{min} underset{mathbf{lambda }}{max} L(mathbf{w},b,mathbf{lambda})$                     ------------------->               $ underset{mathbf{lambda }}{max} underset{mathbf{w},b}{min} L(mathbf{w},b,mathbf{lambda})$ 

    $s.t. lambda _{i}geqslant 0$                                                 ------------------->               $s.t. lambda _{i}geqslant 0$

    易知$ underset{mathbf{w},b}{min} underset{mathbf{lambda }}{max} L(mathbf{w},b,mathbf{lambda}) geqslant   underset{mathbf{lambda }}{max} underset{mathbf{w},b}{min} L(mathbf{w},b,mathbf{lambda})$ ,而我们现在需要的是两者相等,相等时需要满足以下两个条件:

    1. 满足这个优化问题是凸优化问题。

    2. 满足KKT条件。

     (KKT条件我不懂,所以略。。)

    综上,这一系列的步骤就是SVM基本型(带约束的原问题)——>不带约束的原问题——>对偶问题。

    对于这个对偶问题,我们首先固定$lambda$,求解$w,b$,由于$w,b$不受约束,所以这是无约束的优化问题,直接求导即可。这里需要说明的一点就是因为这是凸函数,二阶导数必然大于0,所以令偏导为零的点就是最小值点。计算过程如下所示:

    消去$mathbf{w},b$后得到对偶问题:

                  $underset{mathbf{lambda }}{max} sum_{i=1}^{m} lambda _{i}-frac{1}{2}sum_{i=1}^{m}sum_{j=1}^{m}lambda _{i}lambda _{j}y_{i}y_{j}mathbf{x}_{i}^{T}mathbf{x}_{j}$

                  $s.t.  sum_{1}^{m}lambda _{i}y_{i}=0$

                       $ lambda _{i}geqslant 0$                                  $i=1,2,...,m$

  • 相关阅读:
    tcp/udp并发(大吞吐量)性能测试工具
    postman prerequest动态加密数据构造
    匹配ip的正则表达式
    通过adb命令保存并重命名截图
    python3 urlencode及urldecode
    Android安全测试工具Drozer coverity fortify
    windows下adb shell命令杀进程方式
    postman批量构造数据
    Android app发热功耗思路
    Jenkins+ant+Jenkins接口持续集成测试配置
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/10486608.html
Copyright © 2011-2022 走看看