Algoritmos para Optimización con Resticciones

Penalización cuadrática, Lagrangiano Aumentado y el Direcciones Alternadas de los Multiplicadores de Lagrange (ADMM)

Mariano Rivera

septiembre 2018

Sea el problema de optimización con restricciones

(1)
minx    f(x)                    s.a.    Axb=0 \min_x \;\; f(x) \;\;\;\;\;\\ \;\;\;\;\; s.a.\;\; Ax-b=0

Entonces el Lagrangiano esta dado por
L(x,λ)=f(x)λ(Axb) \mathcal{L} (x,\lambda) = f(x) - \lambda^\top (Ax-b)

y las KKTs serán
(KKTa)            xL(x,λ)=0    f(x)Aλ=0(KKTb)            λL(x,λ)=0                    Axb=0 (KKTa) \;\;\;\;\;\; \nabla_x \mathcal{L} (x,\lambda) = 0 \Rightarrow \;\;\nabla f(x) - A^\top \lambda=0\\ (KKTb) \;\;\;\;\;\; \nabla_\lambda \mathcal{L} (x,\lambda) = 0 \Rightarrow \;\;\;\;\;\;\;\;\;\; Ax-b=0

Penalización Cuadrática

Una estrategia para resolver (1), es cambiar un la solución del problema de optimización con restricciones a la solución de una secuencia de problemas sin restricciones.

Los mas simple es cambiar la restricción por pona penalización, la cual se hace muy grande si se viola la factibilidad del punto actual.

Mediante método de penalización cuadrática (1) se transforma en

(2)
minx  q(x;ρ(k))=f(x)+ρ(k)2Axb2 \boxed{ \min_x \; q(x;\rho^{(k)}) = f(x) + \frac{\rho^{(k)}}{2} \| Ax-b \|^2 }
para k=1,2,k=1,2,\ldots, y ρ(k)\rho^{(k)} un parámetro que se incrementa conforme pasan las iteraciones kk; lo representamos como ρk\rho \uparrow_k.

La solución del problema (2) consiste en iterar:

  1. Resolver xq(x;ρ(k))=0\nabla_x q (x; \rho^{(k)})=0 para xx con $ \rho^{(k)}$ fija y como condición inicial para x=x(k)x=x^{(k)}. Esto es

x(k+1)=argminx  q(x;ρ(k)) x^{(k+1)} = \underset{x}{\arg\min} \;q(x;\rho^{(k)})

  1. Actualizar ρ\rho:
    ρ(k+1)=η ρ(k)                     \rho^{(k+1)} = \eta \, \rho^{(k)} \;\;\;\;\;\;\;\;\;\;
    con η>1\eta>1, digamos η=1.1\eta=1.1.

El propósito de no iniciar con un valor ρ\rho alto (sino irlo incrementandolo gradualmente) es que para una ρ>>1\rho >>1, el gradiente de la penalización puede dominar y algoritmo de descenso puede tener convergencia temprana muy lejos del mínimo local.

En el óptimo se cimple que gradiente de la función de penalización esta dado por

(3)
xq(x;ρ)=f(x)+A[ρ(Axb)]=0 \nabla_x q(x*;\rho^*) = \nabla f(x^*) + A^\top [\rho^* (Ax^*-b)] =0

como el óptimo de la función de penalización debe ser el mismo que el óptimo del problema con restricciones, mediante la igualación de términos de (3) con la primera KKT (KKTa) notamos que

(4)
λρ(Axb) \lambda^* \approx \rho^* (Ax^*-b)

Desafortunadamente esta approximación es en general muy mala, la razón es que estamos multiplicando un termino muy grande (ρ\rho^*) con uno muy pequeño ((Axb)(Ax^*-b)). Si queremos estimar el multiplicador de Lagrange, es mejor resolver (KKTa) para λ\lambda con xx^* fija y calculada como la solución de la secuencia de penalización cuadrática.

Lagrangiano Aumentado

El método del lagrangiano Aumentado se propuso con la finalidad de solventar la deficiencia de la Penalización Cuadrática para estimar los multiplicadores de Lagrange. La motivación es estimar simultáneamente xx y λ\lambda en el proceso iterativo. Para ello debemos pedir que la (KKTa) también se satisfaga. Esto se logra combinando los términos que involucran a las restricción en el Lagrangiano y en la Penalización Cuadrática. La nueva función que optimizaremos iterativamente es

(5)
minx  LA(x;y(k),ρ(k))=f(x)+y(k)(Axb)+ρ(k)2Axb2 \boxed{ \min_x \; \mathcal{L}_A (x; y^{(k)}, \rho^{(k)}) = f(x) + {y^{(k)}}^\top (Ax-b)+ \frac{\rho^{(k)}}{2} \| Ax-b \|^2 }

donde hemos definido y(k)=λky^{(k)} = - \lambda^{k} para simplificar el algebra.

Luego, resolvemos para xx

(6)
xLA=xf(x)+Ay(k)+ρ(k)A(Axb)                      =xf(x)+A[y(k)+ρ(k)(Axb)]=0 \nabla_x \mathcal{L}_A = \nabla_x f(x) + A^\top y^{(k)} + \rho^{(k)} A^\top (Ax-b) \\ \;\;\;\;\;\;\;\;\;\;\; = \nabla_x f(x) + A^\top [ y^{(k)} + \rho^{(k)}(Ax-b) ] =0

Comparamos (6) con (KKTa) y notamos que para mantener la factibilidad dual, debemos elegir elegir y(k+1)y^{(k+1)} tal que satisfaga (KKTa). Por ello hacemos y(k+1)=y(k)+ρ(k)(Axb)y^{(k+1)} = y^{(k)} + \rho^{(k)}(Ax-b).

En resumen, debemos iterar hasta convergencia:

  1. Asignar a x(k+1)x^{(k+1)} la solución (aproximada) para xx de
    xf(x)+A[y(k)+ρ(k)(Axb)]=0 \nabla_x f(x) + A^\top [ y^{(k)} + \rho^{(k)}(Ax-b) ] =0

  2. Actualizar la estimación del multiplicador de Lagrange con
    y(k+1)=y(k)+ρ(k)(Ax(k+1)b) y^{(k+1)} = y^{(k)} + \rho^{(k)}(Ax^{(k+1)}-b)

  3. Actualizar (incrementar) ρ(k)\rho^{(k)} y poner k=k+1k=k+1

Forma Aditiva del Lagrangiano Aumentado

La forma aditiva del Lagrangiano Aumentado se obtiene de podemos añadir términos constantes en xx al LA(k)\mathcal{L}^{(k)}_A sin mofdificar el óptimo x(k+1)x^{(k+1)}:

LA(x;u,ρ)=f(x)+ρ2[Axb2+21ρy(Axb)+1ρ2yy] \mathcal{L}_A (x; u, \rho) = f(x) + \frac{\rho}{2} \left[\| Ax-b \|^2 + 2 \frac{1}{\rho} y^\top(Ax-b) + \frac{1}{\rho^2} y^\top y \right]

Donde para simplicar la notación hemos quitado la indicación de la iteración para yy y ρ\rho. Luego podemos reescibir el lagrangiano aumentado como

(7)
LA(x;y,ρ(k))=f(x)+ρ(k)2Axb+u2 \boxed{ \mathcal{L}_A(x; y, \rho^{(k)}) = f(x) + \frac{\rho^{(k)}}{2} \| Ax-b + u \|^2 }

y hemos redefinido

(8)
u=defyρ(k) u \overset{def}{=} \frac{y}{\rho^{(k)}}

Luego

(9)
xLA=xf(x)+ρkA(Axb+u)=0 \nabla_x \mathcal{L}_A = \nabla_x f(x) + \rho^{k} A^\top ( A x-b + u)=0

Para mantener la factibilida dual, elegimos y=ρ(k)(Axb+u)y=\rho^{(k)} (A x -b +u) y sustituyendo yy de (8) en (9), tenemos:
u=u+(Axb) u = u + (A x -b)

En este caso, el algoritmo consiste en iterar hasta convergencia

  1. Asignar a x(k+1)x^{(k+1)} la solución (aproximada) para xx de
    xf(x)+ρ(k)A[Axb+u(k)]=0 \nabla_x f(x) + \rho^{(k)} A^\top [Ax-b + u^{(k)}] =0

  2. Actualizar la estimación del multiplicador de Lagrange con
    u(k+1)=u(k)+(Ax(k+1)b) u^{(k+1)} = u^{(k)} + (Ax^{(k+1)}-b)

  3. Poner k=k+1k=k+1

Método de los Multiplicadores de Lagrange con Direcciones Alternadas (ADMM)

Si bien, la actualización de la forma aditiva del Lagrangiano Aumentado es legeramente mas simple, no se pueded apreciar, por el momento, una ventaja mayor de esta forma.

Sin ambargo, esta forma nos ayudará a escribir un algoritmo mas simple para el método ADMM.

Considere ahora el problema con función objetivo separable de la forma

(10)
minx    f(x)+g(x)                    s.a.    Axb=0 \min_x \;\; f(x) + g(x) \;\;\;\;\;\\ \;\;\;\;\; s.a.\;\; Ax-b=0

Cuyo el Lagrangiano esta dado por
L(x,y)=f(x)+g(x)+y(Axb) \mathcal{L} (x,y) = f(x) + g(x) + y^\top (Ax-b)

y con KKTs
(KKTa2)      xL(x,y)=0    xf(x)+xg(x)+Ay=0(KKTb2)    λL(x,y)=0                                                Axb=0 (KKTa_2) \;\;\; \nabla_x \mathcal{L} (x,y) = 0 \Rightarrow \;\;\nabla_x f(x) + \nabla_x g(x) + A^\top y=0 \\ (KKTb_2) \;\; \nabla_\lambda \mathcal{L} (x,y) = 0 \Rightarrow \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\; Ax-b=0

(note que estamos usando y=λy=-\lambda).

La solución a (10) consiste en encotrar los vectores xx y yy que satisfagan las KKTa2KKTa_2 y KKTb2KKTb_2.

Ahora, reescribimos el problema (1) en usaremos una nueva variable zz que es equivalente.

(11)
minx    f(x)+g(z)          s.a.                                    Axb=0                            xz=0 \min_x \;\; f(x) + g(z) \;\;\;\;\;\\ s.a. \;\;\;\;\;\;\;\;\\ \;\;\;\;\;\;\;\;\;\; Ax-b=0 \\ \;\;\;\;\;\;\;\;\;\;\;\;\;\; x-z=0

Cuyo el Lagrangiano esta dado por
L(x,z,y)=f(x)+g(z)+y(Axb)+γ(xz) \mathcal{L} (x, z,y) = f(x) + g(z) + y^\top (Ax-b) + \gamma (x-z)

y con KKTs
(KKTa3)      xL(x,z,y)=0    xf(x)+Ay+γ=0(KKTb3)      zL(x,z,y)=0                      zg(z)γ=0(KKTc3)      yL(x,z,y)=0                                  Axb=0(KKTc4)      γL(x,z,y)=0                                      xz=0 (KKTa_3) \;\;\; \nabla_x \mathcal{L} (x,z,y) = 0 \Rightarrow \;\;\nabla_x f(x) + A^\top y +\gamma =0 \\ (KKTb_3) \;\;\; \nabla_z \mathcal{L} (x,z,y) = 0 \Rightarrow \;\;\;\;\;\;\;\;\;\;\; \nabla_z g(z) - \gamma =0 \\ (KKTc_3) \;\;\; \nabla_y \mathcal{L} (x,z,y) = 0 \Rightarrow \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\; Ax-b=0 \\ (KKTc_4) \;\;\; \nabla_\gamma \mathcal{L} (x,z,y) = 0 \Rightarrow \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\; x-z=0

Aparentemente no hemos hecho nada, puesto que x=zx=z. Pero la estrategia para resolver el problemas es alternar minimizaciónes con respecto a xx y zz; pero usando Lagrangiano Aumentado.

Primero escribimos la formulación de Lagrangiano aumentado.

(12)
L(x,z,y)=f(x)+g(z)+ρ(k)2Axb+u2+η(k)2xz+v2 \mathcal{L} (x, z, y) = f(x) + g(z) + \frac{\rho^{(k)}}{2} \| Ax-b + u\|^2 + \frac{\eta^{(k)}}{2} \| x-z + v\|^2

Y calculamos los gradientes parciales:

De xLA=0\nabla_x \mathcal{L}_A=0 tenemos

(13)
xf(x)+ρ(k)A(Axb+u)+η(k)(xz+v)=0 \nabla_x f(x) + \rho^{(k)} A^\top (Ax-b+u) +\eta^{(k)} (x-z+v) = 0

De zLA=0\nabla_z \mathcal{L}_A=0 tenemos

(14)
zg(z)η(k)(xz+v)=0 \nabla_z g(z) - \eta^{(k)} (x-z+v) =0

Y las actualizaciones para uu y vv quedan:
u(k+1)=u(k)+(Axb) u^{(k+1)} = u^{(k)} + (A x - b)
y
v(k+1)=v(k)+(xz) v^{(k+1)} = v^{(k)} + (x-z)

Luego, el algorimto consiste en iterar hasta convergencia

  1. Asignar a x(k+1)x^{(k+1)} la solución (aproximada) para xx de
    xf(x)+ρ(k)A(Axb+u(k))+η(k)(xz(k)+v(k))=0 \nabla_x f(x) + \rho^{(k)} A^\top (Ax-b+u^{(k)}) +\eta^{(k)} (x-z^{(k)}+v^{(k)}) = 0

  2. Asignar a z(k+1)z^{(k+1)} la solución (aproximada) para zz de
    zg(z)η(k)(x(k+1)z+v(k))=0 \nabla_z g(z) - \eta^{(k)} (x^{(k+1)}-z+v^{(k)}) =0

  3. Actualizar uu y vv:
    u(k+1)=u(k)+(Ax(k+1)b)      v(k+1)=v(k)+(x(k+1)z(k+1)) u^{(k+1)} = u^{(k)} + (A x^{(k+1)} - b) \;\;\;\\ v^{(k+1)} = v^{(k)} + (x^{(k+1)}-z^{(k+1)})

  4. Poner k=k+1k=k+1

Ejemplos de formulación con ADMM

Ejemplo 1, resticciones lineales factorizables mediante suma

(15)
minx    f(x)+g(x)                    s.a.    Ax+Bxb=0 \min_x \;\; f(x) + g(x) \;\;\;\;\;\\ \;\;\;\;\; s.a.\;\; Ax+Bx-b=0

Se transforma a
(11)
minx    f(x)+g(z)          s.a.    Ax+Bzb=0                                    xz=0 \min_x \;\; f(x) + g(z) \;\;\;\;\;\\ s.a. \;\; Ax + Bz -b=0 \\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\; x-z=0

con lagrangiano Aumentado

LA(x,z;u,v)=f(x)+ρ2Ax+Bzb+u2+η2xz+v)2 \mathcal{L}_A (x,z; u,v) = f(x) + \frac{\rho}{2} \|Ax+ Bz-b+u\|^2 + \frac{\eta}{2} \| x-z+v) \|^2

Se resuelve iterando

  1. Asignar a x(k+1)x^{(k+1)} la solución (aproximada) para xx de
    xLA(x,z(k);  u(k),v(k))=0 \nabla_x \mathcal{L}_A (x,z^{(k)}; \; u^{(k)}, v^{(k)} ) =0

  2. Asignar a z(k+1)z^{(k+1)} la solución (aproximada) para zz de
    zLA(x(k+1),z ;  u(k),v(k))=0 \nabla_z \mathcal{L}_A (x^{(k+1)},z \, ; \; u^{(k)}, v^{(k)} ) =0

  3. Actualizar uu y vv:
    u(k+1)=u(k)+(Ax(k+1)+B(z+1)b)      v(k+1)=v(k)+(x(k+1)z(k+1)) u^{(k+1)} = u^{(k)} + (A x^{(k+1)} + B^{(z+1)} - b) \;\;\;\\ v^{(k+1)} = v^{(k)} + (x^{(k+1)}-z^{(k+1)})

con ρ,ηk\rho, \eta \uparrow_k