ADMM算法学习

Dual Ascent

考虑以下等式约束凸优化问题:

(1.1) m i n i m i z e    f ( x ) s . t .    A x = b \begin{aligned} \mathrm{minimize} \ \ & f(x) \\ s.t.\ \ &Ax = b \end{aligned} \tag{1.1} minimize  s.t.  f(x)Ax=b(1.1)

其中 x ∈ R n , A ∈ R m × n , f : R n → R x\in\mathbf{R}^n,A\in\mathbf{R}^{m\times n},f:\mathbf{R^n}\rightarrow \mathbf{R} xRnARm×nf:RnR

对应的拉格朗日方程为:

L ( x , y ) = f ( x ) + y T ( A x − b ) L(x,y) = f(x) + y^{T}(Ax - b) L(x,y)=f(x)+yT(Axb)

dual function为 L ( x , y ) L(x,y) L(x,y)固定 y y y时的下确界:

g ( y ) = inf ⁡ x L ( x , y ) = − f ∗ ( − A T y ) − b T y g(y) = \inf_xL(x,y) = -f^*(-A^Ty) - b^Ty g(y)=xinfL(x,y)=f(ATy)bTy

对偶问题为最大化该下确界:

m a x i m i z e    g ( y ) \mathrm{maximize} \ \ g(y) maximize  g(y)

Assuming that strong dualtiy holds, the optimal values of the primal and dual problems are the same.

此时原问题和对偶问题的最优解是相同的。然后就可以根据 y ∗ y^* y求解:

x ∗ = arg ⁡ min ⁡ x L ( x , y ∗ ) x^* = \arg\min_xL(x, y^*) x=argxminL(x,y)

通过这种方法,将原问题转化为了求解对偶问题的最大值点,通过gradient ascent求解。

  • x k + 1 : = a r g m i n x L ( x , y k ) x^{k + 1} := \mathrm{argmin}_xL(x,y^k) xk+1:=argminxL(x,yk)
  • y k + 1 : = y k + α k ( A x k + 1 − b ) y^{k + 1} := y^k + \alpha^k(Ax^{k+1}- b) yk+1:=yk+αk(Axk+1b)

其中 ▽ g ( y ) = A x − b , α k \triangledown g(y) = Ax-b, \alpha^k g(y)=Axb,αk是学习率(步长)。因此该算法叫做dual ascent.

Dual Decompostion

当目标方程f可以分为:

f ( x ) = ∑ i = 1 N f i ( x i ) f(x) = \sum_{i = 1}^{N}f_i(x_i) f(x)=i=1Nfi(xi)

其中 x = ( x 1 , x 2 , . . . , x N ) x = (x_1,x_2,...,x_N) x=(x1,x2,...,xN),并且 x i x_i xi x x x的子向量( x x x的一部分)。

将矩阵 A A A对应分为 A = [ A 1 , A 2 , . . . , A N ] A = [A_1, A_2, ...,A_N] A=[A1,A2,...,AN],此时 A x = ∑ i = 1 N A i x i Ax = \sum_{i = 1}^NA_ix_i Ax=i=1NAixi,原拉格朗日方程为:

L ( x , y ) = f ( x ) + y T ( A x − b ) = ∑ i = 1 N ( f i ( x i ) + y T A i x i − 1 N y T b ) L(x,y) = f(x) + y^T(Ax - b) = \sum_{i = 1}^N(f_i(x_i) + y^TA_ix_i - \frac{1}{N}y^Tb) L(x,y)=f(x)+yT(Axb)=

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Matlab ADMM(Alternating Direction Method of Multipliers)算法是一种常用的优化算法,也是一种分布式算法,主要用于大规模数据的分布式处理。 ADMM算法的基本思路是将原始问题转化为加权最小二乘问题,然后将问题分解成几个子问题,每个子问题都可以单独解决,然后通过加权平均来更新主问题。 ADMM算法的优点是它在大规模数据分布式处理中具有很好的可扩展性和适应性,并且可以处理非凸的优化问题,因此在机器学习、图像处理、信号处理等领域都有广泛的应用。 Matlab ADMM算法是一种快速、高效的ADMM算法实现,它能够快速求解复杂的优化问题,并且拥有较好的稳定性和鲁棒性。同时,它也提供了可视化界面和各种工具箱,让用户可以更方便地使用和调试该算法,从而提高算法的效率和精度。 总之,Matlab ADMM算法是一个非常实用、高效的分布式算法,几乎可以应用于所有需要大规模数据分析和解决复杂优化问题的场景,是数据科学和机器学习领域不可或缺的一部分。 ### 回答2: ADMM是一种迭代算法,通过分割变量和应用拉格朗日乘子法来解决凸优化问题。Matlab提供了ADMM的实现,使得用户可以轻松地解决复杂的凸优化问题。 在Matlab中,ADMM算法可以通过几个自带的函数实现。首先,需要定义一个目标函数和一组约束条件。这些约束条件可以是线性或非线性的,可以是平等或不平等的。接下来,需要选择一种适合问题的ADMM算法模板,如ADMMADMM-L、ADMM-LS等。 在实现过程中,可以使用Matlab提供的一些工具来加快算法的收敛速度。例如,可以将目标函数分割成几个易于处理的部分;可以使用矩阵分解技术来解决大规模问题的矩阵计算问题。 需要注意的是,ADMM算法虽然可以解决许多凸优化问题,但并不适用于所有情况。在使用ADMM算法时,需要仔细研究目标函数和约束条件的结构,以确保算法的有效性和可靠性。 ### 回答3: MATLAB ADMM算法是指一种分布式算法,调用MATLAB的优化工具箱中的函数实现。 ADMM可以解决线性和非线性凸优化问题,应用广泛。它是一种基于拆分约束的方法,将原始问题拆分为更小的子问题,并使用一定的手段以保证整体收敛。ADMM 的主要优点是在大规模问题中具有较高的稳定性和收敛速度,并且可方便地应用于许多机器学习和优化问题。除此之外,它还可以很容易地应用于多元素上(如矩阵优化问题)和具有复杂问题结构的问题上。 ADMM的核心思想就是将原始问题拆分为两个子问题,一个与原始变量有关,一个与代理变量有关。然后,利用拉格朗日因式化将子问题转化为等价的最优化问题,并使用迭代方式求解。在此过程中,通过反复迭代子问题和代理问题,最终可以最小化原始问题。 总体而言,ADMM 是一种非常强大的算法,能够处理多种类型的优化问题,并在分布式计算上表现出色。它是一个简单但至关重要的概念,能够以非常强大的方式优化许多实际问题。因此,ADMM算法在工程、数据处理、机器学习等领域中得到了广泛的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值