• 凸优化


    凸优化

    1、无约束优化问题
    1)为什么要做优化问题?

     

    2)如何优化?

    方法一:无约束优化直接分析法

     

    泰勒级数展开(标量):

     

    泰勒级数展开(矢量):

     

    无约束优化直接分析法的缺陷:

    1、可能这个函数就不可导

    2、函数可以求导,但是变量很多,求不出导数为0的x

    3、就算求出了解,但是这个解可能是个集合

    方法二:无约束优化迭代法

    无约束优化迭代法的基本结构

     

    无约束优化迭代的方法:

    第一种:梯度下降法,沿负梯度方向,只使用了一阶导数:搜索比较慢,等值线上显示为Z型走法,轨迹是相互正交的。

    第二种:牛顿法。在一阶导数的基础上考虑了二阶导数,性能会更好一点。涉及到了海森矩阵求逆,可能不可逆,比如半正定或者半负定,要做适当修正。等值线上走的是直的。

    第三种:拟牛顿法。使用梯度信息去生成对于海森逆矩阵的连续低秩估计。收敛速度比牛顿法相当,但是计算复杂度低很多。

    2、有约束优化问题
    1)凸集

    凸集:简单理解为集合中任意的两个点的连线,均在集合内。

     

    2)凸函数

     

    凸函数判定的两个方法:

    方法一:一阶充要条件

     

    方法二:二阶充要条件

     

    总结:

    这两种判别方法在判别一个问题是否为凸问题时,往往不能有效的得到结果,因为对于某些问题,他们的一阶导和二阶导并不好求,因此便引出了我们的凸优化问题

    2)凸优化问题

    (1)概述

    如果一个实际的问题可以被表示成凸优化问题,那么我们就可以认为其能够得到很好的解决。常用的解决凸问题的算法有等式优化、内点法等。

    对于一个实际问题,如果不能确定其是否为凸函数,便涉及到本章的凸优化的一些方法,比如KKT条件,对偶法等。

    如果这个问题是凸问题,那么这些方法解出的极值点就是全局的极值点,如果这个问题不是凸问题,那么这些方法解出的极值点很可能是局部极小点。

    (2)KKT条件

    KKT条件的基本思想是如何将约束优化问题转化为无约束优化问题。

     

  • 相关阅读:
    xScrapBook
    使用STL仿函数和判断式来降低复杂性并改善可读[转]
    C++ 开源程序库[转]
    资源泄漏的悲剧
    Excel导入的HDR=YES; IMEX=1详解
    largeint.lib
    共享刚写的简单DirectUI库 只实现了思想
    document.body.scrollTop的值总为零的解决办法
    CDCHandle谨慎使用
    C++中std::tr1::function和bind 组件的使用
  • 原文地址:https://www.cnblogs.com/yongfuxue/p/10038584.html
Copyright © 2020-2023  润新知