码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【最优化理论】03-无约束优化


    无约束优化

    • 无约束优化问题
    • 无约束优化问题的应用
    • 无约束优化问题的最优性条件
      • 无约束-凸函数-最优性条件(充要)
      • 无约束-一般函数-最优性条件
        • 必要条件
          • 一阶必要条件:梯度为0
          • 二阶必要条件:hessian矩阵半正定
        • 充分条件
          • 二阶充分条件:梯度为0 + hessian矩阵正定 = 严格最优
    • 无约束优化问题解法:迭代下降算法
      • 迭代下降算法基本思想
      • 迭代下降算法步骤
    • 迭代下降算法中-如何从当前点迭代到下一个点?
      • 1 何时终止?(终止条件/收敛准则)
      • 2 如何确定下降方向?
        • 梯度反方向
        • Zoutendijk定理(为保证全局收敛下降方向应该遵循的准则)
      • 3 如何确定步长?
        • 线搜索中确定步长 - 一维线搜索(一维问题)
        • 一维线搜索闭性
        • 一维线搜索方法
          • 精确线搜索
            • 精确线搜索方法基本框架
            • 精确线搜索特点
            • 精确线搜索方法
              • 梯度为0(简单函数 - 一元二次函数)
            • 试探法 - 基于搜索区间的直接搜索法(一般函数)
              • 常用直接搜索法
              • 均匀搜索法
              • 黄金区间法(0.618法)
            • 基于导数信息的二分法
          • 非精确线搜索 Inexact Linear Search
            • Armijo 条件 & Goldstein 法则
      • 4 {x^k}收敛性与收敛速度(如何判断算法优劣?)
        • 收敛性
        • 收敛速度
          • Q-收敛速率
          • R-收敛速率
        • 收敛速度比较基准:算法在严格凸(正定)二次函数上的收敛速度(二次终止性)
          • 二次终止性
    • 常用迭代下降算法
      • 一维线搜索(Linear Search)
        • step1 确定下降方向
        • step2 确定步长(一维问题)
      • 信赖域方法(Trust Region)
        • step1 确定步长(n维问题)
        • step2 确定下降方向
      • 朴素算法:坐标轴交替下降法
        • 基本思想
        • 基本框架
        • 优缺点
        • 改进方法
          • n次坐标轴交替后插入一次线搜索
      • 最速下降法(梯度下降法)
        • 最速下降法框架
        • 基本思想
        • 优缺点
        • 缺点原因
      • 牛顿法(Steepest Descent Method)
        • 牛顿法算法框架
        • 基本思想
        • 问题:牛顿方向一定是下降方向吗?(hessian矩阵不正定时,特征值含0或负数)
        • 优缺点
          • 牛顿法缺点
          • 牛顿法优点
        • 严格二次凸函数使用牛顿法一次迭代可达到最优解
        • 牛顿法改进策略
      • 阻尼牛顿法
      • 修正牛顿法
          • 修正迭代步长:线搜索
          • 修正迭代方向:针对hessian矩阵含0特征值或负特征值的情况
            • 方法一:特征值加一个正数
            • 方法二:0特征值或负特征值替换为正特征值
        • 牛顿-最速下降法
      • 牛顿法 Vs 最速下降法
      • 共轭梯度法
        • 背景知识
        • 提出问题
        • 共轭方向
          • 共轭方向性质
        • 共轭方向法
          • 共轭方向法性质
            • 特征1 : 当前点处梯度与之前每个迭代方向内积都为0
              • 当前点处梯度与产生该点的迭代方向内积为0
              • 当前点处梯度与之前的迭代方向内积都为0
            • 特征2:对于一元二次严格凸函数使用共轭方向法n步可找到最优解 x^n
          • 共轭梯度法(边迭代边产生迭代方向)
          • 线性共轭梯度法
            • 研究动机
            • β如何求出来的?
            • 为什么公式中只有βk而没有β0~βk-1?
            • 公式化简
            • 为什么要进行公式化简?
            • 线性共轭梯度法的收敛性
            • 线性共轭梯度法性质
            • 严格二次凸函数共轭梯度法
            • 一般函数的共轭梯度法
          • 非线性共轭梯度法(解决一般函数)
            • FR共轭梯度法基本步骤
              • 迭代延续的方法
              • 一般情形下的FR共轭梯度法
            • 一些说明
              • 实际使用中n步重启策略的原因
    • 无约束优化算法总结

    无约束优化问题

    m i n x ∈ R n f ( x ) \underset{x\in R^n}{min} f(x) x∈Rnmin​f(x)

    无约束优化问题的应用

    约束优化问题转换为无约束优化问题求解

    无约束优化问题的最优性条件

    无约束-凸函数-最优性条件(充要)

    在这里插入图片描述

    无约束-一般函数-最优性条件

    必要条件

    一阶必要条件:梯度为0

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    二阶必要条件:hessian矩阵半正定

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    充分条件

    二阶充分条件:梯度为0 + hessian矩阵正定 = 严格最优


    在这里插入图片描述

    无约束优化问题解法:迭代下降算法

    迭代下降算法基本思想

    在这里插入图片描述

    迭代下降算法步骤

    在这里插入图片描述

    选取搜索方向是最关键的一步,各种算法的区别主要在于确定搜索方向的方法不同。

    迭代下降算法中-如何从当前点迭代到下一个点?

    1 何时终止?(终止条件/收敛准则)

    判断梯度是否接近0, ε \varepsilon ε 是一个非常小接近于0的数。
    在这里插入图片描述
    在这里插入图片描述

    2 如何确定下降方向?

    待补充

    梯度反方向

    Zoutendijk定理(为保证全局收敛下降方向应该遵循的准则)

    在这里插入图片描述

    ∣ ∣ Δ f ( x k ) ∣ ∣ → 0 ||\Delta f(x^k)||\rightarrow 0 ∣∣Δf(xk)∣∣→0 表示全局收敛

    在这里插入图片描述

    有界即 ∣ ∣ Δ f ( x k ) ∣ ∣ → 0 ||\Delta f(x^k)||\rightarrow 0 ∣∣Δf(xk)∣∣→0 表示全局收敛

    3 如何确定步长?

    线搜索中确定步长 - 一维线搜索(一维问题)

    在这里插入图片描述

    在这里插入图片描述

    一维线搜索闭性

    一维线搜索方法

    精确线搜索

    在这里插入图片描述
    在这里插入图片描述

    精确线搜索方法基本框架

    在这里插入图片描述

    精确线搜索特点

    在这里插入图片描述

    精确线搜索方法
    梯度为0(简单函数 - 一元二次函数)

    在这里插入图片描述

    试探法 - 基于搜索区间的直接搜索法(一般函数)

    在这里插入图片描述

    常用直接搜索法
    均匀搜索法

    在这里插入图片描述

    黄金区间法(0.618法)

    优点:每次只计算一个点的函数值。
    在这里插入图片描述

    基于导数信息的二分法

    在这里插入图片描述

    非精确线搜索 Inexact Linear Search

    在这里插入图片描述

    Armijo 条件 & Goldstein 法则

    如果步进太小,函数值变化也小,为了避免Armijo条件步进小的问题,提出G法则。
    在这里插入图片描述

    4 {x^k}收敛性与收敛速度(如何判断算法优劣?)

    收敛性

    在这里插入图片描述

    收敛速度

    在这里插入图片描述

    Q-收敛速率

    在这里插入图片描述

    在这里插入图片描述

    R-收敛速率

    在这里插入图片描述
    在这里插入图片描述

    收敛速度比较基准:算法在严格凸(正定)二次函数上的收敛速度(二次终止性)

    二次终止性

    若某个算法对于任意的正定二次函数 f ( x ) = 1 2 x T P x + Q T x + δ f(x)=\frac {1}{2} x^TPx+Q^Tx+\delta f(x)=21​xTPx+QTx+δ,其中P是n阶正定对称矩阵,从任意的起始点出发,都能经有限步迭代到其极小点,则称该算法具有二次终止性。

    在这里插入图片描述

    常用迭代下降算法

    一维线搜索(Linear Search)

    先确定下降方向,再确定步长。

    因为线搜索先确定了方向,所以确定步长是一维问题。

    在这里插入图片描述

    step1 确定下降方向

    step2 确定步长(一维问题)

    信赖域方法(Trust Region)

    先确定步长(确定一个以步长为半径的范围),再确定下降方向。

    因为信赖域方确定步长前没有确定方向,所以确定步长是n维问题。

    在这里插入图片描述

    信赖域实际求解的时候,一般为了方便求解,约束不变,找到一个 f ( x k + d ) f(x^k+d) f(xk+d) 的近似函数进行最小化。

    step1 确定步长(n维问题)

    step2 确定下降方向

    朴素算法:坐标轴交替下降法

    基本思想

    选择迭代方向需要很大的计算量,为了避免选择迭代方向,直接选择坐标轴正反方向进行搜索,因为是沿坐标轴搜索,所以该过程中都是一元问题。

    基本框架

    在这里插入图片描述

    优缺点

    在这里插入图片描述

    改进方法

    n次坐标轴交替后插入一次线搜索

    在这里插入图片描述

    最速下降法(梯度下降法)

    在这里插入图片描述

    最速下降法框架

    在这里插入图片描述

    基本思想

    负梯度方向也叫最速下降方向。
    在这里插入图片描述
    如何判断d^k是负梯度方向?
    d k ⋅ ∇ f ( x k ) ≤ 0 d^k \cdot \nabla f(x^k) \le 0 dk⋅∇f(xk)≤0

    优缺点

    在这里插入图片描述

    最速下降法,对于严格凸二次函数,不能在有限步找到最优解,即不具备二次终止性。

    在这里插入图片描述

    缺点原因

    在这里插入图片描述

    在这里插入图片描述

    经过上述推导得出:若使用精确线搜索,且迭代方向选择负梯度方向,则k处梯度与k+1处梯度内积为0,即相邻两个迭代点处梯度方向垂直。

    在这里插入图片描述

    牛顿法(Steepest Descent Method)

    在这里插入图片描述

    牛顿法算法框架

    在这里插入图片描述

    基本思想

    在这里插入图片描述

    使用二阶taylor展开式逼近当前函数,求出二阶taylor展开式的导数,并使导数为0,可以得到以下式子。

    在这里插入图片描述

    假设hessian矩阵正定。

    在这里插入图片描述

    跟 x k + 1 = x k + α k d k x^{k+1}=x^k+\alpha_k d^k xk+1=xk+αk​dk 对比,又有 d k = − [ ∇ 2 f ( x k ) − 1 ∇ f ( x k ) ] d^k=-[\nabla^2f(x^k)^{-1}\nabla f(x^k)] dk=−[∇2f(xk)−1∇f(xk)],所以步长 α k \alpha_k αk​ 为1。

    在这里插入图片描述

    问题:牛顿方向一定是下降方向吗?(hessian矩阵不正定时,特征值含0或负数)

    判断是否下降方向的方法: ∇ f ( x k ) T d k ≤ 0 \nabla f(x^k)^Td^k \le 0 ∇f(xk)Tdk≤0
    在这里插入图片描述

    优缺点

    在这里插入图片描述

    牛顿法缺点

    缺点:不但要计算梯度,还要计算hessian矩阵。

    在这里插入图片描述

    牛顿法优点

    在这里插入图片描述

    严格二次凸函数使用牛顿法一次迭代可达到最优解

    对于严格凸二次规划,牛顿法只需一步迭代即可得到最优解。

    严格二次凸函数近似逼近函数就是其本身,一次求导使得导数为0,即可求出最优解。

    在这里插入图片描述

    牛顿法改进策略

    在这里插入图片描述

    阻尼牛顿法

    在这里插入图片描述

    修正牛顿法

    修正迭代步长:线搜索

    在这里插入图片描述

    修正迭代方向:针对hessian矩阵含0特征值或负特征值的情况

    在这里插入图片描述

    方法一:特征值加一个正数

    正数不能选太大,如果选太大,hessian矩阵的作用就会被淹没,二阶信息体现不出来。
    在这里插入图片描述

    方法二:0特征值或负特征值替换为正特征值

    在这里插入图片描述

    牛顿-最速下降法

    在这里插入图片描述

    牛顿法 Vs 最速下降法

    在这里插入图片描述

    共轭梯度法

    背景知识

    在这里插入图片描述

    提出问题

    在这里插入图片描述

    若Q为对角阵,则等值线为椭圆,且长短轴平行于xy坐标轴,根据坐标交替法,两步即可找到最优解。
    若Q为非对角阵,则等值线不是椭圆,长短轴不平行于xy坐标轴,不能使用坐标交替法,需要先对Q进行相似对角化(即 Q = P T D P Q=P^TDP Q=PTDP,也可以理解为找到x的可逆线性变换 x ^ = P x \hat x = Px x^=Px),之后按照D为对角矩阵,则等值线为椭圆,且长短轴平行于xy坐标轴,根据坐标交替法,两步即可找到 x ^ \hat x x^ 最优解,再通过 x = P − 1 x ^ = P T x ^ x=P^{-1}\hat x=P^T\hat x x=P−1x^=PTx^,求出x。

    但是计算P需要解线性方程组,又回到了原始求解线性方程组困难的问题,所以需要找到一组向量组成矩阵S ( d 0 , d 1 , d 2 , . . . , d n − 1 ) = S (d^0,d^1,d^2,...,d^{n-1})=S (d0,d1,d2,...,dn−1)=S,使得S跟P一样,可以对Q进行对角化。向量 d 0 , d 1 , d 2 , . . . , d n − 1 d^0,d^1,d^2,...,d^{n-1} d0,d1,d2,...,dn−1间需要满足的关系就是关于矩阵Q共轭。
    在这里插入图片描述

    共轭方向

    在这里插入图片描述

    d 0 , d 1 , d 2 , . . . , d n − 1 d^0,d^1,d^2,...,d^{n-1} d0,d1,d2,...,dn−1 就是n个共轭方向。

    共轭方向性质

    在这里插入图片描述
    在这里插入图片描述

    共轭方向法

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    共轭方向法性质

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    特征1 : 当前点处梯度与之前每个迭代方向内积都为0
    当前点处梯度与产生该点的迭代方向内积为0

    原因:使用的是精确搜索步长。
    在这里插入图片描述

    当前点处梯度与之前的迭代方向内积都为0

    在这里插入图片描述

    特征2:对于一元二次严格凸函数使用共轭方向法n步可找到最优解 x^n

    在这里插入图片描述

    共轭梯度法(边迭代边产生迭代方向)

    共轭方向法是一类方法的总称,共轭梯度法是其中一种。

    边迭代边产生迭代方向,并且新产生的迭代方向要与之前的每个迭代方向共轭。

    在这里插入图片描述
    在这里插入图片描述

    线性共轭梯度法
    研究动机

    解决维度较大的线性方程组求解问题。
    在这里插入图片描述

    β如何求出来的?

    在这里插入图片描述

    为什么公式中只有βk而没有β0~βk-1?

    在这里插入图片描述

    公式化简

    在这里插入图片描述
    在这里插入图片描述

    为什么要进行公式化简?

    因为要将共轭梯度法求解线性方程组(如一元二次函数梯度=0的超多维线性方程组)扩展到非线性方程组求解。最后的公式中,βk只包含函数梯度。
    在这里插入图片描述

    线性共轭梯度法的收敛性

    在这里插入图片描述

    线性共轭梯度法性质

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    严格二次凸函数共轭梯度法

    在这里插入图片描述
    在这里插入图片描述

    一般函数的共轭梯度法

    在这里插入图片描述

    非线性共轭梯度法(解决一般函数)

    在这里插入图片描述
    在这里插入图片描述

    FR共轭梯度法基本步骤

    在这里插入图片描述

    迭代延续的方法

    在这里插入图片描述

    一般情形下的FR共轭梯度法

    在这里插入图片描述

    一些说明

    在这里插入图片描述

    n步重启策略:把n步作为一轮,每搜索一轮之后,取一次最速下降方向,开始下一轮。

    实际使用中n步重启策略的原因

    1 迭代n次后,d0对于dn 没有太大作用,将这部分信息清洗掉。
    2 在一轮中某次迭代,可能落到类似于一元二次函数的区域,重启可以使用线性共轭梯度法的优点。

    无约束优化算法总结

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    c++算法竞赛常用板子集合(持续更新)
    瓴羊,从阿里最佳实践到社会化服务
    主机加固如何应对数据世界的绑匪
    MySQL中datetime和timestamp的区别
    一起Talk Android吧(第三百七十五回:如何使用ViewPager2)
    “秘密入职”字节跳动,百度高级经理一审被判赔107万
    k8s强制删除pod、svc、namespace(Terminating)
    Node.js【模块的加载机制、初识 Express、Express 路由】
    虹科分享 | 谷歌Vertex AI平台使用Redis搭建大语言模型
    脚本语言和编译语言的区别 什么是解释器? 什么是编译器 ?解释器和编译器有什么区别?
  • 原文地址:https://blog.csdn.net/guai7guai11/article/details/127846954
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号