坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)

坐标下降法属于一种非梯度优化的方法,它在每步迭代中沿一个坐标的方向进行线性搜索(线性搜索是不需要求导数的),通过循环使用不同的坐标方法来达到目标函数的局部极小值

假设目标函数是求解坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)的极小值,其中坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)是一个n维的向量,我们从初始点坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)开始(坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)是我们猜想的一个初值)对k进行循环:

坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)

相当于每次迭代都只是更新坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)的一个维度,即把该维度当做变量,剩下的n-1个维度当作常量,通过最小化坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)来找到该维度对应的新的值。坐标下降法就是通过迭代地构造序列坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)来求解问题,即最终点收敛到期望的局部极小值点。通过上述操作,显然有:

坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)

流程总结:

  1.  首先,我们把坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)向量随机取一个初值。记为坐标下降法(Coordinate descent)和ADMM(交替方向乘子法),上面的括号里面的数字代表我们迭代的轮数,当前初始轮数为0。
  2.  对于第坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)轮的迭代。我们从坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)开始,到坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)为止,依次求坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)的计算表达式如上文所描述。
  3. 检查坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)向量和坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)向量在各个维度上的变化情况,如果在所有维度上变化都足够小,那么坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)即为最终结果,否则转入第二步,继续第坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)轮的迭代。

坐标轴下降法的求极值过程,可以和梯度下降做一个比较:

  1. 坐标轴下降法在每次迭代中在当前点处沿一个坐标方向进行一维搜索 ,固定其他的坐标方向,找到一个函数的局部极小值。而梯度下降总是沿着梯度的负方向求函数的局部最小值。
  2. 坐标轴下降优化方法是一种非梯度优化算法。在整个过程中依次循环使用不同的坐标方向进行迭代,一个周期的一维搜索迭代过程相当于一个梯度下降的迭代。
  3. 梯度下降是利用目标函数的导数来确定搜索方向的,该梯度方向可能不与任何坐标轴平行。而坐标轴下降法法是利用当前坐标方向进行搜索,不需要求目标函数的导数,只按照某一坐标方向进行搜索最小值。
  4. 两者都是迭代方法,且每一轮迭代,都需要O(mn)的计算量(m为样本数,n为系数向量的维度)

参考文章:

Lasso回归算法: 坐标轴下降法与最小角回归法小结

机器学习笔记——简述坐标下降法

坐标下降法(Coordinate descent)

【机器学习】坐标下降法(Coordinate descent)

 

ADMM(交替方向乘子法)

作者:大大大的v
链接:https://www.zhihu.com/question/36566112/answer/118715721
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

1) 优化问题是什么:

最常见的优化问题长这样(公式1):

坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)

其中 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法) 是优化变量,也就是可以改变的数值,通过调节 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法) 的大小,使得目标函数 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法) 的数值达到最小。

像(1)式那样,只有函数,对于变量 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法) 没有要求的话,其实是最简单的一类优化问题:无约束优化问题(我们只考虑凸问题的情况下,如果你不知道什么是凸问题的话,没关系,那不重要,只要记住越凸越好=凸=)。

实际上我们对于优化变量 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法) 可能会有很多要求:

坐标下降法(Coordinate descent)和ADMM(交替方向乘子法) 要满足什么集合啦, 什么等式约束,不等式约束啦巴拉巴拉,这就好比我们希望通过学习升级打怪成为高知女性就可以吊金龟婿一样,这里优化变量 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法) 暗指学历,函数 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法) 对应的是一个评分,也就是优质金龟婿不愿意跟你处对象的评分(因为是要最小化),金龟婿肤白貌美大长腿,那我小学学历肯定是不够的,初中文凭貌似也不太够?所以我学啊学,学啊学,以为学历越高越好,结果好不容易读了博,回头一看,好嘞原来男神对另一半学历是有要求的(也就是优化里所说的约束):高中< 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法) <=硕士。博士不做女人啦,这大概就是基于学历的一个优化问题→_→

等式约束: 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)

不等式约束: 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)

所以一个等式约束的优化问题长这样(公式2):

坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)

 

2)ADMM解决什么优化问题:

坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)

也就意味着ADMM通常解决的是等式约束的优化问题,而且这个优化问题还有两个优化变量 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)

回到刚刚找男朋友的问题上来,如果之前我们只考量学历因素 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法) 的话,现在我们还要考量颜值因素 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)!而且这两个变量之间还是有等式关系的!(至于这个关系。。。大概就是那个什么学历越高,颜值就越。。。=凸=,荒谬,荒谬至极!)

事实上分布式中的一致性优化问题(consensus),分享问题(sharing problem)等等都很好写成这样的形式,因为每个节点的变量还要跟周围节点变量产生关联,但真正用ADMM的原因可能还是因为ADMM又快又好用吧。。。

 

3)解决优化问题的方法:

方法中与ADMM最为相关的大概就是原对偶方法中的增广拉格朗日法(ALM)。

对偶方法:把公式2中的minimize问题与约束条件sub to通过一个对偶变量 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法) 耦合在一起,形成一个叫做Lagrange函数的东西:

坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)

原来带约束求解 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法) ,现在求解对偶问题 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法) ,两个问题的最优解等价(原问题凸的情况下。为什么?公式好多,我再想想(查查)有没有什么直观的解释),而且现在没了约束,岂不美哉(❁´◡`❁)*✲゚*

方法是对偶上升法:

坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)

对偶上升法其实很好理解,它把 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法) ,也就是 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法) 拆成了两步:

第一步是固定对偶变量 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法) ,求解坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)

第二步固定住变量 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法) ,像众所周知的梯度下降法那样操作,只不过这里是arg max 问题所以变成了上升法。

 

后来有人嫌弃这个Lagrange函数还不够凸,又对约束增加一个惩罚项,变成增广拉格朗日函数

坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)

这样就迈向更凸,算法也更强啦~

 

4)ADMM的流程:

ADMM的想法跟上面的思路就很一致啦,作为一个primal-dual原对偶方法,首先,它要有个对偶函数,也就是增广拉格朗日函数:

坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)

然后,它像对偶上升法一样分别固定另外两个变量,更新其中一个变量:(也就是其名:交替方向)

坐标下降法(Coordinate descent)和ADMM(交替方向乘子法)

重复直到不怎么变化了,也就是收敛了。。。

至于怎么求解 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法) ,因为无约束,梯度下降法啊,牛顿法啊等等都可以~其实就是大循环里嵌套的小循环,step1~3是大循环,求解里面的 坐标下降法(Coordinate descent)和ADMM(交替方向乘子法) 是小循环。

 

5)其他一些杂七杂八的话:

ADMM相当于把一个大的问题分成了两个子问题,缩小了问题的规模,分而治之(?)

实际上有些算法用ADMM的思路,你看从ALM到ADMM相当于增加一个变量z,增加一个step就大大提升了算法性能,如果我再增加一个变量一个step呢~?但有工作指出理论上只有两个block的ADMM能够保证收敛(忘记在哪里看到的,不对的话,我就把这句话删掉!)

转载自https://www.zhihu.com/question/36566112/answer/118715721