행렬 제약 조건을 사용한 선형 프로그래밍


10

다음과 같은 최적화 문제가 있습니다.

minJ,Bij|Jij|s.t.MJ+BY=X

여기서 내 변수는 행렬 JB 이지만 전체 문제는 여전히 선형 프로그램입니다. 나머지 변수는 고정되어 있습니다.

이 프로그램을 자주 사용하는 선형 프로그래밍 도구에 입력하려고하면 문제가 발생합니다. 즉, 이것을 "표준"선형 프로그램 형식으로 작성하면 매개 변수 행렬 MY 1 톤씩 반복됩니다 ( X의 각 열마다 한 번씩 X).

위 양식의 최적화를 처리 할 수있는 알고리즘 및 / 또는 패키지가 있습니까? 지금 MY 를 여러 번 복사해야하기 때문에 메모리가 부족합니다 !


B 매개 변수 매트릭스, 또는 당신은 의미합니까 Y ? 다양한 행렬의 모양은 무엇입니까?
Geoffrey Irving

[Hi Geoffrey!] J와 B는 변수이고 나머지는 매개 변수입니다. B에는 열이 상대적으로 적지 만 나머지 모든 치수는 상당히 큽니다 (정사각형 없음).
저스틴 솔로몬

[Hello!] B가 매개 변수라는 두 번 말하지 않도록 게시물을 편집해야합니다.
Geoffrey Irving

1
흥미롭지 만 쓸모없는,이 문제의 버전 은 대신 입니다. 몇 가지 SVD로 해결할 수 있습니다. | J i j |Jij2|Jij|
Geoffrey Irving

1
@Geoffrey, 그것은 우연의 일치가 아닙니다 :-)
Justin Solomon

답변:


12

개요

올가미 유형 문제에 대해 놀랍게도 빠르게 수렴되는 것으로 알려진 ADMM ( Alternating Directions Method of Multipliers ) 의 변형을 시도 할 수 있습니다 . 전략은 확대 된 라그랑지안으로 문제를 공식화 한 다음 이중 문제에 대해 기울기를 상승시키는 것입니다. 이 특정 정규화 문제에 특히 유용 합니다. 방법의 각 반복에서 매끄러운 부분은 요소별로 간단히 평가할 수있는 정확한 솔루션을 가지고 있으며 매끄러운 부분은 선형 시스템을 해결하는 것과 관련이 있기 때문입니다.l 1l1l1

이 게시물에서 우리는

  • 문제의 일반화를 위해 전체 ADMM 공식을 도출합니다.
  • 각 ADMM 반복에 대한 하위 문제를 도출하고 상황에 맞게 특수화 한 다음
  • 각 반복을 해결해야하는 결과 선형 시스템을 조사하고 및 대한 고유 값 분해 (또는 그 하위 순위 근사)를 사전 계산하여 빠른 솔버 (또는 전제 조건)를 개발합니다 .Y Y MTMYYT
  • 몇 가지 결론으로 ​​요약

여기서 가장 큰 아이디어는 다음과 같은 훌륭한 검토 논문에서 다룹니다.

보이드, 스티븐 등 "승수의 교대 방향 방법을 통한 분산 최적화 및 통계 학습." 머신 러닝 3.1 (2011)의 기초 및 동향 : 1-122. http://www.stanford.edu/~boyd/papers/pdf/admm_distr_stats.pdf

세부 사항으로 들어가기 전에 이것은 실제 코드 응답이 아닌 메소드 / 알고리즘 응답이라는 점에 유의하고 싶습니다.이 메소드를 사용하려면 자체 구현을 롤링해야합니다.

ADMM 제제

일반적으로

minxi|xi|s.t.Ax=b.

적절한 벡터화 후에 원래 게시물의 문제가이 범주에 속합니다. (이것은 원칙적으로 만-우리는 벡터화가 실제로 수행 될 필요가 없음을 알 수 있습니다)

대신 라그랑지안 L(x,z,λ,γ)=

minx,zi|xi|+α2||xz||2+β2||Azb||2s.t.Az=b&x=z,
L(x,z,λ,γ)=i|xi|+α2||xz||2+β2||Azb||2+λT(Azb)+γT(xz)=i|xi|+α2||xz+1αγ||2+β2||Azb+1βλ||2+α2||1αγ||2+β2||1βλ||2.

승수의 교대 방향 방법은 다음을 제외한 이중 변수의 기울기 상승을 통해 이중 문제 를 해결합니다. 이중 하위 문제에 대한 부정확 한 교호 예측. 즉, x k + 1

maxλ,γminx,zL(x,z,λ,γ),
xk+1=argminxL(x,zk,λk,γk)zk+1=argminzL(xk+1,z,λk,γk)γk+1=γk+α(xk+1zk+1)λk+1=λk+β(Azk+1b).

매개 변수 및 (위의 Boyd & Parikh 논문에서 설명)에 대한 특정 온화한 조건에서 ADMM 방법은 실제 솔루션으로 수렴됩니다. 수렴 속도는 코어에서 기울기 상승 방법이므로 선형입니다. 휴리스틱에 따라 1) 매개 변수 및 를 변경 하거나 2) Nesterov 가속을 사용하여 초 선형으로 가속되는 경우가 종종 있습니다 . 페널티 매개 변수 변경에 대한 정보는 Boyd 설문지를 참조하고 ADMM과 함께 Nesterov 가속을 사용하려면 다음 논문을 참조하십시오.β α βαβαβ

Goldstein, Tom, Brendan O'Donoghue 및 Simon Setzer. "빠른 교대 방향 최적화 방법." CAM 보고서 (2012) : 12-35. ftp://ftp.math.ucla.edu/pub/camreport/cam12-35.pdf

그러나 전체 수렴 률이 선형 일지라도 문제의 경우이 방법은 희소성 패턴을 매우 빠르게 찾은 다음 정확한 값에서 더 느리게 수렴하는 것으로 관찰되었습니다. 희소성 패턴을 찾는 것이 가장 어려운 부분이므로 매우 유감입니다! 왜 현재 연구의 영역 인 것 같은 정확한 이유. 희소성 패턴이 빠르게 수렴되는 것을 누구나 볼 수 있지만, 왜 그런 일이 발생하는지 정확히 아는 사람은 없습니다. 얼마 전 저는 Boyd와 Parikh에게 이메일을 통해 이것에 대해 물었고 Parikh는 그것이 제어 시스템 컨텍스트에서 방법을 해석함으로써 설명 될 것이라고 생각했습니다. 이 현상에 대한 또 다른 경험적 설명은 다음 백서의 부록에서 찾을 수 있습니다.l1

골드 스타 인, 톰, 스탠리 오셔 "L1 정규화 문제에 대한 Split Bregman 방법." 영상 과학에 관한 SIAM 저널 2.2 (2009) : 323-343. ftp://ftp.math.ucla.edu/pub/camreport/cam08-29.pdf

물론 특정 상황 에서 및 업데이트 하위 문제를 해결하는 데 어려움이 있습니다 . 라그랑지안은 에서 2 차이므로 업데이트 하위 문제는 단순히 선형 시스템을 풀기 만하면됩니다. 이 nondifferentiable 때문에 하위 문제는 어려워 보이지만 요소에 의해 적용 요소가 될 수있는 솔루션에 대한 정확한 공식이 있음을 밝혀! 이제 이러한 하위 문제에 대해 자세히 설명하고 원래 게시물의 문제를 구체적으로 설명합니다.z z z xxzzzx

설치 프로그램 업데이트 하위 문제 (선형 시스템)z

들어 업데이트, 우리가 a r g m i n z L ( x k , z , λ k , γ k ) = a r g m i n z αz

argminzL(xk,z,λk,γk)=argminzα2||xz+1αγ||2+β2||Azb+1βλ||2.

귀하의 문제에 전문화되면

argminZJ,ZBα2||Jk+1ZJ+1αΓJ||Fro2+α2||Bk+1ZB+1αΓB||Fro2+β2||MZJ+ZBYX+1αΛ||Fro2,

여기서 는 Frobenius (요소 ) 규범을 나타냅니다 . 이는 2 차 최소화 문제로, 및 대한 목적의 부분 미분을 0으로 설정 하여 1 차 최적 조건을 찾을 수 있습니다 . 이있다 l 2 Z J Z B 0||||Frol2ZJZB

0=α2(Jk+1ZJ+1αΓJ)+β2MT(MZJ+ZBYX+1βΛ),0=α2(Bk+1ZB+1αΓB)+β2(MZJ+ZBYX+1βΛ)YT.

원래 포스터 저스틴 솔로몬 (Justin Solomon)의 의견에서 언급했듯이 대한이 시스템 은 대칭이므로 켤레 그래디언트는 이상적인 매트릭스없는 방법입니다. 다음 섹션에서는이 시스템과이 시스템을보다 자세하게 해결 / 사전 설정하는 방법에 대해 설명합니다.ZJ,ZB

업데이트 하위 문제 해결 (분석 임계 값 솔루션)x

이제 하위 a r g m i n x L ( x , z k , λ k , γ k ) = a r g m i n x i | x | + αx

argminxL(x,zk,λk,γk)=argminxi|xi|+α2||xzk+1αγk||2

가장 먼저 확인해야 할 것은 요소별로 합이

i|xi|+α2||xzk+1αγk||2=i|xi|+α2i(xizik+1αγik)2,

따라서 요소별로 최적화 문제를 병렬로 해결하여

xik+1=argminxi|xi|+α2(xizik+1αγik)2.

이 방정식의 일반적인 형태는

mins|s|+α2(st)2.

절대 값 함수는 최적의 점을 쪽으로 당기려고 하지만 2 차 항은 최적의 점을 쪽으로 당기려고합니다 . 따라서 진정한 해결책 은 둘 사이 의 세그먼트 어딘가에 있으며, 를 늘리면 최적의 점이 쪽으로 향하는 경향이 있고 를 줄이면 최적의 점이 쪽으로 향하게 됩니다.s = t [ 0 , t ) α t α 0s=0s=t[0,t)αtα0

이것은 볼록한 기능이지만 0에서는 구별 할 수 없습니다. 최소화 지점의 조건은 해당 지점에서 목표의 하위 파생이 0을 포함한다는 것입니다. 이차 용어 유도체 갖는다 , 상기 절대 값 함수는 유도체 갖는다 대 , 세트 값 subderivative를 간격으로 때 , 및 유도체 대 . 따라서 전체 목적 함수 - 1 개 (S) < 0 [ - 1 , 1 ] S = 0 (1) (S) > 0 S ( | s의 | + αα(st)1s<0[1,1]s=01s>0

s(|s|+α2(st)2)={1+α(st)s>0[1,1]+αt,s=0,1+α(st),s<0.

이로부터 우리의 목표의 subderivative 볼 포함 경우에만, .이 경우 은 최소화 기입니다. 다른 한편으로, 이 최소값이 아닌 경우 단일 값 미분 값을 0으로 설정하고 최소값을 풀 수 있습니다. 이렇게하면 0 | t | 1s=00 s=0s=0argmins| s| +α|t|1αs=0s=0

argmins|s|+α2(st)2={t1α,t>1α,0,|t|1α,t+1α,t<1α

yields, 의 원래 질문에서이 결과를 다시 전문화하려고합니다. 의 업데이트 는 간단히 J k + 1 i j ={ Z k i j1t=Zijk1αΓijkBBk+1=ZB1

Jijk+1={Zijk1αΓijk1α,Zijk1αΓijk>1α,0,|Zijk1αΓijk|1α,Zijk1αΓijk+1α,Zijk1αΓijk<1α.
B
Bk+1=ZB1αΓB,

주석에서 원래 포스터 저스틴 솔로몬 (Justin Solomon)이 ​​언급 한 바와 같이. 전반적으로 대한 업데이트를 수행 하려면 행렬 항목을 반복하고 각 항목에 대해 위의 수식을 평가하면됩니다.J,B

시스템을 위한 Schur 보완ZJ,ZB

가장 비용이 많이 드는 반복 단계는

0=α2(Jk+1ZJ+1αΓJ)+β2MT(MZJ+ZBYX+1βΛ),0=α2(Bk+1ZB+1αΓB)+β2(MZJ+ZBYX+1βΛ)YT.

이를 위해이 시스템을위한 좋은 솔버 / 전제 조건을 구성하는 것은 약간의 노력이 필요합니다. 이 섹션에서는 벡터화 , Schur 보완 구성 , Krnoecker 제품 조작 및 벡터화 해제를 수행합니다. 결과 Schur 보완 시스템은 약간 수정 된 Sylvester 방정식 입니다.

다음은 벡터화 및 Kronecker 제품에 대한 다음 ID가 절대적으로 중요합니다.

  • vec(ABC)=(CTA)vec(B),
  • (AB)(CD)=ACBD ,
  • (AB)1=A1B1
  • (AB)T=ATBT 입니다.

이 항들은 행렬의 크기와 가역성이 방정식의 각 변이 유효한 표현이 될 때마다 유지됩니다.

시스템의 벡터화 된 형태는

(αI+β[IMTM(YM)TYMYYTI])[vec(ZJ)vec(ZB)]=[vec(αJ+βMTX+ΓJMTΛ)vec(αB+βXYT+ΓBΛYT)],

또는

[I(αI+βMTM)β(YM)TβYM(αI+βYYT)I][vec(ZJ)vec(ZB)]=[vec(F)vec(G)],

여기서 와 는 오른쪽에 대한 압축 표기법입니다. 이제 Kronecker 제품을 응축하는 과정에서 행렬의 왼쪽 아래 블록을 제거하기 위해 블록 가우시안 제거 / 스키어 보완을 수행합니다. 이것은 FG

[I(αI+βMTM)β(YM)T0(αI+βYYT)Iβ2YYTM(αI+βMTM)1MT][vec(ZJ)vec(ZB)]=[vec(F)vec(G)βYM(αI+βMTM)1vec(F)].

벡터화하지 않고 순서대로 풀어야하는 두 방정식은

  1. ZB(αI+βYYT)(βM(αI+βMTM)1MT)ZB(βYYT)=GβM(αI+βMTM)1FYT
  2. (αI+βMTM)ZJ=FβMTZBY.

이 정사각형 일 때 Schur 보완 시스템의 솔루션Y,M

이 섹션에서는 사전 계산 된 전체 SVD의 행렬 을 사용하고 Sylvester에 대해 수정 된 버전의 Bartels-Stewart 알고리즘을 적용하여 대한 Schur 보완 시스템 (위의 방정식 1)을 해결합니다 . 방정식. 알고리즘은 표준 버전에서 약간 수정되어 두 번째 용어 에서 추가 를 설명하므로 실베스터 방정식이 아닙니다. 일단 제 방정식을 통해 발견된다 쉽게 초 식으로부터 찾을 수있다. 두 번째 방정식은 당신이 좋아하는 방법을 통해 풀기가 쉽지 않습니다.ZBYYT,MMT,MTMβYYTZBZJ

이 방법을 사용하려면 ADMM 프로세스가 시작되기 전에 두 개의 전체 SVD를 사전 계산하는 데 초기 비용이 필요하지만 실제 ADMM 반복에 빠르게 적용 할 수 있습니다. 이 방법은 제약 행렬의 전체 SVD를 처리하므로 정사각형 및 상위 등급에 가까울 때 적합합니다. 하위 등급 SVD를 사용하는보다 복잡한 방법도 가능하지만 이후 섹션에서 설명합니다.

이 방법은 다음과 같이 개발됩니다. 하자 나타내고 미리 계산 된 전체 특이 값 분해 한 것으로 우측 응축 . 이어서 제 방정식된다 배가 직교 요인에 의해 좌우 및 설정 새 임시 미지의 지울 , 이것은 또한해진다

QDQT=YYT,WΣWT=MMT,VTVT=MTM
H
ZBQ(αI+D)QTWβΣ(αI+Σ)1ΣWTZBQDQT=H.
A=WTZBQ
A(αI+D)βΣ(αI+Σ)1ΣAD=WHQT.

이제 대각선 시스템 를 풀면 를 찾을 수 있습니다.A

((αI+D)I+DβΣ(αI+Σ)1Σ)vec(A)=vec(WHQT).

를 찾은 후 계산하고 알면 대한 위의 두 번째 방정식을 , 이미 대한 고유 값 분해가 있으므로 사소 합니다.AZB=WAQTZBZJMTM

선행 비용은 과 두 개의 대칭 양의 고유 고유 값 분해를 계산하는 것입니다. 완전한 해결을위한 반복 당 비용은 소수의 행렬-행렬 곱셈에 의해 좌우됩니다. 1 CG subiteration을 수행하는 정도. 선행 고유 값 분해가 너무 비싸면 예를 들어 Lanczos 반복을 조기에 종료 하고 최대 고유 벡터를 유지 함으로써 부정확하게 계산할 수 있습니다 . 그런 다음이 방법을 직접 솔버가 아닌 CG를위한 훌륭한 전제 조건으로 사용할 수 있습니다.MTMYYT

가 매우 직사각형이거나 낮은 순위 근사값을 갖는 경우의 해법M,Y

이제 a) 입력 행렬 가 매우 직사각형 때 를 해결하거나 사전 조정하는 데주의를 기울입니다. 열보다 많은 행이 있거나 그 반대의 경우도 있습니다. 또는 b) 낮은 순위 근사치입니다. 아래 도출에는 Woodbury 공식, Schur 보완 및 기타 유사한 조작이 광범위하게 사용됩니다.ZJ,ZBM,Y

우리는 Schur 보완 시스템으로 시작합니다.

(αI+βYYT)Iβ2YYTM(αI+βMTM)1MT.

몇 가지 조작으로이 시스템을보다 대칭적인 형태로 변환 할 수 있습니다

(αI+βIMMT+βYYTI)vec(ZB)=(I(I+βαMMT))vec(H).

이제 우리는 낮은 순위 근사치를 가져옵니다. 하자 될 하나의 SVD의 감소 또는 낮은 순위 근사치 와 ( 플레이스 홀더이고 아니다 익숙한). 이것을 시스템에 대입하면 다음과 같은 역행렬이 적용됩니다

QD1/2Q2T=YWΣ1/2VT=M
YMQ2
(αI+βIWΣWT+βYYTI)1.

우리가 뒤집을 행렬은 항등에 대한 업데이트가 낮기 때문에 논리적 전략은 Woodbury 공식을 사용하는 것입니다.

(A+UCUT)1=A1A1U(C1+UTA1U)1UTA1.

그러나 일부 관리는 낮은 순위 조각 때문에 필요한 및 직교하지 않습니다. 따라서 Woodbury 공식을 적용하기 위해 낮은 순위의 업데이트를 하나의 큰 업데이트로 수집합니다. 그렇게하고 Woodbury 공식을 적용하면 IWYI

(1αI+β[IWQI][IΣDY][IΣTQTI])1=αIβα2[IWQI][I(Σ1+βαI)βαQWTβαQTW(D1+βαI)Y]1[IΣTQTI].

코어 역은 블록 단위 2x2 역 공식

[ABBTC]1=[(ABC1BT)1A1B(CBTA1B)1C1BT(ABC1BT)1(CBTA1B)1].

이 게시물은 이미 충분히 길어서 계산에 대한 긴 세부 정보를 아끼지 만 최종 결과는 필요한 하위 행렬을 블록 단위의 역으로 ​​연결하고 모든 것을 곱하여 전체 역에 대해 다음과 같은 명시 적 형식을 얻는 것입니다

(αI+βIMMT+βYYTI)1=1αIβα2(t11+s11+t12+s12+t21+s21+t22+s22),

여기서

t11=αβIWl1WTs11=(QWl1)D11(QTl1WT)t12=αβQh1QTWl1WTs12=(Qh1Wl1)D22(h1QTWT)t21=t12s21=(Qh1W)D22(h1QTl1WT)t22=αβQh1QTIs22=(Qh1W)D22(h1QTWT)D11=αβ(hIIl1)1D22=αβ(Ilh1I)1l=αβΣ1+Ih=αβD1+I.

이 형식에서는 8 개의 왼쪽 및 오른쪽 행렬 곱셈 샌드위치를 ​​통해 역수를 적용하고 항을 항별로 찾을 수 있습니다 . 크로네 커 제품의 합계를 적용하는 일반적인 공식은 ZB

((A1B1)+(A2B2)+)vec(C)=vec(B1TCA1+B2TCA2+).

우리가 끝내는 모든 명시 적 역수는 대각선이므로 "해결"할 것은 없습니다.

선형 솔버 코드

위의 두 가지 솔버를 Matlab에 구현했습니다 . 잘 작동하는 것 같습니다. 솔버 코드가 여기 있습니다.zJ,ZB

https://github.com/NickAlger/MeshADMM/blob/master/zkronsolve.m

솔버가 작동하는지 확인하기위한 테스트 스크립트가 여기 있습니다. 또한 솔버 코드를 호출하는 방법을 예제로 보여줍니다.

https://github.com/NickAlger/MeshADMM/blob/master/test_zkronsolve.m

끝 맺는 말

ADMM 유형의 메소드는 이와 같은 문제점에 적합하지만 자체 구현을 롤링해야합니다. 메소드의 전체 구조는 매우 단순하므로 MATLAB과 같은 구현에서는 그리 어렵지 않습니다.

이 게시물에서 누락 된 부분은 문제의 방법을 완전히 정의하기 위해 지정 해야하는 페널티 매개 변수 중에서 선택하는 것입니다 . 운 좋게도이 매개 변수는 미치광이가 아니라면 일반적으로 매우 강력합니다. Boyd and Parikh 논문은 참고 문헌과 마찬가지로 페널티 매개 변수에 대한 섹션을 제공하지만 합리적인 수렴 률을 얻을 때까지 매개 변수를 실험 해 보겠습니다.α,β

제시된 솔버 전략은 구속 조건 행렬이 a) 밀도, 제곱 및 높은 순위이거나 b) 낮은 순위 근사값을 갖는 경우 매우 효과적입니다. 향후 작업의 주제가 될 수있는 또 다른 유용한 솔버는 다음과 같은 경우에 최적화 된 솔버가 될 것입니다. 구속 조건 행렬 은 희소하고 제곱이며 높은 순위이지만 대한 좋은 전제 조건이 있습니다 . 예를 들어 이 이산화 된 라플라시안 인 경우에 해당합니다.ZJ,ZBMαI+MMTM


지금 구현 중! 확인하려면 및 대한 행렬 은 최소 제곱에서 가져 오기 때문에 대칭 / 양수 여야합니다. 이것은 경험적으로 사실 인 것 같습니다 :-). 그렇다면 CG가 GMRES보다 더 나은 옵션입니까? ZBZJ
저스틴 솔로몬

또한 B의 업데이트가 잘못되었다고 생각합니까? 나는 이것을 더 자세하게 연구하고 있지만, B가 내 에너지 함수 ( 항 없음)에 나타나지 않기 때문에 만 값을 가져야한다는 것을 확신하지 못한다) 내가 잘못 생각하고 있습니까? 감사! |B|±(11/α).
저스틴 솔로몬

1
[오히려, ]B=ZBΓB/α
저스틴 솔로몬

3
놀랄 만한! 와 대한 내 자신의 공식을 넣은 후에 (아마 게시 한 것과 비슷하거나 작동하지 않았을 수도 있음) IRLS 방법보다 훨씬 우수합니다. 감사! BJB
저스틴 솔로몬

1
좋은 소식. 여기에 기여한 내용이 실제 결과로 이어지는 시점을 확인하면 좋습니다.
Michael Grant

5

선형 프로그래밍을 위해 매트릭스없는 방법을 사용하고 싶을 것입니다. 선형 프로그래밍을 위해 특별히 고안된 방법을 모르지만 2 차 프로그램 및 일반 비선형 프로그램을위한 매트릭스없는 내부 포인트 방법이 있습니다. 2 차 프로그램 사례는 2 차 형태 계수가 모두 0 인 문제와 정확히 일치합니다. (정확한 선형 해석을 사용하여 문제의 구조에 맞는 방법을 조정할 수도 있지만 그러한 맞춤형 구현은 그다지 가치가 없으며 행렬이없는 방법을 사용하는 것보다 실용적이지 않습니다.)

내부 포인트 방법의 매트릭스가없는 변형을 구현하는 상용 최적화 패키지를 모릅니다. IPOPT는 비선형 프로그래밍을 위해 행렬이없는 내부 포인트 방법을 구현해야하는데,이를 사용할 수있는 API 호출을 추적 할 수 없었습니다.

CVX 외에도 GAMS 또는 AMPL을 사용하여 행렬을 한 번 입력하고 모델링 언어에서 해당 행렬을 사용하도록 제약 조건을 설정할 수 있습니다. 그러나 솔버 백엔드가 CVX, GAMS 및 AMPL에 사용하는 방법은 매트릭스없는 솔버를 사용하지 않습니다. 모두 표준 형식의 선형 프로그램에 대한 전체 계수 매트릭스가 필요하며, 이는 거대합니다 (매트릭스의 크로네 커 곱). 모델링 언어를 사용하여 위의 형식으로 선형 프로그램을 입력하면 모델링 언어가 데이터를 백엔드 솔버에서 사용할 수있는 형식으로 변환합니다. 이 형식에는 거대한 행렬이 필요하며 메모리가 충분한 컴퓨터에서 실행하지 않는 한 동일한 종류의 오류가 발생합니다.


내가 옳은 일을 시도한 것 같습니다! 처음에는 CVX를 실험했지만 실패했지만 IPOPT로 전환했습니다. 그러나 IPOPT도 같은 문제를 겪고있었습니다. 매트릭스가없는 옵션이 있다는 것을 알지 못했기 때문에 알아낼 수 있는지 확인할 것입니다.
저스틴 솔로몬

GAMS / AMPL이 내 문제에 도움이 될지 잘 모르겠습니다. 솔버가 올바른 작업을 수행하는 데 도움이되는 형식으로 문제를 코딩하게되어 기쁩니다. 그러나 Kronecker 제품을 복용하는 장면은 효과가 없습니다.
저스틴 솔로몬

4

제프리 어빙이 언급 한 SVD를 감당할 수 있습니까? 가능하다면 반복적으로 가중치를 줄인 최소 제곱 (IRLS) 방식을 고려할 것 입니다. 이 방법은 여기서 는 가중치 행렬입니다.

minimizeijWijJij2subject toMJ+BY=X
W

반복 은 모든 행렬로 로 시작합니다. 이것은 최적의 산출합니다 . 반복은 여기서 0으로 나누기를 막는 작은 상수입니다. 수렴 기준에 대해 완전히 확신 할 수는 없지만 위에서 제공 한 Wikipedia 링크가 참조를 제공 할 수 있습니다. J ( 0 ) W ( k + 1 ) i j = | 최대 { J ( k ) i j , ϵ } | 1 ϵW(0)J(0)

Wij(k+1)=|max{Jij(k),ϵ}|1
ϵ

부드러운 1 차 방법을 고려할 수도 있습니다. 제가 공동 저술 한 TFOCS는 "SCD (Smoothed Conic Dual)"솔버를 사용하여이 문제를 처리 할 수 ​​있지만 사용하기 쉽지는 않습니다.

매트릭스없는 내부 포인트 방법을 사용하려면 Jacek Gondzio의 작업을 읽으십시오.

편집 : 흠, IRLS가 SVD를 사용하여 솔루션을 계산하지 못할 수도 있습니다. 그렇다면 나는 다른 선택 중 하나에 빠질 것입니다.


1
SVD를 사용할 수 있는지 확실하지 않지만 IRLS는 좋은 아이디어입니다! 속도는 기억만큼 큰 관심사가 아니며 당황스럽게도 몇 달 전에 관련 연구에 IRLS를 사용했으며 훌륭하게 작동했습니다 (이전에 시도하지 않은 것에 대해 스스로를 쫓아 냈습니다!). IRLS에 대한 SVD가 없더라도 전체 시스템이 필요하지 않은 CG와 같은 선형 솔버를 사용하여 수행 할 수 있어야합니다. 실제로 제안한대로 를 조정하기 전에 CG를 상당히 느슨한 제약 조건으로 중지 할 수 있습니다 . 또한 ADMM 접근 방식을 조사했지만 그 경험이 적습니다. Wij
저스틴 솔로몬

예, ADMM도 좋습니다. 나는 실제로 Y를 완전히 제거하라는 섹션을 작성했지만 나중에 이 정사각형이 아니라는 것을 알았습니다 . M
Michael Grant

1
IRLS 전략을 구현했습니다. 광범위한 인해 해결해야하는 선형 시스템이 잘못 조정되어 수렴하지만 수치 적으로 잘 수행되지 않습니다 . 시스템을 해결하기 위해 GMRES 사용. 다음 ADMM을 시도합니다! w
저스틴 솔로몬

2

CVX를 사용 하면 작성한 형식으로 정확하게 코딩 할 수 있습니다 (예 : 를 벡터가 아닌 행렬로 사용). LP 솔버 대신보다 일반적인 볼록 솔버를 사용하여 해결할 수도 있지만 볼록 솔버가 성공하면 신경 쓰지 않을 것입니다.X

또 다른 가능성은 구속 조건 행렬을 희소 행렬로 저장할 수있는 솔버를 사용하는 것입니다. 이를 위해서는 여전히 필요한 것보다 훨씬 많은 메모리가 필요하지만 밀도가 높은 매트릭스로 저장 한 경우보다 훨씬 적은 메모리가 필요합니다. CVX에서 사용 kron하는 경우 희소 행렬을 얻으므로 이것을 시도하는 것이 쉽지 않습니다.


어떤 이유로 든 파이썬이 MATLAB보다 더 편리 하다면 cvxpy도 있지만 cvx만큼 세련되지는 않습니다.
k20

CVX 모델링 언어가 입력 데이터를 백엔드 솔버에서 사용할 수있는 형태 (선형 프로그램, 2 차 프로그램, 2 차 콘 프로그램, 반정의 프로그램 및 기하학적 프로그램). 나는 왜 내 대답에 설명합니다. Gurobi 백엔드는 동종 최고의 LP 솔버이므로 다른 알고리즘과 함께 CVX를 사용하는 것이 컴파일 된 언어 API에서 CVX를 호출하는 것보다 구현 측면에서 가장 잘 수행 할 수 있습니다.
Geoff Oxberry

1
Geoff가 말했듯이 여기에는 모델링 레이어가 도움이되지 않습니다. 결과 LP에는 표준 일반 솔버에 대해 반복되는 데이터가 있습니다. 이를 피하려면 오라클 기반 솔버, 즉 주어진 및 / 또는 일부 값에 대해 잔여 를 반환하는 것을 기반으로하는 솔버를 사용해야합니다 (개발). 적절한 컷을 사용한 다음 해당 설명으로 작업하십시오. J , YMJ+BYXJ,Y
Johan Löfberg

예, Geoff가 언급 한 문제를 정확히 겪고 있습니다. 사실, 나는 초기 추측에 CVX를 사용했습니다. 나는 또한 구로 비에게 직접 전화를 시도했지만, 내가 생각할 수있는 유일한 방법은 동일한 풀림 문제를 수행하는 것입니다.
저스틴 솔로몬

1
난 당신이 자신의 롤해야 할 것입니다 생각
요한 Löfberg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.