1. 优化问题

  最一般的优化问题的表述是这样的:

求解等式约束 $\boldsymbol{g}(\boldsymbol{x})=0$ 和不等式约束 $\boldsymbol{h}(\boldsymbol{x})\leq 0$ 下使得取得 $\min f(\boldsymbol{x})$ 的解 $\boldsymbol{x}$

其中 $f:\mathbb{R}^n\Rightarrow \mathbb{R}$,$\boldsymbol{g}:\mathbb{R}^n\Rightarrow \mathbb{R}^m$(即m个等式约束),$\boldsymbol{h}:\mathbb{R}^n\Rightarrow \mathbb{R}^k$(即k个不等式约束)

  这里映射 $\boldsymbol{h}$ 所使用的小于号表示各个分量均小于零。当目标函数 $f$,等式约束函数 $\boldsymbol{g}$ 和不等式约束函数 $\boldsymbol{h}$ 要么缺省要么为线性函数时,该优化问题又称线性规划;否则(只要存在任意一函数非线性)即称为非线性规划。优化问题是数值计算中非常重要的一个问题。和非线性方程组求解一样,这个看似简单的问题也并没有可以直截了当地处理多数问题的silver-bullet,这一方面的理论比较复杂;此外,优化算法的应用领域极其广泛、地位极其重要,除了求解非线性方程组可以使用(matlab中最常用于解非线性方程组的函数fsolve就是使用优化方法,见MATLAB解方程内置函数详解)以外,在人工智能和机器学习领域也有很重要的地位。而不论是高中文科数学总要掌握的线性规划,还是基本的最小二乘问题(也是通常的线性回归使用的方法),其本质都是优化问题的一个特例。

  高等数学的知识告诉我们,一维连续光滑函数取得极值的必要非充分条件是该点导数值为零。如果试图寻找函数在一定区间上的最值(最大/最小值),一般的方法是找出所有的极值点和端点比较其函数值。和这一方法一样,虽然优化问题的一般表述总是将“最值”作为追求的目标,在实际的算法中却几乎总是以求极值为出发点。至于求解总区间上的最值,总是比较复杂和困难,而且总是能够构造处一些函数,它的最值对于计算方法几乎不太可能求出。以下的讨论基本总是求解极值的算法。

2. 问题的性质

2.1 解的存在唯一性:

  若函数 $f$ 在n维有界闭区域 $S$ 上连续,那么 $f$ 在 $S$ 上一定有全局最小值;

  若函数 $f$ 在n维闭区域 $S$ 上连续并且向正无穷发散(coercive,即 $\lim\limits_{||x||\Rightarrow \infty}f(\boldsymbol{x})=+\infty$ ),那么 $f$ 在 $S$ 上一定有全局最小值。

  以上定理只能保证最小值存在,没有建立最小值和极小值之间的关系。但是,对于一类特殊的函数,它在一定区域内的极小值一定是最小值,这类函数即凸函数。凸函数为定义在凸区间上的一种函数,它满足任意两点的连线位于抽象的函数曲面之下;而凸区间则满足任意两点连线仍然在区间中。定义在凸区间内的严格凸函数有唯一的极小值,该极小值为该函数在该区间上的最小值。

2.2 最优化条件:

  一阶最优化条件:一维函数 $f:\mathbb{R}\Rightarrow \mathbb{R}$ 的一阶极值条件:$f'(x)=0$ ;高维函数 $f:\mathbb{R}^n\Rightarrow \mathbb{R}$ 的一阶极值条件:$\nabla f(\boldsymbol{x})=0$ 。

  二阶最优化条件:一维函数 $f:\mathbb{R}\Rightarrow \mathbb{R}$ 的一阶极值条件:$f''(x)>0$ ;高维函数 $f:\mathbb{R}^n\Rightarrow \mathbb{R}$ 的二阶极值条件:$H_f(\boldsymbol{x})$ 正定。其中,$(H_f(\boldsymbol{x}))_{ij}=\frac{\partial^2 f(\boldsymbol{x})}{\partial x_i \partial x_j}$ 称为海塞(Hessian)矩阵,它是高维函数泰勒展开的二次项系数,等价于一维函数泰勒展开的二次项系数(二阶导数)。当一阶最优化条件满足时,海塞矩阵正定$\Rightarrow$该点为极小值点;海塞矩阵负定$\Rightarrow$该点为极大值点;海塞矩阵不定$\Rightarrow$该点为鞍点;海塞矩阵为奇异矩阵$\Rightarrow$无法判断点的类型,此时理论上来说需要有更高阶最优化条件。

2.3 问题的条件:

  考虑一维函数的泰勒级数展开:$f(\hat{x})\approx f(x^*)+f'(x^*)h+f''(x^*)h^2/2$ 。在极值附近,$f'(x^*)=0$, 以函数值距离最小值的差距为向后误差,$|f(x)-f(x^*)|\leq \epsilon$,则有 $h\leq \sqrt{2\epsilon/|f''(x^*)|}$ ,精度比较求解非线性方程是减半的(2n位有效数字$\Rightarrow$n位有效数字)。但是,有许多的数值解法等效于求解一阶最优化条件,此时不应当将函数值距离最小值的差作为向后误差,而应当将一阶导数的绝对值作为向后误差。

3. 数值方法

和数值求解方程的问题类似,数值优化的方法也多为迭代方法。

3.1 一维优化问题

  一维优化问题的数值方法包括:黄金分割搜索法(区间分割),牛顿法(一阶最优化求解),连续二次插值法,等。

3.2 高维优化问题

  高维优化问题的数值方法包括:Nelder-Mead单纯形方法(直接搜索),最速下降法信赖域方法高维牛顿法(一阶最优化求解),拟牛顿法(割线更新迭代)—— BFGS方法共轭梯度法,等。

转载于:https://www.cnblogs.com/gentle-min-601/p/9740841.html

数值优化:计算基本理论相关推荐

  1. 数值优化理论的数学基础

    优化设计数学模型的求解,实际上就是数学中的极值问题.对于无约束优化问题,是求多元函数的无条件极值,约束优化问题是求多元函数的条件极值.尽管高等数学中的极值理论仍然是求解这种问题的理论基础,但是优于机械 ...

  2. 数值优化和几何优化(密度泛函理论)

    1数值优化 为了能够在实际操作中实现数值收敛的DFT计算,我们需要借助于一些数值优化方法,来有效处理具有多个自由度的问题.如同理解倒易空间一样,充分理解优化的核心概念对有效进行DFT计算十分重要.下面 ...

  3. 数值优化(Numerical Optimization)学习系列-文件夹

    概述 数值优化对于最优化问题提供了一种迭代算法思路,通过迭代逐渐接近最优解,分别对无约束最优化问题和带约束最优化问题进行求解. 该系列教程能够參考的资料有 1. <Numerical Optim ...

  4. 复旦大学吴立德《数值优化》、《深度学习》和

    http://i.youku.com/i/UNjAzMzA4NjQ=/playlists?spm=a2hzp.8253869.0.0 [1]复旦大学吴立德教授讲授的<数值优化>. 使用教材 ...

  5. el-select 多选取值_数值优化|笔记整理(3)——线搜索中的步长选取方法,线性共轭梯度法...

    上一节笔记传送门: 学弱猹:数值优化|笔记整理(2)--线搜索:步长选取条件的收敛性​zhuanlan.zhihu.com ------------------------------------ 大 ...

  6. 数值优化(Numerical Optimization)学习系列-目录

    概述 数值优化对于最优化问题提供了一种迭代算法思路,通过迭代逐渐接近最优解,分别对无约束最优化问题和带约束最优化问题进行求解. 该系列教程可以参考的资料有 1. <Numerical Optim ...

  7. 回溯法采用的搜索策略_数值优化|笔记整理(3)——线搜索中的步长选取方法,线性共轭梯度法...

    上一节笔记传送门: 学弱猹:数值优化|笔记整理(2)--线搜索:步长选取条件的收敛性​zhuanlan.zhihu.com ------------------------------------ 大 ...

  8. 最优化方法总结:公式解、数值优化、求解思想

    机器学习的目标是给出一个模型(一般是映射函数),然后定义对这个模型好坏的评价函数(目标函数),求解目标函数的极大值或者极小值,以确定模型的参数,从而得到我们想要的模型. 在这三个关键步骤(定义模型,目 ...

  9. 机器人中的数值优化|【二】最速下降法,可行牛顿法的python实现,以Rosenbrock function为例

    机器人中的数值优化|[二]最优化方法:最速下降法,可行牛顿法的python实现,以Rosenbrock function为例 在上一节中提到了我们详细探讨了数值优化/最优化理论中的基本概念和性质,现在 ...

最新文章

  1. 如何使用 Ansible 和 anacron 实现自动化
  2. 2015年二级c语言真题及答案,2015年计算机二级C语言测试题及答案(4)
  3. Android各种各样的Drawable-更新中
  4. C/Cpp / #define
  5. 两根硬铜线并线接插座_高级电工原来都这样接电线,手法还没见过,我也立马学...
  6. vue+element实现树状表格的增删改查;使用el-table树形数据与懒加载实现树状表格增删改查
  7. CentOS 配置httpd使局域网能够正常訪问
  8. C++ 中使用引用类型的成员变量
  9. jQueru中数据交换格式XML和JSON对比
  10. XShell6免费版获取(个人版)
  11. Redis 中的 standalone(单机模式)配置说明和分析
  12. Mac自带浏览器safari怎么打开开发者选项
  13. SSH框架之理解Spring的IOC反转控制DI依赖注入--入门小实例
  14. 基于深度神经网络的股票多因子预测模型
  15. Lipschitz型函数
  16. 中国人体工程学椅子行业市场供需与战略研究报告
  17. Linux开机自启动挂盘以及进入紧急模式的解决办法
  18. 关于爱国者黑客的追踪报道..
  19. 被薪资倒挂,身为老员工的我要跳槽吗?|智测优聘总结
  20. k8s资源限制——资源的配额管理(Resource Quotas)

热门文章

  1. Linux入门:usermod - 修改用户帐户信息
  2. Spring Cloud连载(2)搭建开发环境
  3. C#语言开发环境的搭建
  4. 金蝶kis记账王使用前要准备哪些资料
  5. 听飞狐聊JavaScript设计模式系列11
  6. Mint17/Ubuntu14.04 samba文件服务器搭建
  7. Java之JVM调优案例分析与实战(5) - 服务器JVM进程奔溃
  8. 使用windows2008R2自带磁盘管理进行分区
  9. 使用IBM WID 建立SOA 之WID简介
  10. 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程)