码迷,mamicode.com
首页 > 其他好文 > 详细

梯度下降、牛顿法和拉格朗日对偶性

时间:2016-06-04 15:02:32      阅读:915      评论:0      收藏:0      [点我收藏+]

标签:

这篇文章主要介绍梯度下降、牛顿法和拉格朗日对偶性的过程和一些原理的证明。

梯度下降:

假设$f(x),x\in R^{n}$,有一阶的连续偏导数,要求解的无约束最优化问题是:

            $\min \limits_{x\in R^{n}}f(x)$

$x^*$表示目标函数$f(x)$的极小点。

首先解释一下为什么梯度下降可行:对于一个有一阶连续偏导数的凸函数,若存在函数的极小值点,让x不断地往函数值减少的方向移动,最终会到达一个不动点,而这个不动点,就是函数f(x)的极小值点。选择负梯度方向,可以让x更快地到达不动点的位置。

负梯度的方向为什么是下降最快的方向呢?下面先证明一下:

方向导数定义:

记$z=f(x,y)$在$M_0=(x_0,y_0)$处可微,则$f(x,y)$在$M_0$沿着任意方向$l=(cos \ a,cos \ b)$存在方向导数,且:

 

$\frac{\partial f(x_0,y_0)}{\partial l}=\frac{\partial f(x_0,y_0)}{\partial x}cos \ a+\frac{\partial f(x_0,y_0)}{\partial y}cos \ b$

 

因此,$z=f(x,y)$在$M_0$的沿着的方向导数可以改写成:

 

$\frac{\partial f(x_0,y_0)}{\partial l}=(\frac{\partial f(x_0,y_0)}{\partial x},\frac{\partial f(x_0,y_0)}{\partial y})\centerdot(cos \ a,cos \ b)$$=\triangledown f(x_0,y_0)\centerdot l=|\triangledown f(x_0,y_0)|cos<\triangledown f(x_0,y_0),l>$

 

从$cos<\triangledown f(x_0,y_0),l>$部分可以看到,如果$\triangledown f(x_0,y_0)$和下降方向反向,那么$cos<\triangledown f(x_0,y_0),l>=cos \pi=-1$

,这是$cos<\triangledown f(x_0,y_0),l>$的最小值,因此,可以证明,负梯度方向是下降最快的方向。(注:被面试官问过,印象太深刻了,特意在此加上这段)

 

言归正传,下面就得介绍梯度下降了的方法了:

 

由于$f(x)$具有一阶连续偏导,因此,它在点$(x_k,y_k)$处沿着负梯度方向的导数是:

$g_k=g(x_k)=\triangledown f(x_k)$

 

设定一个下降步长$\eta_k$,如果我们把梯度下降这一个过程看作是从山上走到山谷的过程,那么  $\eta_k$描述的是我们从$x_k$位置走到$x_{k+1}$位置所走的每一步的步幅,也可以称为步长。于是,

 

就有:$x_{k+1}\gets x_k-\eta_k*(-\triangledown f(x_k))$

 

即:$x_{k+1}\gets x_k+\eta_k*\triangledown f(x_k)$

 

梯度下降的算法的步骤如下:

输入:目标函数$f(x)$,梯度函数$g(x)=\triangledown f(x)$,误差$\varepsilon$

输出:$f(x)$的极小值点$x^*$

取初始值$x^{(0)}\in R$,置$k=0$

(1)   计算$f(x^{(k)})$

(2)   计算梯度$g_k=g(x^{(k)})$,当$||g_k||<\varepsilon$时,停止迭代,令$x^*=x^{(k)}$;

否则,取步长$\eta_k$,令$x_{k+1}\gets x_k+\eta_k*\triangledown f(x_k)$,计算$f(x^{(k+1)})$,

当$||f(x^{(k+1)})-f(x^(k))||<\varepsilon$或者$||x^{(k+1)}-x^{(k)}||<\varepsilon$,停止迭代,$x^*=x^{(k+1)}$

(3)       否则$k=k+1$,转(2)

当目标函数是凸函数时,梯度下降的解是全局最优解,一般情况下,其解不保证是全局最优解,梯度下降的收敛速度也未必是最快的。

 

牛顿法:

 

假设$f(x),x\in R^{n}$,有二阶的连续偏导数,要求解的无约束最优化问题是:

 

      $\min \limits_{x\in R^{n}}f(x)$

 

$x^*$表示目标函数$f(x)$的极小点。

 

由于$f(x)$有二阶连续偏导,因此,可以将$f(x)$在$x=x_k$处泰勒展开:

 

$f(x)=f(x^{(k)})+g^{T}_{k}(x-x^{(k)})+\frac{1}{2}(x-x^{(k)})^{T}H(x^{(k)})(x-x^{(k)}) \ \ (N_1)$

 

考虑到$f(x),x\in R^{n}$有极值的必要条件是$\triangledown f(x)=0$,

 

假设,第k+1次迭代值为$x^{(k+1)}$,假设满足:$\triangledown f(x^{(k+1)})=0$

 

由$(N_1)$可得: $\triangledown f(x)=g_{k}+H_k(x-x^{(k)})$

 

于是:$\triangledown f(x^{(k+1)})=g_k+H_k(x^{(k+1)}-x^{(k)})=0$

 

所以,可得迭代方程为:$x^{(k+1)}=x^{(k)}-H_{k}^{-1}g_k$

 

算法-牛顿法

输入:目标函数$f(x)$,梯度$g(x)=\triangledown f(x)$,海赛矩阵$H(x)$,精度

输出:$f(x)$的极小值点$x^*$

 

(1)       取初始值$x^{(0)}$,k=0

(2)       计算$g_k=g(x^{(k)})$

(3)       若$||g_k||<\varepsilon$,停止计算,返回近似解$x^*=x^{(k)}$

(4)       计算$H_k=H(x^{(k)})$

(5)       $x^{(k+1)}=x^{(k)}-H_{k}^{-1}g_k$

(6)       令 $k=k+1$,转(2)

其中,求$H_{k}^{-1}$的计算比较复杂,所以,在这个基础上,有改进办法。主要的思想是使用一个矩阵来近似$H^{-1}$,详细过程会在后面总结,此处不详细说。

 

拉格朗日对偶性

前面梯度下降和牛顿法都是解决无约束条件的最优化问题的办法,但是,要是遇到了有约束的最优化问题,就得将约束条件考虑进来。

 

(1)原始问题

假设$f(x),c_{i}(x),h_j(x),x\in R^{n}$,是连续可微函数,考虑约束最优化问题:

 

    $\min \limits_{x\in R^{n}}f(x)$

 

$s.t. \ c_i(x)\leq 0,i=1,2,3...,k$

          $h_j(x)=0,i=1,2,3...,l$

 

引进广义拉格朗日函数:

         $L(x,a,b)=f(x)+\sum_{i=1}^{k}a_ic_i(x)+\sum_{j=1}^{l}b_jh_j(x)$

记  $\theta_p(x)=\max \limits_{a,b:a_i\geq 0} \ L(x,a,b)$

 

当且仅当$\theta_p(x)$满足问题的约束条件时,$\theta_p(x)=f(x)$,否则$\theta_p(x)=+\infty$

 

当满足约束条件的情况下,再求$\min \limits_{x\in R^{n}} \ \theta_p(x)$将等价于求$\min \limits_{x\in R^{n}}f(x)$

 

将$\theta_p(x)=\max \limits_{a,b:a_i\geq 0} \ L(x,a,b)$代入,将得到:

$\min \limits_{x\in R^{n}} \ \theta_p(x)=\min \limits_{x\in R^{n}} \max \limits_{a,b:a_i\geq 0} \ L(x,a,b) \ \ (L)$

 

上面的问题(L)被称为拉格朗日函数的极小极大值问题。

 

(2)对偶问题:

 

定义$\max \limits_{x\in R^{n}} \ \theta_D(x)=\max \limits_{a,b:a_i\geq 0} \min \limits_{x\in R^{n}} \ L(x,a,b)$是$(L)$的对偶问题。其中$\max \limits_{a,b:a_i\geq 0} \min \limits_{x\in R^{n}} \ L(x,a,b)$被称为拉格朗日函数的极大极小值问题。

 

所以,上面的定义可以描述如右:拉格朗日函数的极大极小值问题是极小极大值问题的对偶问题。(我在这里有一个疑惑:拉格朗日函数的极小极大值问题是极大极小值问题的对偶问题么?

 

拉格朗日对偶性的想法是,希望能够找到一个条件,能够让原始问题和对偶问题同解。然后,就有人去找了,此处省略10000字。最终,他们找到了这个条件,称为对偶互补条件,又称为KKT(Karush-Kuhn-Tucker条件。

 

假设$f(x),c_{i}(x)$是凸函数,$h_j(x)$是仿射函数(见注释),$x^*,a^*,b^*$是原始问题和对偶问题的解的充要条件如下:

 

$\triangledown_xL(x^*,a^*,b^*)=0$

$\triangledown_aL(x^*,a^*,b^*)=0$

$\triangledown_bL(x^*,a^*,b^*)=0$

$a^{*}_{i}c_{i}(x^*)=0, \ i=1,2,3....,k$

$c_{i}(x^*)\leq 0, \ i=1,2,3....,k$

$a^{*}_{i}\geq 0, \ i=1,2,3....,k$

$h_{j}(x^*)=0, \ i=1,2,3....,l$

特别地若$a^{*}_{i}>0$,$c_{i}(x^*)=0$

 

注:仿射函数即由1阶多项式构成的函数,一般形式为 f (x) = A x + b,这里,A 是一个 m×k 矩阵,x 是一个 k 向量,b是一个m向量,实际上反映了一种从 k 维到 m 维的空间映射关系。

 

在满足KKT条件的情况下,可以将原始问题转化成对偶问题来求解,这时候,可以根据KKT条件和对偶性来简化原始问题。具体的例子,将会在求解SVM的目标函数中看到。

 

梯度下降、牛顿法和拉格朗日对偶性

标签:

原文地址:http://www.cnblogs.com/weibao/p/5557796.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!