ऑप्टिमाइज़र के रूप में ग्रेडिएंट डिसेंट होने के लिए (व्यवस्थित) धुन सीखने की दर कैसे?


12

एमएल / डीएल क्षेत्र के लिए एक बाहरी व्यक्ति; उनेसिटी डीप लर्निंग कोर्स शुरू किया जो टेनसफ़्लो पर आधारित है; असाइनमेंट 3 समस्या 4 कर रहा है; निम्नलिखित विन्यास के साथ सीखने की दर को धुनने की कोशिश कर रहा है:

  • बैच का आकार 128
  • चरणों की संख्या: 2 युगों को भरने के लिए पर्याप्त है
  • छिपी हुई परतों के आकार: 1024, 305, 75
  • वजन आरंभीकरण: एसटीडी के साथ सामान्य काट दिया। sqrt का विचलन (2 / n) जहां n पिछली परत का आकार है
  • ड्रॉपआउट संभावना रखें: 0.75
  • नियमितीकरण: लागू नहीं
  • सीखने की दर एल्गोरिथ्म: घातीय क्षय

सीखने की दर मापदंडों के साथ खेला जाता है; वे ज्यादातर मामलों में प्रभावी नहीं लगते हैं; यहाँ कोड ; परिणाम:

Accuracy    learning_rate   decay_steps     decay_rate      staircase
93.7        .1              3000            .96             True
94.0        .3              3000            .86             False
94.0        .3              3000            .96             False
94.0        .3              3000            .96             True
94.0        .5              3000            .96             True
  • मुझे सीखने की दर को व्यवस्थित रूप से कैसे करना चाहिए?
  • लर्निंग दर चरणों की संख्या से संबंधित कैसे है?

1
टॉट स्वचालित एमएल ट्यूनिंग पाइपलाइन प्रदान करता है
डेन्फ्रोमुफा

जवाबों:


4

एक ढाल वंश अनुकूलक का उपयोग करें। यह एक बहुत अच्छा अवलोकन है।

कोड के बारे में, इस ट्यूटोरियल को देखेंयह और यह कुछ उदाहरण हैं।

व्यक्तिगत रूप से, मैं ADAM या RMSprop का उपयोग करने का सुझाव देता हूं। सेट करने के लिए अभी भी कुछ हाइपरपरमेटर्स हैं, लेकिन कुछ "मानक" हैं जो 99% काम करते हैं। ADAM के लिए आप इसके पेपर और RMSprop के लिए इस स्लाइड पर देख सकते हैं

संपादित करें

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

सामान्य तौर पर, AutoML चैलेंज पर एक नज़र है , जहां आप टीमों द्वारा स्रोत कोड भी पा सकते हैं। इस चुनौती में, मशीन सीखने को स्वचालित करने के लिए है, जिसमें हाइपरपैरामीटर ट्यूनिंग भी शामिल है।

अंत में, LeCun द्वारा यह पेपर और DeepMin (चैप्टर 8) द्वारा हाल ही के ट्यूटोरियल कुछ अंतर्दृष्टि देते हैं जो आपके प्रश्न के लिए उपयोगी हो सकते हैं।

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


मैं पहले से ही कोड में ग्रेडिएंट डिसेंट ऑप्टिमाइज़र का उपयोग कर रहा हूं। लिंक के लिए धन्यवाद!
थोरन

@ थोरन ओके ने कोड नहीं पढ़ा: डी (और सवाल एक ऑप्टिमाइज़र का उल्लेख नहीं करता है)। मैंने अपना उत्तर आपको कुछ और मदद देने के लिए संपादित किया है :)
साइमन

अच्छा घटनाक्रम, बाहरी लोगों जैसे <के लिए काम को आसान बनाता है। क्या आप जानते हैं कि कितने चरणों और सीखने की दर संबंधित हैं? मेरी आंत मुझे बताती है कि यदि अधिक चरण हैं, तो सीखने की प्रक्रिया धीमी होनी चाहिए।
थोरन

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

बहुत अच्छा सामान, मुझे इसे पचाने में कुछ समय लगेगा: D
Thoran

1

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

ऐसा करने के लिए लोकप्रिय एक पुस्तकालय भाला है।

https://github.com/JasperSnoek/spearmint


1

हाइपरग्रेडिएंट डिसेंट के साथ ऑनलाइन लर्निंग रेट अनुकूलन में एक बहुत हाल ही में स्वचालित सीखने-दर ट्यूनर दिया गया है

इस विधि को लागू करने के लिए बहुत सीधा है, SGD के लिए मुख्य परिणाम निम्नानुसार है:

αटी=αटी-1+β(θटी-1)टी(θटी-2)

βजैसे(θटी-2)α

βα0


0

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


कैसे आयोजित किए गए डेटासेट को परीक्षण या सत्यापन डेटा से अलग किया जाता है?
थोरन

सत्यापन के लिए आयोजित एक और नाम है। मूल रूप से आपके पास तीन डिज़ास्टर डेटासेट हैं: ट्रेन, आयोजित और परीक्षण। ट्रेन केवल मॉडल वेट सीखने के लिए उपयोग की जाती है (जैसे, ढाल वंश का उपयोग करना)। हेल्डआउट का उपयोग ट्यूनिंग मॉडल मापदंडों के लिए किया जाता है। परीक्षण का उपयोग केवल सामान्यीकरण प्रदर्शन को मापने के लिए किया जाता है (यानी मैं अपने मॉडल को अनदेखे डेटा पर प्रदर्शन करने की उम्मीद कैसे कर सकता हूं)
Alireza

धन्यवाद @Alireza समझाने के लिए अपना समय लेने के लिए। मैं पहले से ही सत्यापन डेटा का उपयोग कर रहा हूं। और परीक्षण के बिना, सटीकता को मापना संभव नहीं है!
थोरन

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