क्या एक ग्रेडिएंट बेस्ड ऑप्टिमाइज़र को लगभग ग्रेडिएंट प्रदान करना बेकार है?


9

यदि आप केवल एक संख्यात्मक ढाल प्रदान कर सकते हैं तो क्या यह ग्रेडिएंट आधारित अनुकूलन एल्गोरिदम का उपयोग करने के लिए व्यर्थ है? यदि नहीं, तो पहली बार एक संख्यात्मक ग्रेडिएंट प्रदान करें यदि यह अनुकूलन लाइब्रेरी के लिए परिमित भेदभाव करने के लिए तुच्छ है?

[संपादित करें]

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

  • स्वचालित भेदभाव के साथ मेरा मुद्दा यह है कि हमेशा एक पकड़ लगती है। या तो AD लाइब्रेरी बाहरी लाइब्रेरी कॉल (जैसे BLAS) को प्रचारित नहीं कर सकती है या आपको अपने वर्कफ़्लो को इतनी तेज़ी से पुन: काम करना होगा कि इससे निपटने के लिए दर्द हो ... खासकर यदि आप टाइप संवेदनशील भाषाओं के साथ काम कर रहे हैं। AD के साथ मेरी पकड़ पूरी तरह से एक अलग मुद्दा है। लेकिन मैं विश्वास करना चाहता हूँ!

  • मुझे लगता है कि मुझे अपने प्रश्न को बेहतर ढंग से तैयार करने की आवश्यकता है, लेकिन मैं इसका खराब काम कर रहा हूं। यदि आपके पास व्युत्पन्न-मुक्त अनुकूलन एल्गोरिथम या कैविटी के साथ व्युत्पन्न आधारित अनुकूलन एल्गोरिदम का उपयोग करने का विकल्प है, तो मैं इसे केवल एक संख्यात्मक ढाल दे सकता हूं, जो औसतन बेहतर होगा?


2
क्या आप यह पूछने की कोशिश कर रहे हैं कि परिमित अंतरों का उपयोग करते हुए एक अनुमानित कंप्यूटिंग के बजाय एक विश्लेषणात्मक ढाल क्यों प्रदान करेगा?
शुक्राणु

1
मेरा सवाल है, एक और तरीका बताया गया है, मान लीजिए कि आपके समीकरण वैसे हैं जो आपके लिए विश्लेषणात्मक ग्रेडिएंट्स की गणना में शामिल हैं, क्या ग्रेडिएंट डिपेंडेंट ऑप्टिमाइज़ेशन एल्गोरिदम अभी भी उन लोगों से बेहतर हो सकते हैं जिन्हें ग्रेडिएंट की आवश्यकता नहीं है?
प्रोफेसर बिगल्सवर्थ

यह एक अलग सवाल है कि जिसे आपने ऊपर रखा है। आप अन्य साधनों, जैसे, परिमित तत्वों द्वारा संख्यात्मक व्युत्पन्न की गणना करने में सक्षम हो सकते हैं।
nicoguaro

1
@nicoguaro हाँ, आंशिक अंतर समीकरणों के साथ अनुकूलन के संदर्भ में, यह निश्चित रूप से मामला है (और, यह मेरे अनुसंधान क्षेत्रों में से एक है, यही मेरा पहला विचार भी था)। लेकिन प्रश्न उस दिशा में कुछ भी उल्लेख नहीं करता है (और इस व्यापकता में अधिक उपयोगी है। मुझे लगता है)।
ईसाई क्लासन

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

जवाबों:


11

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

  1. स्टोकेस्टिक तरीके , जहां नमूनों का चयन मौलिक रूप से यादृच्छिक होता है (जिसका अर्थ है कि यादृच्छिकता एक महत्वपूर्ण घटक है; अन्य, निर्धारक घटक हो सकते हैं)। इन विधियों को अक्सर भौतिक या जैविक प्रक्रियाओं से प्रेरित किया जाता है और "अनुकृत annealing", "आनुवंशिक एल्गोरिदम", या "कण झुंड / जुगनू / एंथिल विधि" जैसे इसी नाम होते हैं। "इससे परे शायद ही कोई अभिसरण सिद्धांत है" यदि आप लंबे समय तक प्रयास करते हैं, तो आप संभावना के साथ सभी बिंदुओं (न्यूनतम सहित) को मारेंगे1"(चाहे वह हो - किसी भी संभावना के साथ - ब्रह्मांड की गर्मी से पहले मौत एक और मामला है ...) एक गणितज्ञ के रूप में, मैं इन तरीकों को अंतिम उपाय के रूप में मानूंगा: यदि आप अपने बारे में कुछ नहीं जानते हैं फ़ंक्शन, यह सब आप कर सकते हैं, और आप भाग्यशाली हो सकते हैं।

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

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

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

किसी भी गणितीय प्रवंचना द्वारा जानकारी की कमी को दूर नहीं किया जा सकता है।

आखिरकार, यदि आप अपने कार्य के बारे में कुछ भी नहीं जानते हैं , तो यह पूरी तरह से यादृच्छिक हो सकता है, और यादृच्छिक मूल्य को कम करना एक मूर्खतापूर्ण त्रुटि है ...


17

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

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

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


3
स्वचालित भेदभाव के लिए +1 । यह प्रायः ग्रेडिएंट या एक परिमित-अंतर सन्निकटन के लिए एक ए-प्रायरी प्रतीकात्मक अभिव्यक्ति की तुलना में बहुत बेहतर है।
लेफ्टरनैबाउट

मैं स्वचालित भेदभाव का उपयोग करने की भी सिफारिश करूंगा। फोरट्रान के लिए, आईएनआईए सोफिया-एंटिपोलिस से टेपनेड की कोशिश करें, जो स्रोत परिवर्तन पर आधारित है। C / C ++ के लिए, adol-c, adept, sacado (Trilinos का हिस्सा) जैसे विकल्प अधिक हैं। ये सभी ऑपरेटर ओवरलोडिंग और उपयोग में आसान पर आधारित हैं, हालांकि बहुत बड़ी समस्याओं के लिए बहुत कुशल नहीं हैं।
cfdlab

ऐसी कुछ परिस्थितियाँ भी हैं जिनमें स्वत: विभेदन (AD) लागू करना मुश्किल हो सकता है, लेकिन जटिल चरण विभेदन, जो कभी-कभी AD के समान लगभग हो सकता है (रिवर्स मोड द्वारा एक बार में एक संपूर्ण ढाल की गणना करने में सक्षम होने के अलावा) AD) लागू हो सकता है और लागू करने के लिए अपेक्षाकृत आसान है।
मार्क एल स्टोन

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

4

आपका प्रश्न ग्रेडिएंट-आधारित ऑप्टिमाइज़र के बारे में पूछता है, इसलिए मुझे लगता है कि ब्रायन सही था। मैं केवल साझा करूंगा, क्योंकि मैं वर्तमान में खुद से, कुछ मुद्दों के साथ संघर्ष कर रहा हूं।

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

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

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


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

@choward: सही है। यही इसके बारे में सुंदर है। हालांकि मुझे संदेह था। मेरे कुछ सहयोगियों को लगता है कि यह एक जादू की गोली थी। मुझे संदेह था कि यह संवेदनशीलता समीकरणों के बराबर था, और मेरे एक सह-कार्यकर्ता, एक लागू गणितज्ञ ने इसे साबित किया।
माइक डनलैवी

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

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