这篇文章想阐述一阶优化算法,尽可能的做到全面。
- Gradient Descent Method
考虑无约束优化问题
Gradient Descent Method 有如下迭代形式:
这里的 为步长,不同的步长构造策略生成了不同的梯度算法,例如,
则为最速下降法,如果
这里的 , 这时候为BB算法。
- Proximal Point Algorithm
还是考虑无约束凸优化问题
Proximal Point Algorithm 有如下形式:
- Proximal Gradient Algorithm
考虑可分离凸问题:
这里假设, 在第k步迭代,Proximal Gradient Algorithm 将
作二次展开
有如下形式:
这个算法有很多的加速策略,比如著名的FISTA。之后再介绍。
- Dual Gradient Method
考虑线性约束凸问题:
首先构建朗格朗日函数
其中 y 为对偶变量,对应的对偶函数为:
我们构建对偶问题:
对该问题执行Gradient Descent Method
(极大化问题所以是梯度方向而不是梯度的反方向)
现在的问题是上式中的梯度怎么计算,对于一般的 f ,有没有好的表示方式呢?答案是有的。对偶函数的梯度 可以表述为
where
现在我给出对偶梯度算法的迭代
- Dual Proximal Point Method
还是考虑上述的线性约束问题,这次我将PPA应用到对偶问题中,即
现在的问题是计算梯度,由上一节中可以知道:
但是在计算的式子中涉及到了
, 这变成了先有鸡还是先有蛋的问题了。所以我需要将
消掉。
所以有
这里的 为增广拉格朗日函数
所以综上所述给出如下迭代算法
这也等价于增广拉格朗日方法(ALM)。
- Dual Proximal Gradient Method
考虑线性约束下的可分离问题:
得到其拉格朗日函数:
我们令 以及
. 定义对偶问题
其中
对偶问题变成了一个无约束可分离凸问题,可以采用上面的Proximal Gradient Method求解,即
接下来的问题就是如何计算两个对偶函数的梯度,我们发现在前面的对偶梯度和对偶临近点算法中已经写到了如何计算梯度。这里我们直接用,首先将上面的迭代拆解为两步:向前和向后。
首先考虑第一个式子,由于 , 于是
其中的
对于第二个式子而言,根据 , 于是
其中的
两式结合得到:
综合上述的迭代,我们得到最终的算法
- Conditional Gradient Method
- Projected Gradient
- DC Programming
- Augmented Lagrangian Method(ALM)
- Alternating Direction Method of Multipliers(ADMM)
- Mirror Descent Method
上述的算法有几个方向的扩展,1.Stochastic,2.Coordinate Descent。3.subgradient。4. Accelerated Strategies
未完待续......