前面的例子我们都在利用梯度来做文章,那么一个很自然的疑问就是:如果函数在某些点不可微怎么办?那么对于这种不光滑的优化问题,我们自然想到利用左右极限的概念来定义一个次梯度(Subgradient)来处理。接着我们简单介绍了牛顿法与其收敛性分析,这也是很自然的,对照梯度下降是做一阶展开,我们可以对f(xk+v)在xk时刻对v做二阶展开来获得fx的海森矩阵,那么有时候它的海森矩阵是很难求的,这时我们就可以用些特殊的取法把它取成一个矩阵B,这就是拟牛顿法(Quasi—),对B的取法我们可参考BFGS方法。
之后我们需要讨论带约束优化问题,方便起见,我们只讨论带线性等式约束的优化问题。我们是说解这样的优化问题实则是去解他的KKT条件。对KKT条件是一个非线性方程组,求解是并不容易的,我们给出拉格朗日法与增广的拉格朗日方法。通过分析我们可以看到对一般的拉格朗日法,它是对xk与vk同时优化、同步更新的,而对于增广的方法,只更新vk,它的目标是找对偶的最优,顺带找到了原问题的最优,所以增广的拉格朗日方法是非常好的算法。最后我们讨论如果某个函数的优化问题是简单的,对这些简单的函数求和再求优化是否还容易呢?答案当然是否定的,这就引出本节最后一个算法:交替方向乘子法(ADMM),他实际在增广拉格朗日算法的循环里又嵌套了一个坐标轮换的小循环,这样的算法对于一些图像处理与分布式计算是行之有效的。