关于ADMM的研究(二)
4. Consensus and Sharing
本节讲述的两个优化问题,是非常常见的优化问题,也非常重要,我认为是ADMM算法通往并行和分布式计算的一个途径:consensus和sharing,即一致性优化问题与共享优化问题。
Consensus
4.1 全局变量一致性优化(Global variable consensus optimization)(切割数据,参数(变量)维数相同)
所谓全局变量一致性优化问题,即目标函数根据数据分解成N子目标函数(子系统),每个子系统和子数据都可以获得一个参数解xi,但是全局解只有一个z,于是就可以写成如下优化命题:
注意,此时fi:Rn→R⋃+∞仍是凸函数,而xi并不是对参数空间进行划分,这里是对数据而言,所以xi维度一样xi,z∈Rn,与之前的问题并不太一样。这种问题其实就是所谓的并行化处理,或分布式处理,希望从多个分块的数据集中获取相同的全局参数解。
在ADMM算法框架下(先返回最初从扩增lagrangian导出的ADMM),这种问题解法相当明确:
对y-update和z-update的yk+1i和zk+1i分别求个平均,易得y¯k+1=0,于是可以知道z-update步其实可以简化为zk+1=x¯k+1,于是上述ADMM其实可以进一步化简为如下形式:
这种迭代算法写出来了,并行化那么就是轻而易举了,各个子数据分别并行求最小化,然后将各个子数据的解汇集起来求均值,整体更新对偶变量yk,然后再继续回带求最小值至收敛。当然也可以分布式部署(hadoop化),但是说起来容易,真正工程实施起来又是另外一回事,各个子节点机器间的通信更新是一个需要细细揣摩的问题。
另外,对于全局一致性优化,也需要给出相应的终止迭代准则,与一般的ADMM类似,看primal和dual的residuals即可
4.2 带正则项的全局一致性问题
下面就是要将之前所谈到的经典的机器学习算法并行化起来。想法很简单,就是对全局变量加上正则项即可,因此ADMM算法只需要改变下z-update步即可
同样的,我们仍对z做一个平均处理,于是就有
上述形式都取得是最原始的ADMM形式,简化处理,写成scaled形式即有
这样对于后续处理问题就清晰明了多了。可以看到如果g(z)=λ|z|1,即lasso问题,那么z-update步就用软阈值operator即可。因此,对于大规模数据,要想用lasso等算法,只需要对数据做切块(切块也最好切均匀点),纳入到全局变量一致性的ADMM框架中,即可并行化处理。下面给出一些实例。
切割大样本数据,并行化计算
在经典的统计估计中,我们处理的多半是大样本低维度的数据,现在则多是是大样本高维度的数据。对于经典的大样本低维度数据,如果机器不够好,那么就抽样部分数据亦可以实现较好估计,不过如果没有很好的信息,就是想要对大样本进行处理,那么切割数据,并行计算是一个好的选择。现在的社交网络、网络日志、无线感应网络等都可以这么实施。下面的具体模型都在受约束的凸优化问题中以及ℓ1-norm问题中提过,此处只不过切割数据,做成分布式模型,思想很简单,与带正则项的global consensus问题一样的处理。经典问题lasso、sparse logistic lasso、SVM都可以纳入如下框架处理。
有观测阵A∈Rm×n和响应值b∈Rm,可以对应切分,即对矩阵A和向量b横着切,
于是原来带正则项的优化问题就可以按照数据分解到多个子系统上去分别优化,然后汇集起来,形成一个global consensus问题。
结合受约束的凸优化问题时所给出来的具体的ADMM算法解的形式,下面直接给出这些问题的ADMM迭代算法公式
(1)Lasso
如果切割的数据量小于维数mi<n,那么求解时分解小的矩阵AiATi+ρI即可;其他求逆采用矩阵加速技巧即可。
(2)Sparse Logistic Regression
在x-update步是需要用一些有效的算法来解决ℓ2正则的logistic回归,比如L-BFGS,其他的优化算法应该问题不大吧。
(3)SVM
注意分类问题和回归问题的损失函数不同,一般都是用l(sign(t)y)形式来寻求最优的分类权重使得分类正确。SVM使用Hinge Loss:ℓ(y)=max(0,1−t⋅y),即将预测类别与实际分类符号相反的损失给凸显出来。分布式的ADMM形式
4.3 一般形式的一致性优化问题(切割参数到各子系统,但各子系统目标函数参数维度不同,可能部分重合)
上述全局一致性优化问题,我们可以看到,所做的处理不过是对数据分块,然后并行化处理。但是更一般的优化问题是,参数空间也是分块的,即每个子目标函数fi(xi)的参数维度不同xi,∈Rni,我们称之为局部变量。而局部变量所对应的的也将不再是全局变量z,而是全局变量中的一部分zg,并且不是像之前的顺序对应,而可能是随便对应到z的某个位置。可令g=G(i,⋅),即将xi映射到z的某部位
如果对所有i有G(i,j)=j,那么xi与z就是顺序映射,也就是全局一致性优化问题,否则就不是。结合下图就比较好理解
虽然如果用其他方法来做感觉会复杂,但是纳入到上述ADMM框架,其实只不过是全局一致性优化问题的一个局部化变形,不过此时不是对数据进行分块,是对参数空间进行分块