स्टोकेस्टिक क्रमिक वंश के एडम विधि कैसे काम करती है?


45

मैं तंत्रिका नेटवर्क के प्रशिक्षण के लिए बुनियादी ढाल वंश एल्गोरिदम से परिचित हूं। मैंने एडम को प्रस्तावित करने वाला पेपर पढ़ा है: एडम: एक मैथोड फॉर स्टेटिक ऑप्टिमाइज़ेशन

जबकि मुझे निश्चित रूप से कुछ अंतर्दृष्टि (कम से कम) मिली है , कागज मुझे समग्र रूप से बहुत उच्च स्तर का लगता है। उदाहरण के लिए, एक लागत समारोह अक्सर कई अलग-अलग कार्यों का योग होता है, इसलिए इसके मूल्य को अनुकूलित करने के लिए बड़ी मात्रा में गणना की जानी चाहिए; स्टोकेस्टिक ग्रेडिएंट अवरोही - जहां तक ​​मैं विषय को समझ रहा हूं - इन कार्यों के सबसेट के लिए केवल अनुकूलन की गणना करें। मेरे लिए यह स्पष्ट नहीं है, कि आदम यह कैसे करता है और यह पूरे लिए कम प्रशिक्षण त्रुटि के कारण होता है ।J(θ)J(θ)

मुझे लगता है कि एडम पिछले ग्रेडिएंट को ध्यान में रखते हुए अपनी ढाल को अपडेट करता है। वे इसे गति का उपयोग करने जैसा कुछ कहते हैं? वास्तव में यह गति क्या है? कागज में पृष्ठ दो पर एल्गोरिदम के अनुसार, यह कुछ प्रकार की चलती औसत है, जैसे "नियमित" ढाल के पहले और दूसरे क्षणों के कुछ अनुमान?

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

क्या कोई समझ सकता है कि एडम कैसे काम करता है? विशेष रूप से यह कैसे परिवर्तित होता है, विशेष रूप से क्यों एडम की विधि काम करती है और वास्तव में लाभ क्या है?


1
आपको अपने प्रश्न के लिए एक बेहतर शीर्षक प्रदान करना चाहिए। वास्तव में आप क्या पूछना चाहते हैं? यहां तक ​​कि अगर सामान्य रूप से, यह थोड़ा और अधिक खोज करने का प्रयास करें।
चार्ली पार्कर

जवाबों:


40

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

जैसा कि एडम क्यों काम करता है, इसके लिए यह कुछ ट्रिक्स का उपयोग करता है।

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

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

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

संबंधित तरीके :

मोमेंटम का उपयोग अक्सर मानक SGD के साथ किया जाता है। एक बेहतर संस्करण को Nesterov गति या Nesterov त्वरित ढाल कहा जाता है। अन्य विधियां जो प्रत्येक पैरामीटर के लिए स्वचालित रूप से ट्यून किए गए सीखने की दरों का उपयोग करती हैं, उनमें शामिल हैं: अडाग्रैड, आरएमएसप्रॉप और एडलाड्टा। RMSprop और Adadelta ने Adagrad के साथ एक समस्या को हल किया जिससे सीखने को रोका जा सकता था। एडम गति के साथ RMSprop के समान है। नादम एडम को शास्त्रीय गति के बजाय नेस्टरोव गति का उपयोग करने के लिए संशोधित करता है।

संदर्भ :

किंग्मा और बा (2014) । एडम: स्टोकेस्टिक अनुकूलन के लिए एक विधि।

गुडफेलो एट अल। (२०१६) है । गहन शिक्षा, अध्याय 8।

स्लाइड ज्योफ हिंटन के पाठ्यक्रम से

दोज़ात (2016) । एडम में नेस्टरोव मोमेंटम को शामिल करना।


2
(+1) समुदाय को बहुत फायदा होगा यदि आप एडम के अभिसमय के प्रमाणों और उनके सुधारों के बारे में अधिक जानकारी शामिल करने के लिए आपको उत्तर दे सकते हैं, जैसे "एडम एंड परे से परे" के बारे में openreview.net/forum?id.ryQu7f- RZ
मोनिका

2
धन्यवाद @ साइकोरेक्स, मैं कुछ समय मिलने पर अपडेट करने की कोशिश
करूंगा

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

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