मशीन लर्निंग क्रैश कोर्स का नया और बेहतर वर्शन अगस्त 2024 में लॉन्च होगा. हमारे साथ बने रहें!
पहला न्यूरल नेटवर्क
इस व्यायाम में, हम अपने पहले छोटे न्यूरल नेट को ट्रेनिंग देंगे.
न्यूरल नेट हमें अश्लील सुविधाओं का इस्तेमाल किए बिना, लीनियर मॉडल सीखने का तरीका बताएंगे.
टास्क 1: दिया गया मॉडल हमारी दो इनपुट सुविधाओं को एक न्यूरॉन में
जोड़ता है. क्या यह मॉडल कोई गैर- मशहूरता सीखेगा? अपने अनुमान की पुष्टि करने के लिए
इसे चलाएं.
टास्क 2: छिपी हुई परत में, न्यूरॉन की संख्या को 1 से बढ़ाकर 2 करने की कोशिश करें. साथ ही, लीनियर ऐक्टिवेशन को ReLU जैसे बिना लीनियर ऐक्टिवेशन से बदलकर भी देखें. क्या आप ऐसा मॉडल बना सकते हैं जो लीनियर डेटा को सीख सके? क्या यह डेटा
को असरदार तरीके से मॉडल कर सकता है?
टास्क 3: ReLU जैसे बिना लीनियर ऐक्टिवेशन का इस्तेमाल करके, छिपी हुई लेयर में मौजूद न्यूरॉन की संख्या को 2 से 3 तक बढ़ाने की कोशिश करें. क्या यह डेटा को असरदार तरीके से मॉडल कर सकता है? मॉडल की क्वालिटी, अलग-अलग रन कैसे होती है?
टास्क 4: हर लेयर में छिपाई गई लेयर या न्यूरॉन को जोड़कर या हटाकर, प्रयोग जारी रखना. सीखने की दरों, सामान्य बनाने, और सीखने की दूसरी सेटिंग में भी बदलाव करें. न्यूरॉन और लेयर की ऐसी सबसे छोटी संख्या जो इस्तेमाल की जा सकती है, लेकिन जो 0.177 या उससे कम के टेस्ट लॉस का फ़ायदा देती है?
क्या मॉडल का साइज़ बढ़ाने से फ़िट हो जाता है या यह कितनी तेज़ी से बढ़ता है?
क्या यह बदलता है कि यह किसी अच्छे मॉडल के लिए कितनी बार मिलता-जुलता है? उदाहरण के लिए, यह आर्किटेक्चर देखें:
- तीन न्यूरॉन की पहली छिपी हुई लेयर.
- 3 न्यूरॉन के साथ दूसरी छिपी हुई लेयर.
- 2 न्यूरॉन के साथ तीसरी छिपी हुई लेयर.
(जवाब, कसरत के ठीक नीचे दिखते हैं.)
टास्क 1 के जवाब के लिए, प्लस आइकॉन पर क्लिक करें.
ऐक्टिवेशन को लीनियर पर सेट किया गया है. इसलिए, यह मॉडल किसी भी लीनियर मॉडल का पता नहीं लगा सकता. नुकसान बहुत ज़्यादा है, और हम कहते हैं कि मॉडल, डेटा को कम ज़रूरी बनाता है.
टास्क 2 के जवाब के लिए, प्लस आइकॉन पर क्लिक करें.
नॉनलीनियर ऐक्टिवेशन फ़ंक्शन, नॉनलीनियर मॉडल सीख सकता है. हालांकि,
2 न्यूरॉन के साथ एक छिपी हुई लेयर, इस डेटा सेट में सभी असमानता को नहीं दिखा सकती
और बिना शोर के भी उनका बहुत ज़्यादा नुकसान हो सकता है: यह अब भी डेटा
को फ़िट करता है. ये व्यायाम अनिश्चित नहीं होते, इसलिए कुछ रन
किसी असरदार मॉडल को नहीं सीख पाएंगे, जबकि अन्य रन काफ़ी अच्छा काम करेंगे.
हो सकता है कि सबसे अच्छे मॉडल का आकार आपके हिसाब से न हो!
टास्क 3 के जवाब के लिए, प्लस आइकॉन पर क्लिक करें.
खेल के मैदान में कोई भी अनिश्चितता नहीं होती. 3 न्यूरॉन के साथ सिर्फ़ एक छिपी हुई लेयर, डेटा सेट को मॉडल करने के लिए काफ़ी है (ग़ैर-ज़रूरी आवाज़ें), लेकिन ज़रूरी नहीं है कि सभी रन एक अच्छे मॉडल के हिसाब से काम करें.
3 न्यूरॉन सिर्फ़ इसलिए काफ़ी हैं, क्योंकि XOR फ़ंक्शन को 3 हाफ़ प्लान (RELU ऐक्टिवेशन) के कॉम्बिनेशन के रूप में दिखाया जा सकता है. आप इसे न्यूरॉन इमेज पर जाकर देख सकते हैं, जो अलग-अलग न्यूरॉन के आउटपुट को दिखाती हैं. अच्छे मॉडल में
तीन न्यूरॉन और RLU ऐक्टिवेशन वाली, एक ऐसी इमेज होती है जिसमें करीब-करीब वर्टिकल होता है, जिसमें X1 पॉज़िटिव होता है (या नेगेटिव होता है; हो सकता है कि साइन स्विच किया गया हो), 1 इमेज करीब-करीब हॉरिज़ॉन्टल लाइन में हो, 12 का चिह्न हो, और 1 इमेज तिरछी लाइन में हो और उसका इंटरैक्शन हो.
हालांकि, सभी रन एक अच्छे मॉडल के तौर पर काम नहीं करते. कुछ नतीजों में, दो न्यूरॉन्स वाले मॉडल से बेहतर काम नहीं करेगा. साथ ही, उन मामलों में डुप्लीकेट न्यूरॉन्स भी देखे जा सकते हैं.
टास्क 4 के जवाब के लिए, प्लस आइकॉन पर क्लिक करें.
तीन न्यूरॉन के साथ एक छिपी हुई लेयर, डेटा को मॉडल कर सकती है. हालांकि, इसे बनाने के लिए किसी भी तरह की गैर-ज़रूरी चीज़ नहीं है. इसलिए, कई रन पर यह एक न्यूरॉन को असरदार तरीके से खो सकता है और एक अच्छा मॉडल नहीं सीख सकता. एक से ज़्यादा न्यूरॉन के साथ एक लेयर में ज़्यादा रिडंडंसी होती है. इस बात की संभावना ज़्यादा होती है कि वे एक अच्छे मॉडल में बदलें.
जैसा कि हमने देखा, सिर्फ़ दो न्यूरॉन के साथ एक छिपी हुई लेयर,
डेटा को मॉडल नहीं कर सकती. अगर आप इसे आज़माना चाहते हैं, तो आप देख सकते हैं कि आउटपुट लेयर के सभी आइटम सिर्फ़ उन दो नोड की लाइनों से बने आकार बन सकते हैं. इस मामले में,
गहरा नेटवर्क
डेटा को सिर्फ़ पहली छिपी हुई लेयर की तुलना में बेहतर तरीके से मॉडल कर सकता है:
दूसरी लेयर में मौजूद अलग-अलग न्यूरॉन, पहली लेयर में न्यूरॉन को जोड़कर, ज़्यादा जटिल साइज़, जैसे कि ऊपरी-दाएं क्वाड्रेंट को मॉडल कर सकते हैं. उस दूसरी
छिपी हुई लेयर को जोड़ने के बावजूद, डेटा सेट को पहली छिपी हुई लेयर से बेहतर तरीके से
मॉडल किया जा सकता है. हालांकि, पहली लेयर में ज़्यादा नोड जोड़ने से ज़्यादा फ़ायदा होता है. इससे, उस किट का हिस्सा ज़्यादा लाइनों में दिख सकता है जहां से दूसरी लेयर अपने आकार बनाती है.
हालांकि, पहली छिपाई गई लेयर में एक न्यूरॉन मौजूद मॉडल, अच्छे मॉडल को नहीं सीख सकता, भले ही वह कितना भी गहरी क्यों न हो. इसकी वजह यह है कि पहली लेयर का आउटपुट सिर्फ़ एक डाइमेंशन के साथ अलग होता है. आम तौर पर, इसमें एक तिरछी लाइन होती है, जो कि इस डेटा सेट को मॉडल करने के लिए काफ़ी नहीं होता. इसके बाद लेयर की वजह से इसकी भरपाई नहीं की जा सकती, क्योंकि इसके लिए कोई समस्या नहीं होती. साथ ही, इनपुट डेटा में मौजूद जानकारी को हमेशा के लिए खो दिया जाता है.
अगर हम एक छोटा नेटवर्क बनाने की कोशिश करें, तो बहुत सारी न्यूरॉन के साथ बहुत सारी लेयर हो सकती हैं, जो कि इस तरह की आसान समस्या है? जैसा कि हमने देखा है, पहली लेयर में कई अलग-अलग लाइन स्लोप की कोशिश की जा सकती है. और दूसरी लेयर में उन्हें कई अलग-अलग आकारों में जमा करने की सुविधा होगी.
अगली लेयर के दौरान उन्हें बहुत सारे आकारों में नीचे रखा जाएगा.
मॉडल को इतने सारे छिपे हुए न्यूरॉन के ज़रिए इतने अलग-अलग आकारों पर विचार करने की अनुमति देकर, आपने मॉडल के लिए ट्रेनिंग सेट में शोर पर आसानी से ओवरफ़िट करने के लिए ज़रूरी जगह बनाई है, जिससे ये कॉम्प्लेक्स आकार असल इस्तेमाल के बजाय, ट्रेनिंग डेटा
के दुश्मनों से मेल खा सकें. इस उदाहरण में, बड़े मॉडल में सटीक डेटा पॉइंट से मेल खाने के लिए मुश्किल सीमाएं हो सकती हैं. बहुत कम मामलों में, एक बड़े मॉडल को
किसी टापू को अलग-अलग शोर वाली जगह के बारे में जानने में मदद मिल सकती है. इसे डेटा का याद रखना कहा जाता है. मॉडल को इतने बड़े बनाने की अनुमति देकर, आप देखेंगे कि असल में समस्या हल करने के लिए, यह काफ़ी हद तक आसान न्यूरॉन के मुकाबले खराब है.
न्यूरल नेट इनीशियलाइज़ेशन
यह एक्सरसाइज़, XOR डेटा को फिर से इस्तेमाल करता है. हालांकि, इसमें न्यूरल नेट्स की ट्रेनिंग के साथ-साथ, इनीशियलाइज़ेशन की अहमियत को भी देखा जाता है.
टास्क 1: चार या पांच बार दिए गए मॉडल को चलाएं. हर बार आज़माने से पहले, एक नया रैंडम इनीशियलाइज़ेशन पाने के लिए नेटवर्क रीसेट करें बटन दबाएं.
'नेटवर्क रीसेट करें' बटन, 'चलाएं' बटन
के बाईं ओर होता है और गोल आकार में रीसेट होता है. सभी शर्तें पूरी करने के लिए, हर ट्रायल को कम से कम 500 चरणों पर चलने दें. हर मॉडल आउटपुट किस तरह से इकट्ठा होता है?
बिना कन्वर्ज़न वाले ऑप्टिमाइज़ेशन में इनीशियलेशन करने के बारे में क्या कहना है?
टास्क 2: एक लेयर और कुछ और नोड जोड़कर मॉडल को थोड़ा और जटिल बनाने की कोशिश करें. टास्क 1 से ट्रायल दोहराएं. क्या इससे नतीजों में
कोई और स्थिरता जुड़ी है?
(जवाब, कसरत के ठीक नीचे दिखते हैं.)
टास्क 1 के जवाब के लिए, प्लस आइकॉन पर क्लिक करें.
सीखने वाले मॉडल के हर रन पर अलग-अलग आकार थे. इकट्ठा की गई टेस्टिंग
कम से कम 2X से लेकर सबसे ज़्यादा बढ़ी हुई.
टास्क 2 के जवाब के लिए, प्लस आइकॉन पर क्लिक करें.
लेयर और ज़्यादा नोड जोड़ने से ज़्यादा नतीजे मिल सकते हैं.
हर बार चलाने पर, मिलने वाला मॉडल करीब-करीब एक जैसा ही दिखता था. इसके अलावा,
कंवर्ज़नल टेस्ट के नतीजों में कमी का असर, रन के बीच कम अंतर देखने को मिला.
न्यूरल नेट सर्कुलर
यह डेटा सेट शोर वाले दायरे में है. ज़ाहिर है, यहां एक लीनियर मॉडल काम नहीं करेगा, लेकिन मैन्युअल तरीके से तय किए गए फ़ीचर क्रॉस भी बनाना मुश्किल हो सकते हैं.
टास्क 1: सिर्फ़ X1 और
X2 का इस्तेमाल करके, सबसे अच्छे मॉडल को ट्रेनिंग दें. लेयर और न्यूरॉन को बेझिझक जोड़ें या हटाएं.
लर्निंग रेट में बदलाव करें. जैसे- लर्निंग रेट, रेगुलराइज़ेशन रेट,
और बैच साइज़. आपको टेस्ट के लिए सबसे अच्छा क्या मिल सकता है? मॉडल आउटपुट सर्फ़ेस कितना सहज है?
टास्क 2: न्यूरल नेट्स के साथ भी, बेहतरीन परफ़ॉर्मेंस पाने के लिए कई फ़ीचर इंजीनियरिंग की
ज़रूरत होती है. प्रॉडक्ट में और सुविधाएं शामिल करें. जैसे, sin(X1) और sin(X2) को बदलें. क्या आपको बेहतर मॉडल मिलता है? क्या मॉडल आउटपुट किसी भी तरह से आसानी से दिखाई देता है?
(जवाब, कसरत के ठीक नीचे दिखते हैं.)
संभावित जवाबों के लिए प्लस आइकॉन पर क्लिक करें.
नीचे दिए गए वीडियो में, Playground में हाइपरपैरामीटर चुनने का तरीका बताया गया है.
इससे, ऐसे गड़बड़ियों के बारे में पता लगाने वाले घुमावदार डेटा के मॉडल को ट्रेनिंग दी जा सकती है जो जांच में होने वाली कमी को कम करता है.