मॉडल की परफ़ॉर्मेंस को बेहतर बनाने के लिए, वैज्ञानिक तरीका

इस दस्तावेज़ के उद्देश्य से:

मशीन लर्निंग डेवलपमेंट का आखिरी लक्ष्य, डिप्लॉय किए गए मॉडल की उपयोगिता बढ़ाना है.

आम तौर पर, इस सेक्शन में वही एमएल चरण और सिद्धांत इस्तेमाल किए जा सकते हैं जो एमएल की किसी समस्या से जुड़े हैं.

इस सेक्शन में, नीचे दिए गए अनुमान लगाए जाते हैं:

  • आपके पास पहले से ही पूरी तरह से चलाई जा रही ट्रेनिंग पाइपलाइन है. साथ ही, उस कॉन्फ़िगरेशन के साथ जो सही नतीजा देता है.
  • आपके पास प्रयोग में आसान ट्यूनिंग करने और साथ-साथ कम से कम कई ट्रेनिंग जॉब चलाने के लिए, ज़रूरी कंप्यूटेशनल रिसॉर्स मौजूद हैं.

इंक्रीमेंटल ट्यूनिंग की रणनीति

सुझाव: आसान कॉन्फ़िगरेशन के साथ शुरू करें. इसके बाद, समय-समय पर समस्या में अहम जानकारी जोड़ते हुए सुधार करते रहें. पक्का करें कि सुधार की प्रक्रिया सबूत सबूत पर आधारित हो.

हम मान लेते हैं कि आपका लक्ष्य एक ऐसा कॉन्फ़िगरेशन ढूंढना है जो आपके मॉडल की परफ़ॉर्मेंस को बढ़ा सके. कभी-कभी, आपका लक्ष्य एक तय समयसीमा तक मॉडल को बेहतर बनाना होता है. अन्य मामलों में, आप मॉडल को अनिश्चित समय तक बेहतर बना सकते हैं. उदाहरण के लिए, प्रोडक्शन में इस्तेमाल किए जा रहे मॉडल को लगातार बेहतर बनाते रहें.

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

परफ़ॉर्मेंस को बढ़ाने का सबसे असरदार तरीका एक आसान कॉन्फ़िगरेशन से शुरुआत करना और सुविधाओं में लगातार बढ़ोतरी करके, समस्या में सुधार करते हुए सुधार करना है.

हमारा सुझाव है कि आप ट्यूनिंग के हर दौर में ऑटोमेटेड सर्च एल्गोरिदम का इस्तेमाल करें. साथ ही, अपनी समझ के हिसाब से खोज स्पेस अपडेट करते रहें. एक्सप्लोर करने पर, आपको स्वाभाविक रूप से बेहतर और बेहतर कॉन्फ़िगरेशन मिलेंगे और इसलिए "सबसे अच्छा" मॉडल लगातार बेहतर होता जाएगा.

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

बड़े लेवल पर, हमारी बढ़ते हुए ट्यूनिंग रणनीति में नीचे दिए गए चार चरणों को दोहराया जाना शामिल है:

  1. प्रयोग के अगले राउंड के लिए कोई लक्ष्य चुनें. पक्का करें कि लक्ष्य का दायरा सही हो.
  2. प्रयोगों का अगला राउंड डिज़ाइन करें. इस लक्ष्य की ओर बढ़ने वाले प्रयोगों का एक सेट बनाएं और उसे लागू करें.
  3. प्रयोग के नतीजों से सीखें. चेकलिस्ट के हिसाब से, प्रयोग का आकलन करें.
  4. तय करें कि कैंडिडेट के बदलाव को अपनाना है या नहीं.

इस सेक्शन के बाकी हिस्से में इस रणनीति की जानकारी दी गई है.

प्रयोगों के अगले राउंड के लिए कोई लक्ष्य चुनें

कई सुविधाएं जोड़ने की कोशिश करने या एक साथ कई सवालों के जवाब देने की कोशिश करने पर, हो सकता है कि नतीजों पर अलग-अलग असर पहचानने में आपको दिक्कत हो. उदाहरण के तौर पर दिए गए लक्ष्य:

  • पाइपलाइन में किसी संभावित सुधार को आज़माएं (उदाहरण के लिए, नया रेगुलराइज़र, प्रीप्रोसेसिंग पसंद वगैरह).
  • किसी खास मॉडल हाइपरपैरामीटर के असर को समझना, जैसे कि ऐक्टिवेशन फ़ंक्शन
  • पुष्टि करने में हुई गड़बड़ी को कम करें.

कम समय की पुष्टि में होने वाली गड़बड़ी को बेहतर करने के बजाय, लंबे समय की प्रोग्रेस को प्राथमिकता दें

खास जानकारी: ज़्यादातर मामलों में, आपका मुख्य लक्ष्य ट्यूनिंग से जुड़ी समस्या की अहम जानकारी पाना होता है.

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

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

फ़िलहाल, आपको समस्या समझ आ जाएगी. इसके बाद, पुष्टि करने से जुड़ी गड़बड़ी पर पूरा ध्यान दिया जा सकता है. भले ही, प्रयोग ट्यून करने से जुड़ी समस्या के बारे में ज़्यादा जानकारी देने वाले न हों.

प्रयोगों का अगला राउंड डिज़ाइन करें

खास जानकारी: पहचानें कि कौनसे हाइपरपैरामीटर वैज्ञानिक, बारीकियां, और एक्सपेरिमेंटल लक्ष्य के लिए तय किए गए हाइपरपैरामीटर हैं. बारीक हाइपरपैरामीटर के बजाय, ऑप्टिमाइज़ किए गए वैज्ञानिक हाइपरपैरामीटर के मानों की तुलना करने के लिए, अध्ययनों का क्रम बनाएं. वैज्ञानिक मानों के साथ संसाधन की लागतों को संतुलित करने के लिए परेशान करने वाले हाइपरपैरामीटर के खोज स्थान चुनें.

विज्ञान, बारीकियों, और समस्याओं के बारे में जानने के लिए हाइपरपैरामीटर का इस्तेमाल करें

किसी लक्ष्य के लिए, सभी हाइपरपैरामीटर नीचे दी गई किसी एक श्रेणी में आते हैं:

  • वैज्ञानिक हाइपरपैरामीटर वे होते हैं जिनका मॉडल की परफ़ॉर्मेंस पर असर वही होता है जिसे आप मेज़र करना चाहते हैं.
  • परेशान करने वाले हाइपरपैरामीटर वे होते हैं जिन्हें वैज्ञानिक हाइपरपैरामीटर के अलग-अलग मानों की तुलना करने के लिए ऑप्टिमाइज़ करना पड़ता है. बड़े पैमाने पर मौजूद हाइपरपैरामीटर के आंकड़े और आंकड़ों से फ़र्क़ नहीं होता है.
  • तय हाइपरपैरामीटर के एक्सपेरिमेंट के मौजूदा राउंड में स्थायी वैल्यू हैं. जब वैज्ञानिक हाइपरपैरामीटर के अलग-अलग मानों की तुलना की जाती है, तो तय किए गए हाइपरपैरामीटर के मान नहीं बदलने चाहिए. प्रयोगों के सेट के लिए कुछ हाइपरपैरामीटर को ठीक करके, आपको इस बात को स्वीकार करना होगा कि प्रयोगों से मिले नतीजे, हायपर पैरामीटर की अन्य सेटिंग के लिए मान्य नहीं हो सकते. दूसरे शब्दों में, तय किए गए हाइपरपैरामीटर किसी प्रयोग से मिलने वाले निष्कर्षों के लिए चेतावनी बनाते हैं.

उदाहरण के लिए, मान लें कि आपका लक्ष्य इस प्रकार है:

तय करें कि ज़्यादा छिपी हुई लेयर वाले मॉडल में, पुष्टि करने में कम गड़बड़ी हुई है या नहीं.

इस मामले में:

  • लर्निंग रेट में बहुत ज़्यादा अंतर है, क्योंकि इसमें छिपी हुई लेयर वाले मॉडल की तुलना, अलग-अलग संख्या से की जा सकती है. ऐसा सिर्फ़ तब किया जाता है, जब छिपी हुई लेयर की हर संख्या के लिए, लर्निंग रेट को अलग से ट्यून किया जाता है. (सबसे सही लर्निंग रेट, आम तौर पर मॉडल आर्किटेक्चर पर निर्भर करता है).
  • ऐक्टिवेशन फ़ंक्शन को, तय किए गए हाइपरपैरामीटर के तौर पर इस्तेमाल किया जा सकता है. अगर आपने पहले के प्रयोगों में यह तय किया है कि सबसे अच्छा ऐक्टिवेशन फ़ंक्शन, मॉडल की गहराई के प्रति संवेदनशील नहीं है. हालांकि, इस ऐक्टिवेशन फ़ंक्शन को कवर करने के लिए, छिपाई गई लेयर की संख्या के बारे में अपनी आखिरी सलाह दें. इसके अलावा, अगर आप छिपे हुए लेयर की हर संख्या के लिए इसे अलग से ट्यून करने के लिए तैयार हैं, तो यह परेशान करने वाला हाइपरपैरामीटर हो सकता है.

कोई खास हाइपरपैरामीटर एक वैज्ञानिक हाइपरपैरामीटर, नग्नता हाइपरपैरामीटर या तय किया गया हाइपरपैरामीटर हो सकता है. हाइपरपैरामीटर का वर्गीकरण प्रयोगात्मक लक्ष्य के आधार पर बदलता है. उदाहरण के लिए, ऐक्टिवेशन फ़ंक्शन इनमें से कोई भी हो सकता है:

  • वैज्ञानिक हाइपरपैरामीटर: क्या हमारी समस्या के लिए ReLU या tanh बेहतर विकल्प है?
  • नुकसान पहुंचाने वाले हाइपरपैरामीटर: जब कई अलग-अलग संभावित ऐक्टिवेशन फ़ंक्शन की अनुमति दी जाती है, तो क्या पांच-लेयर मॉडल सबसे अच्छा होता है?
  • ठीक हाइपरपैरामीटर: ReLU नेट के लिए, क्या किसी खास स्थिति में बैच सामान्यीकरण जोड़ने से मदद मिलती है?

प्रयोगों का एक नया राउंड डिज़ाइन करते समय:

  1. प्रयोग के मकसद से बनाए गए वैज्ञानिक हाइपरपैरामीटर की पहचान करें. (इस चरण में, दूसरे सभी हाइपरपैरामीटर को नुकसान पहुंचाने वाले हाइपरपैरामीटर के तौर पर देखा जा सकता है.)
  2. कुछ परेशान करने वाले हाइपरपैरामीटर को तय हाइपरपैरामीटर में बदलें.

ज़्यादा से ज़्यादा संसाधनों की मदद से, सभी गैर-वैज्ञानिक हाइपरपैरामीटर को समस्या की जानकारी देने वाले हाइपरपैरामीटर के तौर पर छोड़ देना चाहिए, ताकि आप अपने प्रयोगों से जो नतीजे हासिल करें वे तय किए गए हाइपरपैरामीटर के मानों से सावधान रहें. आपके लिए जितने ज़्यादा परेशान करने वाले हाइपरपैरामीटर को ट्यून करना है, इस बात की आशंका उतनी ही ज़्यादा होगी कि आप वैज्ञानिक हाइपरपैरामीटर के हर सेटिंग के लिए उन्हें अच्छी तरह से ट्यून नहीं कर पाएंगे और आपके प्रयोगों से गलत नतीजे मिलेंगे. जैसा कि बाद में सेक्शन में बताया गया है, कंप्यूटेशनल बजट बढ़ाकर, इस जोखिम से बचा जा सकता है. हालांकि, आपके सभी संसाधन का बजट, अक्सर उन सभी हाइपरपैरामीटर को ध्यान में रखकर बनाया जाता है जो ज़रूरी नहीं हैं.

हम सुझाव देते हैं कि किसी समस्या की जानकारी देने वाले हाइपरपैरामीटर को एक तय हाइपरपैरामीटर में बदला जाए. ऐसा तब किया जाना चाहिए, जब समस्या को ठीक करने से शुरू हुई चेतावनियां, नुकसान पहुंचाने वाले हाइपरपैरामीटर के तौर पर शामिल करने की लागत की तुलना में कम बोझ वाली हों. परेशान करने वाला हाइपरपैरामीटर, वैज्ञानिक हाइपरपैरामीटर के साथ इंटरैक्ट करने में जितना ज़्यादा मददगार होगा, अपनी वैल्यू को ठीक करने में उतना ही ज़्यादा नुकसान होगा. उदाहरण के लिए, वज़न के नुकसान की सबसे अच्छी वैल्यू, मॉडल के साइज़ के हिसाब से तय होती है. इसलिए, यह मानते हुए कि वज़न को कम करने की एक खास वैल्यू का इस्तेमाल नहीं किया जा सकता, अलग-अलग साइज़ के मॉडल की तुलना से ज़्यादा जानकारी नहीं मिलेगी.

कुछ ऑप्टिमाइज़र पैरामीटर

बुनियादी नियम के मुताबिक, कुछ ऑप्टिमाइज़र हाइपरपैरामीटर (जैसे, लर्निंग रेट, मोमेंटम, लर्निंग रेट शेड्यूल पैरामीटर, ऐडम बीटा वगैरह) ग़ैर-ज़रूरी पैरामीटर हैं, क्योंकि ये दूसरे बदलावों से सबसे ज़्यादा इंटरैक्ट करते हैं. ये ऑप्टिमाइज़र हाइपरपैरामीटर शायद कभी-कभी वैज्ञानिक हाइपरपैरामीटर के तौर पर इस्तेमाल किए जाते हैं. ऐसा इसलिए, क्योंकि "मौजूदा पाइपलाइन के लिए सबसे बढ़िया लर्निंग रेट क्या है?", इससे ज़्यादा जानकारी नहीं मिलती. आखिरकार, अगली पाइपलाइन में फिर भी सबसे अच्छी सेटिंग बदल सकती है.

संसाधन की सीमाओं या खास तौर पर इस बात के पुख्ता सबूत होने की वजह से कि वे वैज्ञानिक पैरामीटर के साथ इंटरैक्ट नहीं करते, कभी-कभी ऑप्टिमाइज़र के हाइपरपैरामीटर को ठीक किया जा सकता है. हालांकि, आम तौर पर आपको यह मान लेना चाहिए कि आपको वैज्ञानिक हाइपरपैरामीटर की अलग-अलग सेटिंग के बीच सही तरीके से तुलना करने के लिए, ऑप्टिमाइज़र हाइपरपैरामीटर को अलग-अलग ट्यून करना होगा, इसलिए, इसे ठीक नहीं करना चाहिए. इसके अलावा, कोई खास वजह यह नहीं है कि पहले के हिसाब से एक ऑप्टिमाइज़र हाइपरपैरामीटर वैल्यू को प्राथमिकता देनी चाहिए. उदाहरण के लिए, ऑप्टिमाइज़र हाइपरपैरामीटर वैल्यू आम तौर पर फ़ॉरवर्ड पास या कंप्रेशन की कंप्यूटेशनल लागत पर किसी भी तरह से असर नहीं डालती हैं.

ऑप्टिमाइज़र का विकल्प

ऑप्टिमाइज़र का विकल्प आम तौर पर या तो होता है:

  • एक वैज्ञानिक हाइपरपैरामीटर
  • एक निश्चित हाइपरपैरामीटर

अगर आपका मकसद दो या उससे ज़्यादा अलग-अलग ऑप्टिमाइज़र के बीच सही तुलना करना है, तो ऑप्टिमाइज़र एक वैज्ञानिक हाइपरपैरामीटर है. उदाहरण के लिए:

तय करें कि दिए गए चरणों की संख्या के आधार पर, पुष्टि करने वाला सबसे छोटा टूल, सबसे नीचे पुष्टि करने के दौरान किस तरह की गड़बड़ी दिखाता है.

इसके अलावा, कई तरह की वजहों से ऑप्टिमाइज़र को एक सटीक हाइपरपैरामीटर बनाया जा सकता है, जैसे:

  • प्रयोग से जुड़े पिछले सुझाव का सुझाव है कि ट्यूनिंग से जुड़ी समस्या के लिए, सबसे अच्छा ऑप्टिमाइज़र मौजूदा वैज्ञानिक हाइपरपैरामीटर के प्रति संवेदनशील नहीं है.
  • आप इस ऑप्टिमाइज़र का इस्तेमाल करके विज्ञान के हाइपरपैरामीटर के मानों की तुलना करना चाहते हैं, क्योंकि इसके ट्रेनिंग कर्व की वजह आसान होती है.
  • आपको इस ऑप्टिमाइज़र का इस्तेमाल करना चाहिए, क्योंकि इसमें वैकल्पिक चीज़ों की तुलना में कम मेमोरी का इस्तेमाल होता है.

नियमित बनाने के हाइपरपैरामीटर

नियमित बनाने की तकनीक से शुरू किए गए हाइपरपैरामीटर आम तौर पर बहुत ज़्यादा हाइपरपैरामीटर होते हैं. नियमित करने की तकनीक को शामिल करने या न करने का विकल्प यह है कि वह विज्ञान से जुड़ी या फ़िक्स पैरामीटर के तौर पर होनी चाहिए.

उदाहरण के लिए, ड्रॉपडाउन के नियमित होने से कोड की जटिलता बढ़ती है. इसलिए, ड्रॉपडाउन रेगुलराइज़ेशन शामिल करना है या नहीं, यह तय करते समय, आप एक वैज्ञानिक हाइपरपैरामीटर के बजाय "ड्रॉप आउट" या ड्रॉप-डाउन दर तय कर सकते हैं. अगर इस प्रयोग के आधार पर, आपको पाइपलाइन में ड्रॉपडाउन जोड़े जाने की सुविधा जोड़ने का फ़ैसला लेना है, तो आने वाले समय में होने वाले प्रयोगों में होने वाली गिरावट की दर, नुकसान पहुंचाने वाला हाइपरपैरामीटर होगी.

आर्किटेक्चरल हाइपरपैरामीटर

आर्किटेक्चरल हाइपरपैरामीटर अक्सर विज्ञान से जुड़े या तय हाइपरपैरामीटर होते हैं. इसकी वजह यह है कि वास्तुकला में बदलाव होने से, सेवा देने और ट्रेनिंग का खर्च, इंतज़ार का समय, और मेमोरी की ज़रूरतों पर असर पड़ सकता है. उदाहरण के लिए, लेयर की संख्या आम तौर पर वैज्ञानिक या तय किया गया हाइपरपैरामीटर होता है, क्योंकि इससे ट्रेनिंग की प्रोसेस में लगने वाले समय या मेमोरी का इस्तेमाल करने के नतीजे नाटकीय होते हैं.

वैज्ञानिक हाइपरपैरामीटर पर निर्भर करता है

कुछ मामलों में, परेशान करने वाले और तय किए गए हाइपरपैरामीटर के सेट, वैज्ञानिक हाइपरपैरामीटर के मानों पर निर्भर करते हैं. उदाहरण के लिए, मान लें कि आपको यह पता लगाना है कि Nesterov की गति के मामले में कौनसे ऑप्टिमाइज़र, सबसे कम पुष्टि करने में होने वाली गड़बड़ी की वजह से पैदा होते हैं. इस मामले में:

  • वैज्ञानिक हाइपरपैरामीटर एक ऑप्टिमाइज़र है, जो वैल्यू लेता है {"Nesterov_momentum", "Adam"}
  • optimizer="Nesterov_momentum" की वैल्यू में हायपरपैरामीटर {learning_rate, momentum} के बारे में बताया जाता है. यह या तो समस्या हो सकती है या तय किए गए हाइपरपैरामीटर हो सकते हैं.
  • वैल्यू optimizer="Adam", हाइपरपैरामीटर {learning_rate, beta1, beta2, epsilon} के बारे में बताती है. यह या तो परेशान करने वाले या तय किए गए हाइपरपैरामीटर हो सकते हैं.

ऐसे हाइपरपैरामीटर जो सिर्फ़ वैज्ञानिक हाइपरपैरामीटर के कुछ मानों के लिए मौजूद हैं, उन्हें शर्त हाइपरपैरामीटर कहा जाता है. यह न मानें कि दो कंडीशनल हाइपरपैरामीटर एक ही हैं, क्योंकि उनका नाम एक ही है! पिछले उदाहरण में, कंडिशनल हाइपरपैरामीटर जिसे learning_rate कहा जाता है, optimizer="Adam" के लिए optimizer="Nesterov_momentum" के लिए अलग हाइपरपैरामीटर है. दोनों एल्गोरिदम में इसकी भूमिका एक जैसी है, लेकिन यह एक जैसी नहीं है. हालांकि, हर ऑप्टिमाइज़र में अच्छा काम करने वाली वैल्यू की रेंज, क्रम के हिसाब से अलग-अलग होती है.

स्टडी का सेट बनाएं

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

  • ऐसे हाइपरपैरामीटर जो अलग-अलग ट्रायल के दौरान अलग-अलग होते हैं.
  • वे हाइपरपैरामीटर जो सर्च स्पेस में काम कर सकते हैं.
  • ट्रायल की संख्या.
  • यह एक ऑटोमेटेड एल्गोरिदम है, जो यह बताता है कि खोज स्पेस में कई बार यह टेस्ट किया गया है या नहीं.

इसके अलावा, हाइपरपैरामीटर कॉन्फ़िगरेशन के सेट को मैन्युअल तरीके से सेट करके भी स्टडी बनाई जा सकती है.

इन स्टडी का मकसद:

  • पाइपलाइन को वैज्ञानिक हाइपरपैरामीटर के अलग-अलग मानों के साथ चलाएं.
  • (उदाहरण के लिए, समस्याओं को हल करने के लिए) "ऑप्टिमाइज़ करना" या "ऑप्टिमाइज़ करना" (ज़्यादा सटीक बनाना) इसलिए, ताकि ज़्यादा से ज़्यादा वैज्ञानिक हाइपरपैरामीटर के मान आपस में मेल खाने लगें.

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

  • एक स्टडी जिसमें {learning_rate, momentum}और बारीकियों वाले हाइपरपैरामीटर optimizer="Nesterov_momentum" हैं
  • एक और स्टडी जिसमें optimizer="Adam" और अनचाहे हाइपरपैरामीटर {learning_rate, beta1, beta2, epsilon} हैं.

इससे, हर स्टडी से सबसे अच्छा परफ़ॉर्म करने वाला ट्रायल चुनकर, दो ऑप्टिमाइज़र की तुलना की जा सकेगी.

बिना परेशान करने वाले हाइपरपैरामीटर को ऑप्टिमाइज़ करने के लिए, बेज़ियन ऑप्टिमाइज़ेशन या विकासात्मक एल्गोरिदम जैसे तरीकों सहित किसी भी ग्रेडिएंट-फ़्री ऑप्टिमाइज़ेशन एल्गोरिदम का इस्तेमाल किया जा सकता है. हालांकि, हम इस सेटिंग के कई फ़ायदों की वजह से ट्यूनिंग के एक्सप्लोरेशन फ़ेज़ में, क्वासी-रैंडम खोज को इस्तेमाल करना पसंद करते हैं. एक्सप्लोरेशन खत्म होने के बाद, हमारा सुझाव है कि आप बेज़ियन ऑप्टिमाइज़ेशन सॉफ़्टवेयर का इस्तेमाल करें (अगर यह उपलब्ध है).

एक ज़्यादा जटिल मामले पर ध्यान दें, जहां आप वैज्ञानिक हाइपरपैरामीटर के मानों की बड़ी संख्या से तुलना करना चाहते हैं, लेकिन इतने सारे स्वतंत्र अध्ययन करना मुश्किल है. इस मामले में, ये काम किए जा सकते हैं:

  • उसी पैरामीटर में, वैज्ञानिक पैरामीटर शामिल करें जिससे खोजना जारी रखा गया है.
  • एक ही स्टडी में वैज्ञानिक और समस्या वाले हाइपरपैरामीटर के मान का सैंपल लेने के लिए, खोज एल्गोरिदम का इस्तेमाल करें.

यह तरीका अपनाने पर, कंडीशनल हाइपरपैरामीटर की वजह से समस्याएं हो सकती हैं. आखिरकार, खोज स्पेस को तय करना मुश्किल होता है. ऐसा तब तक होता है, जब तक कि बड़े पैमाने पर होने वाले हाइपरपैरामीटर का सेट, वैज्ञानिक हाइपरपैरामीटर के सभी मानों के लिए एक जैसा न हो. इस मामले में, पंखे वाले ब्लैक-बॉक्स ऑप्टिमाइज़ेशन टूल का इस्तेमाल करने के मामले में quasi-random के खोज नतीजे का इस्तेमाल करने की हमारी प्राथमिकता और ज़्यादा मज़बूत है, क्योंकि यह गारंटी देता है कि वैज्ञानिक हाइपरपैरामीटर के अलग-अलग मान एक ही तरह से सैंपल किए जाएंगे. खोज एल्गोरिदम पर ध्यान दिए बिना, यह पक्का करें कि वह समान रूप से वैज्ञानिक पैरामीटर की खोज करता है.

जानकारी देने वाले और किफ़ायती प्रयोगों के बीच संतुलन बनाएं

कोई स्टडी या सीक्वेंस डिज़ाइन करते समय, इन तीन लक्ष्यों को पूरा करने के लिए एक सीमित बजट तय करें:

  • वैज्ञानिक हाइपरपैरामीटर के अलग-अलग मानों की तुलना करना.
  • खोज के लिए इस्तेमाल होने वाले एक बड़े स्पेस में, परेशान करने वाले हाइपरपैरामीटर का इस्तेमाल करना.
  • नुकसान पहुंचाने वाले हाइपरपैरामीटर के खोज स्पेस का बारीकी से विश्लेषण करना.

आप इन तीन लक्ष्यों को जितना बेहतर तरीके से पूरा कर पाएंगे, उतनी ही ज़्यादा अहम जानकारी आपको प्रयोग से मिलेगी. वैज्ञानिक हाइपरपैरामीटर के ज़्यादा से ज़्यादा मान की तुलना करके प्रयोग से मिलने वाली इनसाइट के दायरे को बढ़ाया जा सकता है.

ज़्यादा से ज़्यादा नुकसान पहुंचाने वाले हाइपरपैरामीटर शामिल करने से, हर समस्या के हाइपरपैरामीटर को रेंज में जितना हो सके उतना बड़ा बनाने में मदद मिलती है. इससे पता चलता है कि समस्या वाले हाइपरपैरामीटर के "अच्छा" मान, वैज्ञानिक हाइपरपैरामीटर के हर कॉन्फ़िगरेशन के खोज स्पेस में मौजूद हैं. अगर ऐसा नहीं है, तो हो सकता है कि आप वैज्ञानिक हाइपरपैरामीटर के मानों के बीच गलत तुलना करें. ऐसा करने के लिए, शोर हाइपरपैरामीटर स्पेस के उन इलाकों को नहीं खोजा जा सकता जहां वैज्ञानिक पैरामीटर की कुछ वैल्यू के लिए, बेहतर वैल्यू मिल सकती हैं.

जहां तक हो सके, परेशान करने वाले हाइपरपैरामीटर के खोज स्पेस का सैंपल लें. ऐसा करने से आपका आत्मविश्वास बढ़ता है. खोज की प्रोसेस को, ऐसे खोज हाइपरपैरामीटर के लिए कोई भी अच्छी सेटिंग मिलेगी जो आपके खोज स्पेस में मौजूद हैं. अगर ऐसा नहीं है, तो हो सकता है कि आप कुछ तकनीकी वैज्ञानिकों की वैल्यू की तुलना सही तरीके से न कर पाएं. इसकी वजह यह है कि कुछ वैल्यू, ग़ैर-ज़रूरी हाइपरपैरामीटर के सैंपल के साथ बेहतर हो जाती हैं.

माफ़ करें, इन तीन डाइमेंशन में से किसी एक में सुधार करने के लिए, इनमें से किसी एक की ज़रूरत होती है:

  • ट्रायल की संख्या बढ़ाना और संसाधन की लागत बढ़ाना.
  • संसाधनों को अन्य डाइमेंशन में से किसी एक में सेव करने का तरीका ढूंढा जा रहा है.

हर एक समस्या की अपनी अलग पहचान होती है और कंप्यूटेशनल कंस्ट्रेंट काम करते हैं, इसलिए इन तीन लक्ष्यों के लिए संसाधन तय करने के लिए, डोमेन की कुछ जानकारी होनी ज़रूरी है. स्टडी करने के बाद, हमेशा यह समझने की कोशिश करें कि स्टडी के लिए परेशान करने वाले हाइपरपैरामीटर का काम ठीक से किया गया है या नहीं. इसका मतलब है कि स्टडी ने इतनी बड़ी जगह खोजी कि वैज्ञानिक हाइपरपैरामीटर की सही तरीके से तुलना की जा सके (जैसा कि अगले सेक्शन में ज़्यादा जानकारी दी गई है).

प्रयोग के नतीजों से जानकारी पाना

सुझाव: हर ग्रुप के प्रयोगों का मूल वैज्ञानिक लक्ष्य हासिल करने के अलावा, सवालों से जुड़ी एक और चेकलिस्ट बनाएं. अगर आपको समस्याएं मिलती हैं, तो प्रयोगों में बदलाव करके उन्हें फिर से चलाएं.

आखिर में, प्रयोगों के हर ग्रुप का एक खास लक्ष्य होता है. आपको उन लक्ष्यों का आकलन करने के लिए प्रयोगों से मिले आंकड़ों का आकलन करना चाहिए. हालांकि, अगर आपसे सही सवाल पूछे जाते हैं, तो अक्सर दिए गए प्रयोगों को उनके सही लक्ष्य की ओर बढ़ने से पहले ही ठीक करने के लिए कहा जा सकता है. अगर ये सवाल नहीं पूछे जाते हैं, तो आपको गलत नतीजे मिल सकते हैं.

प्रयोग चलाना महंगा हो सकता है, इसलिए आपको प्रयोगों के हर ग्रुप से दूसरी अहम जानकारी भी निकालनी चाहिए. भले ही, ये अहम जानकारी मौजूदा लक्ष्य के लिए तुरंत काम की न हों.

प्रयोगों के किसी खास सेट का विश्लेषण करने से पहले, खुद से नीचे दिए गए सवाल पूछें:

  • क्या खोज स्पेस इतना बड़ा है? अगर किसी स्टडी का सबसे सही पॉइंट, खोज स्पेस की सीमा के एक या उससे ज़्यादा डाइमेंशन में है, तो हो सकता है कि खोज का दायरा इतना ज़्यादा न हो. इस मामले में, ज़्यादा जानकारी वाली खोज स्पेस का इस्तेमाल करके एक और स्टडी करें.
  • क्या आपने खोज के लिए इस्तेमाल होने वाले पॉइंट से, उतने सैंपल चुने हैं जितने चाहिए? अगर ऐसा नहीं है, तो ज़्यादा पॉइंट चलाएं या ट्यूनिंग लक्ष्यों में कम महत्वाकांक्षी रहें.
  • हर स्टडी में मुफ़्त में आज़माने की अवधि का कितना हिस्सा ठीक से काम नहीं करता? यानी, किन ट्रायल से अलग-अलग नतीजे मिलते हैं, उन्हें नुकसान होता है या बिल्कुल भी नहीं चलता, क्योंकि वे किसी इंप्लिसिट कंस्ट्रेंट का उल्लंघन करते हैं? जब किसी स्टडी में पॉइंट की बहुत बड़ी गड़बड़ी करना संभव नहीं होता, तो ऐसी जगहों को सैंपल के तौर पर इस्तेमाल करने से बचने के लिए, खोज स्पेस में बदलाव करें. इसके लिए कभी-कभी खोज की जगह को फिर से पैरामीटर बनाना पड़ता है. कुछ मामलों में, बहुत बड़ी संख्या में परेशान करने वाले पॉइंट ट्रेनिंग कोड में गड़बड़ी की जानकारी देते हैं.
  • क्या इस मॉडल में ऑप्टिमाइज़ेशन से जुड़ी समस्याएं दिख रही हैं?
  • सबसे अच्छे ट्रायल की ट्रेनिंग कर्व से क्या सीखा जा सकता है? उदाहरण के लिए, क्या सबसे अच्छे ट्रायल में ट्रेनिंग कर्व की समस्या को हल किया जा सकता है?

अगर ज़रूरी हो, तो पहले पूछे गए सवालों के जवाब के आधार पर, सबसे हाल के स्टडी या स्टडी ग्रुप को बेहतर बनाएं. ऐसा करके, खोज स्पेस और/या ज़्यादा ट्रायल के नमूने देखे जा सकते हैं या सुधार के लिए कोई अन्य कार्रवाई की जा सकती है.

पिछले सवालों के जवाब देने के बाद, आपके पास अपने मूल लक्ष्य को लेकर दिए गए सबूतों का आकलन करने का विकल्प है. उदाहरण के लिए, यह आकलन करना कि बदलाव उपयोगी है या नहीं.

अगर इससे पता चलता है कि सबसे अच्छा सैंपल, उसकी सीमा के करीब है, तो खोज स्पेस संदिग्ध होता है. अगर आप उस दिशा में खोज सीमा को बढ़ाते हैं, तो आपको यह तरीका ज़्यादा दिख सकता है.

खोज स्पेस की सीमाएं देखने के लिए, हमारा सुझाव है कि आप पूरे हो चुके ट्रायल प्लॉट करें, जिन्हें हम बेसिक हाइपरपैरामीटर ऐक्सिस प्लॉट कहते हैं. हालांकि, हम पुष्टि करने के मकसद की वैल्यू बनाम हाइपरपैरामीटर के लिए (उदाहरण के लिए, लर्निंग रेट) प्लॉट करते हैं. प्लॉट पर मौजूद हर बिंदु एक ही परीक्षण से जुड़ा होता है.

आम तौर पर, हर ट्रायल के लिए पुष्टि करने का मकसद, ट्रेनिंग के दौरान हासिल की गई वैल्यू होना चाहिए.

पुष्टि के लिए सेट (y-ऐक्सिस) बनाम गड़बड़ी की सबसे ज़्यादा दर (x-ऐक्सिस) पर ग्राफ़ में गड़बड़ी की दर दिखाने वाला ग्राफ़, जिसमें खोज के लिए इस्तेमाल किए गए स्पेस की सीमाओं को दिखाया गया है. इस ग्राफ़ में, सबसे अच्छे ट्रायल (सबसे कम
 गड़बड़ी की दरें), खोज के लिए बची जगह के पास होते हैं. यहां सबसे ज़्यादा लर्निंग रेट है. पुष्टि करने के सेट (y-एक्सिस) बनाम बनाम सबसे ज़्यादा लर्निंग रेट (x-ऐक्सिस) पर गड़बड़ी की दर का ग्राफ़, जो खोज के लिए इस्तेमाल हुए स्पेस की सीमाओं को दिखाता है. इस ग्राफ़ में, सबसे ज़्यादा ट्रायल (सबसे कम
 गड़बड़ी की दरें) खोज स्पेस के बीच में होती हैं, जहां पीक लर्निंग रेट 0.001 है, न कि जब पीक लर्निंग रेट 0.00001 या 0.1 हो.

पहली इमेज: सर्च स्पेस की खराब सीमाओं और स्वीकार किए जाने वाले खोज स्पेस की सीमाओं के उदाहरण.

पहली इमेज में दिखाए गए प्लॉट, शुरुआती लर्निंग रेट में गड़बड़ी की दर (कम बेहतर) दिखाते हैं. अगर सबसे अच्छे बिंदु किसी खोज स्पेस के किनारे पर इकट्ठा होते हैं (कुछ डाइमेंशन में), तो आपको खोज के लिए जगह की सीमाओं को बढ़ाना पड़ सकता है. ऐसा तब तक करें, जब तक कि सबसे अच्छा पॉइंट उस सीमा के करीब न हो.

अक्सर, स्टडी में ऐसे "अव्यवहारिक" ट्रायल शामिल होते हैं जो गलत नतीजे देते हैं या बहुत ही खराब नतीजे देते हैं (पहली इमेज में लाल X के निशान लगाए गए हैं). अगर मुफ़्त में आज़माने की दर, थ्रेशोल्ड के हिसाब से कुछ वैल्यू से ज़्यादा नहीं होती है, तो हो सकता है कि सभी ट्रायल मुमकिन न हों. अगर उस क्षेत्र में सबसे अच्छा परफ़ॉर्म करने वाले ट्रायल की दरें हों, तो मॉडल को स्टेबिलिटी से जुड़ी समस्याओं का सामना करना पड़ सकता है. इसकी वजह से, सीखने की दर ज़्यादा नहीं हो सकती.

सर्च स्पेस में ज़रूरी जगहों का सैंपल नहीं बनाना

आम तौर पर, अगर खोज के लिए मौजूद कॉन्टेंट को सैंपल के तौर पर देखा जाता है, तो उसे समझना काफ़ी मुश्किल हो सकता है. ⇨ ज़्यादा ट्रायल चलाने से बेहतर है कि आप ज़्यादा ट्रायल चलाएं.

हालांकि, यह जानना बहुत मुश्किल है कि आपने सैंपल के तौर पर कितनी सैंपलिंग की है. इसलिए, हमारा सुझाव है कि:

  • सैंपलिंग से यह पता चलता है कि आप कितना खर्च कर सकते हैं.
  • अपने कॉन्फ़िडेंस के दायरे को अलग-अलग हायपरपैरामीटर ऐक्सिस प्लॉट पर बार-बार देखना और यह समझने की कोशिश करना कि खोज स्पेस के "अच्छा" क्षेत्र में कितने पॉइंट हैं.

ट्रेनिंग कर्व की जांच करें

खास जानकारी: लॉस कर्व की जांच करना, काम न करने वाले आम मोड की पहचान करने का एक आसान तरीका है. इससे आपको संभावित कार्रवाइयों को प्राथमिकता देने में मदद मिलती है.

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

लॉस कर्व की जांच करते समय, इन सवालों पर फ़ोकस करें:

  • क्या मुफ़्त में आज़माने की सुविधा में, समस्या को ठीक करने का कोई तरीका दिखाया गया है? ट्रेनिंग के दौरान पुष्टि करते समय गड़बड़ियां बढ़ने की वजह से, ज़रूरत से ज़्यादा ओवरफ़िट होने की समस्या होती है. प्रयोग वाली सेटिंग में, जहां वैज्ञानिक हाइपरपैरामीटर की हर सेटिंग के लिए "सबसे अच्छा" ट्रायल चुनकर, समस्या की जानकारी देने वाले हाइपरपैरामीटर को ऑप्टिमाइज़ किया जाता है, उनकी तुलना ऐसे वैज्ञानिक हाइपरपैरामीटर की सेटिंग से जुड़े हर सबसे अच्छे ट्रायल में समस्या की जांच करें जिनकी आप तुलना कर रहे हैं. अगर किसी ऐप्लिकेशन को बिना किसी शुल्क के आज़माने के कुछ मामले दिखते हैं, तो इनमें से कोई एक काम करें:

    • प्रयोग को फिर से शुरू करने की अन्य तकनीकों का इस्तेमाल करके, प्रयोग को फिर से चलाएं
    • वैज्ञानिक हाइपरपैरामीटर के मानों की तुलना करने से पहले मौजूदा नियमित पैरामीटर डालें. अगर वैज्ञानिक हाइपरपैरामीटर में रेगुलराइज़ेशन पैरामीटर शामिल हैं, तो यह लागू नहीं हो सकता, इसलिए अगर है तो उन रेगुलराइज़ेशन पैरामीटर की कम खूबियों वाली सेटिंग की वजह से समस्या ओवरफ़िट हो जाती है, तो हैरानी नहीं होगी.

    आम तौर पर, सामान्य तरीकों का इस्तेमाल करके, ज़रूरत से ज़्यादा फ़िट होने वाले डिवाइसों की संख्या कम करना आसान होता है. इनमें, कम से कम कोड की जटिलता या अतिरिक्त कंप्यूटेशन की तकनीक शामिल होती है (उदाहरण के लिए, ड्रॉप आउटाइज़ेशन, लेबल स्मूदिंग, वेट डिकेज़). इसलिए, आम तौर पर प्रयोगों के अगले राउंड में इनमें से एक या ज़्यादा को जोड़ना ज़्यादा आसान होता है. उदाहरण के लिए, अगर वैज्ञानिक हाइपरपैरामीटर "छिपी हुई लेयर की संख्या" है और छिपी हुई लेयर की सबसे बड़ी संख्या का इस्तेमाल करने वाला सबसे अच्छा ट्रायल समस्या को हल करने में समस्या दिखाता है, तो हमारा सुझाव है कि कम संख्या में छिपे हुए लेयर को चुनने के बजाय, फिर से जांच करें.

    भले ही, इनमें से कोई भी "सबसे अच्छा" ट्रायल, समस्या को ठीक करने के हिसाब से न दिखाया गया हो, फिर भी किसी ट्रायल में ऐसा होने में समस्या आ सकती है. सबसे अच्छे ट्रायल को चुनने से, ऐसे कॉन्फ़िगरेशन को रोक दिया जाता है जो समस्या की ज़रूरत के हिसाब से ज़्यादा सही होते हैं और उन पर काम नहीं करते. दूसरे शब्दों में, सबसे अच्छे ट्रायल को चुनने से कॉन्फ़िगरेशन को बेहतर बनाया जा सकता है. {0/}जो भी चीज़ ट्रेनिंग को और खराब करती है वह एक रेगुलराइज़र की तरह काम करती है. भले ही, उसका मकसद यह न हो. उदाहरण के लिए, छोटी लर्निंग रेट चुनने पर, ट्रेनिंग की प्रोसेस सामान्य हो सकती है. इसके लिए, ऑप्टिमाइज़ेशन प्रोसेस इस्तेमाल करनी होगी. हालांकि, आम तौर पर हम लर्निंग रेट को नहीं चुनना चाहते. ध्यान दें कि वैज्ञानिक हाइपरपैरामीटर के हर सेटिंग के "सबसे अच्छा" ट्रायल को इस तरह चुना जा सकता है कि वह कुछ वैज्ञानिक या कठिन हाइपरपैरामीटर के "खराब" मानों का समर्थन करे.

  • क्या ट्रेनिंग में {0/} चरण या चरण के दौरान पुष्टि में गड़बड़ी होती है? अगर ऐसा है, तो इन दोनों वजहों से रुकावट आ सकती है:

    • वैज्ञानिक हाइपरपैरामीटर के अलग-अलग मानों की तुलना करने की आपकी क्षमता. ऐसा इसलिए, क्योंकि हर ट्रायल बिना किसी क्रम के "लकी" या "असुविधा" पर खत्म होता है.
    • प्रोडक्शन में सबसे अच्छे ट्रायल के नतीजे को फिर से बनाने की आपकी क्षमता. ऐसा इसलिए है, क्योंकि हो सकता है कि प्रोडक्शन मॉडल की स्टडी पर भी "लकी" चरण पूरा न हो.

    इस तरह के बदलाव करने की सबसे आम वजहें ये हो सकती हैं:

    • हर बैच के लिए ट्रेनिंग सेट से, बिना किसी क्रम के चुने गए उदाहरणों की वजह से बैच वैरियंस मौजूद है.
    • पुष्टि के छोटे सेट
    • बहुत देर से तैयार होने वाली लर्निंग रेट का इस्तेमाल करना.

    इलाज के ये तरीके हो सकते हैं:

    • बैच का साइज़ बढ़ाना.
    • ज़्यादा पुष्टि डेटा मिल रहा है.
    • लर्निंग रेट के नुकसान का इस्तेमाल करना.
    • Polyak औसत का इस्तेमाल कर रहा है.
  • क्या मुफ़्त में आज़माने की सुविधा, अब खत्म होने वाली है? अगर ऐसा है, तो आपके पास "कंप्यूट" के तहत लागू होने वाले नियमों का पालन करने का विकल्प है. साथ ही, इससे आपको ट्रेनिंग के चरणों की संख्या में बढ़ोतरी या लर्निंग रेट के शेड्यूल में बदलाव करने में भी मदद मिल सकती है.

  • क्या ट्रेनिंग और पुष्टि के लिए सेट किए गए कामों से, आखिरी चरण पूरा होने से काफ़ी समय पहले सच किया गया? अगर ऐसा है, तो इससे पता चलता है कि आपके पास "कंप्यूट-बाउंड" व्यवस्था नहीं है. साथ ही, यह भी हो सकता है कि आप ट्रेनिंग के चरणों को कम कर सकें.

इस सूची से आगे, हार के वक्र की जांच करके कई अतिरिक्त व्यवहार से पता चल सकता है. उदाहरण के लिए, ट्रेनिंग के दौरान ट्रेनिंग में हुई गिरावट का मतलब आम तौर पर, ट्रेनिंग पाइपलाइन में किसी गड़बड़ी को दिखाता है.

आइसोलेशन प्लॉट के साथ यह पता लगाना कि कोई बदलाव कारगर है या नहीं

आइसोलेटिंग प्लॉट, जो ImageNet पर ट्रेनिंग वाले ResNet-50 के लिए, वज़न के नुकसान की सबसे अच्छी वैल्यू की जांच करता है. इस मामले में,
          पुष्टि के लिए सबसे कम गड़बड़ी की दर तब होती है, जब वज़न में कमी
          ~0.00005 हो.

दूसरी इमेज: आइसोलेशन प्लॉट, जो इमेज नेट पर ट्रेनिंग वाले ResNet-50 के लिए, सबसे अच्छे मान की जांच करता है.

 

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

एक आइसोलेशन प्लॉट, वैज्ञानिक हाइपरपैरामीटर के अलग-अलग मानों के बीच सेब-से-सेब की तुलना करना आसान बनाता है. उदाहरण के लिए, चित्र 2 में मौजूद आइसोलेशन प्लॉट में वज़न के नुकसान के बारे में बताया गया है, जो ImageNet पर प्रशिक्षित किए गए ResNet-50 के खास कॉन्फ़िगरेशन के लिए सबसे अच्छी पुष्टि देता है.

अगर लक्ष्य यह तय करना है कि वज़न का क्षरण बिल्कुल भी शामिल करना है या नहीं, तो इस प्लॉट के सबसे अच्छे बिंदु की तुलना वज़न क्षरण की बेसलाइन से करें. सटीक तुलना के लिए, बेसलाइन की लर्निंग रेट भी बराबर होनी चाहिए.

जब रैनोड सर्च से डेटा जनरेट होता है और किसी आइसोलेशन प्लॉट के लिए लगातार हाइपरपैरामीटर के बारे में सोचा जाता है, तो बेसिक हाइपरपैरामीटर ऐक्सिस प्लॉट के x-ऐक्सिस वैल्यू को बकेट करके और बकेट में तय किए गए हर वर्टिकल स्लाइस पर सबसे अच्छा ट्रायल करके, इसका अनुमान लगाया जा सकता है.

सामान्य रूप से काम आने वाले प्लॉट को ऑटोमेट करना

प्लॉट जनरेट करने में जितनी ज़्यादा मेहनत होगी, आपको उतने ही कम रिसॉर्स को देखना चाहिए. इसलिए, हमारा सुझाव है कि आप अपना इन्फ़्रास्ट्रक्चर सेट अप करें, ताकि आपके प्रॉडक्ट के लिए ज़्यादा से ज़्यादा प्लॉट अपने-आप बन सकें. कम से कम, हम उन सभी हाइपरपैरामीटर के लिए बुनियादी हाइपरपैरामीटर एक्सिस प्लॉट अपने-आप जनरेट करने की सलाह देते हैं, जिन्हें आप किसी प्रयोग में बदलते हैं.

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

आपके पास कई और उपयोगी प्लॉट और विज़ुअलाइज़ेशन जोड़ने का विकल्प होता है. Geoffrey Hinton की व्याख्या करने के लिए:

हर बार जब आप कुछ नया प्लॉट करते हैं, तो आप कुछ नया सीखते हैं.

यह तय करना कि क्या उम्मीदवार के बदलाव को अपनाना है या

खास जानकारी: अपने मॉडल या ट्रेनिंग प्रोसेस में बदलाव करना है या नया हाइपरपैरामीटर कॉन्फ़िगरेशन स्वीकार करना है, यह तय करते समय अपने नतीजों में वैरिएशन के अलग-अलग सोर्स देखें.

जब मॉडल को बेहतर बनाने की कोशिश की जाती है, तो खास तौर पर बदलाव करने वाले किसी खास बदलाव से, अपडेट न होने वाले कॉन्फ़िगरेशन की तुलना में बेहतर पुष्टि मिलने में गड़बड़ी हो सकती है. हालांकि, प्रयोग को दोहराने से कोई फ़ायदा नहीं होता. अनौपचारिक तौर पर, अलग-अलग नतीजों के सबसे अहम स्रोतों को इन बड़ी कैटगरी में बांटा जा सकता है:

  • ट्रेनिंग प्रोसेस वैरियंस, ट्रेनिंग वैरियंस या ट्रायल वैरियंस: ट्रेनिंग के बीच के फ़र्क़, जो एक जैसे हाइपरपैरामीटर का इस्तेमाल करते हैं और अलग-अलग तरह के बीज. उदाहरण के लिए, किसी भी क्रम में शुरू करना, डेटा शफ़ल करना, ड्रॉप-आउट मास्क, डेटा को बेहतर बनाने का तरीका, और पैरलल अंकगणितीय कार्रवाइयों के क्रम, ये सभी ट्रायल वैरियंस के स्रोत हैं.
  • हाइपरपैरामीटर सर्च वैरिएंस या स्टडी वैरिएंस: नतीजों में वैरिएशन की वजह से हाइपरपैरामीटर का चुनाव करना. उदाहरण के लिए, हो सकता है कि आप किसी खास खोज स्पेस के लिए एक ही प्रयोग चलाएं और आखिर में, quasi-random search के लिए दो अलग-अलग सीड रखें और आखिर में अलग-अलग हाइपरपैरामीटर वैल्यू चुनें.
  • डेटा कलेक्शन और सैंपलिंग वैरियंस: ट्रेनिंग डेटा की पुष्टि और डेटा जनरेट करने की प्रोसेस की वजह से, किसी भी तरह के रैंडम वर्शन के आधार पर, ट्रेनिंग, पुष्टि, और टेस्ट डेटा में फ़र्क़ होता है.

सही, आप फटाफट आंकड़ों के परीक्षण का इस्तेमाल करके सीमित पुष्टि सेट पर अनुमानित पुष्टि की दर की तुलना कर सकते हैं. हालांकि, हो सकता है कि सिर्फ़ ट्रायल वैरियंस होने पर, अलग-अलग ट्रेनिंग वाले दो मॉडल के बीच आंकड़ों के हिसाब से अहम नतीजे मिल जाएं, जो एक जैसी हाइपरपैरामीटर सेटिंग का इस्तेमाल करते हैं.

हम स्टडी वैरियंस को लेकर काफ़ी सोच रहे हैं. इसलिए, हम इस बात पर सोच रहे हैं कि किसी नतीजे पर पहुंचने के लिए, हाइपरपैरामीटर के लेवल से किसी खास पॉइंट के बारे में ज़्यादा जानकारी ली जानी चाहिए. स्टडी वैरियंस, ट्रायल की संख्या और खोज स्पेस के आधार पर तय होता है. हमने ऐसे मामले देखे हैं जहां स्टडी वैरिएंस, ट्रायल वैरियंस से ज़्यादा बड़ा है और जिन मामलों में यह बहुत छोटा है. इसलिए, किसी उम्मीदवार के बदलाव को अपनाने से पहले, रन-टू-रन ट्रायल वैरियंस की पहचान करने के लिए, सबसे अच्छा N बार चलाने पर विचार करें. आम तौर पर, पाइपलाइन में बड़े बदलाव करने के बाद, ट्रायल वैरियंस को फिर से तय करके, ऐसा किया जा सकता है. हालांकि, कुछ मामलों में आपको नए अनुमान की ज़रूरत भी पड़ सकती है. अन्य ऐप्लिकेशन में, ट्रायल वर्शन की नकल करना बहुत महंगा है.

हालांकि, आप सिर्फ़ उन बदलावों को अपनाना चाहते हैं (जिसमें नए हाइपरपैरामीटर कॉन्फ़िगरेशन शामिल हैं), जो असल में सुधार करते हैं. हालांकि, यह पक्का करने के लिए कि किसी बदलाव से मदद नहीं मिलेगी, लेकिन सही जवाब देने से भी बदलाव होगा. इसलिए, अगर कोई नया हाइपरपैरामीटर पॉइंट (या किसी दूसरे बदलाव को) बेसलाइन से बेहतर नतीजे दिखाता है (नए पॉइंट और बेसलाइन, दोनों के फिर से किए जाने वाले अभ्यास को ध्यान में रखते हुए), तो आपको आने वाले समय की तुलना के लिए इसे नए बेसलाइन के तौर पर अपनाना चाहिए. हालांकि, हमारा सुझाव है कि आप सिर्फ़ ऐसे बदलावों को अपनाएं जो ज़्यादा मुश्किलों से ज़्यादा हों.

एक्सप्लोरेशन खत्म होने के बाद

खास जानकारी: बेज़ियन ऑप्टिमाइज़ेशन टूल एक बेहतरीन विकल्प है. इसका इस्तेमाल तब करें, जब आप अच्छी तरह से खोज करने वाले स्पेस खोज रहे हों और यह तय कर चुके हों कि किन हाइपरपैरामीटर को ट्यून करना ज़रूरी है.

आखिर में, आपकी प्राथमिकताएं इस पर निर्भर हो जाएंगी कि ट्यूनिंग से जुड़ी किस तरह की समस्या आ रही है. इससे, लॉन्च करने से जुड़ा सबसे बेहतर कॉन्फ़िगरेशन तैयार करने में मदद मिलेगी. उस समय, एक ऐसा सुंदर खोज स्थान होना चाहिए जहां आसानी से सबसे अच्छे पाए गए ट्रायल के आस-पास का स्थानीय क्षेत्र शामिल हो और जिसका काफ़ी नमूना लिया गया हो. आपके एक्सप्लोरेशन के काम को ट्यून करने से जुड़े सबसे ज़रूरी हाइपरपैरामीटर के बारे में पता चलना चाहिए. साथ ही, उनकी संवेदनशील समझ भी होनी चाहिए. आप इनका इस्तेमाल, अपने-आप होने वाली ट्यूनिंग के लिए फ़ाइनल सर्च के लिए, स्पेस बनाने के लिए कर सकते हैं. इसके लिए, बड़े बजट का इस्तेमाल करना होगा.

अब आपको ट्यूनिंग से जुड़ी समस्या के लिए अहम जानकारी पाने में कोई समस्या नहीं है. इसलिए, क्वासी-रैंडम खोज के कई फ़ायदे अब लागू नहीं होंगे. इसलिए, सबसे बेहतर हाइपरपैरामीटर कॉन्फ़िगरेशन को अपने-आप ढूंढने के लिए, आपको बेज़ियन ऑप्टिमाइज़ेशन टूल का इस्तेमाल करना चाहिए. ओपन सोर्स Vizier, ML मॉडल को बेहतर बनाने के लिए कई तरह के सटीक एल्गोरिदम लागू करता है. इनमें बेज़ियन ऑप्टिमाइज़ेशन एल्गोरिदम भी शामिल हैं.

मान लीजिए कि खोज स्पेस में अलग-अलग अंकों का एक गैर-मामूली वॉल्यूम शामिल है, जिसका मतलब है कि ऐसे पॉइंट जिनसे NaN की ट्रेनिंग में नुकसान होता है या आपकी ट्रेनिंग के दौरान ऐसी स्टैंडर्ड वैल्यू कम होती हैं जो औसत से खराब होती हैं. इस मामले में, हम ब्लैक-बॉक्स ऑप्टिमाइज़ेशन टूल का इस्तेमाल करने का सुझाव देते हैं, जो इस तरह के ट्रायल को सही तरीके से हैंडल करते हैं. (इस समस्या को हल करने का बेहतरीन तरीका जानने के लिए, बायसियन ऑप्टिमाइज़ेशन, अज्ञात कंस्ट्रेंट का जवाब देखें.) ओपन-सोर्स Vizier में, ट्रायल को 'सही नहीं' के तौर पर मार्क करके, अलग-अलग पॉइंट को मार्क करने की सुविधा है. हालांकि, हो सकता है कि यह Gelbart et al से हमारे पसंदीदा तरीके का इस्तेमाल न करे. यह इस बात पर निर्भर करता है कि उसे कैसे कॉन्फ़िगर किया गया है.

एक्सप्लोरेशन खत्म होने के बाद, टेस्ट सेट की परफ़ॉर्मेंस की जांच करें. असल में, पुष्टि करने के सेट को भी ट्रेनिंग सेट में फ़ोल्ड किया जा सकता है. साथ ही, बेज़ियन ऑप्टिमाइज़ेशन से मिले कॉन्फ़िगरेशन को फिर से ट्रेनिंग दी जा सकती है. हालांकि, यह तब ही ठीक होगा, जब आगे से किसी खास वर्कलोड के लिए इसे लॉन्च न किया जाए (उदाहरण के लिए, एक बार दिखाई जाने वाली Kaggle प्रतियोगिता).