एक सीखने की दर का चयन


85

मैं वर्तमान में स्टोकेस्टिक ग्रैडिएंट डिसेंट को लागू करने पर काम कर रहा हूं, SGDपीछे के प्रसार का उपयोग करते हुए तंत्रिका जाल के लिए, और जब मैं इसके उद्देश्य को समझता हूं तो मुझे कुछ सवाल हैं कि सीखने की दर के लिए मूल्यों का चयन कैसे करें।

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

संक्षेप में: मैं SGD के लिए सीखने की दर कैसे चुनूं?

जवाबों:


69
  • क्या सीखने की दर त्रुटि ढाल के आकार से संबंधित है, क्योंकि यह वंश की दर निर्धारित करता है?

    • सादे SGD में, उत्तर नहीं है। एक वैश्विक सीखने की दर का उपयोग किया जाता है जो त्रुटि ढाल के प्रति उदासीन है। हालाँकि, आपको जो अंतर्ज्ञान मिल रहा है, उसने SGD अपडेट नियम के विभिन्न संशोधनों को प्रेरित किया है।
  • यदि हां, तो आप इस जानकारी का उपयोग किसी मूल्य के बारे में अपने निर्णय को सूचित करने के लिए कैसे करते हैं?

    • Adagrad सबसे व्यापक रूप से इनमें से जाना जाता है और एक वैश्विक सीखने दर मापता η त्रुटि ढाल के इतिहास के l2 आदर्श के आधार पर प्रत्येक आयाम पर जीटी प्रत्येक आयाम पर:

      यहाँ छवि विवरण दर्ज करें

    • एडलाड्टा एक और ऐसा प्रशिक्षण एल्गोरिथ्म है जो एडग्रैड और वेट अपडेट इतिहास जैसे त्रुटि ग्रेडिएंट इतिहास दोनों का उपयोग करता है और इसमें सीखने की दर निर्धारित नहीं करने का फायदा है ।

  • यदि यह नहीं है कि मुझे किस प्रकार के मूल्यों का चयन करना चाहिए, और मुझे उन्हें कैसे चुनना चाहिए?

    • तंत्रिका जाल में सादे SGD के लिए सीखने की दर की स्थापना आमतौर पर 0.01 मान के रूप में एक साने मूल्य के साथ शुरू करने और फिर एक इष्टतम मूल्य खोजने के लिए क्रॉस-सत्यापन करने की एक प्रक्रिया है। विशिष्ट मान 0.0001 से 1 तक के परिमाण के कुछ आदेशों से अधिक होते हैं।
  • ऐसा लगता है कि आप छोटे मूल्यों को ओवरसोइंग से बचना चाहते हैं, लेकिन आप ऐसा कैसे चुनते हैं कि आप स्थानीय मिनीमा में फंस न जाएं या नीचे उतरने में बहुत लंबा समय लें? क्या यह समझ में आता है कि एक निरंतर सीखने की दर है, या मुझे कुछ मीट्रिक का उपयोग करना चाहिए ताकि इसके मूल्य को बदल सकूं क्योंकि मुझे ग्रेडिएंट में न्यूनतम प्राप्त करना है?

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

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

यह ध्यान दिया जाना चाहिए कि एडम ऑप्टिमाइज़र इन दिनों एड्राग्राद या एडेलड्टा की तुलना में अधिक सामान्य है।
E_net4 अभी भी स्ट्राइक

22

एंड्रयू एनजी द्वारा न्यूरल नेट्स (बैक प्रोपोगेशन) में सीखने की दर पर नीचे एक बहुत अच्छा नोट (पृष्ठ 12) है। आपको सीखने की दर से संबंधित विवरण मिलेगा।

http://web.stanford.edu/class/cs294a/sparseAutoencoder_2011new.pdf

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


9

सीखने की दर का चयन करना एक "मेटा-समस्या" का एक उदाहरण है जिसे हाइपरपरमेट अनुकूलन के रूप में जाना जाता है । सर्वोत्तम सीखने की दर हाथ में समस्या पर निर्भर करती है, साथ ही साथ मॉडल की वास्तुकला पर भी अनुकूलित किया जा रहा है, और यहां तक ​​कि वर्तमान अनुकूलन प्रक्रिया में मॉडल की स्थिति पर भी! यहां तक कि सॉफ्टवेयर जैसे hyperparameter अनुकूलन के लिए समर्पित संकुल हैं पुदीना और hyperopt (सिर्फ उदाहरण के एक जोड़े, वहाँ कई अन्य हैं!)।

फुल-स्केल हाइपरपैरेट ऑप्टिमाइज़ेशन के अलावा, मैं एक ऐसी तकनीक का उल्लेख करना चाहता था जो सीखने की दरों का चयन करने के लिए काफी सामान्य है जिसका अब तक उल्लेख नहीं किया गया है। नकली annealing एक मॉडल को अनुकूलित करने के लिए एक तकनीक है जिसके तहत एक बड़ी सीखने की दर के साथ शुरू होता है और धीरे-धीरे अनुकूलन की प्रगति के रूप में सीखने की दर को कम करता है। आम तौर पर आप अपने मॉडल को एक बड़ी सीखने की दर (0.1 या तो) के साथ अनुकूलित करते हैं, और फिर इस दर को उत्तरोत्तर कम करते हैं, अक्सर परिमाण के क्रम से (तो 0.01 तक, फिर 0.001, 0.0001, आदि)।

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


6

मेरे स्वामी थीसिस से कॉपी-पेस्ट :

  • यदि नुकसान कई युगों तक कम नहीं होता है, तो सीखने की दर बहुत कम हो सकती है। अनुकूलन प्रक्रिया स्थानीय न्यूनतम में भी अटक सकती है।
  • बहुत अधिक सीखने की दर के कारण NAN का नुकसान हो सकता है। एक अन्य कारण शून्य से विभाजन या शून्य का लघुगणक लेना है।
  • वेट अपडेट ट्रैकिंग: लर्निंग अपडेट को अच्छी तरह से चुने जाने के लिए वज़न अपडेट को ट्रैक करने के लिए CS231n के 5 वें लेक्चर में लेडी करपैथी ने प्रस्ताव दिया। उनका सुझाव है कि वजन अपडेट 10 .3 के क्रम में होना चाहिए। यदि वजन अपडेट बहुत अधिक है, तो सीखने की दर को कम करना होगा। यदि वजन अपडेट बहुत कम है, तो सीखने की दर बढ़ानी होगी।
  • विशिष्ट सीखने की दर [0.1, 0.00001] में हैं

4

सीखने की दर, हमारी पुनरावृत्ति प्रक्रिया के दौरान "चरण आकार" के रूप में तब्दील, वर्षों से एक गर्म मुद्दा रहा है, और यह आगे बढ़ेगा।

मेरे विषय में चरण आकार के तीन विकल्प हैं:

  • एक " समय " से संबंधित है , और प्रत्येक आयाम समान चरण आकार साझा करेगा। आपने कुछ ऐसा देखा होगा

αt

जबकि t वर्तमान पुनरावृति संख्या दर्शाता है, अल्फा हाइपर पैरामीटर है

  • अगला एक ढाल के साथ जुड़ा हुआ है , और प्रत्येक आयाम का अपना चरण आकार है। आपने कुछ ऐसा देखा होगा

1αβ+s=1t1gs2αβ+s=1tgs2

जबकि अल्फा और बीटा हाइपर पैरामीटर हैं, जी ग्रेडिएंट को दर्शाता है

  • पिछले एक समय और ढाल का संयोजन है , और यह ऐसा होना चाहिए

1αβ+s=1t1gs2αβ+s=1tgs2+γt

या

1αβ+s=1t1gs2αβ+s=1tgs2γt

आशा है कि यह आपकी मदद करेगा, सौभाग्य -)


क्या आपके पास इसके लिए कोई संदर्भ है?
जॉन

आप एफटीआरएल के सीखने की दर को संदर्भित कर सकते हैं, हम इसे टाइम और ग्रैडिएंट के साथ तैयार कर सकते हैं।
जो

3

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

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


3

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

लेकिन यह बात केवल व्रत / प्याऊ पर ही मौजूद है। हाल ही में किसी ने एक केरस कार्यान्वयन किया

जो बदले में इन कागजात पर आधारित हैं:

उम्मीद है की यह मदद करेगा।


2

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

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

यहाँ छवि विवरण दर्ज करें

103

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