最优化理论与技术
Posted colleenhe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最优化理论与技术相关的知识,希望对你有一定的参考价值。
课程内容
- 预备知识
- 线性规划
- 一维搜索方法
- 无约束最优化方法
- 约束最优化方法
- 工程应用优化
预备知识
- 最优化问题
- 多元函数的Taylor公式
- 多元函数极值问题
- 凸集、凸函数和凸优化
- 算法相关概念
- 算法概述
最优化问题
数学表示
[minf(x)\s.t quad c(x)ge 0]
- (x=(x_1,x_2,...,x_n))是一个包含多变量的向量:决策变量
- (c(x))是对各个变量约束的等式和不等式:约束条件
- 可行域:约束条件在空间围成的区域
- 可行解:可行域中每个点都是原问题的可行点
- (f(x)):目标函数
- 最优解:能使目标函数达到最大或最小的可行解
分类
按约束
- 无约束
- 有约束
- 等式约束
- 不等式约束
按目标函数
- 线性规划
- 非线性规划
按函数变量
- 整数规划
- 非整数规划
按目标函数个数
- 单目标优化
- 多目标优化
多元函数的Taylor公式
多元函数的梯度
偏导:多元函数降维时的变化,比如二元函数固定(y),只让(x)单独变化,从而看成关于(x)的一元函数的变化
[f_x(x,y)=lim_{Delta x o 0}frac{f(x+Delta x,y)-f(x,y)}{Delta x}]
记作(frac{partial f(x,y)}{partial x})
梯度:多元函数在(A)点无数个变化方向中变化最快的那个方向;每一个变量都沿着关于这个变量的偏导所指定的方向来变化,函数的整体变化就能达到最大 (变化的绝对值最大) 。
[gradA=(f_x(A),f_y(A),f_z(A))]
多元函数的极值与Hessian矩阵
参考Hessian矩阵与多元函数极值
一元函数极值问题:(f(x)=x^2),先求一阶导数(f'(x)=2x),根据费马定理极值点处的一阶导数一定等于0。
- 费马定理给出的是必要条件,由一阶导数=0可推出该店为极值,但不能由极值推出一阶导数=0
- 对该二次函数,一阶导数=0求得极值,但对(f(x)=x^3),只检查一阶导数是不足以推出结果的
- 对(f(x)=x^3),再求二阶导数,如果(f''<0),说明函数在该点取得局部极大值;如果(f''>0),说明函数在该点取得局部极小值;如果(f''=0),说明结果任然不确定,需要其他方式确定函数极值
多元函数极值问题:(f=f(x,y,z)),首先对每一个变量分别求偏导数,求得函数的可能极值点
[frac{partial f}{partial x}=0\frac{partial f}{partial y}=0\frac{partial f}{partial z}=0]
接下来,继续求二阶导数,包含混合偏导共9个偏导函数,用矩阵表示得到
[H=egin{matrix}frac{partial ^2f}{partial x partial x} & frac{partial ^2 f}{partial x partial y } & frac{partial ^2 f}{partial x partial z } \ frac{partial ^2f}{partial y partial x} & frac{partial ^2 f}{partial y partial y } & frac{partial ^2 f}{partial y partial z } \ frac{partial ^2f}{partial z partial x} & frac{partial ^2 f}{partial z partial y } & frac{partial ^2 f}{partial z partial z}end{matrix}]
矩阵(H)就是一个三阶Hessian矩阵。扩展到一般情况,对一个在定义域内二阶连续可导的实质多元函数(f(x_1,x_2,...,x_n))定义其Hessian矩阵(H)如下
[H=egin{matrix}frac{partial ^2f}{partial x_1 partial x_1} & frac{partial ^2 f}{partial x_1 partial x_2 } & dots &frac{partial ^2 f}{partial x_1 partial x_n } \ frac{partial ^2f}{partial x_2 partial x_1} & frac{partial ^2 f}{partial x_2 partial x_2 } & dots & frac{partial ^2 f}{partial x_2 partial x_n } \ vdots & vdots & ddots & vdots \frac{partial ^2f}{partial x_n partial x_1} & frac{partial ^2 f}{partial x_n partial x_2 } & dots & frac{partial ^2 f}{partial x_n partial x_n}end{matrix}]
当一元函数的二阶导数=0,不能确定函数在该点的极值性。类似地,当Hessian矩阵行列式=0,也不能断定多元函数极值性的情况。甚至可能得到一个鞍点,也就是一个既非极大值也非极小值的点。
基于Hessian矩阵,可判断多元函数极值情况如下:
- 如果Hessian矩阵是正定矩阵,则临界点处是一个局部极小值
- 如果Hessian矩阵是负定矩阵,则临界点处是一个局部极大值
- 如果Hessian矩阵是不定矩阵,则临界点处不是极值
判断矩阵是否正定:
- 顺序主子式;实对称矩阵为正定矩阵的充要条件是的各顺序主子式都大于零
- 特征值;实二次型矩阵为正定二次型的充要条件是的矩阵的特征值全大于零;负定二次型的充要条件是的矩阵的特征值全小于零;否则是不定的
泰勒展开式
一元函数的泰勒公式:设一元函数(f(x))在包含点(x_0)的开区间((a,b))内具有(n+1)阶导数,则当(x in (a,b))时,(f(x))的(n)阶泰勒公式为:
[f(x)=f(x_0)+f'(x_0)(x-x_0)+frac{f''(x_0)}{2!}(x-x_0)^2+...+frac{f^{(n)}(x_0)}{n!}(x-x_0)^n+R_n(x)]
其中,(R_n(x))的拉格朗日余项表达形式
[R_n(x)=frac{f^{(n+1)}(xi)}{(n+1)!}(x-x_0)^{n+1}quad xi in (x,x_0)]
(R_n(x))的皮亚诺余项表达形式
[R_n(x)=o[(x-x_0)^n]]
二元函数的泰勒公式:设二元函数(z=f(x,y))在点((x_0,y_0))的某一领域内连续且有直到(n+1)阶的连续偏导数,则有
[f(x,y)=f(x_0,y_0)+[(x-x_0)frac{partial}{partial x}+(y-y_0)frac{partial}{partial y}]f(x_0,y_0)+\ frac{1}{2!}[(x-x_0)frac{partial}{partial x}+(y-y_0)frac{partial}{partial y}]^2f(x_0,y_0)+...\ +frac{1}{n!}[(x-x_0)frac{partial}{partial x}+(y-y_0)frac{partial}{partial y}]^nf(x_0,y_0)\+R_n(x,y)]
其中,记号
[(x-x_0)frac{partial}{partial x}+(y-y_0)frac{partial}{partial y}]f(x_0,y_0)]
表示
[(x-x_0)f_x(x_0,y_0)+(y-y_0)f_y(x_0,y_0)]
记号
[[(x-x_0)frac{partial}{partial x}+(y-y_0)frac{partial}{partial y}]^2f(x_0,y_0)]
表示
[(x-x_0)^2f_{xx}(x_0,y_0)+2(x-x_0)(y-y_0)f_{xy}(x_0,y_0)+(y-y_0)^2f_{yy}(x_0,y_0)]
一般地,记号
[[(x-x_0)frac{partial}{partial x}+(y-y_0)frac{partial}{partial y}]^mf(x_0,y_0)]
表示
[sum_{p=0}^m C_m^p(x-x_0)^p(y-y_0)^{(m-p)} frac{partial^m f}{partial x^ppartial y^{(m-p)}}|_{(x_0,y_0)}]
用一般化表达式重写上面的式子
[f(x,y)=sum_{k=0}^nfrac{1}{k!}[(x-x_0)frac{partial}{partial x}+(y-y_0)frac{partial}{partial y}]^kf(x_0,y_0)\ +R_n(x,y)]
拉格朗日余项为:
[R_n(x,y)=frac{1}{(n+1)!}[(x-x_0)frac{partial}{partial x}+(y-y_0)frac{partial}{partial y}]^{(n+1)}f(x_0+ heta(x-x_0),y_0+ heta(y-y_0))\ heta in (0,1)]
皮亚诺余项为:
[R_n(x,y)=o( ho^n)]
Hessian矩阵与泰勒展开的关系:对于一个多维向量(X),多元函数(f(X))在点(X_0)的领域内有连续二阶偏导数,可写出(f(X))在点(X_0)处的二阶泰勒展开式
[f(mathbf{X})=f(mathbf{X}_0)+(mathbf{X}-mathbf{X}_0)^T abla f(mathbf{X}_0)+frac{1}{2!}(mathbf{X}-mathbf{X}_0)^T abla^2 f(mathbf{X}_0)(mathbf{X}-mathbf{X}_0)+o(|mathbf{X}-mathbf{X}_0|^2)]
而( abla^2 f(mathbf{X}_0))显然是一个Hessian矩阵,所以可写成:
[f(mathbf{X})=f(mathbf{X}_0)+(mathbf{X}-mathbf{X}_0)^T abla f(mathbf{X}_0)+frac{1}{2}(mathbf{X}-mathbf{X}_0)^Tmathbf{H}(mathbf{X}_0)(mathbf{X}-mathbf{X}_0)+o(|mathbf{X}-mathbf{X}_0|^2)]
多元函数取得极值的必要条件:(u=f(x_1,x_2,...,x_n))在点(M)处有极值,则有
[ abla f(M)=left {frac{partial f}{partial x_1},frac{partial f}{partial x_2},cdots, frac{partial f}{partial x_n} ight}_M=0]
多元函数取得极值的充分条件:其二阶偏导组成的Hessian矩阵为正定(局部极小值)or负定(局部极大值)
凸集、凸函数和凸优化问题
凸集
集合(C)内任意两点间的线段也在集合(C)内,则称集合(C)为凸集:
[lambda x +(1-lambda)y in Cquad for quad forall lambda in (0,1),quad forall(x,y)in C]
凸函数
定义在凸集(C)上的凸函数:
[f(lambda x_1+(1-lambda)x_2)le lambda f(x_1)+(1-lambda)f(x_2) \x_1,x_2 in C;quad lambda in (0,1)]
凸优化
机器学习主要做的就是优化问题,先初始化一下权重参数,然后利用优化方法来优化权重,直到准确率不再上升,迭代停止。在优化问题中,应用最广泛的是凸优化问题:
- 若可行域是凸集
- 且目标函数是一个凸函数
则这样的优化问题是凸优化问题
以上是关于最优化理论与技术的主要内容,如果未能解决你的问题,请参考以下文章