数值优化(Numerical Optimization)学习系列-序列二次规划和内点法(SQP、Interior-Point)
概述
对于非线性约束最优化问题,序列二次规划和内点法是两类非常重要的算法,也是大规模问题的利器。序列二次规划方法将原始问题分解为一系列二次规划问题逐步求解;内点法将将约束添加到目标函数中转换为一系列无约束问题逐步求解。两类算法共同思想将原始问题转换为可求解问题。
1. 序列二次规划概述
2. 内点法概述
3.总结
序列二次规划(SQP)概述
序列二次规划(Sequential Quadratic Programming)对于非线性约束最优化问题是一个非常有效的算法,将原始问题划分为一系列二次规划的子问题进行求解。
本节中介绍的SQP都属于激活集算法,有两种类型的激活-SQP算法,一是IQP,将原始问题转换为一系列不等式约束二次规划;二是EQP,将原始问题转换为一系列等式约束二次规划问题。
大部分的SQP问题分为两个步骤进行求解,第一步通过局部方法寻找有效集;二是通过LineSearch或者TR进行最优化。
局部SQP方法
等式约束问题
问题描述如下
min f(x) \\ s.t \; c(x) = 0 其主要思想是根据当前点 xkx_k寻找下一个优化点 xk+1x_{k+1}通过转换问题二次规划问题。
思路1,KKT条件
原始问题的拉格朗日方程为L(x,λ)=f(x)−λTc(x)\mathcal L(x,\lambda)=f(x)-\lambda^Tc(x),根据KKT条件有
F(x,\lambda)=\left[\begin{array}{cc}\nabla f(x)-A(x)^T \lambda \\c(x)\end{array} \right] =0其中 A(x)=[∇c1(x),∇c2(x)...∇cm(x)]A(x)=[\nabla c_1(x),\nabla c_2(x)...\nabla c_m(x)]
对于等式方程问题可以采用牛顿方程进行求解,迭代步骤如下
\left[\begin{array}{cc}x_{k+1} \\\lambda_{k+1}\end{array} \right]=\left[\begin{array}{cc}x_{k} \\\lambda_{k}\end{array} \right] + \left[\begin{array}{cc}p_k \\p_\lambda\end{array} \right]其中 pk,pλp_k,p_\lambda通过牛顿KKT条件得到
\left[\begin{array}{cc}\nabla^2 L_x & -A_k^T \\A_k & 0\end{array} \right] \left[\begin{array}{cc}p_{k} \\p_\lambda\end{array} \right] = \left[\begin{array}{cc}-\nabla f_k+A_k^T\lambda_k \\-c_k\end{array} \right]注:推导过程简单,可以参考之前的章节。
思路2,根据当前点进行建模
对于当前点xkx_k进行二次泰勒展开,转换为
\min_p f_k+\nabla f_k^Tp + \frac 12 p^T\nabla L^2 p \\ s.t. \; A_kp+c_k=0展开方式为目标函数进行二次泰勒展开,约束进行一次泰勒展开。根据KKT也有
\nabla ^2L_kp_k+\nabla f_k-A_k^Tl_k=0 \\ A_kp_k+c_k=0通过转换可以转换为上述求解步骤。
求解框架
不等式约束问题
对于不等式约束,同理可以进行泰勒展开。
\min_p f_k+\nabla f_k^Tp + \frac 12 p^T\nabla L^2 p \\ s.t. \; \nabla c_i(x_k)^Tp+c_i(x_k)=0 \; \; i \in \mathcal E \\ \nabla c_i(x_k)^Tp+c_i(x_k)\ge0 \; \; i \in \mathcal I
IPQ 和 EPQ
- IPQ:顾名思义将原始转换为一系列带有不等式约束的二次规划问题,该方法在实际中效果非常好,问题是对于一般的二次规划问题求解复杂度较高,虽然可以将该次的最优解作为下一次子问题的初始解,仍然存在热启动问题。
- EPQ:每次只考虑激活集,即等式约束。相对于IPQ每个子问题相对比较容易求解。
其他
最优化步骤中可以通过线搜索或者信赖域方法进行求解。
内点法
内点法和SQP方法类似对于求解大规模非线性约束非常有效。另外内点法(Interior-Point)和障碍方法(barrier methods)具有相同含义。
两类转换思路
内点法可以求解的问题,可以转换为
\min_{x,s} f(x) \\ s.t. c_E(x)=0, \\ c_I(x)-s=0, \\ s\ge0
连续方法(continuation methods)
根据KKT条件,上述问题可以转换
\nabla f(x)-A_E^T(x)y-A_I(x)^Tz=0 \\ Sz-\mu e=0 \\ c_E(x)=0\\c_i(x)-s=0类似于之前做法,可以通过不断改变参数 μ\mu来搜寻一条中心路径逐渐优化原始问题。
障碍方法(barrier methods)
问题可以转换为
\min_{x,s}f(x)-\mu \sum_{i=1...m}logs_i \\ s.t c_E(x)=0 \\ c_I(x)-s=0其中参数 μ\mu是正数,控制搜索过程。通过KKT条件求解该问题,会发现和上述转换类似。
最原始的转换方式,直接转换为
min f(x)-\mu \sum_{i\in \mathcal I}logc_i(x)该转换可能带来的问题是可能找不到最优解。
其他
- 内点法可以从对偶问题中获取关键思路
- 可以结合线搜索和信赖域方法进行求解
总结
通过本节学习可以了解序列二次规划和内点法求解非线性约束最优化问题的关键思路。
数值优化(Numerical Optimization)学习系列-序列二次规划和内点法(SQP、Interior-Point)相关推荐
- 深度学习系列 -- 序列模型之循环序列模型(Recurrent Neural Networks)
目录 1 为什么选择序列模型?(Why Sequence Models?) 2 数学符号(Notation) 3 循环神经网络(Recurrent Neural Network Model) 4 语言 ...
- 经典数值优化算法--专题学习
通用的损失函数最优化的数值方法,来源于泰勒展开式,多元函数的泰勒展开式为: 一.一阶逼近与一阶方法 一阶泰勒展开式: 其中,是代表了β变化的可能性,t在之后说到的梯度下降方法中演变成了学习速率. 现在 ...
- 数值优化(Numerical Optimization)学习系列-文件夹
概述 数值优化对于最优化问题提供了一种迭代算法思路,通过迭代逐渐接近最优解,分别对无约束最优化问题和带约束最优化问题进行求解. 该系列教程能够參考的资料有 1. <Numerical Optim ...
- 数值优化(Numerical Optimization)学习系列-目录
概述 数值优化对于最优化问题提供了一种迭代算法思路,通过迭代逐渐接近最优解,分别对无约束最优化问题和带约束最优化问题进行求解. 该系列教程可以参考的资料有 1. <Numerical Optim ...
- Caffe 学习系列
学习列表: Google protocol buffer在windows下的编译 caffe windows 学习第一步:编译和安装(vs2012+win 64) caffe windows学习:第一 ...
- 数值优化(Numerical Optimization)学习系列-惩罚和增广拉格朗日方法(Augmented Lagrangian Methods)
原文地址为: 数值优化(Numerical Optimization)学习系列-惩罚和增广拉格朗日方法(Augmented Lagrangian Methods) 概述 求解带约束的最优化问题,一类很 ...
- 复旦大学吴立德《数值优化》、《深度学习》和
http://i.youku.com/i/UNjAzMzA4NjQ=/playlists?spm=a2hzp.8253869.0.0 [1]复旦大学吴立德教授讲授的<数值优化>. 使用教材 ...
- 吴恩达deeplearning.ai系列课程笔记+编程作业(6)第二课 改善深层神经网络-第二周:优化算法 (Optimization algorithms)
第二门课 改善深层神经网络:超参数调试.正则化以及优化(Improving Deep Neural Networks:Hyperparameter tuning, Regularization and ...
- Caffe学习系列(8):solver优化方法
Caffe学习系列(8):solver优化方法 上文提到,到目前为止,caffe总共提供了六种优化方法: Stochastic Gradient Descent (type: "SGD&qu ...
- 2020-11-19 吴恩达DL学习-C5 序列模型-W3 序列模型和注意力机制(3.4 改进定向搜索-长度归一化,称为归一化的对数似然目标函数。取每个单词的概率对数值的平均。非精确搜索,速度快)
1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c 2.详细笔记网站(中文):http://www.ai-sta ...
最新文章
- R语言使用hexSticker包将ggplot2包可视化的结果转换为六角图(六角贴、六角形贴纸、ggplot2 plot to hex sticker)、并自定义设置文本的内容、文本对应的字体
- 倒计时2天 | 张钹院士领衔,AI开发者大会20大论坛议程全揭秘!
- 程序员也得懂点儿理财知识
- hdu1556(Color the ball )
- canal修改同步binlog日志位点
- Mysql数据库正则表达式
- 搭建 Kafka 集群 (v2.12-2.3.0)
- kvm中内存过载使用
- CCNA 视频教程下载 -chinalab版
- Java的8种基本数据类型
- 2D游戏案例:雷霆战机
- Linux查看gzip文件原始大小,Linux 文件管理:Linux gzip 压缩
- 计算机桌面变蓝屏,电脑进入桌面蓝屏解决方法
- IDEA 神级插件!效率提升 50 倍!
- css 文字中间 两边横线
- 【论文基本功】【LaTeX】公式及其编号
- 21世纪东方美女标准[男士参考女士学习]
- web项目:智能出行规划网站——爬虫+flask+echarts+基础前端(html、css、js、jq)
- 选择大于努力,错失字节跳动数亿身价,含泪分享
- Swagger框架学习分享
热门文章
- html前端毕业设计项目,web前端毕业设计论文..doc
- jquery datatables api (转)
- JSP文件怎么运行JAVA_jsp文件怎么运行
- js layui跳转页面_js中实现页面跳转
- # 18医工独家|学习方法分享·学游戏打英语
- C语言三剑客:C陷阱与缺陷、C和指针、C专家编程-----下载
- 正定矩阵、正定矩阵与极值的关系、黑塞矩阵、牛顿法
- tableau 日周月筛选器_【数据可视化】Tableau教程(六)日历热力图
- 三菱伺服驱动器说明书_干货——PLC控制伺服系统(伺服电机)
- python绘制缓和曲线_CAD里面如何绘制缓和曲线