数值优化:计算基本理论

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

时间: 2024-10-08 19:56:10

数值优化:计算基本理论的相关文章

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

概述 数值优化对于最优化问题提供了一种迭代算法思路,通过迭代逐渐接近最优解,分别对无约束最优化问题和带约束最优化问题进行求解. 该系列教程能够參考的资料有 1. <Numerical Optimization 2nd>–Jorge Nocedal Stephen J. Wright 2. <凸优化>–Stephen Boyd 3. <非线性最优化基础>–Masao Fukushima(林贵华译) 4. <非线性最优化理论与方法>–王宜举 5. 凸优化在线课程

UVA 10883 - Supermean(组合数学+数值优化)

题目链接:10883 - Supermean 题意:求超级平均数,就是相邻两个算一个平均数,直到剩下一个数,求数值. 思路:画图很容易推断出公式.就拿最后一组样例来说 1     2      3      4      5 1.5  2.5   3.5   4.5 2       3      4 2.5   3.5 3 观察可以发现都是从顶到底,看又几条路线,就有几次,然后最后每个数字在除上相应次数的2,那几条路线就是C(n - 1, [0 - n - 1])的组合数. 所以ans = su

uva 10883 - Supermean(组合数学+数值优化)

题目链接:uva 10883 - Supermean 题目大意:给出n个数,每相邻两个数求平均数,将得到n-1个数,这n-1个数每相邻的两个数求平均值,将得到n-2个数.一次类推,求最后得到的那个数的值. 解题思路:类似与杨辉三角,第i个数起始被加了C(n?1i?1)次.总共有2n?1个数相加.但是因为n有50000,250000根本存不下,所以借助log函数. 例: 中间的2可以通过蓝色和红色两条路径影响最后的答案. #include <cstdio> #include <cstrin

【数值优化】基础

"数值"优化:设置算法时,要考虑舍入误差. 数值优化问题分类: 无约束优化  VS 约束优化 线性规划.目标函数和约束函数都是线性的 二次规划.目标函数为二次的,约束函数为线性. 凸优化.目标函数为凸的,约束函数为线性的. 局部解 VS 全局解 连续   VS  离散 确定  VS  随机 无约束优化问题基础 解的一阶必要条件: 解的二阶必要条件: 解的二阶充分条件: 迭代算法(如何构造下一个迭代点).终止条件 一阶.二阶.直接算法 直接算法无需使用导数,一阶算法需要使用一阶导数,二阶

『科学计算_理论』优化算法:梯度下降法&amp;牛顿法

梯度下降法 梯度下降法用来求解目标函数的极值.这个极值是给定模型给定数据之后在参数空间中搜索找到的.迭代过程为: 可以看出,梯度下降法更新参数的方式为目标函数在当前参数取值下的梯度值,前面再加上一个步长控制参数alpha.梯度下降法通常用一个三维图来展示,迭代过程就好像在不断地下坡,最终到达坡底.为了更形象地理解,也为了和牛顿法比较,这里我用一个二维图来表示: 懒得画图了直接用这个展示一下.在二维图中,梯度就相当于凸函数切线的斜率,横坐标就是每次迭代的参数,纵坐标是目标函数的取值.每次迭代的过程

图片优化调研之理论篇

前言 内容较多,理论部分比较基础.对于新人而言,从浅入深,比较好理解:对于老手而言,可跳过,可直接看实践部分. 总之,希望对大家有所帮助. 1. 收益 为了提升网站性能,保持网站处于“节食”状态非常重要——确保所有新引入的资源都是最精简的,图像优化就是这样一项工作. 大家不妨猜猜图片流量占总流量的百分比.简单对知名网站中图片在整个页面大小中所占比例做了一个调研. 计算其平均值:44.94%. 不一定绝对精确, 但是非常接近.当然,这里的数据主要以首屏时间段采集数据. 从这个数据可以看出,对于图像

数值优化(三、六)

线搜索方法 线搜索方法的基本过程都是在每一次迭代中先计算出一个优化方向\(p_k\),再在这个方向上对目标函数做一维优化,即选取合适的\(\alpha_k\),使\(x_{k+1}=x_k+\alpha p_k\)达到优化目的.一般来说,选取\(p_k=-B_k^{--1}\nabla f_k\),其中\(B_k\)是一个对称正定矩阵,\(B_k\)的选取有多种选择,比如在牛顿法中,\(B_k\)就是Hessian,而在逆牛顿法中,\(B_k\)是Hessian的近似.由于\(p_k=-B_k^

接口性能优化方案及其理论依据

我们现在接口的线上问题主要有三个,第一:启动时有些机器会有短暂的线程池满.第二:并发量上不去,怕服务被打死,不敢调高限流阈值.第三:499超时现象. 今天已上线 今天终于把那天说的全量执行时间延长,从图中可以看到,中午12点发版之后,内存使用率有明显下降,晚上是接口调用高峰,会有上浮,但是总体来看还是下降了. 再来看看上线后的gc情况.目前是高峰期,gc控制在十几秒一次,minor gc得到了控制. 但是这个调优对线上问题一个也不能说是解决,具体真正的作用要靠观察.期望的效果是高峰时cpu峰值不

润乾报表教程-集算报表优化计算过程

报表作为数据统计分析软件,当它出现性能问题需要对数据源计算进行优化时,执行路径难以控制是阻碍报表优化的难题之一.这是由于数据库执行路径不透明,程序员很难甚至无法干预执行路径,也就难以提高数据库的性能.而一般报表工具不具备强计算能力,大部分计算仍然要依靠数据库进行,这就导致很多报表优化效果不理想. 不同于一般报表工具,润乾集算报表内置了专门用于数据计算的集算引擎,开发人员可以通过编写集算脚本完成报表数据源准备.与数据库执行SQL路径不可控相比,集算脚本的执行过程是可控的,开发人员可根据实际情况编写