बैकप्रोपगेशन, न्यूरल नेटवर्क के लिए सबसे सामान्य ट्रेनिंग एल्गोरिद्म है. इससे कई लेयर वाले न्यूरल नेटवर्क के लिए, ग्रेडिएंट डिसेंट का इस्तेमाल किया जा सकता है. Keras जैसी कई मशीन लर्निंग कोड लाइब्रेरी, बैकप्रोपगेशन को अपने-आप मैनेज करती हैं. इसलिए, आपको इनमें मौजूद किसी भी कैलकुलेशन को खुद करने की ज़रूरत नहीं है. बैकप्रोपगेशन के काम करने के तरीके के बारे में खास जानकारी पाने के लिए, यह वीडियो देखें:
न्यूरल नेटवर्क ट्रेनिंग के सबसे सही तरीके
इस सेक्शन में, बैकप्रोपगेशन के काम न करने के उदाहरणों के साथ-साथ, न्यूरल नेटवर्क को रेगुलर करने का सबसे सामान्य तरीका बताया गया है.
वैनिशिंग ग्रेडिएंट
नेटवर्क की निचली लेयर (इनपुट लेयर के करीब) के लिए ग्रेडिएंट बहुत छोटे हो सकते हैं. डीप नेटवर्क (एक से ज़्यादा छिपी हुई लेयर वाले नेटवर्क) में, इन ग्रेडिएंट का हिसाब लगाने के लिए, कई छोटे-छोटे टर्म का प्रॉडक्ट लेना पड़ सकता है.
जब निचली लेयर के लिए ग्रेडिएंट वैल्यू 0 के करीब पहुंच जाती हैं, तो ग्रेडिएंट "गायब" हो जाते हैं. गायब होने वाले ग्रेडिएंट वाली लेयर बहुत धीरे-धीरे ट्रेनिंग करती हैं या बिलकुल भी नहीं.
ReLU ऐक्टिवेशन फ़ंक्शन की मदद से, वैनिशिंग ग्रेडिएंट को रोका जा सकता है.
एक्सप्लॉडिंग ग्रेडिएंट
अगर किसी नेटवर्क में वज़न बहुत ज़्यादा हैं, तो निचली लेयर के ग्रेडिएंट में कई बड़े शब्दों के प्रॉडक्ट शामिल होते हैं. इस मामले में, विस्फोटक ग्रेडिएंट हो सकते हैं: ऐसे ग्रेडिएंट जो एक-दूसरे से जुड़ने के लिए बहुत बड़े होते हैं.
बैच नॉर्मलाइज़ेशन से, एक्सप्लॉडिंग ग्रेडिएंट को रोकने में मदद मिल सकती है. इसके अलावा, लर्निंग रेट को कम करने से भी ऐसा किया जा सकता है.
डेड ReLU यूनिट
जब किसी ReLU यूनिट के लिए वेटेड योग 0 से कम हो जाता है, तो ReLU यूनिट अटक सकती है. यह 0 दिखाता है और नेटवर्क के आउटपुट में कोई योगदान नहीं देता. साथ ही, बैकप्रोपगेशन के दौरान, ग्रेडिएंट अब इसकी मदद से नहीं बह सकते. ग्रेडिएंट के सोर्स के बंद होने पर, हो सकता है कि ReLU में इनपुट कभी भी इतना न बदले कि वेटेज वाला योग फिर से 0 से ऊपर आ जाए.
लर्निंग रेट को कम करने से, ReLU यूनिट को मरने से बचाने में मदद मिल सकती है.
ड्रॉपआउट रेगुलराइज़ेशन
रेगुलराइज़ेशन का एक और तरीका, न्यूरल नेटवर्क के लिए मददगार है. इसे ड्रॉपआउट रेगुलराइज़ेशन कहते हैं. यह एक ग्रेडिएंट चरण के लिए, नेटवर्क में यूनिट चालू करने की प्रोसेस को रैंडम तौर पर "ड्रॉप आउट" करके काम करता है. जितने ज़्यादा ड्रॉप आउट होंगे, नियमों का पालन करना उतना ही ज़रूरी होगा:
- 0.0 = कैंपेन बीच में छोड़ने वाले उपयोगकर्ताओं के लिए कोई रेगुलराइज़ेशन सेट नहीं किया जाएगा.
- 1.0 = सभी नोड हटाएं. मॉडल कुछ नहीं सीखता.
- 0.0 और 1.0 के बीच की वैल्यू = ज़्यादा काम की है.