BFGS बनाम कंजुगेट ग्रेडिएंट मेथड


25

बीएफजीएस और अनुकूलन के लिए संयुग्म ढाल के बीच चयन करते समय मुझे क्या विचार करना चाहिए? इन चरों के साथ मैं जिस कार्य को करने की कोशिश कर रहा हूं वह घातीय कार्य हैं; हालाँकि, वास्तविक उद्देश्य फ़ंक्शन में अन्य चीजों के साथ एकीकरण शामिल है, और यदि यह बिल्कुल मदद करता है तो बहुत महंगा है।


3
खैर, सीजी की तुलना में बीएफजीएस भंडारण के मामले में निश्चित रूप से अधिक महंगा है। एक को एक अनुमानित हेसियन के रखरखाव की आवश्यकता होती है, जबकि दूसरे को केवल आपसे कुछ वैक्टर की आवश्यकता होती है। दूसरी ओर, दोनों को एक ढाल की गणना की आवश्यकता होती है, लेकिन मुझे बताया गया है कि बीएफजीएस के साथ, आप ढाल के लिए एक नियमित लिखने के बजाय परिमित अंतर सन्निकटन का उपयोग करके दूर हो सकते हैं (लेकिन परिमित अंतर का उपयोग करने वाला संस्करण थोड़ा परिवर्तित करता है वास्तविक ग्रेडिएंट का उपयोग करने वाले की तुलना में धीमा, निश्चित रूप से)। यदि आपके पास एक स्वचालित भेदभाव सुविधा है, तो आपकी एकमात्र चिंता भंडारण है।
JM

केवल ~ 7 (निश्चित रूप से 10 से कम) चर के लायक होने का मतलब है कि हेसियन सन्निकटन केवल (अधिकतम पर) एक 10x10 x सही है? किस मामले में, एक दूसरे से तेज है?
drjrm3

मुझे नहीं लगता कि गति में बहुत अंतर होगा; यदि कुछ भी हो, तो मुझे लगता है कि आपकी गणना का वह हिस्सा जो संभवतः सबसे अधिक समय लगेगा, वह है जो आपको फ़ंक्शन मूल्यांकन के लिए करना है। आपको वास्तव में कुछ प्रयोग स्वयं करने चाहिए, यदि मापदंडों की संख्या आपके दावे के अनुसार कम है।
JM

जवाबों:


13

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

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

nn

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

अंत में, स्वचालित भेदभाव के बारे में एक शब्द: फोरट्रान ( DAEPACK ) के लिए एक घर में स्वचालित भेदभाव (AD) सुविधा के साथ कुछ अनुभव होने के बाद , मैं आपको बता सकता हूं कि AD उपकरण अक्सर बारीक होते हैं। वे आवश्यक रूप से उस कोड को अंतर करने में सक्षम नहीं हो सकते हैं जो वे स्वयं उत्पन्न करते हैं। विज्ञापन उपकरण दो प्रकार के होते हैं:

  • स्रोत से स्रोत विज्ञापन उपकरण
  • ऑपरेटर विज्ञापन उपकरण को ओवरलोड कर रहा है

स्रोत-से-स्रोत उपकरण अनिवार्य रूप से संशोधित संकलक हैं जो आपके द्वारा लिखे गए स्रोत कोड को लेते हैं, इसे पार्स करते हैं, और स्वचालित रूप से नए स्रोत कोड उत्पन्न करते हैं जो आपके स्रोत कोड में कार्यों की ढाल की गणना करता है। एडी टूल को ओवरलोड करने वाले ऑपरेटर को आपके स्रोत कोड में अतिभारित एडी ऑपरेटरों का उपयोग करने की आवश्यकता होती है ताकि डेरिवेटिव की गणना की जा सके, जिसके लिए एडी के साथ विश्लेषणात्मक डेरिवेटिव की गणना करने के लिए आपके हिस्से पर अतिरिक्त प्रयास की आवश्यकता होगी।


22

मीटरमीटर

मेरे अनुभव में, बहुत सारे अपडेट के साथ BFGS वर्तमान समाधान से बहुत दूर की जानकारी संग्रहीत करता है जो कि गैर-लैग्ड जैकबियन को सन्निकट करने में वास्तव में उपयोगी है, और यदि आप बहुत अधिक स्टोर करते हैं, तो आप वास्तव में अभिसरण खो सकते हैं। बीएफजीएस के "मेमोरीलेस" वेरिएंट हैं जो कि इन सभी कारणों से बहुत कुछ दिखते हैं जैसे कि नॉनलाइनियर कंजुगेट ग्रेडिएंट्स (इनमें से किसी एक के लिए अंतिम अपडेट को देखें)। इसलिए, यदि आप BFGS के बजाय L-BFGS करने के लिए तैयार हैं, तो मेमोरी समस्याएं गायब हो जाती हैं और विधियाँ संबंधित हैं । उपाख्यान साक्ष्य एक मुश्किल मुद्दे को फिर से शुरू करने की ओर इशारा करता है, क्योंकि यह कभी-कभी अनावश्यक होता है और कभी-कभी बहुत आवश्यक होता है।

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

मीटर


मैं पूरी तरह से एल-बीएफजीएस के बारे में भूल गया। उसके लिए +1।
JM

15

कम आयामों में, एक अच्छी तरह से कार्यान्वित BFGS विधि आम तौर पर CG की तुलना में तेज़ और अधिक मजबूत होती है, खासकर यदि फ़ंक्शन एक द्विघात से बहुत दूर नहीं है।

न तो बीएफजीएस और न ही सीजी को उत्तलता के बारे में किसी भी धारणा की आवश्यकता है; केवल प्रारंभिक हेसियन सन्निकटन (बीएफजीएस के लिए) सम्मान। पूर्ववर्ती (सीजी के लिए) सकारात्मक निश्चित होना चाहिए। लेकिन इन्हें हमेशा पहचान मैट्रिक्स के रूप में चुना जा सकता है, बिना किसी नुकसान के कम आयामों में। Https://scicomp.stackexchange.com/a/3213/1117 भी देखें

एक क्रमिक ढाल की अनुपस्थिति में, संख्यात्मक ग्रेडिएंट्स का उपयोग करने के प्रयास का एक बड़ा बेकार है, खासकर जब फ़ंक्शन मान महंगे होते हैं। बल्कि, एक को व्युत्पन्न-मुक्त एल्गोरिथ्म का उपयोग करना चाहिए। हाल के एक सर्वेक्षण के लिए http://archimedes.cheme.cmu.edu/?q=dfocomp देखें ।


लिंक मुझे "404 नहीं मिला", क्या आप इसे ठीक कर सकते हैं?
स्टिफेल

@Stiefel: मैंने इसे ठीक किया। नया लिंक बहुत बेहतर संस्करण की ओर इशारा करता है।
अर्नोल्ड न्यूमैयर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.