एक चिकनी, बंधे, गैर-उत्तल 2 डी फ़ंक्शन का वैश्विक न्यूनतम खोजना, जिसका मूल्यांकन करना महंगा है


17

मेरे पास एक बाउंड गैर-उत्तल 2-डी फ़ंक्शन है, जिसे मैं कम से कम खोजना चाहता हूं। फंक्शन काफी स्मूथ है। इसका मूल्यांकन करना महंगा है। एक स्वीकार्य त्रुटि प्रत्येक अक्ष में फ़ंक्शन के डोमेन का लगभग 3% है।

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

मुझे कौन से अन्य वैश्विक अनुकूलन सॉल्वरों पर विचार करना चाहिए?


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

मुझे अंतर भावों द्वारा उन्हें अनुमानित करने की आवश्यकता है।
विक्टर मई

इस मामले में, न्यूटन की विधि की सिफारिश नहीं की जा सकती है, क्योंकि संख्यात्मक दूसरा व्युत्पन्न संख्यात्मक रूप से बहुत अस्थिर है, और सुरक्षित रूप से काम करने के लिए कठिन है।
अर्नोल्ड न्यूमैयर

@ विक्टर मई, आपने आखिर क्या किया? (यदि आप अपने समान एक समारोह पोस्ट कर सकते हैं, जो वास्तव में लोगों को विभिन्न एल्गोरिदम की तुलना करने और ट्यून करने में मदद करेगा।)
डेनिस

@ डेनिस, मैं वीडियो में किसी ऑब्जेक्ट को ट्रैक करने के लिए एल्गोरिथम से अधिक गति प्राप्त करने की कोशिश कर रहा था। एल्गोरिथ्म का आउटपुट ट्रैक किए गए ऑब्जेक्ट को शामिल करने के लिए प्रत्येक छवि स्थान के लिए संभावना अनुमान था। इन संभावना अनुमानों वाली छवि वह फ़ंक्शन है जिसे मैं अनुकूलित करने की कोशिश कर रहा था। मैंने कई रिज़ॉल्यूशन चरणों में ब्रूट-फोर्सिंग के साथ समाप्त किया। प्रश्न में ट्रैकिंग एल्गोरिथ्म के बारे में अधिक जानकारी के लिए "इंटीग्रल हिस्टोग्राम का उपयोग करते हुए रोबॉट फ्रेगमेंट्स-आधारित ट्रैकिंग" पेपर पढ़ें।
विक्टर मई

जवाबों:


12

मैं अन्य उत्तरों की तुलना में कुछ अलग दृष्टिकोण का सुझाव देना चाहूंगा, हालांकि @barron ने अप्रत्यक्ष रूप से एक ही बात पर चर्चा की है।

अपने फ़ंक्शन को सीधे अनुकूलित करने के बजाय, अर्थात बिंदुओं की एक श्रृंखला में इसका मूल्यांकन करके (उम्मीद है कि) एक (स्थानीय) इष्टतम में अभिसरण करें, आप सरोगेट मॉडलिंग की अवधारणा का उपयोग कर सकते हैं , जो है आपके द्वारा वर्णित प्रकार की समस्याओं के लिए बहुत अच्छी तरह से अनुकूल (उच्च लागत, चिकनी, बंधी, कम आयामी यानी 20 से कम अज्ञात)।x1,x2,,xksurrogate modelling

विशेष रूप से, किराए की मॉडलिंग एक मॉडल समारोह की स्थापना करके काम करता है अपना असली समारोह की आर डीआर । महत्वपूर्ण यह है कि है, जबकि सी निश्चित रूप से पूरी तरह से प्रतिनिधित्व नहीं करता है , यह अब तक का मूल्यांकन करने के सस्ता है।cRdRfRdRcf

तो, एक विशिष्ट अनुकूलन प्रक्रिया इस प्रकार होगी:

  1. J प्रारंभिक बिंदुओं x 1 , x 2 , , x j के सेट पर मूल्यांकन करें । ध्यान दें कि डेरिवेटिव की आवश्यकता नहीं है। यह भी ध्यान दें कि इन बिंदुओं को पूरे खोज स्थान पर समान रूप से वितरित किया जाना चाहिए, उदाहरण के लिए लैटिन हाइपरक्यूब नमूनाकरण या एक समान स्थान-भरने वाले डिज़ाइन द्वारा।fjx1,x2,,xj
  2. इस मूल डेटासेट के आधार पर, एक मॉडल फ़ंक्शन बनाएं । आप अपने मॉडल को मान्य करने के लिए क्रॉस सत्यापन का उपयोग कर सकते हैं (यानी सी बनाने के लिए मूल जे बिंदुओं के केवल सबसेट का उपयोग करें, और फिर डेटासेट की शेष राशि का उपयोग करके जांचें कि सी उन मानों की कितनी अच्छी भविष्यवाणी करता है)cjcc
  3. इस तरह के अपेक्षित सुधार (ईआई) कसौटी के रूप में एक कसौटी का प्रयोग पता लगाने के लिए जहां 'अधिक नमूने' में भरने 'बनाने के लिए करने के लिए' अधिक नमूने के द्वारा सही । यह वास्तव में कहीं बेहतर सैद्धांतिक रूप से अध्ययन किया जा सकता है जितना कि यह प्रतीत हो सकता है, और ईआई मानदंड बहुत अच्छी तरह से शोध किया गया है। ईआई मानदंड भी एक लालची मानदंड नहीं है, इसलिए आप दोनों संभावित सटीकता के निकट सटीकता को प्राथमिकता देते हुए, मॉडल सटीकता का अच्छा समग्र सुधार प्राप्त करते हैं।cf
  4. यदि आपका मॉडल पर्याप्त सटीक नहीं है, तो चरण 3 को दोहराएं, अन्यथा के इष्टतम को खोजने के लिए अपनी पसंदीदा अनुकूलन दिनचर्या का उपयोग करें , जो मूल्यांकन करने के लिए बहुत सस्ता होगा (इसलिए आप अपनी इच्छानुसार किसी भी दिनचर्या का उपयोग कर सकते हैं, यहां तक ​​कि डेरिवेटिव की आवश्यकता होती है, या बस एक ठीक जाल में समारोह का मूल्यांकन)।c

सामान्य तौर पर, यह वही है, जो ईजीओ, कुशल ग्लोबल ऑप्टिमाइज़ेशन से है, जैसा कि @barron ने सुझाव दिया था। मैं इस बात पर जोर देना चाहूंगा कि आपके आवेदन के लिए, यह पूरी तरह से उपयुक्त लगता है - आपको अपेक्षाकृत कुछ मूल्यांकन के आधार पर आश्चर्यजनक रूप से सटीक मॉडल मिलता है , और फिर आप जो भी अनुकूलन एल्गोरिथ्म चाहते हैं उसका उपयोग कर सकते हैं। अक्सर यह भी दिलचस्प है कि अब आप एक जाल पर सी का मूल्यांकन कर सकते हैं और इसे प्लॉट कर सकते हैं , जिससे एफ की सामान्य उपस्थिति में अंतर्दृष्टि प्राप्त होगी । एक और दिलचस्प बात यह है कि ज्यादातर सरोगेट मॉडलिंग तकनीक सांख्यिकीय त्रुटि अनुमान भी प्रदान करती है, जिससे अनिश्चितता का अनुमान लगाया जा सकता है।fcf

का निर्माण कैसे किया जाता है, यह एक खुला प्रश्न है, लेकिन अक्सर क्रिपिंग या तथाकथित स्पेस-मैपिंग मॉडल का उपयोग किया जाता है।c

बेशक, यह सब काफी कोडिंग का काम है, लेकिन बहुत सारे अन्य लोगों ने बहुत अच्छा कार्यान्वयन किया है। Matlab में, मुझे केवल DACE सॉफ़्टवेयर टूलबॉक्स DACE के बारे में पता है जो मुफ़्त है। TOMLAB भी एक Matlab पैकेज की पेशकश कर सकता है, लेकिन पैसा खर्च होता है - हालांकि, मेरा मानना ​​है कि यह C ++ में भी काम करता है और इसमें DACE की तुलना में कहीं अधिक क्षमताएं होंगी। (ध्यान दें: मैं जल्द ही रिलीज़ होने वाले DACE के नए संस्करण के डेवलपर्स में से एक हूं, जो ईजीओ के लिए अतिरिक्त समर्थन प्रदान करेगा।)

आशा है कि इस मोटे तौर पर अवलोकन ने आपकी मदद की है, कृपया प्रश्न पूछें कि क्या ऐसे बिंदु हैं जिन्हें और अधिक स्पष्ट किया जा सकता है या सामान जो मैंने याद किया है, या यदि आप विषय पर आगे की सामग्री पसंद करेंगे।


Fwiw, Google सरोगेट-मॉडल घेंट विश्वविद्यालय में एक सरोगेट मॉडलिंग लैब लाता है , और सरोगेट मॉडलिंग , 2008 228p 0470770791 के माध्यम से एक पुस्तक इंजीनियरिंग डिजाइन। किसी भी बहुत ही सामान्य दृष्टिकोण के साथ एक समस्या यह है कि जल्द ही एक रसोई सिंक विधि विधि से भरा है, और अधिक वास्तविक परीक्षण कार्यों की तुलना में ।
डेनिस

8

देख

एलएम रियोस और एनवी साहिनिडिस, व्युत्पन्न-मुक्त अनुकूलन: एल्गोरिदम की समीक्षा और सॉफ्टवेयर कार्यान्वयन की तुलना

सॉल्वरों की एक बहुत ही उपयोगी हाल की तुलना के लिए।

DOI: 10.1007 / s10898-012-9951-y


3

एक सुचारू कार्य के लिए, दक्ष ग्लोबल ऑप्टिमाइज़ेशन विधि को बहुत अच्छा प्रदर्शन करना चाहिए और नाटकीय रूप से DIRECT की तुलना में अधिक कुशल होना चाहिए। TOMLAB में कार्यान्वयन उपलब्ध हैं (इसका उपयोग स्वयं नहीं किया है) और DAKOTA (जिसमें मुझे कुछ सफलता मिली है)।


1

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


मेरी समस्या वास्तव में स्थानीय मिनीमा है। शुरुआती बिंदुओं को चुनने के लिए क्या तरीके हैं?
विक्टर मई

1
जब तक आप समस्या के बारे में कुछ नहीं जानते हैं, सांख्यिकीय नमूना अनिवार्य रूप से आपकी एकमात्र पसंद है।
वोल्फगैंग बैंगर्थ

@ वोल्फगैंग: किसी भी विचार "सांख्यिकीय नमूने" से कैसे संपर्क करें? बस 10 की कोशिश करो, 100, ... यादृच्छिक प्रारंभिक अनुमान? क्या "अधिक कठोर" दृष्टिकोण हैं? मैं पूछता हूं, क्योंकि मेरे पास कमोबेश इसी तरह की समस्या है (देखें scicomp.stackexchange.com/q/4708/1789 )
एंड्रे

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

0

चूंकि आपके मूल्यांकन महंगे हैं, इसलिए आपको समानांतर में चल रहे सेवारल फ़ंक्शन मूल्यांकन का लाभ उठाने की आवश्यकता है।

मैं आपको इस कोड पर एक नज़र डालने की सलाह दूंगा । पीछे गणित यहाँ वर्णित है


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