Visión general
Es posible que desee probar una variante del Método de Multiplicadores de Direcciones Alternas (ADMM), que se ha encontrado que converge sorprendentemente rápido para problemas de tipo lazo. La estrategia es formular el problema con un Lagrangian aumentado y luego hacer un ascenso gradual en el problema dual. Es especialmente bueno para este problema regularizado particular porque la parte no lisa de cada iteración del método tiene una solución exacta que simplemente puede evaluar elemento por elemento, mientras que la parte lisa implica resolver un sistema lineal.l 1l1l1
En este post nosotros
- derivar una formulación general de ADMM para una generalización de su problema,
- deriva los subproblemas para cada iteración ADMM y los especializa a su situación, y luego
- investigar el sistema lineal resultante que necesita ser resuelto cada iteración, y desarrollar un solucionador rápido (o preacondicionador) basado en precomputen las descomposiciones de valores propios (o aproximaciones de bajo rango de los mismos) para y .Y Y TMTMYYT
- resumir con algunas observaciones finales
La mayoría de las grandes ideas aquí están cubiertas en el siguiente excelente artículo de revisión,
Boyd, Stephen y col. "Optimización distribuida y aprendizaje estadístico a través del método de dirección alterna de multiplicadores". Foundations and Trends® en Machine Learning 3.1 (2011): 1-122. http://www.stanford.edu/~boyd/papers/pdf/admm_distr_stats.pdf
Antes de entrar en detalles, quiero señalar que esta es una respuesta de método / algoritmo, no una respuesta práctica de código existente; si desea utilizar este método, necesitaría implementar su propia implementación.
Formulación ADMM
En general, suponga que desea resolver
minxs.t.∑i|xi|Ax=b.
El problema en la publicación original cae en esta categoría después de la vectorización adecuada. (esto es solo en principio, veremos que la vectorización no necesita realizarse en la práctica)
En su lugar, podría resolver el problema equivalente,
que tiene Lagrangian
L(x,z,λ,γ)=
minx , zS tY∑yoEl | XyoEl | + α2El | El | x-zEl | El |2+ β2El | El | Unaz- b | El |2Una z= bx = z,
L ( x , z, λ , γ) ==∑yoEl | XyoEl | + α2El | El | x-zEl | El |2+ β2El | El | Unaz- b | El |2+ λT( A z- b ) + γT( x - z)∑yoEl | XyoEl | + α2El | El | x-z+ 1αγEl | El |2+ β2El | El | Unaz- b + 1βλ | El |2+ α2El | El | 1αγEl | El |2+ β2El | El | 1βλ | El |2.
El método de dirección alterna de multiplicadores resuelve el problema dual,
través del ascenso de gradiente en las variables duales, excepto con proyecciones alternativas inexactas en los subproblemas duales. Es decir, uno realiza la iteración
x k + 1
maxλ , γminx , zL ( x , z, λ , γ) ,
Xk + 1zk + 1γk + 1λk + 1= a r g m i nXL ( x , zk, λk, γk)= a r g m i nzL ( xk + 1, z, λk, γk)= γk+α(xk+1−zk+1)=λk+β(Azk+1−b).
Bajo ciertas condiciones leves en los parámetros y (explicados en el documento de Boyd y Parikh vinculado anteriormente), el método ADMM convergerá a la solución verdadera. La tasa de convergencia es lineal, ya que es en el núcleo un método de ascenso de gradiente. A menudo se puede acelerar para que sea superlineal 1) cambiando los parámetros y medida que avanza según la heurística, o 2) usando la aceleración de Nesterov. Para obtener notas sobre cómo cambiar los parámetros de penalización, consulte el documento de la encuesta de Boyd, y para usar la aceleración de Nesterov con ADMM, consulte el siguiente documento,β α βαβαβ
Goldstein, Tom, Brendan O'Donoghue y Simon Setzer. "Métodos rápidos de optimización de dirección alterna". Informe CAM (2012): 12-35. ftp://ftp.math.ucla.edu/pub/camreport/cam12-35.pdf
Sin embargo, incluso si la tasa de convergencia general es solo lineal, para problemas de se ha observado que el método encuentra el patrón de dispersión muy rápidamente y luego converge más lentamente en los valores exactos. Como encontrar el patrón de dispersión es la parte más difícil, ¡esto es muy fortuito! Las razones exactas por las cuales parecen ser un área de investigación actual. Todos ven que el patrón de dispersión converge rápidamente, pero nadie parece saber exactamente por qué sucede. Hace un tiempo le pregunté a Boyd y Parikh sobre esto por correo electrónico y Parikh pensó que podría explicarse interpretando el método en un contexto de sistemas de control. Otra explicación heurística del fenómeno se encuentra en el apéndice del siguiente artículo,l1
Goldstein, Tom y Stanley Osher. "El método de Bregman dividido para problemas regularizados por L1". SIAM Journal on Imaging Sciences 2.2 (2009): 323-343. ftp://ftp.math.ucla.edu/pub/camreport/cam08-29.pdf
Por supuesto, ahora la dificultad radica en resolver los subproblemas de actualización y para su situación específica. Como el lagrangiano es cuadrático en , el subproblema de actualización simplemente requiere resolver un sistema lineal. El subproblema parece más difícil ya que no es diferenciable, ¡pero resulta que hay una fórmula exacta para la solución que se puede aplicar elemento por elemento! Ahora discutimos estos subproblemas con más detalle y los especificamos para el problema en la publicación original.z z z xXzzzX
Configuración para el subproblema de actualización (sistema lineal)z
Para la actualización , tenemos
a r g m i n z L ( x k , z , λ k , γ k ) = a r g m i n z αz
a r g m inzL (xk,z,λk,γk) = a r g m inzα2El | El | x-z+1αγEl | El |2+ β2El | El | UNAz- b +1βλ | El |2.
Esto se especializa en su problema,
a r g m i nZJ, Zsiα2El | El | Jk + 1- ZJ+ 1αΓJEl | El |2Fr o+ α2El | El | sik + 1- Zsi+ 1αΓsiEl | El |2Fr o+ β2El | El | METROZJ+ ZsiY-X+ 1αΛ | El |2Fr o,
donde denota la norma Frobenius (elementwise ). Este es un problema de minimización cuadrática, donde las condiciones de optimización de primer orden se pueden encontrar tomando derivadas parciales del objetivo con respecto a y y a cero. Esto es,
l 2 Z J Z B 0El | El | ⋅ | El |Fr ol2ZJZsi
0 00 0= - α2(Jk+1−ZJ+1αΓJ)+β2MT(MZJ+ZBY−X+1βΛ),=−α2(Bk+1−ZB+1αΓB)+β2(MZJ+ZBY−X+1βΛ)YT.
Como se señaló en los comentarios del póster original Justin Solomon, este sistema para es simétrico, por lo que el gradiente conjugado es un método ideal sin matriz. Una sección posterior analiza este sistema y cómo resolverlo / precondicionarlo con mayor detalle.ZJ,ZB
Resolución de subproblema de actualización (solución de umbral analítico)x
Ahora pasamos al subproblema ,
a r g m i n x L ( x , z k , λ k , γ k ) = a r g m i n x ∑ i | x i | + αx
argminxL(x,zk,λk,γk)=argminx∑i|xi|+α2||x−zk+1αγk||2
Lo primero que hay que ver es que la suma se puede dividir elemento por elemento,
∑i|xi|+α2||x−zk+1αγk||2=∑i|xi|+α2∑i(xi−zki+1αγki)2,
Entonces podemos resolver el problema de optimización elemento por elemento en paralelo, produciendo
xk+1i=argminxi|xi|+α2(xi−zki+1αγki)2.
La forma general de esta ecuación es,
mins|s|+α2(s−t)2.
La función de valor absoluto está tratando de tirar del punto óptimo hacia , mientras que el término cuadrático está tratando de tirar del punto óptimo hacia . la verdadera solución, por lo tanto, se encuentra en algún lugar del segmento entre los dos, con un aumento de tiende a tirar del punto óptimo hacia , y una disminución de tira del punto óptimo hacia .s = t [ 0 , t ) α t α 0s=0s=t[0,t)αtα0
Esta es una función convexa pero no es diferenciable en cero. La condición para un punto de minimización es que la subderivada del objetivo en ese punto contiene cero. El término cuadrático tiene derivada , y la función de valor absoluto tiene derivada para , subderivada con valor establecido como el intervalo cuando , y derivada para . Por lo tanto, obtenemos el subderivado para la función objetivo general,
- 1 s < 0 [ - 1 , 1 ] s = 0 1 s > 0 ∂ s ( | s | + αα(s−t)−1s<0[−1,1]s=01s>0
∂s(|s|+α2(s−t)2)=⎧⎩⎨1+α(s−t)[−1,1]+αt,−1+α(s−t),s>0s=0,s<0.
De esto vemos que el subderivativo del objetivo en contiene si y solo si , en cuyo caso es el minimizador. Por otro lado, si no es el minimizador, entonces podemos establecer la derivada de un solo valor igual a cero y resolver el minimizador. Al hacer esto,
0 | t | ≤ 1s=00 s=0s=0argmins| s| +α|t|≤1αs=0s=0
argminsEl | s | + α2( s - t )2= ⎧⎩⎨⎪⎪t - 1α,0 ,t + 1α,t > 1α,El | t | ≤ 1α,t < - 1α
Especializando este resultado nuevamente en el problema real que estamos tratando de resolver en la pregunta original donde rinde,
La actualización para es simplemente
J k + 1 i j ={ Z k i j - 1t = Zkyo j- 1αΓkyo j
Jk + 1yo j= ⎧⎩⎨⎪⎪⎪⎪Zkyo j- 1αΓkyo j- 1α,0 ,Zkyo j- 1αΓkyo j+ 1α,Zkyo j- 1αΓkyo j> 1α,El | Zkyo j- 1αΓkyo jEl | ≤ 1α,Zkyo j- 1αΓkyo j< - 1α.
sisik + 1= Zsi- 1αΓsi,
como lo señaló el póster original Justin Solomon en los comentarios. En general, hacer la actualización para solo requiere recorrer las entradas de sus matrices y evaluar las fórmulas anteriores para cada entrada.J, B
Complemento Schur para el sistemaZJ, Zsi
El paso más costoso de la iteración es resolver el sistema,
0 00 0= - α2( Jk + 1- ZJ+ 1αΓJ) + β2METROT( MZJ+ ZsiY- X+ 1βΛ ) ,= - α2( Bk + 1- Zsi+ 1αΓsi) + β2( MZJ+ ZsiY- X+ 1βΛ ) YT.
Para ese fin, vale la pena construir un buen solucionador / preacondicionador para este sistema. En esta sección lo hacemos vectorizando , formando un complemento Schur , haciendo algunas manipulaciones de productos Krnoecker y luego desvectorizando. El sistema de complemento Schur resultante es una ecuación de Sylvester ligeramente modificada .
En lo que sigue, las siguientes identidades sobre la vectorización y los productos de Kronecker son absolutamente clave:
- v e c (ABC) = ( CT⊗ A ) v e c ( B ) ,
- ( A ⊗ B ) ( C⊗ D ) = A C⊗ B D ,
- ( A ⊗ B )- 1= A- 1⊗ B- 1 , y
- ( A ⊗ B )T= AT⊗ BT .
Estas identidades se mantienen siempre que el tamaño de la matriz y la invertibilidad sean tales que cada lado de la ecuación sea una expresión válida.
La forma vectorizada del sistema es,
( αI+ β[Yo⊗ MTMETROY⊗ M(Y⊗ M)TYYT⊗ yo] ) [ v e c ( ZJ)v e c ( Zsi)]= [ v e c ( α J+ βMETROTX+ ΓJ- MTΛ )v e c (αB+βXYT+ Γsi- Λ YT)] ,
o,
[ Yo⊗ ( α I+ βMETROTMETRO)βY⊗ Mβ( Y⊗ M)T( α I+ βYYT) ⊗ I] [ v e c ( ZJ)v e c ( Zsi)] = [ v e c ( F)v e c (G)] ,
donde y son notación condensada para el lado derecho. Ahora realizamos el complemento de eliminación gaussiana en bloque / Schur para eliminar el bloque inferior izquierdo de la matriz, en el proceso de condensación de los productos Kronecker. Esto es,
Fsol
[ Yo⊗ ( α I+ βMETROTMETRO)0 0β( Y⊗ M)T( α I+ βYYT) ⊗ I- β2YYT⊗ M( α I+ βMETROTMETRO)- 1METROT] ...⋅ [ v e c ( ZJ)v e c ( Zsi)] = [ v e c ( F)v e c (G)- βY⊗M( αI+ βMETROTMETRO)- 1v e c ( F)] .
Desvectorizando, las dos ecuaciones que tenemos que resolver en secuencia son,
Zsi( αI+βYYT) - ( βMETRO( αI+ βMETROTMETRO)- 1METROT) Zsi( βYYT) ...= G - βMETRO( αI+ βMETROTMETRO)- 1FYT
( αI+ βMETROTMETRO) ZJ= F- βMETROTZsiY.
Solución del sistema de complemento de Schur cuando son cuadrados, rango altoY, M
En esta sección resolvemos el sistema de complemento Schur para (ecuación 1. anterior) mediante el uso de SVD completos precalculados de las matrices y aplicando una versión modificada del algoritmo de Bartels-Stewart para el Sylvester ecuación. El algoritmo se modifica ligeramente de la versión estándar para tener en cuenta el adicional en el segundo término, lo que hace que no sea la ecuación de Sylvester. Una vez que se encuentra través de la primera ecuación, se puede encontrar fácilmente a partir de la segunda ecuación. La segunda ecuación es trivial para resolver mediante cualquier método que desee.ZsiYYT, MMETROT, MTMETROβYYTZsiZJ
Este método requiere un costo inicial para calcular previamente dos SVD completos antes de que comience el proceso ADMM, pero luego se aplica rápidamente en las iteraciones ADMM reales. Dado que el método trata con SVD completos de las matrices de restricción, es apropiado cuando están cerca de un cuadrado y un rango alto. También es posible un método más complicado que utiliza SVD de bajo rango, pero se presenta en una sección posterior.
El método se desarrolla de la siguiente manera. Deje
denotan precalculadas completos descomposiciones de valor singular, y condensar el lado derecho para ser . Entonces la primera ecuación se convierte en
Multiplicación por los factores ortogonales para limpiar la izquierda y la derecha y establecer una nueva temporal desconocida , esto se convierte en
Q D QT= YYT,WΣ WT= MMETROT,VTVT= MTMETRO
HZsiQ ( α I+ D ) QT- WβΣ ( α I+ Σ )- 1Σ WTZsiQ D QT= H.
A = WTZsiQA ( α I+ D ) - βΣ ( α I+ Σ )- 1Σ A D = WHQT.
Ahora podemos encontrar resolviendo el sistema diagonal ,
UNA
( ( α I+ D ) ⊗ I+ D ⊗ βΣ ( α I+ Σ )- 1Σ ) v e c ( A ) = v e c ( WHQT) .
Habiendo encontrado , calculamos , y conociendo resolvemos la segunda ecuación anterior para , que es trivial ya que ya tenemos la descomposición del valor propio para .UNAZsi= WUna QTZsiZJMETROTMETRO
El costo inicial es calcular dos descomposiciones de valores propios definidos simétricos positivos de e , y luego el costo por iteración para una solución completa está dominado por un puñado de multiplicaciones de matriz-matriz, que es del mismo orden de magnitud como hacer 1 subiteración CG. Si las descomposiciones iniciales de valores propios son demasiado costosas, entonces se pueden calcular de manera inexacta, por ejemplo, finalizando la iteración de Lanczos temprano y manteniendo los vectores propios más grandes. Entonces, el método puede usarse como un buen preacondicionador para CG en lugar de un solucionador directo.METROTMETROYYT
Método de solución cuando son muy rectangulares o tienen una aproximación de rango bajoMETRO, Y
Ahora dirigimos nuestra atención a resolver o preacondicionar el cuando a) las matrices de entrada son muy rectangulares, lo que significa que tienen muchas más filas que columnas o viceversa, o b) tienen una aproximación de rango bajo. La siguiente derivación implica el uso extensivo de la fórmula de Woodbury, el complemento de Schur y otras manipulaciones similares.ZJ, ZsiMETRO, Y
Comenzamos con nuestro sistema de complemento Schur,
( α I+ βYYT) ⊗ I- β2YYT⊗ M( α I+ βMETROTMETRO)- 1METROT.
Algunas manipulaciones transforman este sistema en una forma más simétrica,
( α I+ βyo⊗ MMETROT+ βYYT⊗ yo) v e c ( Zsi) = ( I⊗ ( yo+ βαMETROMETROT) ) v e c ( H) .
Ahora traemos las aproximaciones de bajo rango. Deje que
sean las SVD reducidas o las aproximaciones de rango bajo de y ( es un marcador de posición y no es usado). Al sustituirlos en nuestro sistema, se obtiene la siguiente matriz inversa que deseamos aplicar,
Q D1 / 2QT2= YWΣ1 / 2VT= M
YMETROQ2( α I+ βyo⊗ WΣ WT+ βYYT⊗ yo)- 1.
Dado que la matriz con la que invertimos es una actualización de bajo rango de la identidad, la estrategia lógica es tratar de usar la fórmula de Woodbury,
( A + UCUT)- 1= A- 1- A- 1U( C- 1+ UTUNA- 1U)- 1UTUNA- 1.
Sin embargo, se necesita algo de cuidado ya que las piezas de bajo rango e no son ortogonales. Por lo tanto, para aplicar la fórmula de Woodbury, recopilamos ambas actualizaciones de bajo rango en una sola gran actualización. Doint así y aplicando la fórmula de Woodbury produce,
yo⊗ WY⊗ yo
( 1αyo+ β[ Yo⊗ WQ ⊗ I] [ I⊗ ΣD ⊗ Y] [ I⊗ ΣTQT⊗ yo] )- 1= α I- βα2[ Yo⊗ WQ ⊗ I] [ I⊗ ( Σ- 1+ βαyo)βαQT⊗ WβαQ ⊗ WT( D- 1+ βαyo) ⊗ Y]- 1[ Yo⊗ ΣTQT⊗ yo] .
El inverso del núcleo puede calcularse mediante la fórmula inversa en bloque de 2x2,
[ AsiTsiC]- 1= [ ( A - B C- 1siT)- 1- C- 1siT( A - B C- 1siT)- 1- A- 1B ( C- BTUNA- 1B )- 1( C- BTUNA- 1B )- 1] .
Esta publicación ya es lo suficientemente larga, así que ahorraré los largos detalles del cálculo, pero el resultado final es que al conectar las submatrices necesarias en el inverso en bloque y multiplicar todo a través se obtiene la siguiente forma explícita para el inverso general,
( α I+ βyo⊗ MMETROT+ βYYT⊗ yo)- 1= 1αyo- βα2( t11+ s11+ t12+ s12+ t21+ s21+ t22+ s22) ,
donde
t11s11t12s12t21s21t22s22re11re22lh= αβyo⊗ Wl- 1WT= ( Q ⊗ Wl- 1) D11( QT⊗ l- 1WT)= - αβQ h- 1QT⊗ Wl- 1WT= - ( Q h- 1⊗ Wl- 1) D22( h- 1QT⊗ WT)= t12= - ( Q h- 1⊗W) D22( h- 1QT⊗ l- 1WT)= αβQ h- 1QT⊗ yo= ( Q h- 1⊗W) D22( h- 1QT⊗ WT)= αβ( h ⊗ I- yo⊗ l- 1)- 1= αβ( Yo⊗ l - h- 1⊗ yo)- 1= αβΣ- 1+ I= αβre- 1+ I.
De esta forma, podemos aplicar el inverso y encontrar término por término a través de 8 emparedados de multiplicación de matriz izquierda y derecha. La fórmula general para aplicar la suma de los productos de Kronecker es,
Zsi
( ( A1⊗ B1) + ( A2⊗ B2) + … ) V e c ( C) = v e c ( BT1CUNA1+ BT2CUNA2+ ... ) .
Tenga en cuenta que todas las inversas explícitas con las que terminamos son diagonales, por lo que no hay nada que "resolver".
Código de solucionador lineal
Implementé los dos solucionadores en Matlab. El parece funcionar bien. El código solucionador está aquí.zJ, Zsi
https://github.com/NickAlger/MeshADMM/blob/master/zkronsolve.m
Un script de prueba para verificar que los solucionadores funcionan está aquí. También muestra, por ejemplo, cómo llamar al código del solucionador.
https://github.com/NickAlger/MeshADMM/blob/master/test_zkronsolve.m
Observaciones finales
Los métodos de tipo ADMM son adecuados para problemas como este, pero necesitaría implementar su propia implementación. La estructura general del método es bastante simple, por lo que la implementación no es demasiado difícil en algo como MATLAB.
La pieza que falta en esta publicación que debería especificarse para definir completamente el método para su problema es una elección de parámetros de penalización . Afortunadamente, el método generalmente es bastante robusto siempre que los valores de los parámetros no estén locos. El documento de Boyd y Parikh tiene una sección sobre los parámetros de penalización al igual que las referencias allí, pero simplemente experimentaría con los parámetros hasta que obtenga tasas de convergencia razonables.α , β
Las presentadas son altamente efectivas si las matrices de restricción son a) densas, cuadradas y de alto rango, o b) tienen una buena aproximación de bajo rango. Otra solucionador útil que podría ser un tema de trabajo futuro sería un programa de solución optimizada para el siguiente caso - la matriz de restricciones es escasa y squareish y alto rango, pero no existe una buena preacondicionador para . Este sería el caso si, por ejemplo, es un laplaciano discretizado.ZJ, ZsiMETROα I+ MMETROTMETRO