最近在搞点云处理的项目,其中对于拉普拉斯图的相关处理中,使用到了内点法进行优化,于是开始着手学习。


1. 问题描述:(障碍函数法)

内点法用于求解带有约束的优化命题。

内点法求解 python_牛顿法

f0为优化目标函数,fi{i=1,...,m}(二阶可导的凸函数)以及Ax=b为约束函数。

存在最优解内点法求解 python_内点法求解 python_02,此时,有这样一对对偶变量内点法求解 python_优化问题_03内点法求解 python_拟合_04, 满足KKT条件:(这里完全不懂

内点法求解 python_拟合_05

不等式使得求解困难,因此障碍函数法(内点法的一种)在原始的目标函数中引入一个障碍函数,或者惩罚函数,来代替约束条件中的不等式约束,这样,命题1就变成了:

内点法求解 python_内点法求解 python_06

内点法求解 python_内点法求解 python_07

函数应该满足的条件,当没有违反约束时,函数值为0,违反约束,函数值为正无穷,如图红色虚线所示:

内点法求解 python_牛顿法_08

红色虚线这个函数在某些点上是不可导的,因此并不适用。使用一个对数函数来拟合:

内点法求解 python_牛顿法_09

优化问题被转化为:

内点法求解 python_拟合_10

定义如下对数障碍:

内点法求解 python_内点法求解 python_11

命题变为:

内点法求解 python_优化问题_12

2. Central Path

针对t > 0值,定义x*(t)为相应优化命题的解。那么,central path就是指所有点x*(t), t > 0的集合,其中的点被称为central points。central path上的点满足如下的充分必要条件,首先x*(t)都是严格可行的,即:

内点法求解 python_牛顿法_13

内点法求解 python_优化问题_14

我们可以从对偶变量的角度进一步研究上式,给等号两边都乘以1/t, 我们有:

内点法求解 python_牛顿法_15

我们发现如果令

内点法求解 python_拟合_16

(8)

就取得了与2式中的第一个等式基本一致的结果。也就是说,x*(t)能最小化拉格朗日函数

内点法求解 python_优化问题_17

内点法求解 python_牛顿法_18

是原命题中的一组可行的对偶变量,其实乐意理解为能使拉格朗日函数到数为0的就是对偶变量

那么此时,对偶命题的目标函数值为:

内点法求解 python_优化问题_19

上述等式为(8)式带入的结果

我们记原命题(1)的目标函数的最小值为p*,那么由优化命题的对偶理论可知

内点法求解 python_牛顿法_20

,原命题与对偶命题的差记录为

内点法求解 python_拟合_21

被称为对偶间隙。

这里给一个算法框架:

Barrier Method:

内点法求解 python_拟合_22

3. 牛顿法求极值(针对Barrier Method的第一步)

在文章Convex Optimization中,介绍了如何利用牛顿法解Barrier Method的第一步解的问题。

问题描述:

内点法求解 python_优化问题_23

使用二阶泰勒展开,该优化问题转换为:

内点法求解 python_优化问题_24

二阶极小化问题:

定义

内点法求解 python_内点法求解 python_25

为x的Newton step.(我的理解是更新步长,论文原文解释见下),

内点法求解 python_牛顿法_26

w为相伴最优对偶变量

内点法求解 python_拟合_27

给出一个最优条件下的线性逼近:

内点法求解 python_优化问题_28

内点法求解 python_牛顿法_29

通过对x的线性拟合替换第二个方程的梯度项,以获得新的方程:

内点法求解 python_牛顿法_30

内点法求解 python_牛顿法_31

算法:

内点法求解 python_内点法求解 python_32