visão global
Convém tentar uma variante do método de multiplicadores de direções alternadas (ADMM), que foi encontrado para convergir surpreendentemente rapidamente para problemas do tipo laço. A estratégia é formular o problema com um Lagrangiano aumentado e, em seguida, aumentar gradualmente o problema duplo. É especialmente agradável para este particular problema regularizada porque a parte nonsmooth de cada iteração do método tem uma solução exata, você pode simplesmente avaliar elemento por elemento, enquanto que a parte lisa envolve a solução de um sistema linear.l1l1
Neste post nós
- derivar uma formulação geral do ADMM para uma generalização do seu problema,
- derivar os subproblemas para cada iteração do ADMM e especializá-los para sua situação e, em seguida,
- investigar o sistema linear resultante que necessita de ser resolvido cada iteração, e desenvolver um agente de resolução rápida (ou pré-condicionador) baseado em precomputing as decomposições de valores próprios (ou aproximações baixa classe dos mesmos) para e .MTMYYT
- resumir com algumas observações finais
A maioria das grandes idéias aqui são abordadas no excelente artigo de revisão a seguir,
Boyd, Stephen, et al. "Otimização distribuída e aprendizado estatístico através do método de direção alternada dos multiplicadores". Foundations and Trends® em Machine Learning 3.1 (2011): 1-122. http://www.stanford.edu/~boyd/papers/pdf/admm_distr_stats.pdf
Antes de entrar em detalhes, quero observar que esta é uma resposta de método / algoritmo e não uma resposta de código existente prática - se você quiser usar esse método, precisará rolar sua própria implementação.
Formulação ADMM
Em geral, suponha que você queira resolver
minxs.t.∑i|xi|Ax=b.
O problema no post original se enquadra nessa categoria após a vetorização apropriada. (isso é apenas em princípio - veremos que a vetorização não precisa ser realizada na prática)
Você poderia resolver o problema equivalente,
que possui Lagrangiano
L(x,z,λ,γ)=
minx,zs.t.&∑i|xi|+α2||x−z||2+β2||Az−b||2Az=bx=z,
L ( x , z, λ , γ) ==∑Eu| xEu| + α2| | x-z| |2+ β2| | Az- b | |2+ λT( A z- b ) + γT( x - z)∑Eu| xEu| + α2| | x-z+ 1αγ| |2+ β2| | Az- b + 1βX | |2+ α2| |1αγ| |2+ β2| | 1βX | |2.
O método de direção alternada dos multiplicadores resolve o problema duplo,
via subida gradiente nas variáveis duplas, exceto com projeções alternadas inexatas nos subproblemas duplos. Ou seja, faz-se a iteração
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+ β( A zk + 1- b ) .
Sob certas condições moderadas nos parâmetros e (explicados no artigo de Boyd & Parikh acima), o método ADMM convergirá para a verdadeira solução. A taxa de convergência é linear, pois é no centro um método de subida de gradiente. Frequentemente, pode ser acelerado para ser super-linear 1) alterando os parâmetros e medida que avança com base nas heurísticas, ou 2) usando a aceleração de Nesterov. Para obter notas sobre a alteração dos parâmetros de penalidade, consulte o documento de pesquisa de Boyd e, sobre o uso da aceleração de Nesterov com o ADMM, consulte o documento a seguir,β α βαβαβ
Goldstein, Tom, Brendan O'Donoghue e Simon Setzer. "Métodos rápidos de otimização de direção alternada." CAM report (2012): 12-35. ftp://ftp.math.ucla.edu/pub/camreport/cam12-35.pdf
No entanto, mesmo que a taxa de convergência geral seja apenas linear, para problemas de foi observado que o método encontra o padrão de esparsidade muito rapidamente e converge mais lentamente nos valores exatos. Como encontrar o padrão de escarsidade é a parte mais difícil, isso é muito fortuito! As razões exatas pelas quais parecem ser uma área da pesquisa atual. Todo mundo vê o padrão de dispersão convergir rapidamente, mas ninguém parece saber exatamente por que isso acontece. Há um tempo, perguntei a Boyd e Parikh sobre isso por e-mail, e Parikh achou que isso poderia ser explicado pela interpretação do método em um contexto de sistemas de controle. Outra explicação heurística do fenômeno é encontrada no apêndice do artigo a seguir,eu1 1
Goldstein, Tom e Stanley Osher. "O método Bregman dividido para problemas regularizados por L1." Jornal SIAM em Ciências da Imagem 2.2 (2009): 323-343. ftp://ftp.math.ucla.edu/pub/camreport/cam08-29.pdf
É claro que agora a dificuldade está em resolver os subproblemas de atualização e para sua situação específica. Como o Lagrangiano é quadrático em , o subproblema de atualização simplesmente exige a solução de um sistema linear. O subproblema parece mais difícil, pois é indiferenciável, mas acontece que existe uma fórmula exata para a solução que pode ser aplicada elemento a elemento! Agora, discutimos esses subproblemas com mais detalhes e os especificamos para o problema na postagem original.z z z xxzzzx
Configuração para o subproblema de atualização (sistema linear)z
Para a atualização , temos
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 i nzL ( xk, z, λk, γk) = a r g m i nzα2| | x- z+ 1αγ| |2+ β2| | Az- b + 1βX | |2.
Especializado no problema, isso se torna:
a r g m i nZJ, ZBα2| | Jk + 1- ZJ+ 1αΓJ| |2Fr o+ α2| | Bk + 1- ZB+ 1αΓB| |2Fr o+ β2| | MZJ+ ZBY- X+ 1αGanhe muitos | |2Fr o,
onde denota a norma Frobenius (elementwise ). Este é um problema de minimização quadrático, em que as condições de otimização de primeira ordem podem ser encontradas pegando derivadas parciais do objetivo em relação a e e definindo-as como zero. Isto é,
l 2 Z J Z B 0| | ⋅ | | Fr oeu2ZJZB
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 observado nos comentários do pôster original Justin Solomon, este sistema para é simétrico, de modo que o gradiente conjugado é um método ideal sem matriz. Uma seção posterior discute esse sistema e como resolvê-lo / pré-condicioná-lo com mais detalhes.ZJ, ZB
Resolução do subproblema update (solução de limiar analítico)x
Agora, voltamos ao subproble ,
a r g m i n x L ( x , z k , λ k , γ k ) = a r g m i n x ∑ i | x i | + αx
a r g m i nxL ( x , zk, λk, γk) = a r g m i nx∑Eu| xEu| + α2| | x- zk+ 1αγk| |2
A primeira coisa a ver é que a soma pode ser dividida elemento por elemento,
∑Eu| xEu| + α2| | x- zk+ 1αγk| |2= ∑Eu| xEu| + α2∑Eu( xEu- zkEu+ 1αγkEu)2,
Portanto, podemos resolver o problema do problema de otimização por elemento em paralelo, produzindo
xk + 1Eu= a r g m i nxEu| xEu| + α2( xEu- zkEu+ 1αγkEu)2.
A forma geral desta equação é,
mins| s | + α2( s - t )2.
A função de valor absoluto está tentando puxar o ponto ótimo em direção a , enquanto o termo quadrático está tentando puxar o ponto ideal em direção a . portanto, a verdadeira solução está em algum lugar do segmento entre os dois, com o aumento de tendendo a puxar o ponto ideal em direção a diminuindo puxando o ponto ideal em direção a .s = t [ 0 , t ) α t α 0s = 0s = t[ 0 , t )αtα0 0
Esta é uma função convexa, mas não é diferenciável em zero. A condição para um ponto de minimização é que a subderivada do objetivo nesse ponto contenha zero. O termo quadrático tem derivada e a função de valor absoluto tem derivada para , subderivada com valor definido como o intervalo quando e derivada para . Assim, obtemos o subderivativo para a função objetivo geral,
- 1 s < 0 [ - 1 , 1 ] s = 0 1 s > 0 ∂ s ( | s | + αα ( s - t )- 1s < 0[ - 1 , 1 ]s = 01 1s > 0
∂s(|s|+α2(s−t)2)=⎧⎩⎨1+α(s−t)[−1,1]+αt,−1+α(s−t),s>0s=0,s<0.
A partir disso, vemos que a subderivada do objetivo em contém se e somente se ; nesse caso, é o minimizador. Por outro lado, se não for o minimizador, podemos definir a derivada de valor único igual a zero e resolver o minimizador. Fazendo isso,
0 | t | ≤ 1s=00 s=0s=0argmins| s| +α|t|≤1αs=0s=0
argmins|s|+α2(s−t)2=⎧⎩⎨⎪⎪t−1α,0,t+1α,t>1α,|t|≤1α,t<−1α
Especializando esse resultado novamente no problema real que estamos tentando resolver na pergunta original, onde produz,
A atualização para é simplesmente
t =Zkeu j-1αΓkeu j
Jk + 1eu j=⎧⎩⎨⎪⎪⎪⎪Zkeu j- 1αΓkeu j- 1α,0 ,Zkeu j- 1αΓkeu j+ 1α,Zkeu j- 1αΓkeu j> 1α,| Zkeu j- 1αΓkeu j| ≤ 1α,Zkeu j- 1αΓkeu j< - 1α.
BBk + 1= ZB- 1αΓB,
como observado pelo pôster original Justin Solomon nos comentários. No geral, fazer a atualização para exige apenas um loop pelas entradas de suas matrizes e avaliação das fórmulas acima para cada entrada.J, B
Complemento Schur para o sistemaZJ, ZB
A etapa mais cara da iteração é resolver o sistema,
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.
Para esse fim, vale a pena algum esforço para construir um bom solucionador / pré-condicionador para esse sistema. Nesta seção, fazemos isso vetorizando , formando um complemento Schur , fazendo algumas manipulações de produtos Krnoecker e depois removendo a vetorização. O sistema de complemento Schur resultante é uma equação de Sylvester ligeiramente modificada .
No que segue, as seguintes identidades sobre vetorização e produtos Kronecker são absolutamente essenciais:
- v e c (AB C) = ( CT⊗ A ) v e c ( B ) ,
- ( A ⊗ B ) ( C⊗ D ) = A C⊗ B D ,
- ( A ⊗ B )- 1= A- 1⊗ B- 1 e
- ( A ⊗ B )T= AT⊗ BT .
Essas identidades são válidas sempre que os tamanhos e a inversibilidade da matriz são tais que cada lado da equação é uma expressão válida.
A forma vetorizada do sistema é,
( αI+ β[Eu⊗ MTMY⊗ M( Y⊗ M)TYYT⊗ eu] ) [ v e c ( ZJ)v e c ( ZB)]=[vec(αJ+βMTX+ΓJ−MTΛ)vec(αB+βXYT+ΓB−ΛYT)],
ou,
[I⊗(αI+βMTM)βY⊗Mβ(Y⊗M)T(αI+βYYT)⊗I][vec(ZJ)vec(ZB)]=[vec(F)vec(G)],
onde e são notação condensada para o lado direito. Agora realizamos a eliminação de bloco gaussiano / complemento de Schur para eliminar o bloco inferior esquerdo da matriz, no processo de condensação dos produtos Kronecker. Isto é,
FG
[I⊗(αI+βMTM)0β(Y⊗M)T(αI+βYYT)⊗I−β2YYT⊗M(αI+βMTM)-1MT]…⋅ [ v e c (ZJ)v e c (ZB)]=[vec(F)vec(G)−βY⊗M(αI+βMTM)−1vec(F)].
Unvectorizing, as duas equações que temos que resolver em sequência são,
ZB( αI+βYYT) - ( βM( αI+ βMTM)- 1MT) ZB( βYYT) …= G - βM( αI+ βMTM)- 1FYT
( αI+ βMTM) ZJ= F- βMTZBY.
Solução do sistema de complemento de Schur quando são quadrados, altosY, M
Nesta seção, resolvemos o sistema de complemento Schur para (equação 1. acima) usando SVDs pré-computados completos das matrizes e aplicando uma versão modificada do algoritmo Bartels-Stewart para o Sylvester equação. O algoritmo é ligeiramente modificado a partir da versão padrão para contabilizar o extra no segundo termo, o que a torna não exatamente a equação de Sylvester. Uma vez que é encontrado através da primeira equação, pode ser encontrado facilmente na segunda equação. A segunda equação é trivial para resolver através de qualquer método que você gosta.ZBYYT, MMT, MTMβYYTZBZJ
Esse método requer um custo inicial para pré-calcular dois SVDs completos antes do início do processo ADMM, mas é rápido para aplicar nas iterações reais do ADMM. Como o método lida com SVDs completos das matrizes de restrição, é apropriado quando elas estão próximas da classificação quadrada e alta. Um método mais complicado usando SVDs de baixa classificação também é possível, mas é apresentado em uma seção posterior.
O método se desenvolve da seguinte maneira. Deixe
denotam precomputed decomposições completos valor singular, e condensar o lado direito para ser . Então a primeira equação se torna:
Multiplicando pelos fatores ortogonais para limpar a esquerda e a direita e definindo um novo desconhecido temporário , isso se torna ainda mais
Q D QT= YYT,WΣ WT= MMT,VTVT= MTM
HZBQ ( α I+ D ) QT- WβΣ ( αI+ Σ )- 1Σ WTZBQ D QT= H.
A = WTZBQA ( α I+ D ) - βΣ( α I+ Σ)-1Σ A D = WHQT.
Agora podemos encontrar resolvendo o sistema diagonal ,
UMA
( ( α I+ D ) ⊗ I+ D ⊗ pΣ ( α I+ Σ )- 1E ) v e c ( A ) = v e c ( WHQT) .
Tendo encontrado , calculamos , e sabendo que resolvemos a segunda equação acima para , o que é trivial, pois já temos a decomposição de autovalores para .UMAZB= WA QTZBZJMTM
O custo inicial é computar duas decomposições positivas e simétricas de valores próprios positivos de e e, em seguida, o custo por iteração para uma solução completa é dominado por um punhado de multiplicações matriz-matriz, que estão na mesma ordem de magnitude como fazer 1 subiteração de CG. Se as decomposições iniciais de autovalores forem muito caras, elas poderão ser computadas inexatamente, por exemplo, encerrando a iteração de Lanczos mais cedo e mantendo os maiores autovetores. Em seguida, o método pode ser usado como um bom pré-condicionador para CG, em vez de um solucionador direto.MTMYYT
Método da solução quando são muito retangulares ou têm uma aproximação de classificação baixaM, Y
Agora voltamos nossa atenção para resolver ou pré-condicionar o quando a) as matrizes de entrada são muito retangulares - o que significa que elas têm muito mais linhas do que colunas ou vice-versa - ou b) elas têm uma aproximação de classificação baixa. A derivação abaixo envolve o uso extensivo da fórmula de Woodbury, complemento de Schur e outras manipulações semelhantes.ZJ, ZBM, Y
Começamos com nosso sistema de complemento Schur,
( α I+ βYYT) ⊗ I- β2YYT⊗ M( α I+ βMTM)- 1MT.
Algumas manipulações transformam esse sistema em uma forma mais simétrica,
( α I+ βEu⊗ MMT+ βYYT⊗ eu) v e c ( ZB) = ( I⊗ ( eu+ βαMMT) ) V e c ( H) .
Agora trazemos as aproximações de baixo escalão. Seja
as SVDs reduzidas ou as aproximações de classificação baixa de e ( é um espaço reservado e não é usava). Substituindo-os em nosso sistema, obtém-se a seguinte matriz inversa que desejamos aplicar
Q D1 / 2QT2= YWΣ1 / 2VT= M
YMQ2( α I+ βEu⊗ WΣ WT+ βYYT⊗ eu)- 1.
Como a matriz com a qual invertermos é uma atualização de baixo nível para a identidade, a estratégia lógica é tentar usar a fórmula de Woodbury,
( A + UCvocêT)- 1= A- 1- A- 1você( C- 1+ UTUMA- 1você)- 1vocêTUMA- 1.
No entanto, alguns cuidados são necessários, pois as peças de baixo escalão e não são ortogonais. Portanto, para aplicar a fórmula de Woodbury, coletamos as atualizações de baixa classificação em uma única grande atualização. Faça isso e aplicando a fórmula de Woodbury produz,
Eu⊗ WY⊗ eu
( 1αEu+ β[ Eu⊗ WQ ⊗ I] [ Eu⊗ ΣD ⊗ Y] [ Eu⊗ ΣTQT⊗ eu] )- 1= α I- βα2[ Eu⊗ WQ ⊗ I] [ Eu⊗ ( Σ- 1+ βαEu)βαQT⊗WβαQ ⊗ WT( D- 1+βαEu) ⊗ Y]- 1[Eu⊗ΣTQT⊗ eu] .
O núcleo inverso pode ser calculado pela fórmula inversa 2x2 em blocos,
[ ABTBC]- 1= [ ( A - B C- 1BT)- 1- C- 1BT( A - B C- 1BT)- 1- A- 1B ( C- BTUMA- 1B )- 1( C- BTUMA- 1B )- 1] .
Esta postagem já é longa o suficiente, então pouparei os longos detalhes do cálculo, mas o resultado final é que, ao conectar as submatrizes necessárias ao inverso em blocos e multiplicar tudo, gera a seguinte forma explícita para o inverso geral
( α I+ βEu⊗ MMT+ βYYT⊗ eu)- 1= 1αEu- βα2( t11+ s11+ t12+ s12+ t21+ s21+ t22+ s22) ,
onde
t11s11t12s12t21s21t22s22D11D22euh= αβEu⊗ Weu- 1WT= ( Q ⊗ Weu- 1) D11( QT⊗ l- 1WT)= - αβQ h- 1QT⊗ Weu- 1WT= - ( Q h- 1⊗ Weu- 1) D22( h- 1QT⊗ WT)= t12= - ( Q h- 1⊗ W) D22( h- 1QT⊗ l- 1WT)= αβQ h- 1QT⊗ eu= ( Q h- 1⊗ W) D22( h- 1QT⊗ WT)= αβ( H ⊗ I- eu⊗ l- 1)- 1= αβ( Eu⊗ l - h- 1⊗ eu)- 1= αβΣ- 1+ I= αβD- 1+ I.
Nesta forma, podemos aplicar o inverso e encontrar o termo por termo através de 8 sanduíches de multiplicação de matrizes esquerda e direita. A fórmula geral para aplicar a soma dos produtos Kronecker é:
ZB
( ( A1 1⊗ B1 1) + ( A2⊗ B2) + ... ) v e c ( C) = v e c ( BT1 1CUMA1 1+ BT2CUMA2+ ... ) .
Observe que todos os inversos explícitos com os quais terminamos são diagonais, portanto não há nada a ser "resolvido".
Código do solucionador linear
Eu implementei os dois solucionadores acima no Matlab. O parece funcionar bem. O código do solucionador está aqui.zJ, ZB
https://github.com/NickAlger/MeshADMM/blob/master/zkronsolve.m
Um script de teste para verificar se o solucionador funciona aqui. Também mostra por exemplo como chamar o código do solucionador.
https://github.com/NickAlger/MeshADMM/blob/master/test_zkronsolve.m
Observações finais
Os métodos do tipo ADMM são adequados para problemas como esse, mas você precisaria rolar sua própria implementação. A estrutura geral do método é bastante simples, portanto a implementação não é muito difícil em algo como o MATLAB.
A peça que falta nesta postagem que precisaria ser especificada para definir completamente o método para o seu problema é uma opção de parâmetros de penalidade . Felizmente, o método geralmente é bastante robusto, desde que os valores dos parâmetros não sejam loucos. O artigo de Boyd e Parikh tem uma seção sobre os parâmetros de penalidade, assim como as referências, mas eu experimentaria os parâmetros até obter taxas de convergência razoáveis.α , β
As estratégias de resolução de apresentadas são altamente eficazes se as matrizes de restrição forem: a) densas, quadradas e altas, ou b) tiverem uma boa aproximação de baixa classificação. Outra solver útil que poderia ser um tema de trabalho futuro seria um solucionador otimizado para o caso seguinte - a matriz de restrição é escassa e squareish e alto escalão, mas existe uma boa pré-condicionador para . Seria esse o caso se, por exemplo, fosse um laplaciano discreto.ZJ, ZBMα I+ MMTM