नेल्डर मीड के लिए मानदंड रोकना


11

मैं एक समारोह के अनुकूलन के लिए नेल्डर-मीड एल्गोरिथ्म को लागू करने की कोशिश कर रहा हूं। Nelder-मीड के बारे में विकिपीडिया पृष्ठ इसकी रोक कसौटी को छोड़कर पूरे एल्गोरिथ्म के बारे में आश्चर्यजनक रूप से स्पष्ट है,। वहाँ यह दुख की बात कहता है:

अभिसरण के लिए जाँच करें [स्पष्टीकरण की आवश्यकता]

मैंने खुद कुछ मापदंड आजमाए और देखे:

  • बंद करो अगर जहां छोटा है और जहां है सिंप्लेक्स, कम (से आदेश की वें शिखर ) उच्च करने के लिए ( ) फ़ंक्शन मान। दूसरे शब्दों में, जब सिंप्लेक्स का अधिकतम मूल्य न्यूनतम मूल्य के लगभग बराबर होता है। मैंने पाया कि यह ठीक से काम नहीं करता है, क्योंकि यह इस बात की कोई गारंटी नहीं देता है कि फ़ंक्शन सिम्पलेक्स के अंदर क्या करता है। उदाहरण, फ़ंक्शन पर विचार करें: यह निश्चित रूप से अनुकूलन के लिए तुच्छ है, लेकिन लें कि हम NM के साथ ऐसा करते हैं, और हमारे दो सिम्प्लेक्स पॉइंट्स औरf(xN+1)f(x1)<ϵϵxiif(x1)f(xN+1)

    f(x)=x2
    x1=1x2=1। एल्गोरिदम अपने इष्टतम को खोजने के बिना यहां अभिसरण करेगा।
  • दूसरे विकल्प में सिम्प्लेक्स के केन्द्रक का मूल्यांकन करना शामिल है: यदि । यह मानता है कि अगर सिंपलेक्स के सबसे निचले बिंदु और सेंट्रोइड में इस तरह के समान मूल्य हैं, तो कॉनफ्लेक्स को कॉल करने के लिए सिम्प्लेक्स पर्याप्त रूप से छोटा है।|f(x1)f(xc)|<ϵ

क्या यह अभिसरण के लिए जाँच करने का एक उचित तरीका है? या इसके लिए जाँच करने का कोई स्थापित तरीका है? मुझे इस पर कोई स्रोत नहीं मिला, क्योंकि अधिकांश खोज-हिट एल्गोरिथ्म की जटिलता पर ध्यान केंद्रित करते हैं।


1. यह मेरे लिए स्पष्ट नहीं है कि आप साथ पर क्या तुलना कर रहे हैं ; निश्चित रूप से आप इसकी तुलना करना चाहते हैं कि क्या होता है । 2. अभिसरण जांच बहुत सारे अनुकूलन में एक विशेष रूप से मुश्किल क्षेत्र है; आपको यह चाहिए कि फ़ंक्शन बहुत अधिक नहीं बदल रहा है, लेकिन यदि तर्क तेजी से बदल रहे हैं (भले ही फ़ंक्शन मुश्किल से बदल रहा है) तो आप अभिसरण नहीं कर सकते हैं, इसलिए लोग अक्सर उन मानदंडों का उपयोग करते हैं जो दोनों को देखते हैं। इस बात का भी मुद्दा है कि क्या आप किसी रिश्तेदार या पूर्ण मानदंड का उपयोग करते हैं (न तो पर्याप्त है - उदाहरण के लिए जब आप 0 के बहुत करीब हों तो एक रिश्तेदार परीक्षण शुरू हो जाएगा)xN+1x1xN
Glen_b -Reateate Monica

3
नेल्डर मीड के लिए सबसे अच्छा रोक मानदंड आप शुरू करने से पहले है।
मार्क एल। स्टोन

बस @ Glen_b की टिप्पणी में भ्रम की स्थिति से बचने के लिए ... मेरा मानना ​​है कि यहाँ सदस्यता सिम्प्लेक्स के कोने को संदर्भित करती है, एल्गोरिथ्म के पुनरावृत्ति को नहीं। ताकि इस प्रश्न में प्रस्तावित पहला अभिसरण मानदंड, -डायमेंशनल पैरामीटर स्पेस में वर्टिकल के निम्नतम और उच्चतम फ़ंक्शन मानों की तुलना करता है ... यह स्पष्ट रूप से प्रश्न में नहीं बताया गया है, लेकिन लिंक किए गए विकिपीडिया पृष्ठ पर एल्गोरिदम का वर्णन ( (मूल पेपर में) सबसे कम फ़ंक्शन मान से उच्चतम तक कोने का आदेश दें । NN+1
नैट पोप

@NatePope कि मेरा इरादा हाँ, मैं सवाल का स्पष्टीकरण जोड़ देंगे था \।
JAD

जवाबों:


6

न्यूमेरिकल व्यंजनों के मूल संस्करणों में इस "डाउनहिल सिम्प्लेक्स एल्गोरिथम" का खाता विशेष रूप से आकर्षक और सहायक है। इसलिए मैं इसके प्रासंगिक भागों का उद्धरण दूंगा। यहाँ पृष्ठभूमि है:

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

डाउनहिल सिम्प्लेक्स विधि को केवल एक बिंदु के साथ नहीं, बल्कि अंक के साथ आरंभिक सिम्प्लेक्स को परिभाषित करना शुरू करना चाहिए । [आप इन बिंदुओं को प्रारंभिक प्रारंभिक बिंदु के साथ-साथ ले सकते हैं ] जहां की यूनिट वैक्टर हैं और जहां एक स्थिरांक है जो आपका अनुमान है। समस्या की विशेषता लंबाई पैमाने पर। ...N+1P0

(10.4.1)Pi=P0+λei
eiNλ

अधिकांश कदम बस [चालें] सिंप्लेक्स के बिंदु जहां फ़ंक्शन सबसे बड़ा ("उच्चतम बिंदु") है, सिंपलेक्स के विपरीत चेहरे से निचले बिंदु तक। ...

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

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

अच्छी तरह से ध्यान दें कि ऊपर दिए गए मानदंडों में से किसी एक या किसी अन्य कारण से एक ही कदम पर मूर्ख बनाया जा सकता है। इसलिए, यह अक्सर एक बिंदु पर एक बहुआयामी न्यूनतमकरण दिनचर्या को फिर से शुरू करने के लिए एक अच्छा विचार है जहां यह दावा करता है कि न्यूनतम मिल गया है। इस पुनरारंभ के लिए, आपको किसी भी सहायक इनपुट मात्रा को फिर से संगठित करना चाहिए। ढलान सिंप्लेक्स विधि में, उदाहरण के लिए, आप reinitialize चाहिए के सिंप्लेक्स के कोने फिर समीकरण द्वारा , के साथ दावा किया न्यूनतम के कोने में से एक होने।NN+1(10.4.1)P0

रिस्टार्ट कभी भी बहुत महंगा नहीं होना चाहिए; आपका एल्गोरिथ्म, आखिरकार, एक बार पुनः आरंभ बिंदु में परिवर्तित हो गया, और अब आप पहले से ही एल्गोरिथ्म शुरू कर रहे हैं।

[पेज 290-292]

कोड में इस पाठ वाला संख्यात्मक व्यंजनों की "आंशिक रूप से छोटे" अर्थ स्पष्ट करते हैं: मूल्यों के बीच का अंतर और (या तो मान तर्क का या समारोह के मूल्यों) "आंशिक रूप से छोटे" एक सीमा से है जबxyT>0

(1)|x||y|f(x,y)=2|x||y||x|+|y|<T

साथ ।f(x,y)=(|x|+|y|)/2

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

संदर्भ

विलियम एच। प्रेस एट अल। , संख्यात्मक व्यंजनों: वैज्ञानिक कम्प्यूटिंग की कला। कैम्ब्रिज यूनिवर्सिटी प्रेस (1986)। नवीनतम संस्करणों के लिए http://numerical.recipes/ पर जाएं ।


1
पुनः आरंभ करने के बारे में जानकारी के लिए धन्यवाद। मैंने सोचा था कि यह अलग-अलग शुरुआती बिंदुओं से एल्गोरिथ्म चला रहा था, लेकिन वास्तव में यह अधिक लगता है।
JAD

मैंने "पुनः आरंभ करने" के संभावित अर्थों के बारे में पहले नहीं सोचा था। वर्तमान संदर्भ में, मैंने "पुनः आरंभ" के लिए "चमकाने" जैसे शब्द का उपयोग किया होगा, लेकिन शायद यह बिल्कुल सही भी नहीं है। सिंप्लेक्स विधि के लिए "पुनः आरंभ" की वकालत इसके लिए विशेष हो सकती है।
whuber

9

एक पूर्ण उत्तर नहीं है, लेकिन एक टिप्पणी के लिए बहुत लंबा है और आपको सही रास्ते पर ला सकता है।

इस विषय पर जॉन सी। नैश द्वारा "कंप्यूटर के लिए कॉम्पैक्ट न्यूमेरिकल मेथड्स" 2 डी एड के पेज 171 पर संक्षेप में बताया गया है। और आर के optim()समारोह में लागू नेल्डर-मीड रूटीन के लिए संदर्भित संदर्भ का उल्लेख करता है। प्रासंगिक भाग का हवाला देते हुए:

कम से कम एल्गोरिदम से संबंधित कांटेदार सवाल, इसलिए, इस पर ध्यान दिया जाना चाहिए: न्यूनतम कब पाया गया है? नेल्डर और मीड फ़ंक्शन मानों की 'मानक त्रुटि' का सुझाव देते हैं: कहां

test=[(i=1n+1[S(bi)S¯]2)/n]1/2
S¯=i=1n+1S(bi)/(n+1).

मैं स्पष्ट करना है कि बीच में हूँ समारोह को कम से कम किया जा रहा है, हैं अंक को परिभाषित आयामी सिंप्लेक्स; उच्चतम फ़ंक्शन मान वाला बिंदु और सबसे कम फ़ंक्शन मान वाला बिंदु । नैश जारी है:S(.)bn+1nbHbL

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

optim()संकेत के स्रोत पर एक त्वरित नज़र यह बताता है कि अभिसरण निर्धारित करने के लिए उच्चतम और निम्नतम फ़ंक्शन मानों (सिम्प्लेक्स को परिभाषित करने वाले बिंदुओं) के बीच अंतर का उपयोग करता है: उच्च मूल्य और कम मूल्य if (VH <= VL + convtol || VL <= abstol) break;कहां VHहै VL। यह गुहिकायन के साथ आता है कि मैंने स्रोत पर बहुत जल्दी ध्यान दिया, और शायद कुछ याद आ रहा है।

अब, आपका विकल्प (1) नैश द्वारा वकालत किया गया दूसरा दृष्टिकोण प्रतीत होता है। वह आपके सामने आई समस्या पर भी चर्चा करता है:

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

मूल संदर्भ जो नैश को यहां संदर्भित करता है वह हैं:

Nelder JA, Mead R. 1965. फ़ंक्शन को कम करने के लिए एक सरल विधि। द कंप्यूटर जर्नल 7: 308-313।

ओ'नील आर। 1971. अल्गोरिथम एएस 47: फंक्शन मिनिमाइजेशन ए सिंपल प्रक्रिया का उपयोग करते हुए। लागू सांख्यिकी 20: 338-345।


3

एक स्ट्रॉ मैन: केवल सबसे कम कोने वाले को "धैर्य" रोक नियम के साथ :

fmin(t)minall corners f(Xi,t)
# stop when you run out of patience, no improvement for say 10 iterations in a row:
if t > tbest + patience:
    message = "iter %d: f %g >= fbest %g" ...
    return message, fbest, xbest

सभी कोनों की निगरानी करना निश्चित रूप से उचित समन्वय स्केलिंग, बाधाओं, एनएम प्रारंभिक सिम्प्लेक्स की जांच में उपयोगी है। सभी कोनों पर नज़र रखने से क्या संयोजन में सुधार हो सकता हैn+1

  1. समस्या: खुरदरा इलाका, शायद खराब स्केलिंग या मूर्खतापूर्ण बाधाओं के साथ
  2. एल्गोरिथ्म, संतुलन और खोज (और सॉफ्टवेयर जटिलता)
  3. रोक नियम उचित है

देखा जाना चाहिए - असली परीक्षण मामलों का स्वागत करते हैं।

(एक वास्तविक Stopiterवर्ग में स्टॉप की कई स्थितियाँ हैं, इसके अलावा patience; सरलतम दीवार घड़ी का समय है।)

इसे भी देखें:
NLopt : Nelder -Mead सहित कई एल्गोरिदम, तुलना करना आसान विशेष रूप से कम्प्यूटिंग एल्गोरिदम
डाउनहिल पर नोट्स देखें : धैर्य के साथ रुकनाmin_improvement

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