मैट्रिक्स की कमी के साथ रैखिक प्रोग्रामिंग


10

मुझे एक अनुकूलन समस्या है जो निम्न की तरह दिखती है

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

यहाँ, मेरे चर और मैट्रिक्स हैं , लेकिन पूरी समस्या अभी भी एक रैखिक कार्यक्रम है; शेष चर निश्चित हैं।बीJB

जब मैं इस कार्यक्रम को अपने पसंदीदा रैखिक प्रोग्रामिंग टूल में दर्ज करने का प्रयास करता हूं, तो मैं कुछ परेशानी में चला जाता हूं। अर्थात्, अगर मैं इसे "मानक" रैखिक कार्यक्रम के रूप में लिखता हूं, तो पैरामीटर और अंत में एक टन (एक बार प्रत्येक स्तंभ के लिए ) दोहराया जा रहा है ।वाई एक्सMYX

क्या एक एल्गोरिथ्म और / या पैकेज है जो ऊपर दिए गए फॉर्म के अनुकूलन से निपट सकता है? अभी मैं स्मृति से बाहर चल रहा हूं क्योंकि और को कई बार कॉपी करना पड़ता है!वाईMY


क्या एक पैरामीटर मैट्रिक्स है, या क्या आपका मतलब ? विभिन्न आकृतियों के आकार क्या हैं? BY
जेफ्री इरविंग

[हाय जेफ्री!] जे और बी चर हैं, बाकी पैरामीटर हैं। B में अपेक्षाकृत कुछ स्तंभ हैं लेकिन शेष सभी आयाम काफी बड़े हैं (कुछ भी वर्गाकार नहीं है)।
जस्टिन सोलोमन

[नमस्ते!] आपको पोस्ट को दो बार यह कहने के लिए संपादित नहीं करना चाहिए कि बी एक पैरामीटर है।
जियोफ्री इरविंग

1
दिलचस्प है लेकिन शायद बेकार है, इस समस्या का संस्करण बजायएक जोड़े SVDs के साथ हल किया जा सकता है। | जे आई जे |Jij2|Jij|
जेफ्री इरविंग

1
@Geoffrey, यह संयोग नहीं है :-)
जस्टिन सोलोमन

जवाबों:


12

अवलोकन

आप मल्टीप्लायरों की वैकल्पिक दिशा विधि (ADMM) के एक संस्करण का प्रयास करना चाह सकते हैं , जो कि लसो प्रकार की समस्याओं के लिए आश्चर्यजनक रूप से जल्दी से परिवर्तित करने के लिए पाया गया है। रणनीति एक संवर्धित Lagrangian के साथ समस्या को तैयार करना है और फिर दोहरी समस्या पर क्रमिक चढ़ाई करना है। यह इस विशेष नियमित समस्या के लिए विशेष रूप से अच्छा है क्योंकि विधि के प्रत्येक पुनरावृत्ति के निरर्थक भाग का एक सटीक समाधान है आप बस तत्व द्वारा तत्व का मूल्यांकन कर सकते हैं, जबकि चिकनी भाग में एक रैखिक प्रणाली को हल करना शामिल है।एल 1l1l1

इस पोस्ट में हम

  • अपनी समस्या के सामान्यीकरण के लिए एक समग्र ADMM सूत्र तैयार करें,
  • प्रत्येक ADMM पुनरावृत्ति के लिए उपप्रक्रमों को प्राप्त करें और उन्हें अपनी स्थिति में विशेषज्ञता दें, और फिर
  • परिणामी रैखिक प्रणाली की जांच करें जिसे प्रत्येक पुनरावृत्ति को हल करने की आवश्यकता है, और और लिए ईजेनवल्यू डीकंपोजिशन (या निम्न रैंक सन्निकटन) को प्रीकोम्प्यूट करने के आधार पर एक तेज सॉल्वर (या प्रीकॉन्डिशनर) विकसित करना होगा ।वाई वाई वाई टीMTMYYT
  • कुछ समापन टिप्पणियों के साथ संक्षेप में प्रस्तुत करें

यहाँ अधिकांश बड़े विचारों को निम्नलिखित शानदार समीक्षा पत्र में शामिल किया गया है,

बॉयड, स्टीफन, एट अल। "मल्टीप्लायरों की वैकल्पिक दिशा विधि के माध्यम से वितरित अनुकूलन और सांख्यिकीय शिक्षा।" मशीन लर्निंग 3.1 (2011) में नींव और रुझान®: 1-122। http://www.stanford.edu/~boyd/papers/pdf/admm_distr_stats.pdf

विवरण में जाने से पहले, मैं यह नोट करना चाहता हूं कि यह एक विधि / एल्गोरिथ्म का उत्तर है, व्यावहारिक मौजूदा कोड का जवाब नहीं है - यदि आप इस पद्धति का उपयोग करना चाहते हैं, तो आपको अपना स्वयं का कार्यान्वयन रोल करना होगा।

एडीएमएम का गठन

सामान्य तौर पर, मान लीजिए कि आप को हल करना चाहते हैं

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

मूल पद में समस्या उपयुक्त वैश्वीकरण के बाद इस श्रेणी में आती है। (यह केवल सिद्धांत में है - हम देखेंगे कि वैश्वीकरण को अभ्यास करने की आवश्यकता नहीं है)

आप इसके बजाय समतुल्य समस्या को हल कर सकते हैं, जिसके पास लैग्रेंजियन है _ एल(एक्स,जेड,λ,γ)=

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.

मल्टीप्लायरों की वैकल्पिक दिशा विधि दोहरी समस्या को हल करती है, दोहरे चर पर ढाल चढ़ाई के माध्यम से, को छोड़कर दोहरी उपप्रक्रमों पर सटीक वैकल्पिक अनुमान। यानी, एक व्यक्ति पुनरावृत्ति एक्स कश्मीर + 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).

पैरामीटर और (ऊपर बताए गए बॉयड और पारिख पेपर में समझाया गया ) पर कुछ हल्के स्थितियों के तहत , एडीएमएम विधि सही समाधान में परिवर्तित हो जाएगी। अभिसरण दर रैखिक है, क्योंकि यह मूल में एक ढाल चढ़ाई विधि है। अक्सर इसे 1 के द्वारा सुपरलाइनर होने के लिए तेज किया जा सकता है) हेस्टरिस्टिक्स या 2 पर आधारित के रूप में आप Nesterov त्वरण का उपयोग करते हुए पैरामीटर और को बदलते हैं । पेनल्टी पैरामीटर्स बदलने पर नोट्स के लिए, बॉयड सर्वे पेपर देखें, और ADMM के साथ नेस्टरोव त्वरण का उपयोग करने के लिए निम्न पेपर देखें,बीटा अल्फा बीटाαβαβ

गोल्डस्टीन, टॉम, ब्रेंडन ओ'डोनग्यू और साइमन सेज़र। "तेजी से वैकल्पिक दिशा अनुकूलन के तरीके।" सीएएम रिपोर्ट (2012): 12-35। ftp://ftp.math.ucla.edu/pub/camreport/cam12-35.pdf

हालाँकि, भले ही समग्र अभिसरण दर केवल रैखिक है, समस्याओं के लिए विधि को बहुत तेज़ी से स्पार्सिटी पैटर्न खोजने के लिए देखा गया है, और फिर सटीक मानों पर और अधिक धीरे-धीरे परिवर्तित करें। चूँकि स्पार्सिटी पैटर्न सबसे कठिन हिस्सा है, इसलिए यह बहुत भाग्यशाली है! वर्तमान शोध का एक क्षेत्र क्यों लगता है सटीक कारण। सभी देखते हैं कि स्पर्सिटी पैटर्न तेजी से परिवर्तित होता है, लेकिन किसी को भी यह पता नहीं लगता है कि ऐसा क्यों होता है। कुछ समय पहले मैंने बॉयड और पारिख से इस बारे में ईमेल पर पूछा था और पारिख ने सोचा कि इसे एक नियंत्रण प्रणाली के संदर्भ में विधि की व्याख्या करके समझाया जा सकता है। घटना का एक और अनुमानवादी विवरण निम्नलिखित पेपर के परिशिष्ट में मिलता है,l1

गोल्डस्टीन, टॉम और स्टेनली ऑशर। "एल 1-नियमित समस्याओं के लिए विभाजित ब्रैगमैन विधि।" एसआईएएम जर्नल पर इमेजिंग साइन्स 2.2 (2009): 323-343। ftp://ftp.math.ucla.edu/pub/camreport/cam08-29.pdf

बेशक अब कठिनाई और अद्यतन को हल करने में निहित है आपकी विशिष्ट स्थिति के लिए उपप्रोमा। चूंकि लैग्रेंजियन में द्विघात है , इसलिए अपडेट सबप्रॉब्लम को बस एक लीनियर सिस्टम को हल करने की आवश्यकता होती है। subproblem कठिन लगता है, क्योंकि यह nondifferentiable है, लेकिन यह पता चला है कि समाधान तत्व द्वारा लागू तत्व हो सकता है के लिए एक सटीक फार्मूला है कि वहाँ! अब हम इन उपप्रकारों पर अधिक विस्तार से चर्चा करते हैं और उन्हें मूल पोस्ट में समस्या के लिए निर्दिष्ट करते हैं।z z z xxzzzx

अपडेट सबप्रॉब्लम (लीनियर सिस्टम) के लिए सेटअप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,

कहाँ फ़्रोब (एलिमेंटवाइज़ ) मान को दर्शाता है। यह एक द्विघात न्यूनता समस्या है, जहां और संबंध में उद्देश्य के आंशिक व्युत्पत्ति लेने और उन्हें शून्य पर सेट करने से पहले क्रम की इष्टतमता की स्थिति पाई जा सकती है। यह है, ||||Frol2ZJZB

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

जैसा कि मूल पोस्टर जस्टिन सोलोमन द्वारा टिप्पणियों में उल्लेख किया गया है लिए यह प्रणाली सममित है इसलिए संयुग्म ढाल एक आदर्श मैट्रिक्स-मुक्त विधि है। एक बाद के खंड में इस प्रणाली और इसे कैसे हल किया जाए / इस पर अधिक विस्तार से चर्चा की गई है।ZJ,ZB

सुलझाने अद्यतन subproblem (विश्लेषणात्मक थ्रेशोल्डिंग समाधान)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.

निरपेक्ष मान फ़ंक्शन इष्टतम बिंदु को ओर खींचने का प्रयास कर रहा है , जबकि द्विघात शब्द इष्टतम बिंदु को ओर खींचने का प्रयास कर रहा है । सच्चे समाधान इसलिए कहीं खंड पर स्थित है में वृद्धि के साथ दोनों के बीच, रखरखाव की ओर इष्टतम बिंदु खींचने के लिए , और कम हो रही की ओर इष्टतम बिंदु खींच ।s=0s=t[0,t)αtα0

यह एक उत्तल कार्य है लेकिन यह शून्य पर भिन्न नहीं है। एक न्यूनतम बिंदु के लिए शर्त यह है कि उस बिंदु पर उद्देश्य का उपश्रेणी शून्य होता है। द्विघात शब्द में व्युत्पन्न , और पूर्ण मान फ़ंक्शन में लिए व्युत्पन्न , अंतराल के रूप में सेट-वैल्यूड सबरेटिव जब , और व्युत्पन्न से । इस प्रकार हम समग्र उद्देश्य समारोह के लिए उपश्रेणी प्राप्त करते हैं, α(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 शामिल यदि और केवल यदि , जिस स्थिति में न्यूनतम है। दूसरी ओर, यदि मिनिमाइज़र नहीं है, तो हम शून्य के बराबर एकल-मूल्यवान व्युत्पन्न सेट कर सकते हैं और न्यूनतम के लिए हल कर सकते हैं। इस पैदावार को करने से, s=00|t|1αs=0s=0

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

इस समस्या के लिए फिर से परिणाम प्राप्त करें जिससे हम मूल प्रश्न में हल करने का प्रयास कर रहे हैं जहां yields, लिए अपडेट बस t=Zijk1αΓijk

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

जैसा कि टिप्पणी में मूल पोस्टर जस्टिन सोलोमन ने नोट किया है। कुल मिलाकर, लिए अपडेट करने के लिए बस आपके मैट्रिसेस की प्रविष्टियों के माध्यम से लूपिंग की आवश्यकता है और प्रत्येक प्रविष्टि के लिए उपरोक्त सूत्रों का मूल्यांकन करना है।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.

यह अंत करने के लिए, इस प्रणाली के लिए एक अच्छा सॉल्वर / प्रीकॉन्डिशनर बनाने के लिए कुछ प्रयास के लायक है। इस खंड में हम ऐसा करते हुए वेक्टरिंग करते हैं , शूर पूरक बनाते हैं , कुछ क्रनोकेर उत्पाद जोड़तोड़ करते हैं और फिर अनावरण करते हैं। परिणामस्वरूप शूर पूरक प्रणाली थोड़ा संशोधित सिल्वेस्टर समीकरण है

वेक्टराइजेशन और क्रोनकर उत्पादों के बारे में निम्नलिखित पहचान निम्नलिखित हैं:

  • 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)],

जहाँ और दाहिने हाथ की ओर संकेतन संकेतन हैं। अब हम क्रोनर उत्पादों को संघनित करने की प्रक्रिया में मैट्रिक्स के निचले बाएँ ब्लॉक को खत्म करने के लिए ब्लॉक-गॉसियन-एलिमिनेशन / शूर पूरक करते हैं। यह, 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.

शू, पूरक प्रणाली का समाधान जब चौकोर होता है, उच्च रैंक होता हैY,M

इस खंड में हम (समीकरण 1. ऊपर) के लिए शूर पूरक प्रणाली को हल करते हैं , जिसमें मेट्रिसेस के फुल एसवीडी का उपयोग करके और सिल्वेस्टर के लिए बार्टल्स-स्टैवर्ट एल्गोरिथ्म का संशोधित संस्करण लागू करते हैं। समीकरण। एल्गोरिथ्म को दूसरे शब्द पर अतिरिक्त लिए मानक संस्करण से थोड़ा संशोधित किया गया है , जो इसे सिल्वेस्टर समीकरण नहीं बनाता है। एक बार को पहले समीकरण के माध्यम से पाया जाता है, को दूसरे समीकरण से आसानी से पाया जा सकता है। दूसरा समीकरण आपके द्वारा पसंद की गई किसी भी विधि के माध्यम से हल करने के लिए तुच्छ है।ZBYYT,MMT,MTMβYYTZBZJ

इस विधि को ADMM प्रक्रिया शुरू होने से पहले दो पूर्ण SVDs पूर्वगामी लागत की आवश्यकता होती है, लेकिन फिर वास्तविक ADMM पुनरावृत्तियों में लागू करने के लिए तेज़ है। चूंकि विधि बाधा मैट्रिक्स के पूर्ण एसवीडी से संबंधित है, इसलिए यह उपयुक्त है जब वे वर्ग और उच्च रैंक के करीब हों। कम रैंक एसवीडी का उपयोग करके एक अधिक जटिल तरीका भी संभव है, लेकिन बाद के अनुभाग में प्रस्तुत किया गया है।

विधि इस प्रकार विकसित होती है। बता दें कि पूर्ववर्ती पूर्ण एकवचन मूल्य विघटन को निरूपित करता है, और को होने के लिए दाईं ओर ले जाता है । तो पहले समीकरण बन जाता है, गुणा ऑर्थोगोनल कारकों द्वारा बाएं और दाएं को खाली करने और एक नया अस्थायी अज्ञात , यह आगे बन जाता है,

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 उप-विभाजन करने के रूप में परिमाण। यदि अपफ्रंट ईगेंवल्यू डीकंपोजिशन बहुत महंगा है, तो उन्हें उदाहरण के लिए, लैंक्ज़ोस पुनरावृत्ति को जल्दी से समाप्त करने और सबसे बड़े ईजेनवेक्टर को रखने के द्वारा, सटीक रूप से गणना की जा सकती है । फिर विधि को एक प्रत्यक्ष सॉल्वर के बजाय सीजी के लिए एक अच्छा पूर्व शर्त के रूप में इस्तेमाल किया जा सकता है।MTMYYT

समाधान विधि जब बहुत आयताकार होते हैं या कम रैंक सन्निकटन होते हैंM,Y

अब हम को हल करने या पूर्व- करने पर अपना ध्यान करते हैं जब या तो a) इनपुट मैट्रिसेस बहुत आयताकार होते हैं - जिसका अर्थ है कि उनके पास कॉलम या इसके विपरीत की तुलना में कई अधिक पंक्तियाँ हैं - या b) उनके पास कम सन्निकटन है। नीचे दी गई व्युत्पत्ति में वुडबरी फार्मूला, शूर पूरक और इसी तरह के अन्य हेरफेर के व्यापक उपयोग शामिल हैं।ZJ,ZBM,Y

हम अपने शूर पूरक प्रणाली के साथ शुरू करते हैं,

(α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.

चूंकि हम जिस मैट्रिक्स को करते हैं, वह पहचान के लिए एक निम्न-श्रेणी का अद्यतन है, तार्किक रणनीति वुडबरी फॉर्मूला, का उपयोग करने का प्रयास करना है।

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

हालाँकि, कुछ देखभाल की आवश्यकता है क्योंकि निम्न रैंक के टुकड़े और orthogonal नहीं हैं। इस प्रकार वुडबरी फॉर्मूला लागू करने के लिए हम दोनों लो रैंक अपडेट को एक बड़े अपडेट में इकट्ठा करते हैं। ऐसा करो और वुडबरी फार्मूला पैदावार को लागू करो, 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+).

ध्यान दें कि हमारे द्वारा समाप्त किए गए सभी स्पष्ट व्युत्क्रम विकर्ण हैं, इसलिए "हल" होने के लिए कुछ भी नहीं है।

रैखिक विलायक कोड

मैंने में उपरोक्त दो लागू किया । अच्छा काम करने लगता है। सॉल्वर कोड यहाँ है।zJ,ZB

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

जाँच करने के लिए एक परीक्षण स्क्रिप्ट कि सॉल्वर्स का काम यहाँ है। यह भी उदाहरण से पता चलता है कि सॉल्वर कोड को कैसे कॉल किया जाता है।

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

समापन टिप्पणी

ADMM- प्रकार विधियां इस तरह की समस्याओं के लिए अच्छी तरह से अनुकूल हैं, लेकिन आपको अपने स्वयं के कार्यान्वयन को रोल करने की आवश्यकता होगी। विधि की समग्र संरचना बहुत सरल है इसलिए कार्यान्वयन MATLAB जैसी किसी चीज़ में बहुत मुश्किल नहीं है।

इस पोस्ट से गायब हुआ टुकड़ा जिसे आपकी समस्या के लिए पूरी तरह से परिभाषित करने के लिए निर्दिष्ट करने की आवश्यकता होगी, पेनल्टी पैरामीटर का एक विकल्प है । सौभाग्य से विधि आम तौर पर बहुत मजबूत होती है जब तक कि पैरामीटर वाल्व पागल नहीं होते हैं। द बॉयड एंड पारिख पेपर में पेनल्टी पैरामीटर्स के बारे में एक सेक्शन है, क्योंकि इसमें रेफरेंस दिए गए हैं, लेकिन मैं सिर्फ पैरामीटर्स के साथ प्रयोग करूंगा जब तक कि आपको उचित कन्वर्सेशन रेट्स न मिल जाएं।α,β

प्रस्तुत solver रणनीतियों अत्यधिक प्रभावी अगर बाधा मैट्रिक्स या तो एक) कर रहे हैं घने, squareish, और उच्च रैंक, या ख) एक अच्छा कम रैंक सन्निकटन हैं। एक और उपयोगी सॉल्वर जो भविष्य के काम का एक विषय हो सकता है, निम्नलिखित मामले के लिए अनुकूलित एक सॉल्वर होगा - बाधा मैट्रिक्स विरल और चौकोर और उच्च रैंक है, लेकिन लिए एक अच्छा पूर्व शर्त मौजूद है । यह मामला होगा यदि, उदाहरण के लिए, एक विवेकाधीन लाप्लासियन है।ZJ,ZBMαI+MMTM


अब इसे लागू करना! जांच करने के लिए, और लिए मैट्रिक्स हल करना सममित / सकारात्मक निश्चित होना चाहिए क्योंकि यह कम से कम वर्गों से आता है, है ना? यह अनुभवजन्य रूप से सच प्रतीत होता है :-)। तो, क्या GMRES की तुलना में CG बेहतर विकल्प है? ZBZJ
जस्टिन सोलोमन

इसके अलावा, मुझे लगता है कि B के लिए अपडेट गलत है? मैं इसके माध्यम से और अधिक विस्तार से काम कर रहा हूं, लेकिन रिकॉल बी मेरे ऊर्जा फ़ंक्शन (नहीं टर्म) में दिखाई नहीं देता है , इसलिए मुझे यकीन नहीं है कि इसे केवल में मान लेना चाहिए क्या मैं इस बारे में गलत सोच रहा हूं? धन्यवाद! |B|±(11/α).
जस्टिन सोलोमन

1
[ बजाय, ]B=ZBΓB/α
जस्टिन सोलोमन

3
गजब का! और लिए अपने स्वयं के फ़ार्मुलों में डालने के बाद (संभवतः आपके द्वारा पोस्ट की गई चीज़ के बराबर / समतुल्य, लेकिन कुछ काम नहीं कर रहा था), यह IRLS विधि से बेहतर है। धन्यवाद! JB
जस्टिन सोलोमन

1
बढ़िया खबर। यह देख कर अच्छा लगा कि जब यहाँ योगदान वास्तविक परिणाम की ओर ले जाता है।
माइकल ग्रांट

5

आप शायद रैखिक प्रोग्रामिंग के लिए मैट्रिक्स-मुक्त पद्धति का उपयोग करना चाहते हैं। मैं विशेष रूप से रैखिक प्रोग्रामिंग के लिए तैयार किसी भी विधि के बारे में नहीं जानता, लेकिन द्विघात कार्यक्रमों के लिए और सामान्य nonlinear कार्यक्रमों के लिए मैट्रिक्स मुक्त आंतरिक बिंदु विधियाँ मौजूद हैं। द्विघात कार्यक्रम का मामला आपकी समस्या से बिल्कुल मेल खाता है, जहां द्विघात रूप गुणांक सभी शून्य हैं। (आप उन तरीकों को भी दर्ज़ कर सकते हैं जो आपकी समस्या की संरचना के लिए सटीक रेखीय हल का उपयोग करते हैं, लेकिन उस तरह का bespoke कार्यान्वयन इसके लायक नहीं हो सकता है, और मैट्रिक्स-मुक्त पद्धति का उपयोग करने से कम व्यावहारिक है।)

मैं किसी भी व्यावसायिक अनुकूलन पैकेज के बारे में नहीं जानता जो आंतरिक बिंदु विधियों के मैट्रिक्स-मुक्त वेरिएंट को लागू करता है। IPOPT नॉनलाइनर प्रोग्रामिंग के लिए एक मैट्रिक्स-फ्री इंटीरियर पॉइंट विधि को लागू करने वाला है, लेकिन मैं एपीआई कॉल को ट्रैक करने में सक्षम नहीं हूं जो आपको इसका उपयोग करने में सक्षम बनाता है।

CVX के अलावा, आप शायद मैट्रिक्स का एक बार इनपुट करने के लिए GAMS या AMPL का उपयोग कर सकते हैं और उस मैट्रिक्स का उपयोग करने के लिए मॉडलिंग भाषा में अपनी बाधाओं को सेट कर सकते हैं। हालाँकि, सॉल्वर द्वारा उपयोग की जाने वाली विधियाँ CVX, GAMS और AMPL में मैट्रिक्स-फ्री सॉल्वर का उपयोग नहीं करती हैं; सभी को मानक रूप में रैखिक कार्यक्रम के लिए पूर्ण गुणांक मैट्रिक्स की आवश्यकता होगी, जो बहुत बड़ा होगा (यह मैट्रिसेस का एक क्रोनकर उत्पाद होगा)। शायद यह क्या होगा कि आप अपने रैखिक कार्यक्रम को मॉडलिंग भाषा का उपयोग करके ऊपर दिए गए फॉर्म में इनपुट करें, और फिर मॉडलिंग भाषा डेटा को बैकएंड सॉल्वरों द्वारा प्रयोग करने योग्य रूप में अनुवाद करेगी। इस फॉर्म के लिए भारी मैट्रेस की आवश्यकता होगी, और मुझे संदेह है कि आप एक ही तरह की त्रुटियों (जब तक आप पर्याप्त मेमोरी वाले मशीन पर नहीं चलते हैं) में चलेंगे।


लगता है कि मैंने सभी सही चीजों की कोशिश की! मैंने शुरू में सीवीएक्स के साथ प्रयोग किया और यह विफल रहा, इसलिए मैंने आईपीओपीटी पर स्विच किया। लेकिन IPOPT में भी यही समस्या थी। मुझे पता नहीं था कि इसमें एक मैट्रिक्स-मुक्त विकल्प है, इसलिए मैं देखूंगा कि क्या मैं इसका पता लगा सकता हूं।
जस्टिन सोलोमन

मुझे यकीन नहीं है कि GAMS / AMPL मेरे मुद्दे में मदद करेगा। मुझे इस समस्या को कोड करने में खुशी हो रही है कि जो भी रूप में सॉल्वर को सही काम करने में मदद करेगा, लेकिन जैसा कि आप कहते हैं कि क्रोनकर उत्पाद लेने वाले पर्दे के पीछे काम करने वाला नहीं है।
जस्टिन सोलोमन

4

क्या आप उन एसवीडी जियोफ्रे इरविंग का उल्लेख कर सकते हैं? यदि आप कर सकते हैं, तो मैं पुनरावृत्त कम से कम वर्गों (IRLS) दृष्टिकोण पर विचार करूंगा । यह दृष्टिकोण फ़ॉर्म की समस्याओं को हल करेगा जहां एक भार मैट्रिक्स है।

minimizeijWijJij2subject toMJ+BY=X
W

पुनरावृत्तियों साथ सभी मैट्रिक्स के रूप में शुरू होता है ; यह एक इष्टतम । पुनरावृत्तियों के साथ आगे बढ़ना जहां एक छोटा सा स्थिरांक है जो विभाजन को शून्य से रोकता है। मैं अभिसरण मानदंड के बारे में पूरी तरह से निश्चित नहीं हूं, लेकिन शायद ऊपर दिया गया विकिपीडिया लिंक आपको संदर्भ दे सकता है। J ( 0 ) W ( k + 1 ) i j = | अधिकतम { जम्मू ( कश्मीर ) मैं j , ε } | - 1 ϵW(0)J(0)

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

आप एक स्मूथ फर्स्ट-ऑर्डर विधि पर भी विचार कर सकते हैं। TFOCS, जिसे मैंने सह-लेखक किया था, अपने "स्मूथ कॉनिक ड्यूल" (SCD) सॉल्वर का उपयोग करके इसे संभाल सकता था, लेकिन यह उपयोग करने में उतना आसान नहीं है।

यदि आप एक मैट्रिक्स-मुक्त आंतरिक बिंदु विधि का प्रयास करना चाहते हैं, तो जसेक गोंडज़ियो के काम को पढ़ें।

संपादित करें: हम्म, यह ऐसा मामला हो सकता है कि IRLS समाधानों की गणना करने के लिए SVD का उपयोग करने में सक्षम नहीं होगा। यदि ऐसा है तो मैं अन्य विकल्पों में से एक के लिए वापस गिर जाएगा।


1
मुझे यकीन नहीं है कि मैं यहां SVD का उपयोग कर पाऊंगा या नहीं, लेकिन IRLS एक महान विचार है! गति स्मृति के रूप में एक चिंता का विषय नहीं है, और कुछ महीनों पहले मैंने अनुसंधान के संबंधित टुकड़े के लिए IRLS का इस्तेमाल किया और इसने बहुत काम किया (इससे पहले यह कोशिश नहीं करने के लिए खुद को लात मारना!)। IRLS के लिए SVD के बिना भी, CG जैसे रैखिक सॉल्वर का उपयोग करना संभव होना चाहिए, जिसे पूर्ण प्रणाली की आवश्यकता नहीं है। वास्तव में, सीजी को संभवतः समायोजित करने से पहले काफी ढीली बाधाओं के साथ रोका जा सकता है। इसके अलावा एक ADMM दृष्टिकोण में, लेकिन मुझे उस के साथ कम अनुभव है। Wij
जस्टिन सोलोमन

हाँ, ADMM भी महान होगा। मैंने वास्तव में आपको Y को पूरी तरह से खत्म करने का सुझाव देने वाला एक खंड लिखा था, लेकिन मैंने बाद में देखा कि वर्ग नहीं था। M
माइकल ग्रांट

1
IRLS रणनीति को लागू किया - यह अभिसरण करता है लेकिन संख्यात्मक रूप से बहुत अच्छी तरह से नहीं करता है क्योंकि इसे हल करने के लिए रैखिक प्रणाली को की एक विस्तृत श्रृंखला के लिए बीमार-वातानुकूलित धन्यवाद है ; सिस्टम को हल करने के लिए GMRES का उपयोग करना। अगले ADMM की कोशिश करेंगे! w
जस्टिन सोलोमन

2

आप सीवीएक्स का उपयोग करने की कोशिश कर सकते हैं , जो आपको इसे ठीक उसी रूप में कोड करने की अनुमति देगा जैसा आपने इसे लिखा है (यानी, वेक्टर के बजाय मैट्रिक्स के रूप में साथ )। यह शायद एक एलपी सॉल्वर के बजाय एक अधिक सामान्य उत्तल सॉल्वर का उपयोग करके हल किया जाएगा, लेकिन अगर उत्तल सॉल्वर सफल होता है तो मुझे लगता है कि आप बुरा नहीं मानेंगे।X

एक और संभावना: एक सॉल्वर का उपयोग करें, जो आपके अवरोधक मैट्रिसेस को विरल मैट्रिस के रूप में संग्रहीत करने की अनुमति देता है। इसके लिए आपको अभी भी बहुत अधिक मेमोरी की आवश्यकता होगी जो आपको चाहिए, लेकिन इससे कम यदि आपने उन्हें घने मैट्रिस के रूप में संग्रहीत किया है। सीवीएक्स में, यदि आप उपयोग kronकरते हैं तो आपको एक विरल मैट्रिक्स मिलता है, इसलिए यह कोशिश करना तुच्छ होगा।


यदि पायथन किसी भी कारण से MATLAB की तुलना में अधिक सुविधाजनक होगा, तो वहाँ भी cvxpy है, हालांकि यह cvx के रूप में पॉलिश नहीं है।
k20

मेरा संदेह यह है कि यह दृष्टिकोण सतही रूप से काम करेगा, और फिर असफल होने के बाद CVX मॉडलिंग की भाषा इनपुट डेटा को अपने बैकएंड सॉल्वरों द्वारा प्रयोग करने योग्य रूप में बदल देती है (जो रैखिक कार्यक्रमों, द्विघात कार्यक्रमों, द्वितीय-क्रम शंकु प्रोग्रामों, अर्ध-कार्यक्रमों को हल कर देगी, और ज्यामितीय कार्यक्रम)। मैं अपने उत्तर में क्यों समझाता हूं। Gurobi बैकएंड एक सर्वश्रेष्ठ नस्ल का एलपी सॉल्वर (अन्य प्रकार के बीच) है, इसलिए उस एल्गोरिथ्म के साथ CVX का उपयोग करना संभवतः सबसे अच्छा है जो आप कार्यान्वयन के संदर्भ में कर सकते हैं, संकलित भाषा एपीआई से CVX को कॉल करने की कमी।
ज्योफ ऑक्सीबेरी

1
जैसा कि ज्योफ कहते हैं, यहां कोई भी मॉडलिंग लेयर आपकी मदद नहीं करेगी। परिणामी एलपी में किसी भी मानक सामान्य सॉल्वर के लिए दोहराया गया डेटा है। इसे दरकिनार करने के लिए, आपको एक oracle-based solver का उपयोग (विकास) करना होगा, अर्थात, एक solver, जो अनिवार्य रूप से , और / या कुछ के दिए गए मान के लिए अवशिष्ट को वापस करने पर आधारित है। उपयुक्त कटौती, और फिर उस विवरण के साथ काम करें। जे , वाईMJ+BYXJ,Y
जोहान लॉफबर्ग

हाँ, मैं बिल्कुल इस समस्या का सामना कर रहा हूँ जो ज्योफ उल्लेख करता है। वास्तव में, मैंने अपने शुरुआती अनुमान के लिए CVX का इस्तेमाल किया। मैंने भी सीधे तौर पर गुब्रोई को बुलाने की कोशिश की है, लेकिन जिस तरह से मैं यह सोच सकता हूं, वह यही है कि एक ही अनियंत्रित मुद्दा है।
जस्टिन सोलोमन

1
मुझे लगता है कि आपको अपना खुद का रोल करना होगा
जोहान लोफबर्ग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.