最优化方法与理论系统学习笔记

本系列所有文章来自东北大学张京老师的最优化方法与理论课程学习笔记,系列如下:
线性规划 (一) 线性规划的基本形式及各种概念
线性规划 (二) 单纯形法
无约束最优化(一) 最速下降法、Newton法、修正Newton法
无约束最优化(二) 共轭方向法与共轭梯度法
无约束最优化(三) 拟Newton法
无约束最优化(四) 步长加速法
无约束最优化(五) 最小二乘法问题的解法
约束最优化方法 (一) 最优性条件
约束最优化方法 (二) Zoutendijk容许方向法
约束最优化方法 (三) 外部罚函数法
约束最优化方法 (四) 乘子法

文章目录

  • 最优化方法与理论系统学习笔记
    • 最速下降法
    • Newton法
    • 修正Newton法

  最速下降法利用目标函数一阶梯度进行下降求解,易产生锯齿现象,在快接近最小值时收敛速度慢。Newton法利用了二阶梯度,收敛速度快,但是目标函数的Hesse矩阵不一定正定。于是出现了修正的Newton法,主要是对不同情况进行了分情况讨论。

最速下降法

  最速下降法是最早的求解多元函数极值的数值方法。它直观、简单。它的缺点是,收敛速度较慢、实用性差。在点xkx_{k}xk​处,沿什么方向寻找下一个迭代点呢?显然应该沿下降方向。一个非常直观的想法就是沿最速下降方向,即负梯度方向:pk=−∇f(xk)p_{k}=-\nabla f(x_{k})pk​=−∇f(xk​)。

  沿pkp_{k}pk​方向进行直线搜索,由此确定下一个点的位置xk+1=xk−tk∇f(xk)x_{k+1} = x_{k} - t_{k}\nabla f(x_{k})xk+1​=xk​−tk​∇f(xk​),我们将tkt_{k}tk​称为步长因子,满足以下等式:
f(xk−tk∇f(xk))=min⁡tf(xk−t∇f(xk))f\left(x_{k}-t_{k} \nabla f\left(x_{k}\right)\right)=\min _{t} f\left(x_{k}-t \nabla f\left(x_{k}\right)\right) f(xk​−tk​∇f(xk​))=tmin​f(xk​−t∇f(xk​))
  简单合记为:
xk+1=ls(xk,−∇f(xk))x_{k+1}=l s\left(x_{k},-\nabla f\left(x_{k}\right)\right) xk+1​=ls(xk​,−∇f(xk​))
  为了书写方便,以后记gk=g(xk)=∇f(xk)g_{k}=g(x_{k})=\nabla f(x_{k})gk​=g(xk​)=∇f(xk​)。

  到这里,我们已经大概知道最速下降法是怎么工作的,那这个步长因子tkt_{k}tk​到底怎么求呢?,我们考虑特殊情况,假设我们的目标函数是正定二次函数:
f(x)=12xTQx+bTx+cf(x)=\frac{1}{2} x^{T} Q x+b^{T} x+c f(x)=21​xTQx+bTx+c
  目标函数对xxx的一阶梯度:
g(x)=Qx+bg(x)=Qx+b g(x)=Qx+b
  这里引入一个定理,之后的求解就是依据这个定理的等式进行求解:

定理:设目标函数f(x)f(x)f(x)具有一阶连续偏导数,若z=ls(x,p)z=ls(x,p)z=ls(x,p),则∇f(z)Tp=0\nabla f(z)^{T}p=0∇f(z)Tp=0。

  依据定理,我们可以得到gk+1⋅gk=0g_{k+1}·g_{k}=0gk+1​⋅gk​=0。由此有:
gk+1⋅gk=[Q(xk−tkgk)+b]Tg(k)=0=[Qxk+b−tkQgk]Tg(k)=0=[gk−tkQgk]Tg(k)=0\begin{aligned} g_{k+1}·g_{k} & = [Q(x_{k}-t_{k}g_{k})+b]^{T}g(k)=0 \\ & = [Qx_{k}+b - t_{k}Qg_{k}]^{T}g(k)=0 \\ & = [g_{k}-t_{k}Qg_{k}]^{T}g(k)=0 \end{aligned} gk+1​⋅gk​​=[Q(xk​−tk​gk​)+b]Tg(k)=0=[Qxk​+b−tk​Qgk​]Tg(k)=0=[gk​−tk​Qgk​]Tg(k)=0​
  由此,可求解出tkt_{k}tk​:
tk=gkTgkgkTQgkt_{k}=\frac{g_{k}^{T}g_{k}}{g_{k}^{T}Qg_{k}} tk​=gkT​Qgk​gkT​gk​​
  最速下降法的迭代点在向极小点靠近的过程中,走的是曲折的路线:后一次搜索方向pk+1p_{k+1}pk+1​与前一次搜索方向pkp_{k}pk​总是相互垂直的,称它为锯齿现象。除极特殊的目标函数(如等值面为球面的函数)和极特殊的初始点外,这种现象一般都要发生。

  由于锯齿现象,在接近极小点的地方,每次迭代进行的距离变得越来越小,因而收敛速度不快,这正是最速下降法的缺点所在。

Newton法

  由于最速下降法速度慢,Newton引入二阶梯度,通过求其Hesse矩阵,一步到位直接求到极小点x∗x^{*}x∗。

  如果目标函数f(x)f(x)f(x)在RnR^{n}Rn上具有连续的二阶偏导数,其Hesse矩阵G(x)=∇2f(x)G(x)=\nabla^{2}f(x)G(x)=∇2f(x)正定,那么就可以用Newton法对其进行求解了。原理如下:

  考虑从xkx_{k}xk​到xk+1x_{k+1}xk+1​的迭代过程。在点xkx_{k}xk​处,对f(x)f(x)f(x)按Taylor级数展开到第三项,即:
f(x)≈Q(x)=f(xk)+g(xk)T(x−xk)+12(x−xk)TG(xk)(x−xk)f(x) \approx Q(x)=f\left(x_{k}\right)+g\left(x_{k}\right)^{T}\left(x-x_{k}\right)+\frac{1}{2}\left(x-x_{k}\right)^{T} G\left(x_{k}\right)\left(x-x_{k}\right) f(x)≈Q(x)=f(xk​)+g(xk​)T(x−xk​)+21​(x−xk​)TG(xk​)(x−xk​)
  又因为Hesse矩阵G(x)G(x)G(x)正定,所以Q(x)Q(x)Q(x)是xxx的正定二次函数。令Q(x)Q(x)Q(x)其一阶导数等于0,求出来的点就是极小点。
∇Q(x)=G(xk)(x−xk)+g(xk)=0\nabla Q(x)=G\left(x_{k}\right)\left(x-x_{k}\right)+g\left(x_{k}\right)=0 ∇Q(x)=G(xk​)(x−xk​)+g(xk​)=0
  解出:
xk+1=xk−G(xk)−1g(xk)x_{k+1}=x_{k}-G\left(x_{k}\right)^{-1} g\left(x_{k}\right) xk+1​=xk​−G(xk​)−1g(xk​)
  xk+1x_{k+1}xk+1​是f(x)f(x)f(x)极小点xxx的新的近似点。上式称为Newton迭代公式,由该公式产生的算法称为Newton法。当目标函数f(x)f(x)f(x)是正定二次函数时,有f(x)f(x)f(x)恒等于Q(x)Q(x)Q(x)。这说明:对于正定二次函数,Newton法一次迭代就会得到最优解。

  现在从几何上我们来直观理解一下,我们要求目标函数f(x)f(x)f(x)的极小值,函数f(x)f(x)f(x)过点xkx_{k}xk​的等值面方程f(x)=f(xk)f(x)=f(x_{k})f(x)=f(xk​),在点xkx_{k}xk​处,用一个与该曲面最密切的二次曲面来代替它(Taylor展开),这个二次曲面的方程即是Q(x)=f(x)Q(x)=f(x)Q(x)=f(x)。当G(x)G(x)G(x)正定时,它是一个超椭球面,Q(x)Q(x)Q(x)的极小点 xk+1x_{k+1}xk+1​正是这个超椭球面的中心。我们就用xk+1x_{k+1}xk+1​作为f(x)f(x)f(x)极小点x∗x^{*}x∗的近似点。如下图所示:

  对于具有正定Hesse矩阵的一般目标函数,由于在极小点附近,它近似地呈现为正定二次函数,所以可以想见,Newton法在最优点附近应该具有较高的收敛速度。

修正Newton法

  Newton法的优点是收敛速度快、程序简单。但是对于表达式很复杂的目标函数,由于其Hesse矩阵很难或不可能求出,这时显然不宜使用Newton法。下面介绍修正Newton法:

  以下讨论仅假定Hesse矩阵可以求到。

  1. 在迭代点xkx_{k}xk​处Hesse矩阵GkG_{k}Gk​变为不可逆,由线性方程组Gkpk=−gkG_{k}p_{k}=-g_{k}Gk​pk​=−gk​无法解出搜索方向pkp_{k}pk​。遇有此种情况,改取pk=−gkp_{k}=-g_{k}pk​=−gk​,然后作直线搜索:
    xk+1=ls(xk,pk)x_{k+1}=ls(x_{k},p_{k}) xk+1​=ls(xk​,pk​)
    即用最速下降法的迭代公式代替Newton法的迭代公式,从而完成这一次迭代。

  2. 在迭代点xkx_{k}xk​处Hesse矩阵GkG_{k}Gk​非奇异,即Gk−1G_{k}^{-1}Gk−1​存在这时可解出pk=−Gk−1gkp_{k}=-G_{k}^{-1}g_{k}pk​=−Gk−1​gk​(称为Newton方向)。按Newton迭代公式,有:
    xk+1=xk+pkx_{k+1}=x_{k}+p_{k} xk+1​=xk​+pk​
    上式可以理解为从点xkx_{k}xk​出发沿pkp_{k}pk​方向进行直线搜索,步长因子取为1。上面这个公式是Newton法中假设目标函数为二次正定而推到出来的,但是现在这个目标函数并没有这一项约束,所以目标函数可能很复杂,因而不能总保证pkp_{k}pk​的方向是下降方向,有时即使是下降方向,也会由于步长因子不加选择地取为1,而不能保证f(xk+1)<f(xk)f(x_{k+1})< f(x_{k})f(xk+1​)<f(xk​)。对此又分情况进行处理:

    a.若f(xk+1)<f(x)f(x_{k+1})< f(x_{})f(xk+1​)<f(x​),那函数是朝着下降方向去的,则该迭代有效。

    b.若f(xk+1)≤f(x)f(x_{k+1}) \leq f(x_{})f(xk+1​)≤f(x​),则表明函数不是朝着下降方向去的,这里又分了两种情况进行了讨论

    第一:当∣gkTpk∣≤ε∥gk∥∥pk∥\left |g_{k}^{T}p_{k}\right | \leq \varepsilon \left \| g_{k} \right \| \left \|p_{k} \right \|∣∣​gkT​pk​∣∣​≤ε∥gk​∥∥pk​∥,(ε\varepsilonε是某一很小的正数)时(说明pkp_{k}pk​与−gk-g_{k}−gk​几乎垂直,也就是说一阶梯度和假设目标函数为二次正定而求出的梯度方向完全不一致,也就是说明目标函数假设为二次正定函数错误,应该取一阶梯度方向),故Newton方向pkp_{k}pk​是不利方向。这时,改取pk=−gkp_{k}=-g_{k}pk​=−gk​,然后新进行直线搜索。

    第二:gkTpk<ε∥gk∥∥pk∥g_{k}^{T}p_{k} < \varepsilon \left \| g_{k} \right \| \left \|p_{k} \right \|gkT​pk​<ε∥gk​∥∥pk​∥时说明Newton方向pk=−Gk−1gkp_{k}=-G_{k}^{-1}g_{k}pk​=−Gk−1​gk​是下降方向(一阶梯度和假设目标函数为二次正定而求出的梯度方向之间的夹角是小于90度的,大体方向一致),这时重新进行直线搜索。否则,有gkTpk>ε∥gk∥∥pk∥g_{k}^{T}p_{k} > \varepsilon \left \| g_{k} \right \| \left \|p_{k} \right \|gkT​pk​>ε∥gk​∥∥pk​∥时说明Newton方向pk=−Gk−1gkp_{k}=-G_{k}^{-1}g_{k}pk​=−Gk−1​gk​是上升方向(一阶梯度和假设目标函数为二次正定而求出的梯度方向之间的夹角是大于90度的,大体方向相反)改取Newton方向的反方向pk=Gk−1gkp_{k}=G_{k}^{-1}g_{k}pk​=Gk−1​gk​为搜索方向,然后重新进行直线搜索。

我的微信公众号名称:深度学习与先进智能决策
微信公众号ID:MultiAgent1024
公众号介绍:主要研究分享深度学习、机器博弈、强化学习等相关内容!期待您的关注,欢迎一起学习交流进步!

无约束最优化(一) 最速下降法、Newton法、修正Newton法相关推荐

  1. maple 解代数方程组得多项式_利用修正影射法求组合KdV方程新的精确解

    1引言非线性科学研究的一个重要方面就是讨论孤立子的性质.相互作用及其随时间运动演化的特点,因此非线性演化方程的求解越来越显得具有理论和实际意义.组合KdV方程是KdV和mKdV方程的复合,既包含有非线 ...

  2. 修正 Newton 公式

    修正 Newton 公式 yangbocsu 2021.06.13 民主楼 三.(本题 10 分)设有非线性方程: f (x) ex xcos x10 (1) 问 x* 0 是方程的几重根? ...

  3. 最优化方法笔记2:多维无约束最优化

    最优化方法笔记2:多维无约束最优化 1 多维无约束最优化问题(待更新) 1.1 随机搜索法 1.2 共轭方向法(鲍威尔(Powell方法) 1.3 梯度法 1.2.1 最速上升法 1.2.2 改进的梯 ...

  4. 基于熵权法对TOPSIS法模型的修正

    最近在学习数学建模,在B站发现一个特别不错的课程,讲的很全面,常考的算法都有涉及到:清风数学建模 本文将结合熵权法介绍TOPSIS法,并将淡化原理的推导,更侧重于具体应用. TOPSIS法 概述 TO ...

  5. 方根法公式_仓储管理笔记之库存分析法:ABC分析法、区域合并法......

    导读 国内有庞大的仓储物流从业人员队伍(根据中国物流与采购联合会的调查,2016年底我国物流从业人员5012万,是人员增速最快的行业),很多人只是想深入了解仓库从无序到有序,从源头开始应该如何管理.如 ...

  6. 聊聊三维重建-条纹法之相位法(一)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文由知乎作者Tengfei Jiang授权转载,不得擅自二次转载. 原文链接: https://zh ...

  7. c语言排序算法插入法,C语言中冒泡法、选择法、插入法三种常见排序算法分析.doc...

    C语言中冒泡法.选择法.插入法三种常见排序算法分析.doc 一.冒泡法(起泡法) 算法要求用起泡法对10个整数按升序排序. 算法分析如果有n个数,则要进行n-1趟比较.在第1趟比较中要进行n-1次相邻 ...

  8. 软件测试 通用技术03 测试用例 黑盒测试用例设计方法 等价类划分法 边界值分析法 判定表法 场景法 功能图法 其他用例设计方法 用例设计方法综合选择

    文章目录 1 测试用例 1.1 测试用例的定义 1.2 测试用例模板 1.3 测试用例模板的内容 测试用例编号 测试项 依赖用例 测试步骤 测试数据 预期结果 测试结果 测试人 备注 2 测试用例编写 ...

  9. 使用c语言测试大端和小端,C语言*符号使用及大端法小端法测试

    工具:Microsoft Visual C++ 6.0 例子: int a = 1; int* b = &a; C语言规定a表示存储单元中的数据,&a表示存储单元的地址,b存储的就是a ...

  10. SAR图像的干涉相位 matlab_聊聊三维重建-条纹法之相位法-1

    一.前 言 前文 介绍了双目立体视觉的基本原理.具体到三维扫描应用中,有多种结构光重建的方案.条纹法是其中应用比较广泛的一类方法,尤其在追求高精度的工业应用中比较常见.条纹法,顾名思义,通过投射一组时 ...

最新文章

  1. 一文让你轻松了解 JAVA 开发中的四种加密方法
  2. linux下c语言tcp文件传输,C语言实现TCP通信
  3. YbtOJ#20066-[NOIP2020模拟赛B组Day4]筹备计划【线段树,树状数组】
  4. 16产品经理需要具备的做事能力
  5. 坐拥12亿月活流量,腾讯直播带货的底牌
  6. Cookie,Session解决用户的会话跟踪问题
  7. HttpContext.Current.Session.SessionID相关问题及备忘
  8. 我在软件协会修WiFi
  9. Yandex支持插件的手机浏览器
  10. 华为防火墙重启_华为USG6000系列防火墙重置密码
  11. 计算摄影——自动构图
  12. 鉴相,鉴频以及环路跟踪算法的理解:
  13. 为设计师写的色彩对比指南,让你真正了解色彩对比
  14. (摘之博客园狂奔di蜗牛)ASP.NET页面刷新方法总结
  15. bzoj2818Gcd
  16. 拉新促活:社交平台唤醒App的高效策略
  17. matlab——计算VPD(vapor pressure defict)
  18. RubyProgramming:向Ruby之父学程序设计pdf
  19. SQL查询语句(从单表到多表、从简单到复杂)
  20. List.isEmpty()与CollectionUtils.isEmpty的区别

热门文章

  1. web安全day35:Linux防火墙进阶
  2. linux apache访问日志,linux分析apache日志获取最多访问的前10个IP
  3. CICD详解(一)——概念和原理
  4. Linux进程控制与进程优先级
  5. 从面向对象的api中识别软件组件(论文翻译)
  6. HDOJ-1201 18岁生日
  7. “万物控制”是物联网下一个挑战
  8. 中国制造业加速拥抱云计算 产业规模达1500亿
  9. HDU_1847_基础博弈sg函数
  10. 面向对象中多个对象之间的关系