神经网络与深度学习-7- 支持向量机2 -PyTorch

参考文档:

    《统计学习方法》

 

目录

    1: SMO  算法流程

    2: SMO 推导过程

    2:    pytorch 例子


一   SMO(sequential minimal optimizaion) 

      

       输入:

             训练数据集T=\begin{Bmatrix} (x_1,y_1) & (x_2,y_2) & .... &, (x_N,y_N) \end{Bmatrix}

             其中 x_i \in \chi=R^n, y_i \in \begin{Bmatrix} -1, & +1 \end{Bmatrix}

             i=1,2...,N

            精度\epsilon

       输出:

             \hat{\alpha}

      优化过程:

             1 初始值\alpha^{0}=0,k=0

             2 选取优化变量\alpha_1^{k},\alpha_2^{k} 解析求解两个变量的最优化问题 (101-103),求得最优化问题

,求得最优解

              \alpha_1^{k+1},\alpha_2^{k+1},更新\alpha\alpha^{k+1}

           3 如果精度\epsilon 范围内满足停机条件,执行4

                  \sum_i {\alpha_i y_i}=0

                  0\leq \alpha_i <c,i=1,2,..N

                   y_ig(x_i)=\left\{\begin{matrix} \geq 1, \alpha_i=0\\ =1, 0<\alpha_i<c \\ \leq 1,\alpha_i=C \end{matrix}\right.

                   其中

                 g(x_i)=\sum_j \alpha_j y_jK(x_i,x_j)+b

          

                 否则设k=k+1,转2

        4   取 \hat{\alpha}=\alpha^{k+1}


二  SMO 原理推导

凸二次规划对偶问题

      min_{\alpha} \frac{1}{2}\sum_i \sum _j \alpha_i\alpha_j y_iy_jK(x_i,x_j)-\sum \alpha_i

     s.t \left\{\begin{matrix} \sum \alpha_i y_i =0,\\ 0\leq \alpha_i\geq c \end{matrix}\right.

       整个算法包含两个部分:

       两个变量二次规划的解析方法   和 选择变量的启发式方法

      2.1  两个变量的二次规划求解方法

            

       W(\alpha_1,\alpha_2)=\frac{1}{2}K_{11}\alpha_1^2+\frac{1}{2}K_{22}\alpha_2^2+y_1y_2K_{12}\alpha_1\alpha_2-(\alpha_1+\alpha_2-\zeta )+y_1\alpha_1\sum_{i=3}^{N}\alpha_iy_iK_{i1}+y_2\alpha_2\sum_{i=3}^{N}\alpha_iy_iK_{i2}\bigl(\begin{smallmatrix} 101 \end{smallmatrix}\bigr)

         s.t \left\{\begin{matrix} \alpha_1 y_1+\alpha_2 y_2 =-\sum_{i=3}^{N}y_i \alpha_i=\zeta \begin{pmatrix} 102 \end{pmatrix}\\ 0\leq \alpha_i\leq C, i=1,2 \left ( 103 \right ) \end{matrix}\right.

        2.1 约束条件

          \left\{\begin{matrix} L= max(0,\alpha_2^{old}-\alpha_1^{old}),H=min(C,C+\alpha_2^{old}-\alpha_1^{old}),y_1 \neq y_2\\ L= max(0,\alpha_2^{old}+\alpha_1^{old}-C),H=min(C,\alpha_2^{old}+\alpha_1^{old}),y_1 = y_2 \end{matrix}\right.

          证明:

            \alpha_1^{old}y_1+\alpha_2^{old}y_2=\alpha_1^{new}y_1+\alpha_2^{new}y_2

            \alpha_2^{new}=\alpha_2^{old}+\alpha_1^{old}y_1y_2-\alpha_1^{new}y_1y_2

            当y_1y_2=-1

            \alpha_2^{new}=\alpha_2^{old}-\alpha_1^{old}+\alpha_1^{new}

             \left\{\begin{matrix} L=\alpha_2^{old}-\alpha_1^{old}\\ H=\alpha_2^{old}+\alpha_1^{old}+c \end{matrix}\right.

            当y_1y_2=1

           \alpha_2^{new}=\alpha_2^{old}+\alpha_1^{old}-\alpha_1^{new}

            \left\{\begin{matrix} L=\alpha_2^{old}+\alpha_1^{old}-c\\ H=\alpha_2^{old}+\alpha_1^{old} \end{matrix}\right.

         然后,需要根据本身约束再做一次剪切

 2.2  最优化问题定理,未经剪切的解

       \alpha_2^{new,unc}=\alpha_2^{old}+\frac{y_2(E_2-E_1)}{\eta}

        \eta=K_{11}+K_{22}-2K_{12}=||\Phi(x_1)-\phi(x_2)||^2

       经剪切后\alpha_2的解为

      \alpha_2^{new}=\left\{\begin{matrix} H,\alpha_2^{new,unc}>H\\ \alpha_2^{new} \\ L, \alpha_2^{new}<L \end{matrix}\right.

      \alpha_1^{new}=\alpha_1^{old}-y_1y_2(\alpha_2^{new}-\alpha_2^{old})

 公式1

 g(x)=\sum_{i=1}^{N}\alpha_iy_i K(x_i,x)+bg

公式2             E_i=g(x_i)-y_i=(\sum_{j=1}^{N} \alpha_jy_j K(x_j,x_i)+b)-y_i,i=1,2

         证明:

           设 \alpha_1=(\gamma -y_2\alpha_2)y_1,则

           

w(\alpha_2)=\frac{k_{11}}{2}(\gamma-y_2\alpha_2)^2+\frac{k_{22}}{2}\alpha_2^2+(\gamma-\alpha_2y_2)k_{12}\alpha_2y_2+(\gamma-\alpha_2 y_2)v_1+y_2\alpha_2v_2-(\gamma-\alpha_2y_2)y_1-\alpha_2

       求偏导数

  \frac{\partial w}{\partial \alpha_2}=k_{11}\alpha_2 +k_{22}\alpha_2-2k_{12}\alpha_2+k_{12}y_2\gamma-k_{11}y_2\gamma-y_2v_1+y_2v_2-1+y_1y_2=0

   设\eta=k_{11}+k_{22}-2k_{12}

   \alpha_2 \eta=y_2(k_{11}\gamma-k_{12}\gamma+v_1-v_2+y_1-y_2)

  带入公式1,2展开后

    \alpha_2^{new,unc}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta}

2.3 变量的选择方法 

     神经网络与深度学习-7- 支持向量机2 -PyTorch_第1张图片

      1 外循序

         选取出违反KKT条件最严重的点​​​​​​​

        KKT 条件

        ​​​​​​​

       s.t

         

 

     2  内循环

 

          目的: 希望\alpha_2^{new} 变化最大化

           原理:

          已知

           

          则:

          为了使得​​​​​​​ 变化最大,就要使得

 最大... 式1

         前面知道

         \alpha_2^{new,unc}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta}

        要使得式1最大,则

          ​​​​​​​ 必须最大

 

     3 : 计算阀值b 和 差值 ​​​​​​​

             由KKT条件可知

         3.1 神经网络与深度学习-7- 支持向量机2 -PyTorch_第2张图片

 

 同理

  

 

 如果二者都是0,或者C ,则选取它们之间的中间值

           

           

         

      

你可能感兴趣的:(人工智能,pytorch,深度学习,神经网络)