凸优化总结
之前曾写过一篇最优化课程总结, 涉及到的内容较多也较细。而在最优化中,凸优化是最为常见而又最为重要的,因为凸优化有一个良好的性质:局部最优是全局最优,这个性质使得我们不需要去证明解是否会收敛到全局最优,或者如何避免局部最优。因此凸优化有广泛应用,在优化问题不是凸的时候,往往也会尝试将其变为凸问题便于求解。本文着重讲凸优化,算是对之前写的文章的一个拓展和补充。
本文主要讲述下面内容,凸优化的概念以及凸优化中的三类常见解法:梯度类方法,对偶方法和 ADMM 方法。
凸集,凸函数与凸优化
凸集
凸集的定义非常清楚
对于集合 \(K\) ,\(\forall x_1,x_2 \in K\), 若 \(\alpha x_1 + (1-\alpha)x_2 \in K\), 其中 \(\alpha \in [0,1])\), 则 \(K\) 为凸集
即集合中任意两点的连线均在凸集中,如在下图中左边的是凸集而右边的不是
有时候需要对某个凸集进行放缩转换等操作,对凸集进行以下操作后,得到的集合依然是凸集
- 凸集的重叠(intersection)部分任然为凸集
- 若 \(C\) 为凸集,则 \[aC+b = \lbrace ax+b , x \in C, \forall a, b\rbrace\] 也为凸集
- 对于函数 \(f(x) = Ax+b\), 若 \(C\) 为凸集,则下面得到的转换也为凸集,注意这里的 \(A\) 是矩阵 \[f(C) = \lbrace f(x):x\in C\rbrace\] 而当 \(D\) 是一个凸集的时候,下面得到的转换也是凸集 \[f^{-1}(D) = \lbrace x: f(x)\in D\rbrace\] 这两个转换互为逆反关系
常见的凸集有下面这些 (下式中 \(a, x, b\) 均为向量,\(A\) 为矩阵)
- 点(point)、线(line)、面(plane)
- norm ball: \(\lbrace x: ||x|| \le r\rbrace\)
- hyperplane: \(\lbrace x: a^Tx=b\rbrace\)
- halfspace: \(\lbrace x: a^Tx \le b\rbrace\)
- affine space: \(\lbrace x: Ax = b\rbrace\)
- polyhedron: \(\lbrace x: Ax < b\rbrace\)
polyheron 的图像为
凸函数
凸函数的定义如下
设 \(f(x)\) 为定义在 n 维欧氏空间中某个凸集 S 上的函数,若对于任何实数 \(\alpha(0<\alpha<1)\) 以及 S 中的任意不同两点 \(x\) 和 \(y\),均有 \[f(\alpha x+ (1-\alpha)y) \le \alpha f(x) + (1-\alpha)f(y)\] 则称 \(f(x)\) 为定义在凸集 S 上的凸函数
凸函数的定义也很好理解,任意两点的连线必然在函数的上方,如下是一个典型的凸函数
严格凸 (strictly convex) 与強凸 (strongly convex)
- 严格凸指的是假如将上面不等式中的 \(\le\) 改为 \(\lt\), 则称该函数为严格凸函数。
- 严格凸指的是 \(\forall m > 0, f - \frac{m}{2}||x||_2^2\) 也是凸的,其含义就是该凸函数的 “凸性” 比二次函数还要强,即使减去一个二次函数还是凸函数
凸函数有几个非常重要的性质,对于一个凸函数 \(f\), 其重要性质 1. 一阶特性(First-order characterization): \[f(y) \ge f(x) + \nabla f(x)(y - x)\] 2. 二阶特性(Second-order characterization): \[\nabla^2f(x) \succeq 0\] 这里的 \(\succeq 0\) 表示 Hessian 矩阵是半正定的。 3. Jensen 不等式(Jensen’s inequality):\[f(E(x)) \le E(f(x))\] 这里的 \(E\) 表示的是期望,这是从凸函数拓展到概率论的一个推论,这里不详细展开。 4. sublevel sets,即集合 \(\lbrace x:f(x) \le t\rbrace\) 是一个凸集
其中,一阶特性或二阶特性是一个函数为凸函数的充要条件,通常用来证明一个函数是凸函数。
常见的凸函数有下面这些
仿射函数 (Affine function): \(a^Tx + b\)
二次函数 (quadratic function), 注意这里的 \(Q\) 必须为半正定矩阵: \(\frac{1}{2}x^TQx + b^Tx+c(Q \succeq 0)\)
最小平方误差 (Least squares loss): \(||y-Ax||_2^2\) (总是凸的,因为 \(A^TA\) 总是半正定的)
示性函数(Indicator function):\[I_C(X) = \begin{cases} 0&x \in C\\\ \infty & x \notin C\end{cases}\]
max function: \(f(x) = max \lbrace x_1,...x_n \rbrace\)
范数(Norm):范数分为向量范数和矩阵范数,任意范数均为凸的,各种范数的定义如下
向量范数
0 范数:$||x||_0 $= 向量中非零元素的个数 1 范数: \(||x||_1 = \sum_{i=1}^n |x_i|\) \(p\) 范数:\(||x||_p = (\sum_{i=1}^nx_i^p)^{1/p}~~(p > 1)\) 无穷范数: \(||x||_{\infty} = max_{i=1,...n} |x_i|\)
矩阵范数 > 核 (nuclear) 范数: \(||X||_{tr} = \sum_{i=1}^{r}\sigma_i(X)\) , (\(\sigma_i(X)\) 是矩阵分解后的奇异值,核范数即为矩阵所有奇异值之和) > 谱(spectral)范数:\(||X||_{op} = max_{i=1,...r}\sigma_i(X)\), 即为最大的奇异值
凸优化
对于下面的优化问题
\[\begin{align} &\min_x\quad f(x)\\\ &\begin{array}\\\ s.t.&g_i(x) \le 0,~i=1,\ldots,m\\\ &h_j(x)=0,~j=1,\ldots,r \end{array} \end{align}\]
当 \(f(x), g_i(x)\) 均为凸函数, 而 \(h_j(x)\) 为仿射函数(affine function)时,该优化称为凸优化,注意上面的 \(\min\) 以及约束条件的符号均要符合规定。
凸优化也可以解释为目标函数 \(f(x)\) 为凸函数而起约束围成的可行域为一个凸集。
常见的一些凸优化问题有:线性规划(linear programs),二次规划(quadratic programs),半正定规划(semidefinite programs),且 \(LP \in QP \in SDP\), 即后者是包含前者的关系。
线性规划问题一般原型如下 (\(c\) 为向量,\(D,A\) 为矩阵)
\[\begin{align} &\min_x\quad c^Tx\\\ &\begin{array}\\\ s.t.&Dx \le d\\\ &Ax=b \end{array} \end{align}\]
二次规划问题一般原型如下(要求矩阵 \(Q\) 半正定)
\[\begin{align} &\min_x\quad \frac{1}{2}x^TQx+c^Tx\\\ &\begin{array}\\\ s.t.&Dx \le d\\\ &Ax=b \end{array} \end{align}\]
而半正定规划问题一般原型如下 (\(X\) 在这里表示矩阵) \[\begin{align} &\min_X\quad CX\\\ &\begin{array}\\\ s.t.&A_iX \le b_i, i=1,...m\\\ &X \succeq 0 \end{array} \end{align}\]
梯度类方法
梯度类方法是无约束优化中非常常用的方法,其依据的最根本的事实就是梯度的负方向是函数值下降最快的方向。但是常用的 gradient descent
必须要求函数的连续可导,而对于某些连续不可导的问题(如 lasso regression),gradient descent
无能为力,这是需要用到 subgradient descent
和 proximal gradient descent
.
gradient descent
梯度下降法的迭代公式为 \[x^{(k)} = x^{(k-1)} - t_k\nabla f(x^{(k-1)} )\]
上式中上标 \((k)\) 表示第 \(k\) 次迭代,而 \(t_k\) 表示步长,\(\nabla f(x^{(k-1)} )\) 表示在点 \(x^{(k-1)}\) 的梯度。
这里对于梯度下降主要讨论其步长选择的问题, 最简单直接的方式是固定每次的步长为一个恒定值,但是如果步长过大或过小时,可能会导致结果难以收敛或者收敛速度很慢。因此提出了可变长步长的方法,可变长步长的方法指的是根据每次迭代依照一定的规则改变步长,下面介绍两种:backtracking line search
和 exact line serach
。
backtracking line search
backtracking line search 需要先选择两个固定的参数 \(\alpha, \beta\), 要求 \(0 < \beta < 1, 0<\alpha<1/2\)
每次迭代的时候,假如下式成立
\[\begin{align} f(x - t\nabla f(x)) > f(x) - \alpha t||\nabla f(x)||_2^2 \end{align}\]
则改变步长为 \(t = \beta t\), 否则步长不变。
这种方法的思想是当步长过大的时候 (即跨过了最优点),减小步长,否则保持步长不变,如下式是一个简单的例子
exact line serach
exact line serach 则是得到先计算出梯度 \(\nabla f(x^{(k-1)} )\), 然后代入下面的函数中,此时只有步长 \(t_k\) 是未知,因此可对 \(t_k\) 进行求导并令其为 0,求得的 \(t_k\) 即为当前的最优的步长,因为这个步长令当前迭代下降的距离最大。
\[\begin{align} f(x^{(k-1)} - t_k\nabla f(x^{(k-1)} )) \end{align}\]
这种方法也被称为最速下降法。
subgradient descent
subgradient 可以说是 gradient 的升级版,用于解决求导时某些连续不可导的函数梯度不存在的问题,我们知道,对于可微的凸函数有一阶特性,即
\[\begin{align} f(y) \ge f(x) + \nabla^T f(x)(y - x) \end{align}\]
加入将上面的 \(\nabla^T f(x)\) 换成 \(g^T\) 且不等式恒成立,则 \(g\) 被称为 subgradient,当函数可微时,\(\nabla f(x) = g\) ,但是若函数不可微,subgradient 不一定存在,下面是几个特殊函数的 subgradient 例子。
对于函数 \(f(x) = |x|\), 其图像如下
其 subgradient 为 \[g = \begin{cases}sign(x) &x \neq 0\\\ [-1,1] & x=0\end{cases}\]
对于函数 \(f(x) = ||x||_2\), 其图像如下
其 subgradient 为 \[g = \begin{cases} x/||x||_2&x \neq 0\\\ \lbrace z: ||z||_2 \le 1\rbrace & x=0\end{cases}\]
对于函数 \(f(x) = ||x||_1\), 其图像如下
其 subgradient 为 \[g = \begin{cases} sign(x_i) &x_i \neq 0\\\ [-1,1] & x_i=0\end{cases}\]
对于两个相交的函数 \(f(x) = \max \lbrace f(x_1), f(x_2)\rbrace\), 设其函数图像如下
则其 subgradient 为 \[g = \begin{cases} \nabla f(x_1) &f(x_1) > f(x_2) \\\ \nabla f(x_2) &f(x_1) < f(x_2) \\\ [\min \lbrace \nabla f(x_1),\nabla f(x_2)\rbrace, \max \lbrace \nabla f(x_1), \nabla f(x_2)\rbrace] &f(x_1) = f(x_2)\end{cases} \]
而 subgradient descent 与 gradient descent 的不同地方就是当函数不可微的时候,将 gradient descent 中更新公式中的 gradient 换成 subgradient。下面看一个经典的 lasso regression
问题。
\[\begin{align} \min_{\beta \in \mathbb {R}^n} \frac{1}{2} ||y-\beta||_2^2 + \lambda ||\beta||_1~~(\lambda \ge 0) \end{align}\]
对目标函数求导并令其为 0,其中 \(||\beta||_1\) 项不可导,用前面提到的 subgradient 代替,则有以下等式
\[\begin{cases} y_i - \beta_i = \lambda sign(\beta_i) &\beta_i \neq 0\\\ |y_i - \beta_i| \le \lambda &\beta_i = 0 \end{cases}\]
则解可表示成
\[\beta_i = \begin{cases} y_i - \lambda & y_i > \lambda\\\ 0 &-\lambda \le y_i \le \lambda \\\ y_i + \lambda & y_i < -\lambda\end{cases}\]
上面实际上是简化了的 lasso regression
, 因为更一般的 lasso 问题表示如下
\[\begin{align} \min_{\beta \in \mathbb {R}^n} \frac{1}{2} ||y-X\beta||_2^2 + \lambda ||\beta||_1~~(\lambda \ge 0) \end{align}\]
这时如果采用上面的解法,那么会得到
\[\begin{cases} X_i^T(y - X\beta) = \lambda sign(\beta_i) &\beta_i \neq 0\\\ |X_i^T(y - X\beta)| \le \lambda &\beta_i = 0 \end{cases}\]
上式并没有为这个 lasso 问题提供一个明确的解,这个问题可以通过下面要提到的 proximal gradient 进行求解,但是上面的式子一定程度上解释了 L1 regularization
的导致的参数的稀疏性的特点,从上面的表达式可知,只有当 \(X_i^T(y - X\beta) = \lambda sign(\beta_i)\) 时,对应的 \(\beta_i\) 才不为 0,而其他大多数的情况下 \(\beta_i\) 为 0.
proximal gradient descent
proximal gradient descent 也可以说是 subgradient 的升级版,proximal 通过对原问题的拆分并利用 proximal mapping,能够解决 subgradient descent 无法解决的问题(如上面的一般化 lasso 问题)。
一般来说,这类方法将目标函数描述成以下形式
\[\begin{align} f(X) = g(x) + h(x) \end{align}\]
上面的 \(g(x)\) 是凸且可微的, 而 \(h(x)\) 也是凸的,但是不一定可微。则 proximal gradient descent 的迭代公式为
\[\begin{align}x^{(k)} = x^{(k-1)} - t_kG_{t_k}(x^{(k-1)})\\\ G_{t}(x) = \frac{x - prox_{th}(x-t\nabla g(x))}{t}\\\ prox_{th}(x) = argmin_{z\in \mathbb {R}^n} \frac{1}{2t}||x-z||_2^2+h(z)\end{align}\]
上面 \(prox_{th}(x)\) 表示对函数 \(h\) proximal mapping。这里仅给出结论,证明过程略,接下来以上面没有解决的一般化的 lasso 问题为例讲述这种方法的应用。
\[\begin{align} \min_{\beta \in \mathbb {R}^n} \frac{1}{2} ||y-X\beta||_2^2 + \lambda ||\beta||_1~~(\lambda \ge 0) \end{align}\]
记 \(g(\beta) = \frac{1}{2} ||y-X\beta||_2^2, h(\beta) = \lambda ||\beta||_1\)
则有 \[\begin{align} prox_{th}(\beta) = argmin_{z \in \mathbb {R}^n} \frac{1}{2t}||\beta - z||_2^2+h(z) \end{align}\]
这个问题通过前面的 subgradient 方法已经解出来,结果为
\[z_i = \begin{cases} y_i - \lambda t & y_i > \lambda t\\\ 0 &-\lambda t \le y_i \le \lambda t\\\ y_i + \lambda t & y_i < -\lambda t\end{cases}\]
将上面的解记为 \(S_{\lambda t}(y)\), 同时 \(\nabla g(\beta) = - X^T(y-X\beta)\)
代取上面列出的 proximal gradient descent 列出的迭代公式,则 \(\beta\) 的迭代公式如下
\[\begin{align} \beta^{(k)} = S_{\lambda t}(\beta^{(k-1)} + t_kX^T(y-X\beta^{(k-1)})) \end{align}\]
其中 \(t_k\) 为步长。
这种方法之所以比 subgradient 方法更加一般化,是因为 \(prox_{th}(x)\) 对于绝大部分的 \(h\) 是易求的。
对偶方法与 KKT 条件
对偶理论在最优化中非常重要,其中具有代表性的两条定理是弱对偶定理和强对偶定理,弱对偶定理告诉了我们最优化的目标的上界 ( max 问题) 或下界 (min 问题),而强对偶定理告诉了当 KKT 条件满足的时候,可以通过对偶问题的解推出原问题的解。
弱对偶条件总是成立,而强对偶需要在 Slater's condition
成立时才成立,该条件描述如下
对于优化问题
\[\begin{align} &\min_x\quad f(x)\\\ &\begin{array}\\\ s.t.&g_i(x) \le 0,~i=1,\ldots,m\\\ &h_j(x)=0,~j=1,\ldots,r \end{array} \end{align}\]
假如存在可行解 \(x'\) 使得 \(g_i(x') < 0(i=1,...m)\), 即不等式约束严格成立(注意同时等式约束也要成立,否则就不是可行解了),那么称 Slater's condition
成立,同时强对偶也成立。
线性规划对偶
对于形如下面的线性规划问题
\[\begin{align} &\min_x\quad c^Tx\\\ &\begin{array}\\\ s.t.&Ax = b\\\ &Gx \le h \end{array} \end{align}\]
其对偶问题为
\[\begin{align} &\min_{u,v}\quad -b^Tu - h^Tv\\\ &\begin{array}\\\ s.t.&-A^Tu - G^Tv = c\\\ & v \ge 0 \end{array} \end{align}\]
对于 LP 问题,其对偶的特殊性在于只要存在原问题存在可行解,那么 Slater's condition
一定成立,因此强对偶也成立.
LP 对偶问题的一个经典的例子是最大流 (max flow) 问题和最小割 (min cut) 问题.
拉格朗日对偶
对于更一般的非 LP 问题的对偶问题,需要用到拉格朗日对偶理论得到,并称该问题为拉格朗日对偶问题。
这个方法可以说是对求解等式约束的拉格朗日乘子法的一个推广。
对于下面的优化问题
\[\begin{align} &\min_x\quad f(x)\\\ &\begin{array}\\\ s.t.&g_i(x) \le 0,~i=1,\ldots,m\\\ &h_j(x)=0,~j=1,\ldots,r \end{array} \end{align}\]
其増广拉格朗日函数为
\[\begin{align} L(x,u,v) = f(x) + \sum_{i=1}^m u_ig_i(x) + \sum_{j=1}^r v_jh_j(x)~~(u_i \ge 0) \end{align}\]
则原问题的拉格朗日对偶函数为
\[\begin{align} g(u,v) = \min_x L(x,u,v) \end{align}\]
且原问题的对偶问题为
\[\begin{align} &\max_{u,v}\quad g(u,v)\\\ &\begin{array}\\\ s.t.&u_i \ge 0,~i=1,\ldots,m \end{array} \end{align}\]
上面得到对偶问题的简单推导流程如下:
首先原问题的目标函数加上约束可以表示为
\[\begin{align} f(x) = \max_{u,v} L(x,u,v) \end{align}\]
原因是在增广拉格朗日函数中,假如 \(x\) 违反了约束条件 (即 $ g (x) > 0 $ ),那么 \(f(x)\) 会趋向无穷大;而不违反约束条件时,\(u\) 必须取 0 才能使得目标最小。
进一步,原问题可以表示为 \[\min_x \max_{u,v} L(x,u,v) \]
而由于下式恒成立(弱对偶定理)
\[\begin{align} \min_x \max_{u,v} L(x,u,v) \ge \max_{u,v} \min_xL(x,u,v) \end{align}\]
因此将 \(\min_xL(x,u,v)\) 作为对偶函数, \(\max_{u,v} \min_xL(x,u,v)\) 作为对偶问题。
假设现在找到了对偶问题,并且对偶问题比原问题要容易求解得多,也求出了对偶问题的解,那么该转化去求原问题的解,这里就要用到下面的 KKT 条件。
KKT 条件
KKT 条件是非线性规划领域中最重要的理论成果之一,是确定某点是最优点的一阶必要条件,只要是最优点就一定满足这个条件,但是一般来说不是充分条件,因此满足这个点的不一定是最优点。但对于凸优化而言,KKT 条件是最优点的充要条件。
同样地
对于下面的优化问题
\[\begin{align} &\min_x\quad f(x)\\\ &\begin{array}\\\ s.t.&g_i(x) \le 0,~i=1,\ldots,m\\\ &h_j(x)=0,~j=1,\ldots,r \end{array} \end{align}\]
其増广拉格朗日函数为
\[\begin{align} L(x,u,v) = f(x) + \sum_{i=1}^m u_ig_i(x) + \sum_{j=1}^r v_jh_j(x)~~(u_i \ge 0) \end{align}\]
则 KKT 条件为
\[\begin{cases} \nabla_x L(x,u,v) = 0\\\ u_ig(x) = 0\\\ u_i \ge 0\\\ g_i(x) \le 0, h_j(x)=0 \end{cases}\]
因此其实只要能够求解出上面的联立方程组,得到的解就是最优解(对于凸优化而言,非凸的问题一般用 KKT 来验证最优解)。
但是上面的方程组往往很难求解,一些特殊情况下解是有限的,可以分类讨论;但是更一般的情况下可能的解是无限的,因此无法求解。这里要结合上面的拉格朗日对偶问题得到的解进行求解。
求解之前,首先要知道下面的定理 > 假如一个问题满足强对偶,那么 \(x',u',v'\) 是原问题和对偶问题的最优解 \(\longleftrightarrow\) \(x',u',v'\) 满足 KKT 条件。
因此通过对偶问题求得 \(u',v'\) 后,带入上面的 KKT 条件即可求出 \(x'\) 。
svm 是利用拉格朗日对偶和 KKT 条件进行求解的经典问题,这里不详细展开,有兴趣的可以参考 Andrew Ng 公开课中关于 svm 的那章或这篇文章。
ADMM
ADMM (Alternating Direction Method of Multipliers) 是解决带约束的凸优化问题的一种迭代解法,当初提出这个算法最主要的目的是为了在分布式环境 (Hadoop, MPI 等) 中迭代求解这个问题,关于这方面的资料可参考这里
ADMM 将要解决的问题描述成以下形式
\[\begin{align} &\min_x\quad f_1(x_1) + f_2(x_2)\\\ &\begin{array}\\\ s.t.& A_1x_1+A_2x_2 = b \end{array} \end{align}\]
这里省略证明过程,直接给出 ADMM 的迭代公式
\[\begin{align} &x_1^{(k)} = argmin_{x_1} f_1(x_1) + \frac{\rho}{2}||A_1x_1+A_2x_2^{(k-1)} - b + w^{(k-1)}||_2^2\\\ &x_2^{(k)} = argmin_{x_2} f_2(x_2) + \frac{\rho}{2}||A_1x_1^{(k)} + A_2x_2 - b + w^{(k-1)}||_2^2\\\ &w^{(k)} = w^{(k-1)} + A_1x_1^{(k)} + A_2x_2^{(k)} - b \end{align}\]
上式中的 \(\rho\) 是事先选择的参数,可以选择定值,选择定值的时候会遇到跟梯度下降固定步长的类似问题,因此也可以根据每次迭代情况改变 \(\rho\) 的值,具体可参考这篇文献。
实际中,难点在于把一个问题变为 ADMM 求解的形式,即上面列出的优化问题的形式。下面给出一个例子说明这个问题,这个例子是一个更一般的 lasso regression 问题,称为 fused lasso regression
.
\[\begin{align} \min_{\beta \in \mathbb {R}^n} \frac{1}{2} ||y-X\beta||_2^2 + \lambda ||D\beta||_1~~(\lambda \ge 0) \end{align}\]
一般的 lasso regression 问题中 \(D = I\). 下面用 ADMM 的形式表示上面的问题
\[\begin{align}\min_{\beta \in \mathbb {R}^n,\alpha \in \mathbb {R}^n} \frac{1}{2} ||y-X\beta||_2^2 + \lambda ||\alpha||_1~~(\lambda \ge 0)\\\ s.t. D\beta - \alpha = 0\end{align}\]
将这个问题映射到上面的优化问题的模式有
\[\begin{align}\frac{1}{2} ||y-X\beta||_2^2\rightarrow f_1(x1) \\\ \lambda ||\alpha||_1 \rightarrow f_2(x_2)\\\ D\beta - \alpha = 0 \rightarrow A_1x_1+A_2x_2 = b\end{align}\]
则根据上面的迭代公式计算(对问题变量求导且令结果为 0)可得到下面的迭代公式
\[\begin{align} &\beta^{(k)} = (X^TX+\rho D^TD)^{-1}(X^Ty+\rho D^T(\alpha^{(k-1)}-w^{(k-1)})\\\ &\alpha^{(k)} = S_{\lambda/\rho}(D\beta^{(k)}+w^{(k-1)})\\\ &w^{(k)} = w^{(k-1)} + D\beta^{(k)} - \alpha^{(k)} \end{align}\]
而对于无约束的优化也可以通过 ADMM 求解,例如对于下面的问题
\[\begin{align} \min_x \sum_{i=1}^B f_i(x) \end{align}\]
将其表示为 ADMM 的形式如下
\[\begin{align}\min_{x_1,..x_B,x} \sum_{i=1}^B f_i(x_i)\\\ s.t. x_i = x,~~i=1,..B\end{align}\]
则 ADMM 的迭代规则如下
\[\begin{align} &x_i^{(k)} = argmin_{x_i} f_i(x_i)+\frac{\rho}{2}||x_i-x^{(k-1)}+w_i^{(k-1)}||~(i=1,..B)\\\ &x^{(k)} = \frac{1}{B} \sum_{i=1}^B (x_i^{(k)} + w_i^{(k-1)})\\\ &w_i^{(k)} = w_i^{(k-1)} + x_i^{(k)} - x^{(k)}~(i=1,..B) \end{align}\]