数值优化(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 ...
最新文章
- 阿里云智能对话分析服务
- 2015 ICPC 上海
- muxer、demuxer muxer是什么?视频封装、解封装(逆封装)
- js中同时得到整数商及余数_js和vue实现时分秒倒计时的方法
- Java集合(2)--Collection接口方法
- 好玩的表情包机器人小程序源码_支持直接搜索仿聊天界面获取源码
- numpy生成服从特定分布(制定分布)的数据
- VS2015解决非Unicode编码包含中文字段无法编译的问题
- html表头跟随滚动,JS实现table表格固定表头且表头随横向滚动而滚动_心善_前端开发者...
- Hive对比传统数据库区别
- html页面载入完毕返回顶部,HTMl页面中返回顶部如何实现 HTMl页面中返回顶部实现代码...
- 加密狗破解原理和破解方法介绍
- 转贴: 柴静 采访 张朝阳
- Swift学习笔记(四)
- 【腾讯TMQ】iOS逻辑自动化测试实践
- spark on hive 的部署,和spark on hive (ha)在本地测试步骤
- 设置Sysctl conf用以提高Linux的性能 最完整的sysctl conf优化方案
- ntag213和215有什么区别_【NTAG213/215/216芯片读写器NFC读卡器发卡器】 - 太平洋安防网...
- 安卓实训运动健身系统_武汉一高校现高颜值网红健身打卡地
- CUMT2022算法设计与分析A上机考试