जानें कि ग्रेडिएंट डीसेंट कैसे मशीन लर्निंग के लिए मॉडलों को ऑप्टिमाइज़ करता है। इसके लीनियर रिग्रेशन, लॉजिस्टिक रिग्रेशन, न्यूरल नेटवर्क्स में अनुप्रयोगों और बैच, स्टोकेस्टिक, तथा मिनी-बैच ग्रेडिएंट डीसेंट जैसे प्रमुख प्रकारों की खोज करें।
ग्रेडिएंट डीसेंट मशीन लर्निंग और डीप लर्निंग के सबसे महत्वपूर्ण एल्गोरिदमों में से एक है। यह एक अत्यंत शक्तिशाली ऑप्टिमाइज़ेशन एल्गोरिदम है जो लीनियर रिग्रेशन, लॉजिस्टिक रिग्रेशन और न्यूरल नेटवर्क मॉडलों को प्रशिक्षित कर सकता है। यदि आप मशीन लर्निंग में कदम रख रहे हैं, तो ग्रेडिएंट डीसेंट एल्गोरिदम को गहराई से समझना अनिवार्य है।
ग्रेडिएंट डीसेंट क्या है?
डेटा साइंस का उद्देश्य बड़े डेटा विश्लेषण में जटिल पैटर्न और व्यवहारों की खोज करना है। इन्हें "पैटर्न" कहा जाता है, अर्थात बार-बार दिखाई देने वाले रूप। मशीन लर्निंग के माध्यम से, यह डेटा विश्लेषण में पैटर्न का पता लगाने के लिए एल्गोरिदम को प्रशिक्षित करने का विषय है ताकि कोई विशेष कार्य बेहतर ढंग से किया जा सके। इसका अर्थ है सॉफ़्टवेयर को किसी कार्य को स्वायत्त रूप से करने या पूर्वानुमान लगाने के लिए सिखाना। ऐसा करने के लिए, डेटा साइंटिस्ट डेटा विश्लेषण करने हेतु एल्गोरिदम का चयन और प्रशिक्षण करता है। लक्ष्य, स्वाभाविक रूप से, समय के साथ उनकी भविष्यवाणियों में सुधार करना है।
इस प्रकार, मशीन लर्निंग बड़े पैमाने पर एल्गोरिदम के प्रशिक्षण पर आधारित है। जितना अधिक ये एल्गोरिदम डेटा के संपर्क में आते हैं, उतना अधिक वे बिना विशिष्ट निर्देशों के कार्य करना सीखते हैं; वे अनुभव से सीखते हैं। हम मशीन लर्निंग में विभिन्न प्रकार के एल्गोरिदम का उपयोग करते हैं। इनमें, ग्रेडिएंट डीसेंट सबसे उपयोगी और लोकप्रिय में से एक है।
ग्रेडिएंट डीसेंट एक ऑप्टिमाइज़ेशन एल्गोरिदम है। इसका उपयोग किसी फ़ंक्शन के न्यूनतम मान को अधिक तेज़ी से खोजने के लिए किया जाता है। ग्रेडिएंट डीसेंट की परिभाषा काफी सरल है। यह एक कॉन्वेक्स फ़ंक्शन के न्यूनतम को खोजने का एल्गोरिदम है। ऐसा करने के लिए, यह संबंधित फ़ंक्शन के पैरामीटरों को क्रमिक रूप से बदलता है। उदाहरण के लिए, यह लीनियर रिग्रेशन में उपयोग किया जाने वाला एक एल्गोरिदम है।
कॉन्वेक्स फ़ंक्शन ऐसा फ़ंक्शन है जो एक सुंदर घाटी जैसा दिखता है, जिसके केंद्र में एक वैश्विक न्यूनतम होता है। इसके विपरीत, नॉन-कॉन्वेक्स फ़ंक्शन में कई स्थानीय मिनिमा होते हैं, और ऐसे फ़ंक्शनों पर ग्रेडिएंट डीसेंट एल्गोरिदम का उपयोग नहीं किया जाना चाहिए, वरना यह मिले पहले ही मिनिमा पर अटक सकता है।
ग्रेडिएंट डीसेंट को “सबसे तीव्र अवरोही ढलान एल्गोरिदम” भी कहा जाता है। यह मशीन लर्निंग में बहुत महत्वपूर्ण है, जहाँ इसका उपयोग कॉस्ट फ़ंक्शन को न्यूनतम करने के लिए किया जाता है। कॉस्ट फ़ंक्शन डेटा विश्लेषण में सर्वश्रेष्ठ प्रेडिक्शन मॉडल तय करने के काम आता है। जितना अधिक कॉस्ट न्यूनतम होगा, मशीन उतनी ही अच्छी भविष्यवाणी कर पाएगी।
आपको तीन प्रसिद्ध प्रकार की डीसेंट मिलेंगी। आइए उन्हें करीब से देखें:
बैच ग्रेडिएंट डीसेंट
वैनिला ग्रेडिएंट डीसेंट के नाम से भी जाना जाने वाला बैच ग्रेडिएंट डीसेंट प्रशिक्षण डेटासेट के प्रत्येक उदाहरण के लिए त्रुटियों की गणना करता है। हालाँकि, यह ऐसा तभी करता है जब प्रत्येक प्रशिक्षण उदाहरण का सख्ती से मूल्यांकन कर लिया गया हो। इस प्रक्रिया की तुलना चक्र से करना उचित है। कुछ लोग इसे प्रशिक्षण युग भी कहते हैं।
बैच डीसेंट के कई लाभ हैं। विशेष रूप से, इसकी कम्प्यूटेशनल दक्षता अत्यंत व्यावहारिक है क्योंकि यह स्थिर कन्वर्जेन्स और स्थिर त्रुटि ग्रेडिएंट विकसित करता है। यह कहा जाए तो, बैच ग्रेडिएंट डीसेंट के कुछ नुक़सान भी हैं। कभी-कभी इसका स्थिर त्रुटि ग्रेडिएंट प्रतिकूल कन्वर्जेन्स अवस्था का कारण बन सकता है। साथ ही, इसे अपने एल्गोरिदम और मेमोरी में प्रशिक्षण डेटासेट की उपस्थिति की आवश्यकता होती है।
स्टोकेस्टिक ग्रेडिएंट डीसेंट
स्टोकेस्टिक ग्रेडिएंट डीसेंट प्रत्येक प्रशिक्षण उदाहरण के लिए अलग-अलग पैरामीटर अपडेट प्रदान करता है। यह प्रत्येक उदाहरण पर ध्यान देने की अनुमति देता है, जिससे प्रक्रिया त्रुटिरहित बनी रहती है। समस्या के आधार पर, यह एसजीडी को बैच ग्रेडिएंट डीसेंट की तुलना में तेज़ बनने में मदद कर सकता है। इसके नियमित अपडेट हमें सुधार दरों का विस्तृत लेखा-जोखा देते हैं।
यह कहा जाए तो, ये अपडेट कम्प्यूटेशनल रूप से महँगे होते हैं, विशेषकर स्टेपवाइज़ डीसेंट द्वारा उपयोग किए गए दृष्टिकोण की तुलना में। साथ ही, अपडेट की आवृत्ति शोरयुक्त ग्रेडिएंट का कारण बन सकती है और त्रुटि दर को कम होने से रोक सकती है। इसके बजाय, त्रुटि दर उछलती रहती है और लंबी अवधि में समस्याजनक हो जाती है।
मिनी-बैच ग्रेडिएंट डीसेंट
वैज्ञानिक मिनी-बैच ग्रेडिएंट डीसेंट को शुरुआती विधि के रूप में उपयोग करते हैं। क्यों? क्योंकि यह स्टोकेस्टिक डीसेंट और बैच डीसेंट की अवधारणाओं का एक आदर्श मिश्रण है। यह प्रशिक्षण डेटा सेट को बैचों में विभाजित करता है और प्रत्येक बैच के लिए एक अपडेट करता है, जिससे BGD की दक्षता और SGD की मजबूती के बीच संतुलन बनता है।
लोकप्रिय मिनी-बैच आकार पचास से लेकर दो सौ छप्पन तक होते हैं, लेकिन अन्य कई मशीन लर्निंग विधियों की तरह, यहाँ भी स्पष्ट नियम नहीं हैं क्योंकि यह अनुप्रयोग के अनुसार बदलता है। लोग इसे न्यूरल नेटवर्क के प्रशिक्षण के लिए एक बुनियादी विकल्प के रूप में उपयोग करते हैं। यह डीप लर्निंग के परिदृश्य में हिल डीसेंट का एक लोकप्रिय प्रकार भी है।
मशीन लर्निंग में ग्रेडिएंट डीसेंट इतना महत्वपूर्ण क्यों है?
मशीन लर्निंग में, हम सुपरवाइज़्ड लर्निंग समस्याओं में कॉस्ट फ़ंक्शन को न्यूनतम करने के लिए ग्रेडिएंट डीसेंट एल्गोरिदम का उपयोग करते हैं, जो एक कॉन्वेक्स फ़ंक्शन होता है (उदाहरण के लिए, मीन स्क्वेयर्ड एरर)।
इस एल्गोरिदम की बदौलत, मशीन सर्वश्रेष्ठ मॉडल ढूँढ़कर सीखती है। याद रखें कि कॉस्ट फ़ंक्शन को न्यूनतम करना मतलब ऐसे पैरामीटर a, b, c, आदि खोजना है जो हमारे मॉडल और डेटासेट के y बिंदुओं के बीच सबसे छोटी त्रुटियाँ दें। एक बार कॉस्ट फ़ंक्शन न्यूनतम हो जाने पर, यह सटीक वॉइस रिकॉग्निशन प्रोग्राम, कंप्यूटर विज़न प्रोग्राम, और स्टॉक मार्केट की कीमत का पूर्वानुमान लगाने वाले अनुप्रयोग बनाने का मार्ग प्रशस्त करता है।
आप देख सकते हैं कि ग्रेडिएंट डीसेंट एल्गोरिदम क्यों बुनियादी है: मशीन इसी से सीखती है।
इस एल्गोरिदम के कामकाज और उपयोगिता को बेहतर ढंग से समझाने के लिए, हम अक्सर पहाड़ की उपमा का उपयोग करते हैं। हम एक ऐसे व्यक्ति की कल्पना करते हैं जो पहाड़ों में रास्ता भटक गया है। मूलतः, वापस रास्ता पाने के लिए सबसे पहले सबसे तीव्र नीचे जाती हुई ढलान की दिशा खोजनी होगी। इस दिशा में कुछ दूरी तय करने के बाद, इस विधि को तब तक दोहराना होगा जब तक कोई घाटी (सबसे निचला मान) न मिल जाए। मशीन लर्निंग में, ग्रेडिएंट डीसेंट इसी विधि को लूप में तब तक दोहराने पर आधारित है जब तक कॉस्ट फ़ंक्शन का कोई मिनिमम न मिल जाए। इसी कारण इसे इटरेटिव एल्गोरिदम कहा जाता है और इसमें बहुत गणना लगती है।
यदि आप पहाड़ों में खो जाएँ, तो यह 2-चरणीय रणनीति आपकी मदद करेगी:
अपनी वर्तमान स्थिति से, चारों ओर देख कर उस दिशा को पहचानें जहाँ ढलान सबसे ज़्यादा नीचे जा रही है।
जब वह दिशा मिल जाए, तो एक दूरी तक (मान लीजिए आप 300 मीटर चलते हैं) उसी दिशा में चलें और फिर चरण 1 दोहराएँ।
चरण 1 और 2 को लूप में दोहराकर, आप निश्चित रूप से घाटी के न्यूनतम तक पहुँचेंगे। यही रणनीति ग्रेडिएंट डीसेंट एल्गोरिदम है।
चरण 1: कॉस्ट फ़ंक्शन का अवकलन (डेरिवेटिव) निकालें
हम किसी यादृच्छिक प्रारंभिक बिंदु से शुरू करते हैं और फिर उस बिंदु पर ढलान का मान मापते हैं। गणित में, आप फ़ंक्शन का डेरिवेटिव निकालकर ढलान मापते हैं।
चरण 2: मॉडल पैरामीटरों को अपडेट करना
इसके बाद हम ढलान की नीचे जाती दिशा में एक निश्चित दूरी d तक आगे बढ़ते हैं, पर इस बार 300 मीटर नहीं। इस दूरी को “लर्निंग रेट” कहा जाता है। इस क्रिया का परिणाम हमारे मॉडल के पैरामीटर मानों को बदलना होता है (जब हम चलते हैं तो घाटी में हमारे निर्देशांक बदल जाते हैं)।
कौन-से क्षेत्र ग्रेडिएंट डीसेंट का उपयोग करते हैं?
ग्रेडिएंट डीसेंट एल्गोरिदम का उपयोग मुख्य रूप से मशीन लर्निंग और डीप लर्निंग के क्षेत्रों में किया जाता है। बाद वाले को मशीन लर्निंग का उन्नत संस्करण माना जा सकता है। यह सबसे सूक्ष्म पैटर्न का पता लगाने की अनुमति देता है। ये ऐसे विधाएँ हैं जिनके लिए गणित में मजबूत पृष्ठभूमि और पाइथन का ज्ञान आवश्यक है।
इस प्रोग्रामिंग भाषा में कई लाइब्रेरीज़ हैं जो मशीन लर्निंग के अनुप्रयोग को आसान बनाती हैं। यह विधा बड़े पैमाने पर डेटा का तेज़ और सटीक विश्लेषण करने में बहुत उपयोगी है। यह पिछले रुझानों या घटनाओं के आधार पर प्रेडिक्टिव विश्लेषण की अनुमति देती है।
मशीन लर्निंग उन विज्ञानों में से है जो बिग डेटा से निकटता से जुड़े हैं और जिनमें अपार संभावनाएँ हैं। यह बड़े डेटा स्ट्रीम के विश्लेषण में मानवीय बुद्धि की सीमाओं को पार करने की अनुमति देता है। ऑनलाइन उपलब्ध विशाल डेटा सेट्स के साथ, आर्टिफ़िशियल इंटेलिजेंस (AI) बिना मानवीय हस्तक्षेप के स्वयं सीख सकती है। उदाहरण के लिए, मशीन लर्निंग का उपयोग कनेक्टेड डिवाइसेज़ के क्षेत्र में होता है। इसकी बदौलत, कोई AI किसी स्मार्ट घर के निवासियों की आदतों के अनुसार खुद को ढाल सकती है और अपने कार्यों का निष्पादन इन्हीं आदतों को ध्यान में रखकर कर सकती है।
उदाहरण के लिए, AI मौसम के अनुसार कमरे की हीटिंग समायोजित कर सकती है। यही विज्ञान हमें और भी परिष्कृत रोबोट वैक्यूम क्लीनर देता है। मशीन लर्निंग के माध्यम से ग्रेडिएंट डीसेंट आर्टिफ़िशियल इंटेलिजेंस में बड़े उत्थान के केंद्र में है। व्यवहार में, इंजीनियर और AI विशेषज्ञ ग्रेडिएंट डीसेंट के अनेक अनुप्रयोग करते हैं।
यह Google जैसे सर्च इंजनों और YouTube, Netflix, या Amazon जैसे लोकप्रिय रिकमेंडेशन इंजनों के लिए उपयोगी है। उपयोगकर्ताओं से एकत्रित डेटा के आधार पर, एल्गोरिदम इंटरनेट उपयोगकर्ता की रुचियों को समझने की कोशिश करेगा। इससे उन्हें प्रासंगिक खोज परिणाम और बेहतर सिफारिशें देने में मदद मिलेगी।
मशीन लर्निंग ने कंप्यूटरों को मानवीय भाषा समझने और प्रोसेस करने में सक्षम बनाया है। इसी अनुप्रयोग ने Alexa, Google Assistant और Siri जैसे डिजिटल असिस्टेंट को जन्म दिया। मशीन लर्निंग और ग्रेडिएंट डीसेंट के अनुप्रयोग वीडियो गेम डेवलपर्स के लिए भी बहुत उपयोगी हैं। यहाँ लक्ष्य यह है कि AIs सबसे मानवीय कार्यों में उत्कृष्टता प्राप्त करें ताकि लोग उच्च-मूल्य गतिविधियों पर ध्यान केंद्रित कर सकें। आर्टिफ़िशियल इंटेलिजेंस और मशीन लर्निंग कंपनियों को अपने ग्राहकों की ज़रूरतों और भविष्य के रुझानों का पूर्वानुमान लगाने में सक्षम बनाते हैं।
ग्रेडिएंट डीसेंट को कैसे लागू करें
कम्प्यूटेशनल जटिलता के कारण लीनियर रिग्रेशन में ग्रेडिएंट डीसेंट का उपयोग किया जाता है। ग्रेडिएंट डीसेंट का सामान्य गणितीय सूत्र xt+1= xt- η∆xt है, जहाँ η लर्निंग रेट का प्रतिनिधित्व करता है और ∆xt अवरोह (डिसेंट) की दिशा है। ग्रेडिएंट डीसेंट कॉन्वेक्स फ़ंक्शनों पर लागू होने वाला एल्गोरिदम है। न्यूनतम करने के लिए कॉन्वेक्स फ़ंक्शन को ƒ मानते हुए, लक्ष्य प्रत्येक इटरेशन पर ƒ(xt+1) ≤ ƒ (xt) प्राप्त करना होगा।
विचार यह है कि इस एल्गोरिदम का उपयोग करके किसी गणितीय फ़ंक्शन का न्यूनतम धीरे-धीरे गणना किया जाए। कुछ समीकरणों के सामने, उन्हें हल करने का यही सबसे अच्छा तरीका होता है। जब हम ग्रेडिएंट डीसेंट की बात करते हैं, तो कॉस्ट फ़ंक्शन की धारणा को भी समझना चाहिए। सुपरवाइज़्ड मोड में, यह फ़ंक्शन किसी आकलन और वास्तविक मान के बीच त्रुटि सीमा को मापने की अनुमति देता है। लीनियर रिग्रेशन समस्या के मामले में मीन स्क्वेयर्ड ग्रेडिएंट की गणना का सूत्र निम्नलिखित है:
ग्रेडिएंट डीसेंट का उपयोग लर्निंग रेट की धारणा का भी करता है। यह एक हाइपरपैरामीटर है जो लॉस ग्रेडिएंट के सापेक्ष नेटवर्क वेट्स के समायोजन को नियंत्रित करने की अनुमति देता है। ध्यान दिया जाना चाहिए कि एक इष्टतम लर्निंग रेट अधिक तेज़ी और कुशलता से मिनिमम प्राप्त करने के लिए बहुत महत्वपूर्ण है। यह न बहुत अधिक होना चाहिए, न बहुत कम।
जैसे-जैसे मान नीचे जाता है, यह दिखाता है कि कोई व्यक्ति धीरे-धीरे नीचे जाती ढलान के साथ आगे बढ़ रहा है। RMSprop, Adam और SGD जैसी कई ऑप्टिमाइज़ेशन विधियाँ ग्रेडिएंट डीसेंट एल्गोरिदम का उपयोग करती हैं। इस एल्गोरिदम का उपयोग करते समय गलती न हो, इसके लिए अपने पैरामीटर सावधानी से चुनने की सिफारिश की जाती है। यह भी ध्यान में रखना चाहिए कि मिला हुआ मिनिमम वैश्विक मिनिमम माना जाए, यह आवश्यक नहीं।
ग्रेडिएंट का प्राथमिक कार्य प्रत्येक वेट में बदलाव के सापेक्ष त्रुटियों में बदलाव को मापना है। ग्रेडिएंट को फ़ंक्शन की ढलान के रूप में सोचें। ग्रेडिएंट जितना अधिक होगा, ढलान उतनी ही तीव्र होगी—यह मॉडलों के लिए अनुकूल स्थिति है क्योंकि वे तेज़ी से सीख सकते हैं। हालाँकि, यदि ढलान शून्य हो जाए तो मॉडल सीखना बंद कर देता है। गणितीय रूप से, ग्रेडिएंट को अपने इनपुट्स के सापेक्ष सीमित अवकलन के रूप में वर्णित किया जा सकता है।
इम्प्लीमेंटेशन भाग में, हम दो फ़ंक्शंस लिखेंगे। एक होगा कॉस्ट फ़ंक्शन जो वास्तविक आउटपुट और प्रेडिक्टेड आउटपुट को इनपुट के रूप में लेकर लॉस लौटाएगा। दूसरा होगा वास्तविक ग्रेडिएंट डीसेंट फ़ंक्शन जो स्वतंत्र चर और लक्ष्य चर (आश्रित चर) को इनपुट के रूप में लेकर ग्रेडिएंट डीसेंट एल्गोरिदम का उपयोग करके सर्वश्रेष्ठ फ़िट लाइन खोजेगा।
इटरेशन्स, लर्निंग रेट और स्टॉपिंग थ्रेशहोल्ड ग्रेडिएंट डीसेंट एल्गोरिदम के ट्यूनिंग पैरामीटर हैं और उपयोगकर्ता द्वारा सेट किए जा सकते हैं। मुख्य फ़ंक्शन में, हम यादृच्छिक रूप से रैखिक संबंध वाले डेटा को प्रारंभ करेंगे, और सर्वश्रेष्ठ फ़िट लाइन खोजने के लिए डेटा पर ग्रेडिएंट डीसेंट एल्गोरिदम लागू करेंगे। ग्रेडिएंट डीसेंट एल्गोरिदम का उपयोग करके पाए गए इष्टतम वेट और बायस का उपयोग फिर मुख्य फ़ंक्शन में लाइन ऑफ़ बेस्ट फ़िट खींचने के लिए किया जाता है।
#Importing librariesimport numpy as np
import matplotlib as pyplot
defmean_squared_error(y_true, y_predicted):# Calculating the loss or cost
cost = np.sum((y_true-y_predicted)**2)/len(y_true)return cost
# Gradient descent function# Here iterations, learning rate, stopping threshold are hyperparameters that can be tuneddefgradient_descent((x, y, iterations =1000, learning_rate =0.0001, stopping_theshold =1e-6):#Initialzing rate, bias, learning rate, and iterations
current_rate =0.1
current_bias =0.01
iterations = iterations
learning_rate = learning_rate
n =float(len(x))
costs =[]
weights =[]
previous_cost =None# Estimation of optimal parametersfor i inrange(iterations):# Making predictions
y_predicted =(current_weight * x)+ current_bias
# Calculating the current cost
current_cost = mean_squared_error(y, y_predicted)# If the change in cost is less than or equal to stopping threshold we stop the gradient descentif previous_cost andabs(previous_cost - current_cost)<= stopping_threshold:break
previous_cost = current_cost
costs.append(current_cost)
weights.append(current_weight)# Calculating the gradients
weight_derivative =-(2/n)*sum(x *(y-y_predicted))
bias_derivative =-(2/n)*sum(y-y_predicted)# Updating weights and bias
current_weight = current_weight -(learning_rate * weight_derivative)
current_bias = current_bias -(learning_rate * bias_derivative)# Printing the parameters for each 1000th iterationprint(f"Iteration {i+1}: Cost {current_cost}, Weight \n {current_weight}, Bias {current_bias}")# Visualizing the weights and cost for all iterations
plt.figure(figsize ==(8,6))
plt.plot(weights, cost)
plt.scatter(weights, cost, marker ='o', color ='red')
plt.title("Cost vs Weights")
plt.ylabel("Cost")
plt.xlabel("Weights")
plt.show()return current_weight, current_bias
defmain()# Data
X = np.array(32.5,53.4,61.5,47.4,59.8,55.1,52.2,39.2,48.1,52.5,45.4,54.3,44.1,58.1,56.7,48.9,44.6,60.2,45.6,38.8])
Y = np.array(31.7,68.7,62.5,71.5,87.2,78.2,79.6,59.1,75.3,71.3,55.1,82.4,62.0,75.3,81.4,60.7,82.8,97.3,48.8,56.8])# Estimating weight and bias using gradient descent
estimated_weight, estimated_bias = gradient_descent(X, Y, iterations =2000)print(f"Estimated Weight: {estimated weight}\nEstimated Bias: {estimated bias}")# Making predictions using estimated parameters
Y_pred = estimated_weight*X = estimated_bias
#Plotting the regression line
plt.figure(figsize =8,6)
plt.scatter(X, Y, marker ='o', color ='red')
plt.plot([min(X),max(X)],[min(Y_pred),max(Y_pred)], color ='blue')
plt.ylabel("X")
plt.xlabel("Y")
plt.show()if __name__=="__main__":
main()संचालित द्वारा
नीचे दिए गए कोड का आउटपुट इस प्रकार होगा:
आप ऊपर दिए गए कोड को इस नोटबुक के साथ टेस्ट और रन कर सकते हैं।
लर्निंग रेट: हाइपरपैरामीटर की भूमिका
एक और तत्व जिस पर ज़ोर देना महत्वपूर्ण है, वह है लर्निंग रेट। मशीन लर्निंग में, हम इस तरह के कारक को हाइपरपैरामीटर कहते हैं क्योंकि यह सख्त अर्थों में हमारे मॉडल का पैरामीटर नहीं है, फिर भी यह (मॉडल पैरामीटरों की तरह ही) हमारे मॉडल के अंतिम प्रदर्शन पर प्रभाव डालता है।
लर्निंग रेट (अक्सर α या कभी-कभी η से दर्शाया जाता है) यह दर्शाता है कि गुणांक कितनी तेज़ी से बदलते हैं। यह मात्रा स्थिर या परिवर्ती हो सकती है। इस समय की सबसे लोकप्रिय विधियों में से एक Adam कहलाती है, जिसका लर्निंग रेट समय के साथ स्केल होता है।
ग्रेडिएंट डीसेंट का उपयोग करते समय कई परिदृश्यों की अपेक्षा और विचार करना चाहिए:
लर्निंग रेट बहुत अधिक
यदि लर्निंग रेट बहुत बड़ा है, तो आप ग्रेडिएंट डीसेंट में बहुत बड़े कदम उठाएँगे। इसका लाभ यह है कि आप कॉस्ट फ़ंक्शन के मिनिमम तक जल्दी पहुँचते हैं, पर आप उसके आसपास अनंत तक डगमगाते हुए इस मिनिमम को चूकने का जोखिम उठाते हैं। घाटी की उपमा में, यह ऐसा है मानो आप हर बार कई किलोमीटर चल रहे हों, और शरण-स्थल को बिना महसूस किए पार कर जा रहे हों।
लर्निंग रेट बहुत कम
पिछले मामले से बचने के लिए, आप बहुत कम लर्निंग रेट चुनने के लिए प्रलोभित हो सकते हैं। लेकिन यदि यह बहुत कम है, तो आप कॉस्ट फ़ंक्शन के मिनिमम तक पहुँचने में असीमित समय ले सकते हैं। यह कुछ वैसा है जैसे घाटी के सबसे निचले बिंदु को खोजने के लिए पहाड़ पर मिलीमीटर-दर-मिलीमीटर आगे बढ़ना।
लर्निंग रेट इतने महत्वपूर्ण क्यों हैं?
ढलानों के अवरोह को स्थानीय मिनिमम तक पहुँचाने में मदद करने के लिए लर्निंग रेट को उपयुक्त मानों पर सेट करना आवश्यक है। इसलिए, इन्हें न बहुत अधिक और न बहुत कम सेट करना उचित है। यह आवश्यक है क्योंकि बहुत लंबे कदमों के साथ मिनिमम तक पहुँचना जटिल हो सकता है। अतः, यदि हम लर्निंग रेट को कम मानों पर सेट करें, तो ग्रेडिएंट डीसेंट अंततः अपने स्थानीय मिनिमा तक पहुँच सकता है। हालाँकि, इसमें समय लग सकता है।
विभिन्न लर्निंग रेट्स का कन्वर्जेन्स पर प्रभाव (छवि श्रेय: cs231n)
सर्वोत्तम लर्निंग रेट कैसे खोजें
दुर्भाग्यवश, सही लर्निंग रेट खोजने के लिए कोई जादुई सूत्र नहीं है। अधिकतर समय, आपको कई मान आज़माने पड़ते हैं, तब जाकर सही मान मिलता है। इसे हाइपरपैरामीटर ट्यूनिंग कहा जाता है, और इसे ठीक से करने के लिए अलग-अलग रणनीतियाँ मौजूद हैं।
स्लोप डीसेंट के इष्टतम संचालन को सुनिश्चित करने का एक बढ़िया तरीका है ऑप्टिमाइज़ेशन के दौरान कॉस्ट फ़ंक्शन की प्लॉटिंग करना। X-अक्ष पर इटरेशन्स की संख्या रखें, और Y-अक्ष पर कॉस्ट फ़ंक्शन का मान। इससे आप प्रत्येक ग्रेडिएंट डीसेंट इटरेशन के बाद कॉस्ट फ़ंक्शन का मान देख पाएँगे और लर्निंग रेट की उपयुक्तता को ट्रैक कर पाएँगे। आप अलग-अलग मान आज़मा कर उन्हें साथ में प्लॉट भी कर सकते हैं।
यदि ग्रेडिएंट डीसेंट इष्टतम रूप से काम कर रहा है, तो प्रत्येक इटरेशन के बाद कॉस्ट फ़ंक्शन घटेगा। ग्रेडिएंट डीसेंट तब कन्वर्ज होता है जब वह कॉस्ट फ़ंक्शन को और कम करने में विफल रहता है और वहीँ बना रहता है। ग्रेडिएंट डीसेंट को कन्वर्ज होने के लिए आवश्यक इटरेशन्स की संख्या काफी भिन्न हो सकती है। कभी यह पचास इटरेशन्स लेता है, तो कभी दो या तीन मिलियन तक हो सकते हैं। अग्रिम रूप से इटरेशन्स की संख्या का अनुमान लगाना कठिन है।
कुछ एल्गोरिदम आपको स्वतः बता सकते हैं कि ग्रेडिएंट डीसेंट में कन्वर्जेन्स हुआ है या नहीं। हालाँकि, पहले से कन्वर्जेन्स थ्रेशहोल्ड स्थापित करना बेहतर होगा, जिसे अनुमान लगाना भी काफी कठिन है। यही एक महत्वपूर्ण कारण है कि सरल प्लॉट्स कन्वर्जेन्स परीक्षण के लिए सर्वोत्तम हैं।
निष्कर्ष
जहाँ वैज्ञानिक किसी फ़ंक्शन की लागत को न्यूनतम करने के लिए उसके पैरामीटर मान खोजने में ग्रेडिएंट डीसेंट का उपयोग करते हैं, वहीं प्रोग्रामर मशीन लर्निंग मॉडलों को प्रशिक्षित करते समय इसे ऑप्टिमाइज़ेशन एल्गोरिदम के रूप में उपयोग करते हैं। ग्रेडिएंट डीसेंट कॉन्वेक्स फ़ंक्शनों के आधार पर किसी विशेष फ़ंक्शन को न्यूनतम करने के लिए अपने कुछ पैरामीटरों को क्रमिक रूप से समायोजित करता है।
ग्रेडिएंट डीसेंट संभवतः डीप लर्निंग और मशीन लर्निंग में उपयोग की जाने वाली सबसे चर्चित ऑप्टिमाइज़ेशन रणनीति है। डेटा साइंटिस्ट इसे अक्सर तब उपयोग करते हैं जब किसी एल्गोरिदम को लर्निंग मॉडलों के साथ संयोजित करने का अवसर होता है। ग्रेडिएंट डीसेंट एल्गोरिदम को समझना अपेक्षाकृत सरल है, और इसे लागू करना उससे भी आसान। डीप लर्निंग के क्षेत्र में और गहराई से जाने के लिए, हमारा मशीन लर्निंग कोर्स का पूरा कैटलॉग देखें।
ग्रेडिएंट डीसेंट संबंधी सामान्य प्रश्न (FAQs)
ग्रेडिएंट डीसेंट क्या है?⌄
ग्रेडिएंट डीसेंट एक ऑप्टिमाइज़ेशन एल्गोरिदम है जिसका उपयोग मशीन लर्निंग और डीप लर्निंग मॉडलों में कॉस्ट फ़ंक्शन को न्यूनतम करने के लिए किया जाता है। यह फ़ंक्शन के सबसे तीव्र ढलान की दिशा में मॉडल पैरामीटरों को क्रमिक रूप से अपडेट करता है ताकि फ़ंक्शन का सबसे निचला बिंदु (मिनिमम) मिल सके।
ग्रेडिएंट डीसेंट कैसे काम करता है?⌄
ग्रेडिएंट डीसेंट कॉस्ट फ़ंक्शन का प्रत्येक पैरामीटर के सापेक्ष ग्रेडिएंट (या ढलान) निकालकर काम करता है। फिर, यह त्रुटि कम करने के लिए पैरामीटरों को ग्रेडिएंट की विपरीत दिशा में एक स्टेप साइज़ या लर्निंग रेट के साथ समायोजित करता है।
ग्रेडिएंट डीसेंट में लर्निंग रेट क्या है?⌄
लर्निंग रेट एक हाइपरपैरामीटर है जो कॉस्ट फ़ंक्शन के न्यूनतम की ओर उठाए जाने वाले कदमों के आकार को नियंत्रित करता है। छोटा लर्निंग रेट धीमे कन्वर्जेन्स का कारण बनता है, जबकि बहुत बड़ा लर्निंग रेट एल्गोरिदम को मिनिमम से आगे निकल जाने (ओवरशूट) का कारण बन सकता है।
ग्रेडिएंट डीसेंट की आम चुनौतियाँ क्या हैं?⌄
ग्रेडिएंट डीसेंट को स्थानीय मिनिमा में फँस जाना, धीमा कन्वर्जेन्स, और लर्निंग रेट के चुनाव के प्रति संवेदनशीलता जैसी चुनौतियों का सामना करना पड़ सकता है। मोमेंटम, अनुकूली लर्निंग रेट्स (Adam, RMSprop) और रेग्युलराइज़ेशन जैसी तकनीकें इन समस्याओं को कम करने में मदद कर सकती हैं।
Python के साथ मशीन लर्निंग की खोज करें और मशीन लर्निंग वैज्ञानिक बनने की दिशा में आगे बढ़ें। पर्यवेक्षित, अपर्यवेक्षित, और डीप लर्निंग का अन्वेषण करें।
ग्रेडिएंट डीसेंट मशीन लर्निंग और डीप लर्निंग के सबसे महत्वपूर्ण एल्गोरिदमों में से एक है। यह एक अत्यंत शक्तिशाली ऑप्टिमाइज़ेशन एल्गोरिदम है जो लीनियर रिग्रेशन, लॉजिस्टिक रिग्रेशन और न्यूरल नेटवर्क मॉडलों को प्रशिक्षित कर सकता है। यदि आप मशीन लर्निंग में कदम रख रहे हैं, तो ग्रेडिएंट डीसेंट एल्गोरिदम को गहराई से समझना अनिवार्य है।
ग्रेडिएंट डीसेंट क्या है?
डेटा साइंस का उद्देश्य बड़े डेटा विश्लेषण में जटिल पैटर्न और व्यवहारों की खोज करना है। इन्हें "पैटर्न" कहा जाता है, अर्थात बार-बार दिखाई देने वाले रूप। मशीन लर्निंग के माध्यम से, यह डेटा विश्लेषण में पैटर्न का पता लगाने के लिए एल्गोरिदम को प्रशिक्षित करने का विषय है ताकि कोई विशेष कार्य बेहतर ढंग से किया जा सके। इसका अर्थ है सॉफ़्टवेयर को किसी कार्य को स्वायत्त रूप से करने या पूर्वानुमान लगाने के लिए सिखाना। ऐसा करने के लिए, डेटा साइंटिस्ट डेटा विश्लेषण करने हेतु एल्गोरिदम का चयन और प्रशिक्षण करता है। लक्ष्य, स्वाभाविक रूप से, समय के साथ उनकी भविष्यवाणियों में सुधार करना है।
इस प्रकार, मशीन लर्निंग बड़े पैमाने पर एल्गोरिदम के प्रशिक्षण पर आधारित है। जितना अधिक ये एल्गोरिदम डेटा के संपर्क में आते हैं, उतना अधिक वे बिना विशिष्ट निर्देशों के कार्य करना सीखते हैं; वे अनुभव से सीखते हैं। हम मशीन लर्निंग में विभिन्न प्रकार के एल्गोरिदम का उपयोग करते हैं। इनमें, ग्रेडिएंट डीसेंट सबसे उपयोगी और लोकप्रिय में से एक है।
ग्रेडिएंट डीसेंट एक ऑप्टिमाइज़ेशन एल्गोरिदम है। इसका उपयोग किसी फ़ंक्शन के न्यूनतम मान को अधिक तेज़ी से खोजने के लिए किया जाता है। ग्रेडिएंट डीसेंट की परिभाषा काफी सरल है। यह एक कॉन्वेक्स फ़ंक्शन के न्यूनतम को खोजने का एल्गोरिदम है। ऐसा करने के लिए, यह संबंधित फ़ंक्शन के पैरामीटरों को क्रमिक रूप से बदलता है। उदाहरण के लिए, यह लीनियर रिग्रेशन में उपयोग किया जाने वाला एक एल्गोरिदम है।
कॉन्वेक्स फ़ंक्शन ऐसा फ़ंक्शन है जो एक सुंदर घाटी जैसा दिखता है, जिसके केंद्र में एक वैश्विक न्यूनतम होता है। इसके विपरीत, नॉन-कॉन्वेक्स फ़ंक्शन में कई स्थानीय मिनिमा होते हैं, और ऐसे फ़ंक्शनों पर ग्रेडिएंट डीसेंट एल्गोरिदम का उपयोग नहीं किया जाना चाहिए, वरना यह मिले पहले ही मिनिमा पर अटक सकता है।
ग्रेडिएंट डीसेंट को “सबसे तीव्र अवरोही ढलान एल्गोरिदम” भी कहा जाता है। यह मशीन लर्निंग में बहुत महत्वपूर्ण है, जहाँ इसका उपयोग कॉस्ट फ़ंक्शन को न्यूनतम करने के लिए किया जाता है। कॉस्ट फ़ंक्शन डेटा विश्लेषण में सर्वश्रेष्ठ प्रेडिक्शन मॉडल तय करने के काम आता है। जितना अधिक कॉस्ट न्यूनतम होगा, मशीन उतनी ही अच्छी भविष्यवाणी कर पाएगी।
आपको तीन प्रसिद्ध प्रकार की डीसेंट मिलेंगी। आइए उन्हें करीब से देखें:
बैच ग्रेडिएंट डीसेंट
वैनिला ग्रेडिएंट डीसेंट के नाम से भी जाना जाने वाला बैच ग्रेडिएंट डीसेंट प्रशिक्षण डेटासेट के प्रत्येक उदाहरण के लिए त्रुटियों की गणना करता है। हालाँकि, यह ऐसा तभी करता है जब प्रत्येक प्रशिक्षण उदाहरण का सख्ती से मूल्यांकन कर लिया गया हो। इस प्रक्रिया की तुलना चक्र से करना उचित है। कुछ लोग इसे प्रशिक्षण युग भी कहते हैं।
बैच डीसेंट के कई लाभ हैं। विशेष रूप से, इसकी कम्प्यूटेशनल दक्षता अत्यंत व्यावहारिक है क्योंकि यह स्थिर कन्वर्जेन्स और स्थिर त्रुटि ग्रेडिएंट विकसित करता है। यह कहा जाए तो, बैच ग्रेडिएंट डीसेंट के कुछ नुक़सान भी हैं। कभी-कभी इसका स्थिर त्रुटि ग्रेडिएंट प्रतिकूल कन्वर्जेन्स अवस्था का कारण बन सकता है। साथ ही, इसे अपने एल्गोरिदम और मेमोरी में प्रशिक्षण डेटासेट की उपस्थिति की आवश्यकता होती है।
स्टोकेस्टिक ग्रेडिएंट डीसेंट
स्टोकेस्टिक ग्रेडिएंट डीसेंट प्रत्येक प्रशिक्षण उदाहरण के लिए अलग-अलग पैरामीटर अपडेट प्रदान करता है। यह प्रत्येक उदाहरण पर ध्यान देने की अनुमति देता है, जिससे प्रक्रिया त्रुटिरहित बनी रहती है। समस्या के आधार पर, यह एसजीडी को बैच ग्रेडिएंट डीसेंट की तुलना में तेज़ बनने में मदद कर सकता है। इसके नियमित अपडेट हमें सुधार दरों का विस्तृत लेखा-जोखा देते हैं।
यह कहा जाए तो, ये अपडेट कम्प्यूटेशनल रूप से महँगे होते हैं, विशेषकर स्टेपवाइज़ डीसेंट द्वारा उपयोग किए गए दृष्टिकोण की तुलना में। साथ ही, अपडेट की आवृत्ति शोरयुक्त ग्रेडिएंट का कारण बन सकती है और त्रुटि दर को कम होने से रोक सकती है। इसके बजाय, त्रुटि दर उछलती रहती है और लंबी अवधि में समस्याजनक हो जाती है।
मिनी-बैच ग्रेडिएंट डीसेंट
वैज्ञानिक मिनी-बैच ग्रेडिएंट डीसेंट को शुरुआती विधि के रूप में उपयोग करते हैं। क्यों? क्योंकि यह स्टोकेस्टिक डीसेंट और बैच डीसेंट की अवधारणाओं का एक आदर्श मिश्रण है। यह प्रशिक्षण डेटा सेट को बैचों में विभाजित करता है और प्रत्येक बैच के लिए एक अपडेट करता है, जिससे BGD की दक्षता और SGD की मजबूती के बीच संतुलन बनता है।
लोकप्रिय मिनी-बैच आकार पचास से लेकर दो सौ छप्पन तक होते हैं, लेकिन अन्य कई मशीन लर्निंग विधियों की तरह, यहाँ भी स्पष्ट नियम नहीं हैं क्योंकि यह अनुप्रयोग के अनुसार बदलता है। लोग इसे न्यूरल नेटवर्क के प्रशिक्षण के लिए एक बुनियादी विकल्प के रूप में उपयोग करते हैं। यह डीप लर्निंग के परिदृश्य में हिल डीसेंट का एक लोकप्रिय प्रकार भी है।
मशीन लर्निंग में ग्रेडिएंट डीसेंट इतना महत्वपूर्ण क्यों है?
मशीन लर्निंग में, हम सुपरवाइज़्ड लर्निंग समस्याओं में कॉस्ट फ़ंक्शन को न्यूनतम करने के लिए ग्रेडिएंट डीसेंट एल्गोरिदम का उपयोग करते हैं, जो एक कॉन्वेक्स फ़ंक्शन होता है (उदाहरण के लिए, मीन स्क्वेयर्ड एरर)।
इस एल्गोरिदम की बदौलत, मशीन सर्वश्रेष्ठ मॉडल ढूँढ़कर सीखती है। याद रखें कि कॉस्ट फ़ंक्शन को न्यूनतम करना मतलब ऐसे पैरामीटर a, b, c, आदि खोजना है जो हमारे मॉडल और डेटासेट के y बिंदुओं के बीच सबसे छोटी त्रुटियाँ दें। एक बार कॉस्ट फ़ंक्शन न्यूनतम हो जाने पर, यह सटीक वॉइस रिकॉग्निशन प्रोग्राम, कंप्यूटर विज़न प्रोग्राम, और स्टॉक मार्केट की कीमत का पूर्वानुमान लगाने वाले अनुप्रयोग बनाने का मार्ग प्रशस्त करता है।
आप देख सकते हैं कि ग्रेडिएंट डीसेंट एल्गोरिदम क्यों बुनियादी है: मशीन इसी से सीखती है।
इस एल्गोरिदम के कामकाज और उपयोगिता को बेहतर ढंग से समझाने के लिए, हम अक्सर पहाड़ की उपमा का उपयोग करते हैं। हम एक ऐसे व्यक्ति की कल्पना करते हैं जो पहाड़ों में रास्ता भटक गया है। मूलतः, वापस रास्ता पाने के लिए सबसे पहले सबसे तीव्र नीचे जाती हुई ढलान की दिशा खोजनी होगी। इस दिशा में कुछ दूरी तय करने के बाद, इस विधि को तब तक दोहराना होगा जब तक कोई घाटी (सबसे निचला मान) न मिल जाए। मशीन लर्निंग में, ग्रेडिएंट डीसेंट इसी विधि को लूप में तब तक दोहराने पर आधारित है जब तक कॉस्ट फ़ंक्शन का कोई मिनिमम न मिल जाए। इसी कारण इसे इटरेटिव एल्गोरिदम कहा जाता है और इसमें बहुत गणना लगती है।
यदि आप पहाड़ों में खो जाएँ, तो यह 2-चरणीय रणनीति आपकी मदद करेगी:
चरण 1 और 2 को लूप में दोहराकर, आप निश्चित रूप से घाटी के न्यूनतम तक पहुँचेंगे। यही रणनीति ग्रेडिएंट डीसेंट एल्गोरिदम है।
चरण 1: कॉस्ट फ़ंक्शन का अवकलन (डेरिवेटिव) निकालें
हम किसी यादृच्छिक प्रारंभिक बिंदु से शुरू करते हैं और फिर उस बिंदु पर ढलान का मान मापते हैं। गणित में, आप फ़ंक्शन का डेरिवेटिव निकालकर ढलान मापते हैं।
चरण 2: मॉडल पैरामीटरों को अपडेट करना
इसके बाद हम ढलान की नीचे जाती दिशा में एक निश्चित दूरी d तक आगे बढ़ते हैं, पर इस बार 300 मीटर नहीं। इस दूरी को “लर्निंग रेट” कहा जाता है। इस क्रिया का परिणाम हमारे मॉडल के पैरामीटर मानों को बदलना होता है (जब हम चलते हैं तो घाटी में हमारे निर्देशांक बदल जाते हैं)।
कौन-से क्षेत्र ग्रेडिएंट डीसेंट का उपयोग करते हैं?
ग्रेडिएंट डीसेंट एल्गोरिदम का उपयोग मुख्य रूप से मशीन लर्निंग और डीप लर्निंग के क्षेत्रों में किया जाता है। बाद वाले को मशीन लर्निंग का उन्नत संस्करण माना जा सकता है। यह सबसे सूक्ष्म पैटर्न का पता लगाने की अनुमति देता है। ये ऐसे विधाएँ हैं जिनके लिए गणित में मजबूत पृष्ठभूमि और पाइथन का ज्ञान आवश्यक है।
इस प्रोग्रामिंग भाषा में कई लाइब्रेरीज़ हैं जो मशीन लर्निंग के अनुप्रयोग को आसान बनाती हैं। यह विधा बड़े पैमाने पर डेटा का तेज़ और सटीक विश्लेषण करने में बहुत उपयोगी है। यह पिछले रुझानों या घटनाओं के आधार पर प्रेडिक्टिव विश्लेषण की अनुमति देती है।
मशीन लर्निंग उन विज्ञानों में से है जो बिग डेटा से निकटता से जुड़े हैं और जिनमें अपार संभावनाएँ हैं। यह बड़े डेटा स्ट्रीम के विश्लेषण में मानवीय बुद्धि की सीमाओं को पार करने की अनुमति देता है। ऑनलाइन उपलब्ध विशाल डेटा सेट्स के साथ, आर्टिफ़िशियल इंटेलिजेंस (AI) बिना मानवीय हस्तक्षेप के स्वयं सीख सकती है। उदाहरण के लिए, मशीन लर्निंग का उपयोग कनेक्टेड डिवाइसेज़ के क्षेत्र में होता है। इसकी बदौलत, कोई AI किसी स्मार्ट घर के निवासियों की आदतों के अनुसार खुद को ढाल सकती है और अपने कार्यों का निष्पादन इन्हीं आदतों को ध्यान में रखकर कर सकती है।
उदाहरण के लिए, AI मौसम के अनुसार कमरे की हीटिंग समायोजित कर सकती है। यही विज्ञान हमें और भी परिष्कृत रोबोट वैक्यूम क्लीनर देता है। मशीन लर्निंग के माध्यम से ग्रेडिएंट डीसेंट आर्टिफ़िशियल इंटेलिजेंस में बड़े उत्थान के केंद्र में है। व्यवहार में, इंजीनियर और AI विशेषज्ञ ग्रेडिएंट डीसेंट के अनेक अनुप्रयोग करते हैं।
यह Google जैसे सर्च इंजनों और YouTube, Netflix, या Amazon जैसे लोकप्रिय रिकमेंडेशन इंजनों के लिए उपयोगी है। उपयोगकर्ताओं से एकत्रित डेटा के आधार पर, एल्गोरिदम इंटरनेट उपयोगकर्ता की रुचियों को समझने की कोशिश करेगा। इससे उन्हें प्रासंगिक खोज परिणाम और बेहतर सिफारिशें देने में मदद मिलेगी।
मशीन लर्निंग ने कंप्यूटरों को मानवीय भाषा समझने और प्रोसेस करने में सक्षम बनाया है। इसी अनुप्रयोग ने Alexa, Google Assistant और Siri जैसे डिजिटल असिस्टेंट को जन्म दिया। मशीन लर्निंग और ग्रेडिएंट डीसेंट के अनुप्रयोग वीडियो गेम डेवलपर्स के लिए भी बहुत उपयोगी हैं। यहाँ लक्ष्य यह है कि AIs सबसे मानवीय कार्यों में उत्कृष्टता प्राप्त करें ताकि लोग उच्च-मूल्य गतिविधियों पर ध्यान केंद्रित कर सकें। आर्टिफ़िशियल इंटेलिजेंस और मशीन लर्निंग कंपनियों को अपने ग्राहकों की ज़रूरतों और भविष्य के रुझानों का पूर्वानुमान लगाने में सक्षम बनाते हैं।
ग्रेडिएंट डीसेंट को कैसे लागू करें
कम्प्यूटेशनल जटिलता के कारण लीनियर रिग्रेशन में ग्रेडिएंट डीसेंट का उपयोग किया जाता है। ग्रेडिएंट डीसेंट का सामान्य गणितीय सूत्र xt+1= xt- η∆xt है, जहाँ η लर्निंग रेट का प्रतिनिधित्व करता है और ∆xt अवरोह (डिसेंट) की दिशा है। ग्रेडिएंट डीसेंट कॉन्वेक्स फ़ंक्शनों पर लागू होने वाला एल्गोरिदम है। न्यूनतम करने के लिए कॉन्वेक्स फ़ंक्शन को ƒ मानते हुए, लक्ष्य प्रत्येक इटरेशन पर ƒ(xt+1) ≤ ƒ (xt) प्राप्त करना होगा।
विचार यह है कि इस एल्गोरिदम का उपयोग करके किसी गणितीय फ़ंक्शन का न्यूनतम धीरे-धीरे गणना किया जाए। कुछ समीकरणों के सामने, उन्हें हल करने का यही सबसे अच्छा तरीका होता है। जब हम ग्रेडिएंट डीसेंट की बात करते हैं, तो कॉस्ट फ़ंक्शन की धारणा को भी समझना चाहिए। सुपरवाइज़्ड मोड में, यह फ़ंक्शन किसी आकलन और वास्तविक मान के बीच त्रुटि सीमा को मापने की अनुमति देता है। लीनियर रिग्रेशन समस्या के मामले में मीन स्क्वेयर्ड ग्रेडिएंट की गणना का सूत्र निम्नलिखित है:
ग्रेडिएंट डीसेंट का उपयोग लर्निंग रेट की धारणा का भी करता है। यह एक हाइपरपैरामीटर है जो लॉस ग्रेडिएंट के सापेक्ष नेटवर्क वेट्स के समायोजन को नियंत्रित करने की अनुमति देता है। ध्यान दिया जाना चाहिए कि एक इष्टतम लर्निंग रेट अधिक तेज़ी और कुशलता से मिनिमम प्राप्त करने के लिए बहुत महत्वपूर्ण है। यह न बहुत अधिक होना चाहिए, न बहुत कम।
जैसे-जैसे मान नीचे जाता है, यह दिखाता है कि कोई व्यक्ति धीरे-धीरे नीचे जाती ढलान के साथ आगे बढ़ रहा है। RMSprop, Adam और SGD जैसी कई ऑप्टिमाइज़ेशन विधियाँ ग्रेडिएंट डीसेंट एल्गोरिदम का उपयोग करती हैं। इस एल्गोरिदम का उपयोग करते समय गलती न हो, इसके लिए अपने पैरामीटर सावधानी से चुनने की सिफारिश की जाती है। यह भी ध्यान में रखना चाहिए कि मिला हुआ मिनिमम वैश्विक मिनिमम माना जाए, यह आवश्यक नहीं।
ग्रेडिएंट का प्राथमिक कार्य प्रत्येक वेट में बदलाव के सापेक्ष त्रुटियों में बदलाव को मापना है। ग्रेडिएंट को फ़ंक्शन की ढलान के रूप में सोचें। ग्रेडिएंट जितना अधिक होगा, ढलान उतनी ही तीव्र होगी—यह मॉडलों के लिए अनुकूल स्थिति है क्योंकि वे तेज़ी से सीख सकते हैं। हालाँकि, यदि ढलान शून्य हो जाए तो मॉडल सीखना बंद कर देता है। गणितीय रूप से, ग्रेडिएंट को अपने इनपुट्स के सापेक्ष सीमित अवकलन के रूप में वर्णित किया जा सकता है।
इम्प्लीमेंटेशन भाग में, हम दो फ़ंक्शंस लिखेंगे। एक होगा कॉस्ट फ़ंक्शन जो वास्तविक आउटपुट और प्रेडिक्टेड आउटपुट को इनपुट के रूप में लेकर लॉस लौटाएगा। दूसरा होगा वास्तविक ग्रेडिएंट डीसेंट फ़ंक्शन जो स्वतंत्र चर और लक्ष्य चर (आश्रित चर) को इनपुट के रूप में लेकर ग्रेडिएंट डीसेंट एल्गोरिदम का उपयोग करके सर्वश्रेष्ठ फ़िट लाइन खोजेगा।
इटरेशन्स, लर्निंग रेट और स्टॉपिंग थ्रेशहोल्ड ग्रेडिएंट डीसेंट एल्गोरिदम के ट्यूनिंग पैरामीटर हैं और उपयोगकर्ता द्वारा सेट किए जा सकते हैं। मुख्य फ़ंक्शन में, हम यादृच्छिक रूप से रैखिक संबंध वाले डेटा को प्रारंभ करेंगे, और सर्वश्रेष्ठ फ़िट लाइन खोजने के लिए डेटा पर ग्रेडिएंट डीसेंट एल्गोरिदम लागू करेंगे। ग्रेडिएंट डीसेंट एल्गोरिदम का उपयोग करके पाए गए इष्टतम वेट और बायस का उपयोग फिर मुख्य फ़ंक्शन में लाइन ऑफ़ बेस्ट फ़िट खींचने के लिए किया जाता है।
नीचे दिए गए कोड का आउटपुट इस प्रकार होगा:
आप ऊपर दिए गए कोड को इस नोटबुक के साथ टेस्ट और रन कर सकते हैं।
लर्निंग रेट: हाइपरपैरामीटर की भूमिका
एक और तत्व जिस पर ज़ोर देना महत्वपूर्ण है, वह है लर्निंग रेट। मशीन लर्निंग में, हम इस तरह के कारक को हाइपरपैरामीटर कहते हैं क्योंकि यह सख्त अर्थों में हमारे मॉडल का पैरामीटर नहीं है, फिर भी यह (मॉडल पैरामीटरों की तरह ही) हमारे मॉडल के अंतिम प्रदर्शन पर प्रभाव डालता है।
लर्निंग रेट (अक्सर α या कभी-कभी η से दर्शाया जाता है) यह दर्शाता है कि गुणांक कितनी तेज़ी से बदलते हैं। यह मात्रा स्थिर या परिवर्ती हो सकती है। इस समय की सबसे लोकप्रिय विधियों में से एक Adam कहलाती है, जिसका लर्निंग रेट समय के साथ स्केल होता है।
ग्रेडिएंट डीसेंट का उपयोग करते समय कई परिदृश्यों की अपेक्षा और विचार करना चाहिए:
लर्निंग रेट बहुत अधिक
यदि लर्निंग रेट बहुत बड़ा है, तो आप ग्रेडिएंट डीसेंट में बहुत बड़े कदम उठाएँगे। इसका लाभ यह है कि आप कॉस्ट फ़ंक्शन के मिनिमम तक जल्दी पहुँचते हैं, पर आप उसके आसपास अनंत तक डगमगाते हुए इस मिनिमम को चूकने का जोखिम उठाते हैं। घाटी की उपमा में, यह ऐसा है मानो आप हर बार कई किलोमीटर चल रहे हों, और शरण-स्थल को बिना महसूस किए पार कर जा रहे हों।
लर्निंग रेट बहुत कम
पिछले मामले से बचने के लिए, आप बहुत कम लर्निंग रेट चुनने के लिए प्रलोभित हो सकते हैं। लेकिन यदि यह बहुत कम है, तो आप कॉस्ट फ़ंक्शन के मिनिमम तक पहुँचने में असीमित समय ले सकते हैं। यह कुछ वैसा है जैसे घाटी के सबसे निचले बिंदु को खोजने के लिए पहाड़ पर मिलीमीटर-दर-मिलीमीटर आगे बढ़ना।
ढलानों के अवरोह को स्थानीय मिनिमम तक पहुँचाने में मदद करने के लिए लर्निंग रेट को उपयुक्त मानों पर सेट करना आवश्यक है। इसलिए, इन्हें न बहुत अधिक और न बहुत कम सेट करना उचित है। यह आवश्यक है क्योंकि बहुत लंबे कदमों के साथ मिनिमम तक पहुँचना जटिल हो सकता है। अतः, यदि हम लर्निंग रेट को कम मानों पर सेट करें, तो ग्रेडिएंट डीसेंट अंततः अपने स्थानीय मिनिमा तक पहुँच सकता है। हालाँकि, इसमें समय लग सकता है।
दुर्भाग्यवश, सही लर्निंग रेट खोजने के लिए कोई जादुई सूत्र नहीं है। अधिकतर समय, आपको कई मान आज़माने पड़ते हैं, तब जाकर सही मान मिलता है। इसे हाइपरपैरामीटर ट्यूनिंग कहा जाता है, और इसे ठीक से करने के लिए अलग-अलग रणनीतियाँ मौजूद हैं।
स्लोप डीसेंट के इष्टतम संचालन को सुनिश्चित करने का एक बढ़िया तरीका है ऑप्टिमाइज़ेशन के दौरान कॉस्ट फ़ंक्शन की प्लॉटिंग करना। X-अक्ष पर इटरेशन्स की संख्या रखें, और Y-अक्ष पर कॉस्ट फ़ंक्शन का मान। इससे आप प्रत्येक ग्रेडिएंट डीसेंट इटरेशन के बाद कॉस्ट फ़ंक्शन का मान देख पाएँगे और लर्निंग रेट की उपयुक्तता को ट्रैक कर पाएँगे। आप अलग-अलग मान आज़मा कर उन्हें साथ में प्लॉट भी कर सकते हैं।
यदि ग्रेडिएंट डीसेंट इष्टतम रूप से काम कर रहा है, तो प्रत्येक इटरेशन के बाद कॉस्ट फ़ंक्शन घटेगा। ग्रेडिएंट डीसेंट तब कन्वर्ज होता है जब वह कॉस्ट फ़ंक्शन को और कम करने में विफल रहता है और वहीँ बना रहता है। ग्रेडिएंट डीसेंट को कन्वर्ज होने के लिए आवश्यक इटरेशन्स की संख्या काफी भिन्न हो सकती है। कभी यह पचास इटरेशन्स लेता है, तो कभी दो या तीन मिलियन तक हो सकते हैं। अग्रिम रूप से इटरेशन्स की संख्या का अनुमान लगाना कठिन है।
कुछ एल्गोरिदम आपको स्वतः बता सकते हैं कि ग्रेडिएंट डीसेंट में कन्वर्जेन्स हुआ है या नहीं। हालाँकि, पहले से कन्वर्जेन्स थ्रेशहोल्ड स्थापित करना बेहतर होगा, जिसे अनुमान लगाना भी काफी कठिन है। यही एक महत्वपूर्ण कारण है कि सरल प्लॉट्स कन्वर्जेन्स परीक्षण के लिए सर्वोत्तम हैं।
निष्कर्ष
जहाँ वैज्ञानिक किसी फ़ंक्शन की लागत को न्यूनतम करने के लिए उसके पैरामीटर मान खोजने में ग्रेडिएंट डीसेंट का उपयोग करते हैं, वहीं प्रोग्रामर मशीन लर्निंग मॉडलों को प्रशिक्षित करते समय इसे ऑप्टिमाइज़ेशन एल्गोरिदम के रूप में उपयोग करते हैं। ग्रेडिएंट डीसेंट कॉन्वेक्स फ़ंक्शनों के आधार पर किसी विशेष फ़ंक्शन को न्यूनतम करने के लिए अपने कुछ पैरामीटरों को क्रमिक रूप से समायोजित करता है।
ग्रेडिएंट डीसेंट संभवतः डीप लर्निंग और मशीन लर्निंग में उपयोग की जाने वाली सबसे चर्चित ऑप्टिमाइज़ेशन रणनीति है। डेटा साइंटिस्ट इसे अक्सर तब उपयोग करते हैं जब किसी एल्गोरिदम को लर्निंग मॉडलों के साथ संयोजित करने का अवसर होता है। ग्रेडिएंट डीसेंट एल्गोरिदम को समझना अपेक्षाकृत सरल है, और इसे लागू करना उससे भी आसान। डीप लर्निंग के क्षेत्र में और गहराई से जाने के लिए, हमारा मशीन लर्निंग कोर्स का पूरा कैटलॉग देखें।