[本文链接:http://www.cnblogs.com/breezedeus/p/3496819.html,转载请注明出处]

 

从等式约束的最小化问题说起:                                  
                                                     用ADMM求解大型机器学习问题
    

用ADMM求解大型机器学习问题 
上面问题的拉格朗日表达式为:
                                             用ADMM求解大型机器学习问题
    

用ADMM求解大型机器学习问题 
也就是前面的最小化问题可以写为:
                                               
这个方法在满足一些比较强的假设下可以证明收敛。

 

为了弱化对偶上升方法的强假设性,一些研究者在上世纪60年代提出使用扩展拉格朗日表达式(augmented Lagrangian)代替原来的拉格朗日表达式:
                                 用ADMM求解大型机器学习问题
    

用ADMM求解大型机器学习问题 
其中 

 

注意,乘子法里把第二个式子里的 
既然  
上面最后一个等式就是利用了∂L∂x=0。而原始可行条件在迭代过程中逐渐成立。

 

乘子法弱化了对偶上升法的收敛条件,但由于在x-minimization步引入了二次项而导致无法把x分开进行求解(详见[1])。而接下来要讲的Alternating Direction Method of Multipliers (ADMM)就是期望结合乘子法的弱条件的收敛性以及对偶上升法的可分解求解性。ADMM求解以下形式的最小化问题:
                                             用ADMM求解大型机器学习问题
    

用ADMM求解大型机器学习问题 
其对应的扩展拉格朗日表达式为: 
                   用ADMM求解大型机器学习问题
    

用ADMM求解大型机器学习问题 
ADMM包括以下迭代步骤:
                                       用ADMM求解大型机器学习问题
    

用ADMM求解大型机器学习问题 
ADMM其实和乘子法很像,只是乘子法里把   
其中用到了∂L∂z=∇g(z)+BTy=0

 

定义新变量 
在真正求解时通常会使用所谓的over-relaxation方法,也即在αk∈[1.5,1.8]可以改进收敛性([2])。

 

下面让我们看看ADMM怎么被用来求解大型的机器学习模型。所谓的大型,要不就是样本数太多,或者样本的维数太高。下面我们只考虑第一种情况,关于第二种情况感兴趣的读者可以参见最后的参考文献[1, 2]。样本数太多无法一次全部导入内存,常见的处理方式是使用分布式系统,把样本分块,使得每块样本能导入到一台机器的内存中。当然,我们要的是一个最终模型,它的训练过程利用了所有的样本数据。常见的机器学习模型如下:
                                    

 

假设把 
除了把目标函数分成 
例如求解L1惩罚的LR模型,其迭代步骤如下( 
其中y¯的定义类似。

 

在分布式情况下,为了计算方便通常会把

 

ADMM的框架确实很牛逼,把一个大问题分成可分布式同时求解的多个小问题。理论上,ADMM的框架可以解决大部分实际中的大尺度问题。我自己全部实现了一遍这个框架,主要用于求解LR问题,下面说说我碰到的一些问题:
1. 收敛不够快,往往需要迭代几十步。整体速度主要依赖于xi更新时的耗时,但也使得算法更加复杂,需要设定的参数也增加了。


[References]
[1] S. Boyd. Alternating Direction Method of Multipliers (Slides).
[2] S. Boyd et al. Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers, 2010.
 
https://www.cnblogs.com/breezedeus/p/3496819.html

[本文链接:http://www.cnblogs.com/breezedeus/p/3496819.html,转载请注明出处]

 

从等式约束的最小化问题说起:                                  
                                                     用ADMM求解大型机器学习问题
    

用ADMM求解大型机器学习问题 
上面问题的拉格朗日表达式为:
                                             用ADMM求解大型机器学习问题
    

用ADMM求解大型机器学习问题 
也就是前面的最小化问题可以写为:
                                               
这个方法在满足一些比较强的假设下可以证明收敛。

 

为了弱化对偶上升方法的强假设性,一些研究者在上世纪60年代提出使用扩展拉格朗日表达式(augmented Lagrangian)代替原来的拉格朗日表达式:
                                 用ADMM求解大型机器学习问题
    

用ADMM求解大型机器学习问题 
其中 

 

注意,乘子法里把第二个式子里的 
既然  
上面最后一个等式就是利用了∂L∂x=0。而原始可行条件在迭代过程中逐渐成立。

 

乘子法弱化了对偶上升法的收敛条件,但由于在x-minimization步引入了二次项而导致无法把x分开进行求解(详见[1])。而接下来要讲的Alternating Direction Method of Multipliers (ADMM)就是期望结合乘子法的弱条件的收敛性以及对偶上升法的可分解求解性。ADMM求解以下形式的最小化问题:
                                             用ADMM求解大型机器学习问题
    

用ADMM求解大型机器学习问题 
其对应的扩展拉格朗日表达式为: 
                   用ADMM求解大型机器学习问题
    

用ADMM求解大型机器学习问题 
ADMM包括以下迭代步骤:
                                       用ADMM求解大型机器学习问题
    

用ADMM求解大型机器学习问题 
ADMM其实和乘子法很像,只是乘子法里把   
其中用到了∂L∂z=∇g(z)+BTy=0

 

定义新变量 
在真正求解时通常会使用所谓的over-relaxation方法,也即在αk∈[1.5,1.8]可以改进收敛性([2])。

 

下面让我们看看ADMM怎么被用来求解大型的机器学习模型。所谓的大型,要不就是样本数太多,或者样本的维数太高。下面我们只考虑第一种情况,关于第二种情况感兴趣的读者可以参见最后的参考文献[1, 2]。样本数太多无法一次全部导入内存,常见的处理方式是使用分布式系统,把样本分块,使得每块样本能导入到一台机器的内存中。当然,我们要的是一个最终模型,它的训练过程利用了所有的样本数据。常见的机器学习模型如下:
                                    

 

假设把 
除了把目标函数分成 
例如求解L1惩罚的LR模型,其迭代步骤如下( 
其中y¯的定义类似。

 

在分布式情况下,为了计算方便通常会把

 

ADMM的框架确实很牛逼,把一个大问题分成可分布式同时求解的多个小问题。理论上,ADMM的框架可以解决大部分实际中的大尺度问题。我自己全部实现了一遍这个框架,主要用于求解LR问题,下面说说我碰到的一些问题:
1. 收敛不够快,往往需要迭代几十步。整体速度主要依赖于xi更新时的耗时,但也使得算法更加复杂,需要设定的参数也增加了。


[References]
[1] S. Boyd. Alternating Direction Method of Multipliers (Slides).
[2] S. Boyd et al. Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers, 2010.

相关文章:

  • 2021-11-15
  • 2021-09-14
  • 2022-12-23
  • 2021-09-21
  • 2022-12-23
  • 2021-04-06
  • 2021-07-13
  • 2021-05-07
猜你喜欢
  • 2021-07-08
  • 2021-12-11
  • 2022-01-15
  • 2022-02-23
  • 2022-01-11
  • 2021-05-26
  • 2021-10-16
相关资源
相似解决方案