अक्सर पूछे जाने वाले सवाल

ऑप्टिमाइज़ेशन की गड़बड़ियों को कैसे डीबग और कम किया जा सकता है?

जवाब: अगर मॉडल को ऑप्टिमाइज़ेशन में समस्या आ रही है, तो अन्य चीज़ों को आज़माने से पहले उन्हें ठीक करना ज़रूरी है. ट्रेनिंग की असफलताओं का पता लगाना और उन्हें ठीक करना, रिसर्च का एक अहम हिस्सा है.

Standard WideResNet की तुलना Stride 1x1 WideResNet से करने वाला ग्राफ़.
            y-ऐक्सिस, गड़बड़ी की दर को टेस्ट करता है और x-ऐक्सिस, बेस लर्निंग रेट होता है.
            बेस लर्निंग रेट बढ़ने के साथ-साथ, Standard WideResNet की जांच में गड़बड़ी की दर धीरे-धीरे कम होती जाती है. वहीं दूसरी ओर, बेस लर्निंग रेट बढ़ने पर Stride WideResNet में काफ़ी उतार-चढ़ाव आते हैं.
चौथी इमेज. WideResnet की मदद से एक ही रेज़िड्यूअल ब्लॉक (2x2 -> 1x1) में स्ट्राइड को बदलने से, ट्रेनिंग को नुकसान पहुंच सकता है.

 

इमेज 4 के बारे में इन बातों पर ध्यान दें:

  • चरणों में बदलाव करने से, सीखने की कम दर पर परफ़ॉर्मेंस पर कोई बुरा असर नहीं पड़ता.
  • बदलती रहने की वजह से, हाई लर्निंग रेट अब अच्छी तरह से ट्रेनिंग नहीं दे पा रहे हैं.
  • लर्निंग रेट के 1,000 चरणों को वॉर्मअप करने से, हिलने-डुलने की इस दर को ठीक किया जा सकता है. इससे, 0.1 की सबसे ज़्यादा लर्निंग रेट पर स्टेबल ट्रेनिंग की सुविधा मिलती है.

यह पता लगाना कि किन कामों के लिए बार-बार और काम करने की ज़रूरत है

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

  • ट्रेनिंग शुरू करते समय या शुरुआत में बार-बार समस्या होना.
  • ट्रेनिंग के बीच में अचानक अस्थिरता.

स्थिरता की समस्याओं का पता लगाने के लिए, एक व्यवस्थित तरीका अपनाया जा सकता है. इसके लिए, ये काम करें:

  • सीखने की दर को स्वीप करें और सबसे अच्छी सीखने की दर पाएं*.
  • सीखने की दर* से ठीक ऊपर के लिए, ट्रेनिंग में होने वाले नुकसान के कर्व प्लॉट करें.
  • अगर सीखने की दर > lr* पर ऐप्लिकेशन को किसी भी तरह के नुकसान का पता चलता है (ट्रेनिंग के दौरान नुकसान कम नहीं होता है), तो अस्थिरता को ठीक करने से आम तौर पर ट्रेनिंग बेहतर हो जाती है.

ट्रेनिंग के दौरान, पूरी तरह से खोने वाले ग्रेडिएंट का L2 नॉर्म लॉग करें, क्योंकि बाहरी वैल्यू की वजह से ट्रेनिंग के बीच में नकली अस्थिरता हो सकती है. इससे यह पता चल सकता है कि क्लिप के ग्रेडिएंट या वेट अपडेट कितने असरदार तरीके से किए जाते हैं.

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

इसकी जांच करने के लिए, lr = 2 * current best का इस्तेमाल करके 500 चरणों को शॉर्ट फ़ॉर्म में शामिल किया जा सकता है. हालांकि, हर चरण का आकलन किया जा सकता है.

दो ग्राफ़: दोनों ग्राफ़ के लिए x-ऐक्सिस, ग्लोबल चरण है और दोनों ग्राफ़ के लिए, y-ऐक्सिस, ट्रेन लॉस है. दोनों ग्राफ़, (2,2) के कन्वर्ज़न स्ट्राइड की तुलना (1,1) के कन्वर्ज़न स्ट्राइड से करते हैं. पहले ग्राफ़ में, हर 1,000 चरणों पर आकलन दिखाया जाता है. इस पहले ग्राफ़ में, दोनों कन्वर्ज़न स्ट्राइड में धीरे-धीरे एक स्थिर गिरावट दिखाई गई है. इसमें ज़्यादा वैश्विक चरणों को दिखाया गया है. दूसरे ग्राफ़ में, शुरुआती 25 चरणों में बार-बार किए गए आकलन दिखाए गए हैं. इस दूसरे ग्राफ़ में, कन्वर्ज़न स्ट्राइड ऑफ़ (2,2) में दिखाया गया है कि ट्रेन से होने वाली गिरावट में, पहले कुछ ग्लोबल ही चरणों में बहुत सारे उतार-चढ़ाव आए हैं. इसके बाद, रैंक में 20 ग्लोबल कदमों की संख्या लगातार कम हो रही है. 'कन्वर्ज़न स्ट्राइड' ऑफ़ (1,1) में दिखाया गया है कि दुनिया भर के पहले चरण के बाद भी ट्रेनों के घटने की संख्या लगातार कम है.
पांचवीं इमेज. ट्रेनिंग की शुरुआत में, बार-बार किए जाने वाले आकलन की अहमियत. यह तब काम आता है, जब आपको लगता है कि मॉडल को शुरुआती ट्रेनिंग में बार-बार आने वाली समस्या का सामना करना पड़ रहा है.

 

आम तौर पर होने वाली अस्थिरता के पैटर्न को ठीक करने के बारे में जानकारी

बार-बार होने वाले ऐप्लिकेशन के अक्सर इस्तेमाल न होने वाले पैटर्न को ठीक करने के लिए, यहां दिया गया तरीका अपनाएं:

  • लर्निंग रेट वार्मअप लागू करें. यह शुरुआती ट्रेनिंग के बार-बार होने वाले झटकों के लिए सबसे अच्छा है.
  • ग्रेडिएंट क्लिपिंग लागू करें. यह शुरुआत और ट्रेन के बीच में आने वाले दोनों के लिए अच्छा है. साथ ही, इससे कुछ खराब इनिशिएटिव को ठीक किया जा सकता है जो वॉर्मअप से नहीं होता.
  • कोई नया ऑप्टिमाइज़र आज़माएं. कभी-कभी एडम अस्थिरता को संभाल सकता है जो मोमेंटम नहीं कर सकता. यह रिसर्च का एक सक्रिय क्षेत्र है.
  • पक्का करें कि आप अपने मॉडल आर्किटेक्चर के लिए, सबसे सही तरीक़ों और शुरू करने के सबसे सही तरीकों का इस्तेमाल कर रहे हैं. उदाहरण दिए गए हैं. अगर मौजूदा कनेक्शन में पहले से कनेक्शन नहीं हैं, तो सामान्य कनेक्शन और नॉर्मलाइज़ेशन जोड़ें.
  • अवशिष्ट से पहले, आखिरी ऑपरेशन के तौर पर सामान्य बनाएं. उदाहरण के लिए: x + Norm(f(x)). ध्यान दें कि Norm(x + f(x)) से समस्याएं हो सकती हैं.
  • बचा हुआ ब्रांच 0 से शुरू करने की कोशिश करें. (देखें ReZero महज़ ज़रूरत है: बड़े पैमाने पर तेज़ी से बदलाव करना.)
  • सीखने की दर कम करें. यह आखिरी उपाय है.

सीखने की दर वॉर्मअप

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

लर्निंग रेट वार्मअप कब लागू करना है

वैलिडेशन सेट (y-ऐक्सिस) के मुकाबले
            बेस लर्निंग रेट (x-ऐक्सिस) पर क्रॉस-एंट्रॉपी में होने वाले नुकसान का ग्राफ़. इस ग्राफ़ में, ऐसे छह टेस्ट दिखाए गए हैं जिन्हें टेस्ट किया जा सकता है और जिनमें से सभी की बेस लर्निंग रेट काफ़ी कम है. जैसे-जैसे सीखने की दर बढ़ती है वैसे-वैसे पुष्टि करने की प्रक्रिया में होने वाली कमी घट जाती है. इसके बाद, यह बढ़ोतरी शुरू होने से पहले ही कम हो जाती है. इस ग्राफ़ में, चार ऐसे टेस्ट भी दिखाए गए हैं जिन्हें आज़माया नहीं जा सकता. इनमें से बेस लर्निंग रेट काफ़ी ज़्यादा है.
इमेज 7a. ट्रेनिंग के बार-बार बदलने वाले मॉडल के लिए, हाइपर पैरामीटर ऐक्सिस प्लॉट का उदाहरण. सीखने की सबसे अच्छी दर आपके लिए सबसे बेहतर है. "असफल" ट्रायल में, NaN जनरेट होते हैं या ऐसे ज़्यादा वैल्यू होते हैं जिनमें कोई बदलाव नहीं होता.

 

ट्रेनिंग सेट (y-ऐक्सिस) बनाम ग्लोबल चरण (x-ऐक्सिस)
            पर क्रॉस-एंट्रॉपी में होने वाले नुकसान का ग्राफ़. दुनिया भर के शुरुआती चरणों में ही नुकसान बहुत तेज़ी से
            कम हो जाता है. फिर, करीब 10,000 कदमों के आस-पास नुकसान तेज़ी से बढ़ जाता है. इसके बाद,
            धीरे-धीरे नुकसान करीब 15,000 कदम कम हो जाता है.
इमेज 7b. लर्निंग रेट से ट्रेन किए गए मॉडल की ट्रेनिंग खोने पर, इसमें आपको समय के साथ कोई क्रैश या फ़्रीज़ होने जैसी समस्या दिखती है.

 

इमेज 7a में, हाइपर पैरामीटर ऐक्सिस प्लॉट दिखाया गया है, जो ऑप्टिमाइज़ेशन से जुड़े सिस्टम में गड़बड़ी का सामना कर रहे मॉडल को दिखाता है. ऐसा इसलिए है, क्योंकि लर्निंग रेट में किसी भी तरह के बदलाव नहीं किए जा सकते.

चित्र 7b में दिखाया गया है कि किस तरह इसकी दोबारा जाँच की जा सकती है. इसके लिए जिस मॉडल को सीखने की दर से ट्रेनिंग दी गई है वह इस पीक से 5 गुना या 10 गुना ज़्यादा है और इसके ट्रेनिंग लॉस का पता लगाया गया है. अगर उस प्लॉट में लगातार गिरावट के बाद नुकसान में अचानक बढ़ोतरी दिखती है (उदाहरण के लिए, ऊपर दी गई इमेज में ~10 हज़ार), तो हो सकता है कि मॉडल को ऑप्टिमाइज़ेशन के दौरान उतार-चढ़ाव न हो.

लर्निंग रेट वार्मअप लागू करने का तरीका

बेसिक लर्निंग रेट (x-ऐक्सिस) के मुकाबले चरण 76619 (y-ऐक्सिस) में, पुष्टि किए जाने की संख्या में हुई कमी का ग्राफ़. यह ग्राफ़, WMT14 EN-De पर लेयर नॉर्म ट्रांसफ़ॉर्मर पर चार अलग-अलग
            स्थितियों के नतीजों की तुलना करता है. लर्निंग
            रेट से, पुष्टि करने की दर में कमी आई और लर्निंग रेट कम हुआ.
आठवीं इमेज. ट्रेनिंग में होने वाली रुकावटों को दूर करने में, लर्निंग रेट वॉर्मअप का फ़ायदेमंद असर पड़ता है.

 

पिछली प्रोसेस का इस्तेमाल करके, unstable_base_learning_rate को वह सीखने की दर होने दें जिस पर मॉडल अस्थिर हो जाता है.

वॉर्मअप में लर्निंग रेट का शेड्यूल पहले से तैयार करना शामिल है. इससे, सीखने की दर 0 से स्टेबल base_learning_rate तक बढ़ जाती है. यह दर unstable_base_learning_rate से ज़्यादा के कम से कम एक क्रम में हो जाती है. डिफ़ॉल्ट रूप से, base_learning_rate का साइज़ 10 गुना unstable_base_learning_rate होगा. हालांकि, ध्यान दें कि 100x unstable_base_learning_rate जैसी चीज़ों के लिए, इस पूरी प्रोसेस को फिर से लागू किया जा सकता है. खास शेड्यूल:

  • वॉर्मअप_स्टेप की मदद से 0 से base_learning_rate तक रैंप अप करें.
  • post_warmup_step के लिए एक तय दर पर ट्रेनिंग करें.

आपका लक्ष्य है कि warmup_steps की ऐसी कम से कम संख्या का पता लगाया जाए जो आपको सबसे ज़्यादा लर्निंग रेट ऐक्सेस करने में मदद करती हैं. यह रेट unstable_base_learning_rate से काफ़ी ज़्यादा है. इसलिए, हर base_learning_rate के लिए, आपको warmup_steps और post_warmup_steps को ट्यून करना होगा. आम तौर पर, post_warmup_steps को 2*warmup_steps पर सेट करना बेहतर होता है.

वार्मअप को किसी मौजूदा डिके शेड्यूल से अलग तरीके से ट्यून किया जा सकता है. warmup_steps को तीव्रता के अलग-अलग क्रम में ले जाना चाहिए. उदाहरण के लिए, उदाहरण के तौर पर दी गई स्टडी, [10, 1000, 10,000, 100,000] को आज़मा सकती है. सबसे बड़ा सही पॉइंट, max_train_steps के 10% से ज़्यादा नहीं होना चाहिए.

base_learning_rate में ट्रेनिंग न देने वाला warmup_steps तय होने के बाद, उसे बेसलाइन मॉडल पर लागू किया जाना चाहिए. ज़रूरी है कि इस शेड्यूल से पहले, मौजूदा शेड्यूल जोड़ें. साथ ही, इस प्रयोग की बेसलाइन से तुलना करने के लिए, ऊपर बताए गए इष्टतम चेकपॉइंट चुनाव का इस्तेमाल करें. उदाहरण के लिए, अगर हमारे पास पहले 10,000 max_train_stepsऔर 1,000 चरणों के लिए warmup_steps किया गया था, तो नई ट्रेनिंग प्रोसेस कुल 11,000 चरणों तक चलनी चाहिए.

अगर अच्छी तरह काम करने वाली ट्रेनिंग के लिए लंबे warmup_steps ज़रूरी हैं (max_train_steps में से 5% से ज़्यादा), तो आपको max_train_steps को बढ़ाना पड़ सकता है.

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

ग्रेडिएंट क्लिपिंग

ग्रेड l2 मानक (y-ऐक्सिस) बनाम ग्लोबल चरण (x-ऐक्सिस) का ग्राफ़. दुनिया भर के शुरुआती चरणों में,
          'सामान्य' ग्रेडिएंट नॉर्म ट्रेनिंग में बहुत तेज़ी
          से बदलाव हुआ था. क्लिप के लिए तय किए गए थ्रेशोल्ड को बढ़ाने से, सीखने की दर
          कम हो गई और ट्रेनिंग धीमी हो गई. क्लिप बनाने के बेहतर थ्रेशोल्ड
          (सामान्य ग्रेडिएंट स्टैंडर्ड से ठीक ऊपर) से शुरुआती ट्रेनिंग स्थिर हो गई.
नौवीं इमेज. ट्रेनिंग की शुरुआती स्थिति को ठीक करने के लिए ग्रेडिएंट क्लिपिंग.

 

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

  • शुरुआती ट्रेनिंग में होने वाले उतार-चढ़ाव (शुरुआती तौर पर बड़े ग्रेडिएंट में)
  • ट्रेनिंग के बीच में अस्थिरता (ट्रेनिंग के बीच में अचानक ग्रेडिएंट में बढ़ोतरी होना).

कभी-कभी लंबी अवधि के वॉर्मअप पीरियड से कुछ गड़बड़ियां ठीक हो सकती हैं, जो क्लिपिंग से नहीं हो पातीं. ज़्यादा जानकारी के लिए, लर्निंग रेट वॉर्मअप देखें.

ャ वॉर्मअप के दौरान वीडियो क्लिप बनाने के बारे में आपका क्या ख्याल है?

क्लिप बनाने के लिए सबसे बेहतर थ्रेशोल्ड, "सामान्य" ग्रेडिएंट से थोड़ा ऊपर होते हैं.

ग्रेडिएंट क्लिपिंग कैसे की जा सकती है, इसका एक उदाहरण यहां दिया गया है:

  • अगर ग्रेडिएंट $\left | g \right |$, ग्रेडिएंट क्लिपिंग थ्रेशोल्ड $\lambda$ से ज़्यादा है, तो ${g}'= \lambda \times \frac{g}{\left | g \right |}$ जहां ${g}'$ नया ग्रेडिएंट है.

ट्रेनिंग के दौरान, अनलॉक नहीं किए गए ग्रेडिएंट नॉर्म को लॉग करें. डिफ़ॉल्ट रूप से, इन्हें जनरेट करें:

  • ग्रेडिएंट मानदंड बनाम चरण का प्लॉट
  • सभी चरणों पर इकट्ठा किए गए ग्रेडिएंट मानदंडों का हिस्टोग्राम

ग्रेडिएंट क्लिपिंग थ्रेशोल्ड के 90वें पर्सेंटाइल के हिसाब से, ग्रेडिएंट क्लिपिंग थ्रेशोल्ड चुनें. थ्रेशोल्ड वर्कलोड पर निर्भर करता है, लेकिन 90% से शुरू करना एक अच्छी शुरुआत है. अगर 90% काम नहीं करता, तो इस थ्रेशोल्ड को पूरा किया जा सकता है.

SheerID से दर्शकों को ध्यान में रखकर वीडियो बनाने के बारे में आपकी क्या राय है?

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

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

लर्निंग रेट और दूसरे ऑप्टिमाइज़ेशन पैरामीटर को हाइपर पैरामीटर क्यों कॉल करते हैं? वे किसी पिछले डिस्ट्रिब्यूशन के पैरामीटर नहीं हैं.

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

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

पुष्टि करने वाले सेट की परफ़ॉर्मेंस को सीधे बेहतर बनाने के लिए बैच के साइज़ को ट्यून क्यों नहीं किया जाना चाहिए?

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

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

इन सभी चीज़ों पर ध्यान देने के बाद, इस बात का कोई पुख्ता सबूत नहीं है कि बैच का साइज़, पुष्टि करने की प्रोसेस की सबसे अच्छी परफ़ॉर्मेंस पर असर डालता है. ज़्यादा जानकारी के लिए, Shallue et al. 2018 देखें.

सभी लोकप्रिय ऑप्टिमाइज़ेशन एल्गोरिदम के लिए अपडेट के नियम क्या हैं?

इस सेक्शन में कई लोकप्रिय ऑप्टिमाइज़ेशन एल्गोरिदम के लिए अपडेट के नियम दिए गए हैं.

स्टोकैस्टिक ग्रेडिएंट डिसेंट (एसजीडी)

\[\theta_{t+1} = \theta_{t} - \eta_t \nabla \mathcal{l}(\theta_t)\]

जहां $\eta_t$, चरण $t$ पर सीखने की दर है.

दिलचस्पी बढ़ाना

\[v_0 = 0\]

\[v_{t+1} = \gamma v_{t} + \nabla \mathcal{l}(\theta_t)\]

\[\theta_{t+1} = \theta_{t} - \eta_t v_{t+1}\]

जहां $t$ का चरण $\eta_t$ है और $\gamma$ मोमेंटम गुणांक है.

नेस्तेरोव

\[v_0 = 0\]

\[v_{t+1} = \gamma v_{t} + \nabla \mathcal{l}(\theta_t)\]

\[\theta_{t+1} = \theta_{t} - \eta_t ( \gamma v_{t+1} + \nabla \mathcal{l}(\theta_{t}) )\]

जहां $t$ का चरण $\eta_t$ है और $\gamma$ मोमेंटम गुणांक है.

RMSProp

\[v_0 = 1 \text{, } m_0 = 0\]

\[v_{t+1} = \rho v_{t} + (1 - \rho) \nabla \mathcal{l}(\theta_t)^2\]

\[m_{t+1} = \gamma m_{t} + \frac{\eta_t}{\sqrt{v_{t+1} + \epsilon}}\nabla \mathcal{l}(\theta_t)\]

\[\theta_{t+1} = \theta_{t} - m_{t+1}\]

एडम

\[m_0 = 0 \text{, } v_0 = 0\]

\[m_{t+1} = \beta_1 m_{t} + (1 - \beta_1) \nabla \mathcal{l} (\theta_t)\]

\[v_{t+1} = \beta_2 v_{t} + (1 - \beta_2) \nabla \mathcal{l}(\theta_t)^2\]

\[b_{t+1} = \frac{\sqrt{1 - \beta_2^{t+1}}}{1 - \beta_1^{t+1}}\]

\[\theta_{t+1} = \theta_{t} - \alpha_t \frac{m_{t+1}}{\sqrt{v_{t+1}} + \epsilon} b_{t+1}\]

नडम

\[m_0 = 0 \text{, } v_0 = 0\]

\[m_{t+1} = \beta_1 m_{t} + (1 - \beta_1) \nabla \mathcal{l} (\theta_t)\]

\[v_{t+1} = \beta_2 v_{t} + (1 - \beta_2) \nabla \mathcal{l} (\theta_t)^2\]

\[b_{t+1} = \frac{\sqrt{1 - \beta_2^{t+1}}}{1 - \beta_1^{t+1}}\]

\[\theta_{t+1} = \theta_{t} - \alpha_t \frac{\beta_1 m_{t+1} + (1 - \beta_1) \nabla \mathcal{l} (\theta_t)}{\sqrt{v_{t+1}} + \epsilon} b_{t+1}\]