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

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

梯度下降:

假设$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的目标函数中看到。

时间: 2025-01-10 15:16:20

梯度下降、牛顿法和拉格朗日对偶性的相关文章

机器学习中梯度下降法和牛顿法的比较

在机器学习的优化问题中,梯度下降法和牛顿法是常用的两种凸函数求极值的方法,他们都是为了求得目标函数的近似解.在逻辑斯蒂回归模型的参数求解中,一般用改良的梯度下降法,也可以用牛顿法.由于两种方法有些相似,我特地拿来简单地对比一下.下面的内容需要读者之前熟悉两种算法. 梯度下降法 梯度下降法用来求解目标函数的极值.这个极值是给定模型给定数据之后在参数空间中搜索找到的.迭代过程为: 可以看出,梯度下降法更新参数的方式为目标函数在当前参数取值下的梯度值,前面再加上一个步长控制参数alpha.梯度下降法通

梯度下降法和牛顿法

在机器学习的优化问题中,梯度下降法和牛顿法是常用的两种凸函数求极值的方法,他们都是为了求得目标函数的近似解.在逻辑斯蒂回归模型的参数求解中,一般用改良的梯度下降法,也可以用牛顿法.由于两种方法有些相似,我特地拿来简单地对比一下.下面的内容需要读者之前熟悉两种算法. 梯度下降法 梯度下降法用来求解目标函数的极值.这个极值是给定模型给定数据之后在参数空间中搜索找到的.迭代过程为: 可以看出,梯度下降法更新参数的方式为目标函数在当前参数取值下的梯度值,前面再加上一个步长控制参数alpha.梯度下降法通

七月算法--12月机器学习在线班-第六次课笔记—梯度下降和拟牛顿

七月算法--12月机器学习在线班-第六次课笔记—梯度下降和拟牛顿 七月算法(julyedu.com)12月机器学习在线班学习笔记 http://www.julyedu.com

猪猪机器学习笔记(六)梯度下降和拟牛顿

梯度下降和拟牛顿 作者:樱花猪   摘要:     本文为七月算法(julyedu.com)12月机器学习第六次次课在线笔记.本节课主要介绍了一种在机器学习需要经常使用到的计算方法——梯度下降法并在最后提出了另一种下降法的思路——拟牛顿法.梯度下降法是一个连接理论和计算机计算的桥梁,这种方法通过迭代来逐步完成对于目标函数的演化,将离散和连续有机的结合起来.实际上梯度下降法在许多有关偏微分方程算法中也有所用到,例如水平集.主动轮廓模型等.通过本次课程的学习,我们能够更加具体和感性的理解梯度下降,从

梯度下降法和随机梯度下降法的区别

这几天在看<统计学习方法>这本书,发现 梯度下降法 在 感知机 等机器学习算法中有很重要的应用,所以就特别查了些资料.  一.介绍       梯度下降法(gradient descent)是求解无约束最优化问题的一种常用方法,有实现简单的优点.梯度下降法是迭代算法,每一步需要求解目标函数的梯度向量.  二.应用场景      1.给定许多组数据(xi, yi),xi (向量)为输入,yi为输出.设计一个线性函数y=h(x)去拟合这些数据. 2.感知机:感知机(perceptron)为二类分类

最优化问题(牛顿法和梯度下降法)

---恢复内容开始--- http://www.zhihu.com/question/19723347 引自知乎 牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快.如果更通俗地说的话,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大.所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部. 根据wiki上的解释,从几何上说,牛顿法就是用一个

二叔看ML第一:梯度下降

原理 梯度下降是一个很常见的通过迭代求解函数极值的方法,当函数非常复杂,通过求导寻找极值很困难时可以通过梯度下降法求解.梯度下降法流程如下: 上图中,用大写字母表示向量,用小写字母表示标量. 假设某人想入坑,他站在某点,他每移动一小步,都朝着他所在点的梯度的负方向移动,这样能保证他尽快入坑,因为某个点的梯度方向是最陡峭的方向,如下图所示,此图画的不太能表达这个观点,但是懒得盗图了,意会吧: 以下举两个例子,两个例子中的被求函数都很简单,其实直接求导算极值更好,此处仅用来说明梯度下降法的步骤. 实

A-03 牛顿法和拟牛顿法

目录 牛顿法和拟牛顿法 一.牛顿法详解 1.1 无约束最优化问题 1.2 牛顿法迭代公式 1.3 牛顿法和梯度下降法 二.牛顿法流程 2.1 输入 2.2 输出 2.3 流程 三.拟牛顿法简介 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnblogs.com/nickchen121/ 牛顿法和拟牛顿法 牛顿法(Newton method)和拟牛顿法(quasi-Newton method)和梯度下降法一样也是求

【ML-3】梯度下降(Gradient Descent)小结

目录 简述 梯度下降与梯度上升 梯度下降法算法详解 梯度下降法大家族(BGD,SGD,MBGD) 梯度下降法和其他无约束优化算法的比较 总结 ? ? 在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法(在[2]中已经讲解了).这里就对梯度下降法做一个完整的总结. 一.简述 在微积分里面,对多元函数的参数求?偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度. 比如函数f(x,y), 分别对x,