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