समन्वय बनाम ढाल वंश


23

मैं सोच रहा था कि दो एल्गोरिदम, कोऑर्डिनेट डिसेंट और ग्रेडिएंट डिसेंट के लिए अलग-अलग उपयोग के मामले क्या हैं ।

मुझे पता है कि समन्वित वंश को गैर-चिकनी कार्यों के साथ समस्या है लेकिन इसका उपयोग एसवीएम और एलएएसओ जैसे लोकप्रिय एल्गोरिदम में किया जाता है।

हालांकि धीरे-धीरे मुझे लगता है कि अधिक व्यापक रूप से उपयोग किया जाता है, खासकर एएनएन के पुनरुत्थान और कई अन्य मशीन सीखने के कार्यों के लिए।

मेरा सवाल है: किस प्रकार की समस्याएं एक दूसरे पर नहीं बल्कि दूसरी जगह फिट बैठती हैं और इस संबंध में एसवीएम और एलएएसओ के लिए समन्वित वंश फिटिंग क्या होती है, लेकिन एएनएन के लिए ढाल मूल फिटिंग?

ऑप्टिमाइज़ेशन एल्गोरिदम चुनते समय दोनों के बीच में से एक को कैसे चुनना चाहिए?

जवाबों:


7

मुझे लगता है कि यह आम तौर पर एक बात है कि यह कितना सरल / आसान है कि यह कार्य के सुचारु भाग के लिए काम करता है और / या दंड के समीपस्थ संचालक।

कभी-कभी, एक एकल चर (या एक ब्लॉक या चर) के साथ मामले में समस्या का सटीक समाधान ढूंढना अधिक सरल होता है, क्योंकि यह एक साथ सभी चर के लिए काम करना है। अन्य प्रकार यह व्यक्तिगत डेरिवेटिव की तुलना में ढाल की गणना करने के लिए बहुत महंगा है। इसके अलावा, समन्वित वंश का अभिसरण ista, , जहां पुनरावृत्तियों की संख्या है, लेकिन यह कभी-कभी ISTA और FISTA दोनों की तुलना में बेहतर प्रदर्शन कर सकता है, उदाहरण के लिए देखें http: //statweb.stanford .edu / ~ TIBS / comparison.txt1/k2k

उदाहरण के लिए ऐसी चीजें समन्वित वंश बनाम आईएसएए / एफआईएसटीए की पसंद को प्रभावित करेंगी।


तो ऐसे कौन से मामले हैं, जहाँ से समन्वित वंश (CD) तेज होगा? क्या कुछ विशिष्ट प्रकार के कार्य हैं जिन पर सीडी एक बेहतर उम्मीदवार होगा?
बार

मैं नहीं कह सकता कि कार्यों के एक विशिष्ट वर्ग जैसे अन्य तरीकों, साथ तुलना में सीडी के साथ तेजी से हो जाएगा जैसे Fista। जहां तक ​​मुझे पता है कि यह आपके कार्य पर बहुत निर्भर करता है, और ग्रेडिएंट और इस तरह की चीजों का मूल्यांकन करना कितना महंगा है। मेरे अनुभव से, सीडी लस्सो समस्या पर FISTA से तेज है जब मॉडल में कुछ चर होते हैं (याद नहीं, लेकिन कुछ हजारों से कम)। ध्यान दें कि मैं केवल सीडीएस की तुलना आईएसए और एफआईएसटीए से कर रहा हूं, अन्य एल्गोरिदम (जैसे न्यूटन या स्यूडो-न्यूटन) तेजी से रास्ता बनाएंगे; लेकिन यह पूरी तरह से हाथ में समस्या पर निर्भर करता है।
टॉमी एल

सीडी कैसे आती है जीडी से तेज? यह काउंटर लॉजिक लगता है।
रॉय

3

समन्वित वंश एक समय में एक पैरामीटर को अद्यतन करता है, जबकि ढाल वंश एक ही बार में सभी मापदंडों को अपडेट करने का प्रयास करता है।

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

उस के साथ, कुछ विशेषताएं हैं जो वंश को समन्वय करने के लिए एक समस्या को और अधिक संशोधन कर सकती हैं:

(1) तेजी से सशर्त अद्यतन। यदि, किसी कारण से, समस्या व्यक्तिगत रूप से मापदंडों को बहुत जल्दी से अनुकूलित करने की अनुमति देती है, तो समन्वित वंश इस का उपयोग कर सकता है। उदाहरण के लिए, कोई केवल डेटा के सबसेट का उपयोग करके कुछ मापदंडों को अपडेट करने में सक्षम हो सकता है, इन अद्यतनों की कम्प्यूटेशनल लागत को बहुत कम करता है। एक अन्य मामला यह है कि यदि किसी अन्य पैरामीटर के लिए एक बंद फॉर्म समाधान है, तो अन्य सभी मापदंडों के मूल्यों पर सशर्त।

(2) मापदंडों के लिए अपेक्षाकृत स्वतंत्र मोड। यदि एक पैरामीटर का इष्टतम मूल्य अन्य मापदंडों के मूल्यों से पूरी तरह से स्वतंत्र है, तो समन्वय वंश का एक दौर समाधान का नेतृत्व करेगा (यह मानते हुए कि प्रत्येक समन्वय अपडेट वर्तमान मोड पाता है)। दूसरी ओर, यदि किसी दिए गए पैरामीटर के लिए मोड अन्य पैरामीटर मानों पर बहुत अधिक निर्भर है, तो प्रत्येक दौर में बहुत छोटे अपडेट के साथ, समन्वित वंश बहुत अधिक होने की संभावना है।

दुर्भाग्य से, ज्यादातर समस्याओं के लिए, (2) पकड़ नहीं है, इसलिए यह दुर्लभ है कि समन्वित वंश वैकल्पिक एल्गोरिदम की तुलना में अच्छी तरह से करता है। मेरा मानना ​​है कि LASSO के लिए अच्छा प्रदर्शन करने का कारण यह है कि बहुत सारी तरकीबें हैं जिनका उपयोग करके स्थिति (1) को लागू किया जा सकता है।

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


0

मुझे एहसास है कि यह एक पुराना सवाल है और इसके कुछ बहुत अच्छे जवाब हैं। मैं कुछ व्यावहारिक व्यक्तिगत अनुभव साझा करना चाहूंगा।

जब जनरेटिंग मशीन सीखने की तकनीक के साथ काम करते हैं, तो आप आमतौर पर कुछ प्रकार की संभावनाओं के साथ काम कर रहे होते हैं। एक उदाहरण मिश्रण मॉडल में घटकों के मिश्रण की संभावना हो सकती है । उनके पास निम्नलिखित बाधाएँ हैं:कश्मीर

  • सभी संभावनाएं सकारात्मक होनी चाहिए।
  • प्रायिकता सेट के सभी तत्वों को एक के बराबर होना चाहिए

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

कई परिवर्तन हैं जो आप अपनी समस्या को लागू कर सकते हैं ताकि क्रमिक वंश को अनुमति देने के लिए बाधाओं को संतुष्ट किया जा सके। हालांकि, अगर आप इसे लागू करने का सबसे आसान और सबसे आलसी तरीका ढूंढ रहे हैं तो वंश को समन्वित करने का तरीका है:

प्रत्येक संभाव्यता के लिए :pमैं

  • पीमैंकश्मीर+1=पीमैंकश्मीर-ηजम्मूपीमैं
  • पीमैं=मिनट(अधिकतम(पीमैं,0),1)
  • सभी p_i:पीj+1=पीj1Σमैं=1nपीमैं

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

इसलिए निष्कर्ष वास्तव में यह है कि पॉइज़न वितरण में दर पैरामीटर जैसे बहुत सख्त बाधाओं से निपटने के लिए समन्वित वंश सबसे आसान विकल्प है। यदि इसका ऋणात्मक हो जाता है, तो आप कोड आदि की शिकायत करते हैं।

मुझे उम्मीद है कि इसने थोड़ी अंतर्दृष्टि जोड़ी है।

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