标签:
这篇文章主要介绍梯度下降、牛顿法和拉格朗日对偶性的过程和一些原理的证明。
梯度下降:
假设$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