मुख्य सामग्री पर जाएँ

Rectified Linear Unit (ReLU) के लिए शुरुआती मार्गदर्शिका

न्यूरल नेटवर्क्स के लिए सबसे लोकप्रिय activation functions में से एक की बुनियादी बातें जानें
Javier Canales Luna
Javier Canales Luna

अपना निःशुल्क खाता बनाएँ

अभ्यास और ट्रैक अपनी प्रगति को।

Google के साथ जारी रखेंजारी रखकर, आप हमारी उपयोग की शर्तें, हमारी गोपनीयता नीति को स्वीकार करते हैं और यह भी कि आपका डेटा USA में संग्रहीत है।

Rectified Linear Unit (ReLU) जैसे activation functions आधुनिक न्यूरल नेटवर्क्स की आधारशिला हैं। इनके बिना, इमेज रिकग्निशन से लेकर रिकमेंडेशन सिस्टम्स तक कई वास्तविक‑दुनिया की AI अनुप्रयोग—संभव नहीं होते। यह गाइड ReLU की बुनियादी बातें, इसके फायदे, सीमाएँ और इम्प्लीमेंटेशन की पड़ताल करता है।

ReLU की मूल बातें

AI के कुछ सबसे शक्तिशाली अनुप्रयोग कृत्रिम न्यूरल नेटवर्क्स के बिना संभव नहीं होते। न्यूरल नेटवर्क्स मानव मस्तिष्क से प्रेरित संगणनात्मक मॉडल हैं। ये परस्पर जुड़े नोड्स या "न्यूरॉन्स" से बने होते हैं, जो मिलकर जानकारी प्रोसेस करते और निर्णय लेते हैं। किसी न्यूरल नेटवर्क को "डीप" बनाता है इनपुट और आउटपुट के बीच परतों की संख्या। एक डीप न्यूरल नेटवर्क में कई परतें होती हैं, जिससे वह अधिक जटिल फीचर्स सीख पाता है और अधिक सटीक भविष्यवाणियाँ करता है।

डीप न्यूरल नेटवर्क

डीप न्यूरल नेटवर्क। स्रोत: DataCamp

हालाँकि, ये मॉडल केवल साधारण परतें नहीं हैं। अन्य घटक भी हैं जो न्यूरल नेटवर्क्स के सही ढंग से काम करने के लिए महत्वपूर्ण हैं। 

इन्हीं में से एक है activation functions। आप activation functions को निर्णयकर्ता की तरह देख सकते हैं; ये तय करते हैं कि कौन‑सी जानकारी अगली परत तक भेजी जानी चाहिए, और इस तरह एक नया स्तर का जटिल व्यवहार जोड़ते हैं जिससे न्यूरल नेटवर्क्स सूक्ष्म निर्णय ले सकें।

यहाँ, हम सबसे लोकप्रिय और व्यापक रूप से उपयोग किए जाने वाले activation functions में से एक—Rectified Linear Unit (ReLU)—का परिचय देंगे। हम इस activation function और इसकी कुछ वैरिएंट्स, इसके फायदे और सीमाएँ, तथा Pytorch के साथ इन्हें कैसे लागू करें, समझाएँगे। पढ़ते रहें?

Activation Functions क्या हैं?

Activation functions न्यूरल नेटवर्क्स के मूल निर्माण‑खंड हैं। वे किसी न्यूरल नेटवर्क में किसी नोड के इनपुट सिग्नल को आउटपुट सिग्नल में बदलते हैं, जिसे फिर अगली परत को भेजा जाता है। Activation functions के बिना, न्यूरल नेटवर्क्स केवल इनपुट और आउटपुट के बीच रैखिक (linear) संबंधों का ही मॉडल बना पाते, जैसे मैट्रिक्स गुणन के माध्यम से।

लेकिन अधिकांश वास्तविक‑दुनिया का डेटा केवल रैखिकता से मॉडल नहीं किया जा सकता। नॉन‑लीनियरिटी ऐसे पैटर्न पकड़ती है जैसे शून्य से एक बच्चे पर जाने का आपके बैंकिंग ट्रांज़ैक्शंस पर प्रभाव, तीन से चार बच्चों पर जाने से अलग हो सकता है। यदि न्यूरल नेटवर्क्स में activation functions न हों, तो वे वास्तविक घटनाओं में मौजूद जटिल नॉन‑लीनियर पैटर्न सीखने में विफल रहेंगे।

रैखिक बनाम गैर‑रैखिक फ़ंक्शंस

रैखिक बनाम गैर‑रैखिक फ़ंक्शंस। स्रोत: DataCamp

Activation functions नॉन‑लीनियर व्यवहार जोड़कर न्यूरल नेटवर्क्स को संबंध सीखने में सक्षम बनाते हैं। दूसरे शब्दों में, activation functions एक संख्यात्मक थ्रेशहोल्ड बनाते हैं कि किसी न्यूरॉन को सक्रिय करना है या नहीं, जिससे वह लचीलापन आता है जो जटिल और सूक्ष्म डेटा का मॉडल बनाने के लिए आवश्यक है।

ReLU क्या है?

सबसे लोकप्रिय और व्यापक रूप से उपयोग होने वाले activation functions में से एक ReLU (rectified linear unit) है। अन्य activation functions की तरह, यह मॉडल में नॉन‑लीनियरिटी जोड़ता है जिससे गणनात्मक प्रदर्शन बेहतर होता है। 

ReLU activation function का स्वरूप है:

f(x) = max(0, x)

ReLU फ़ंक्शन अपने इनपुट और शून्य के बीच अधिकतम मान आउटपुट करता है, जैसा कि ग्राफ में दिखाया गया है। धनात्मक इनपुट्स के लिए, फ़ंक्शन का आउटपुट इनपुट के बराबर होता है। सख्ती से ऋणात्मक इनपुट्स के लिए, फ़ंक्शन का आउटपुट शून्य होता है।

Rectified Linear Unit (ReLU) activation function.

Rectified Linear Unit (ReLU) activation function. स्रोत: DataCamp

ReLU के उपयोग के फायदे

ReLU का सबसे बड़ा फायदा यह है कि यह vanishing gradient समस्या को कम करने में मदद करता है। Vanishing gradient समस्या तब आती है जब बैकप्रोपेगेशन का उपयोग करके डीप न्यूरल नेटवर्क्स को ट्रेन किया जाता है। इसमें नेटवर्क के वेट्स को अपडेट करने के लिए उपयोग किया जाने वाला ग्रेडिएंट बहुत छोटा हो जाता है या नेटवर्क में पीछे की ओर जाते समय "गायब" हो जाता है। इससे वेट्स ठीक से अपडेट नहीं हो पाते, और लर्निंग धीमी या बंद हो जाती है। आप हमारी Introduction to Deep Learning in PyTorch Course में vanishing gradient समस्या की पूरी व्याख्या पढ़ सकते हैं।

क्योंकि ReLU फ़ंक्शन की कोई ऊपरी सीमा नहीं है और x के उच्च मानों के लिए ग्रेडिएंट शून्य पर अभिसरित नहीं होते, ReLU sigmoid और softmax जैसे activation functions के साथ आम vanishing gradient समस्या को दूर करता है। अन्य लोकप्रिय activation functions जानने के लिए हमारा अलग लेख देखें।

इसके अलावा, चूँकि ReLU सभी ऋणात्मक इनपुट्स के लिए शून्य आउटपुट देता है, यह स्वाभाविक रूप से sparse activations की ओर ले जाता है। यानी, ट्रेनिंग के दौरान केवल कुछ न्यूरॉन्स सक्रिय होते हैं, जिससे गणना अधिक कुशल हो जाती है।

अंततः, यह व्यवहार tanh या sigmoid जैसी अधिक जटिल फ़ंक्शंस की तुलना में, कम्प्यूटेशनल बोझ में उल्लेखनीय वृद्धि के बिना नेटवर्क्स को कई परतों तक स्केल करने देता है। यही कारण है कि ReLU सबसे आम डिफ़ॉल्ट activation function है और यदि आप अपने मॉडल में किस activation function का उपयोग करें इसे लेकर अनिश्चित हैं, तो यह आम तौर पर अच्छा विकल्प होता है।

PyTorch में ReLU लागू करना

PyTorch में ReLU को लागू करना काफ़ी आसान है। आपको बस nn.ReLU() फ़ंक्शन का उपयोग कर इसे बनाना है और अपने मॉडल में जोड़ना है।

अगले उदाहरण में, हम एक साधारण न्यूरॉन पर ReLU फ़ंक्शन लागू करते हैं और ऋणात्मक मान की स्थिति में ग्रेडिएंट की गणना करते हैं।

# Create a ReLU function with PyTorch
relu_pytorch = nn.ReLU()

# Apply your ReLU function on x, and calculate gradients
x = torch.tensor(-1.0, requires_grad=True)
y = relu_pytorch(x)
y.backward()

# Print the gradient of the ReLU function for x
gradient = x.grad
print(gradient)
>>> tensor(0.)

ध्यान दें कि इनपुट मान -1 था, और ReLU फ़ंक्शन ने शून्य लौटाया। याद रखें कि x के ऋणात्मक मानों के लिए, ReLU का आउटपुट हमेशा शून्य होता है, और वास्तव में, ग्रेडिएंट हर जगह शून्य होता है क्योंकि x के किसी भी ऋणात्मक मान के लिए फ़ंक्शन में कोई परिवर्तन नहीं है।

ReLU की वैरिएंट्स

ReLU निस्संदेह सबसे अधिक उपयोग किया जाने वाला activation function है, लेकिन कभी‑कभी यह उस समस्या के लिए काम नहीं करता जिसे आप हल करने की कोशिश कर रहे हैं। सौभाग्य से, डीप लर्निंग शोधकर्ताओं ने कुछ ReLU वैरिएंट्स विकसित किए हैं जिन्हें आप अपने मॉडलों में आज़मा सकते हैं। यहाँ सबसे लोकप्रिय विकल्प दिए गए हैं

Leaky ReLU

Leaky ReLU का स्वरूप:

f(x) = max(0.01x, x)

Leaky ReLU का उद्देश्य तथाकथित "dying ReLU" समस्या को संबोधित करना है। हमने पहले ही बताया है कि ReLU ऋणात्मक इनपुट्स के लिए हमेशा शून्य आउटपुट देता है। ऐसा होने पर, ऋणात्मक मानों वाले नोड्स के ग्रेडिएंट शेष ट्रेनिंग के लिए शून्य पर सेट हो जाते हैं, जिससे यह पैरामीटर सीख नहीं पाता। इस चुनौती को दूर करने के लिए, Leaky ReLU ऋणात्मक इनपुट्स के लिए एक गुणन कारक का उपयोग करता है। नतीजतन, फ़ंक्शन शून्य नहीं होगा बल्कि उसमें एक छोटी ऋणात्मक ढलान होगी, जैसा कि निम्न ग्राफ़ में दिखाया गया है:

Leaky ReLU activation function.

Leaky ReLU activation function. स्रोत: DataCamp

Parametric ReLU (PReLU)

Leaky ReLU dying ReLU समस्या से निपटने के लिए गुणन कारक प्रदान करता है। Parametric ReLU (PReLU) एक कदम और आगे बढ़ता है और ऋणात्मक इनपुट्स के मान की गणना के लिए एक स्थिरांक के बजाय एक सीखे जा सकने वाले पैरामीटर (a) की पेशकश करता है: 

f(x) = max(ax, x)

हालाँकि PReLU, सटीकता और अनुकूलनशीलता के मामले में ReLU और Leaky ReLU की तुलना में सुधार प्रदान करता है (यह विशेष रूप से कंप्यूटर विज़न या स्पीच रिकग्निशन जैसे जटिल कार्यों में पैटर्न पकड़ने के लिए उपयुक्त है), यह मॉडल में जटिलता भी जोड़ता है। इस पैरामीटर को प्रशिक्षित करना समय‑साध्य हो सकता है और सावधानीपूर्वक ट्यूनिंग और रेग्युलराइज़ेशन की आवश्यकता होती है। 

Parametric ReLU activation function

Parametric ReLU activation function. स्रोत: DataCamp

Exponential linear unit (ELU)

ReLU का एक और उत्कृष्ट विकल्प Exponential linear unit (ELU) है, जिसकी फ़ॉर्मूला इस प्रकार है:

ReLU के विपरीत, ELU में ऋणात्मक मान होते हैं, जो mean unit activations को शून्य के करीब धकेलते हैं, जिससे वे vanishing gradients के प्रति कम संवेदनशील होते हैं। साथ ही, mean activations का शून्य के करीब होना तेज़ सीखने और अभिसरण का कारण बनता है।

ELU activation function

ELU activation function. स्रोत: DataCamp

ReLU से जुड़ी आम समस्याएँ

ReLU एक बढ़िया activation function है, लेकिन यह सर्वसमर्थ नहीं है। विशेष रूप से, ReLU दो प्रसिद्ध समस्याओं से जूझ सकता है।

पहली है dying ReLU समस्या। जैसा कि पहले बताया, ReLU ऋणात्मक इनपुट्स के लिए हमेशा शून्य आउटपुट देता है। इससे वेट्स ऐसे अपडेट हो सकते हैं कि वह न्यूरॉन फिर कभी किसी डेटा पॉइंट पर सक्रिय न हो। 

यदि ऐसा होता है, तो उस यूनिट से होकर बहने वाला ग्रेडिएंट उस बिंदु से आगे हमेशा के लिए शून्य रहेगा, जिससे वह पैरामीटर सीख नहीं पाएगा। Leaky ReLU और PReLU जैसी ReLU वैरिएंट्स इसी समस्या को संबोधित करने के लिए बनाई गईं।

दूसरे सिरे पर अस्थिर ग्रेडिएंट भी हो सकते हैं। Exploding gradients समस्या तब होती है जब ग्रेडिएंट बहुत बड़े हो जाते हैं, जिसके परिणामस्वरूप वेट अपडेट अत्यधिक हो जाते हैं और ट्रेनिंग विचलित हो जाती है। 

इस स्थिति में, बड़े एरर ग्रेडिएंट जमा होते हैं और मॉडल वेट्स बहुत बड़े हो जाते हैं। इससे ट्रेनिंग समय लंबा और मॉडल प्रदर्शन कमजोर हो सकता है। Exploding gradients को संबोधित करने के लिए कई तकनीकें हैं, जिनमें gradient clipping और batch normalization शामिल हैं। 

न्यूरल नेटवर्क्स में ReLU के अनुप्रयोग

अपनी विशिष्ट विशेषताओं के कारण, ReLU सबसे लोकप्रिय activation function बन गया है—यह PyTorch और TensorFlow जैसे फ्रेमवर्क्स में डिफ़ॉल्ट विकल्प है—और कई डीप लर्निंग अनुप्रयोगों में व्यापक रूप से उपयोग होता है, जिनमें शामिल हैं:

  • इमेज रिकग्निशन: ReLU कन्वोल्यूशनल न्यूरल नेटवर्क्स (CNNs) का एक महत्वपूर्ण घटक है, जो फीचर एक्सट्रैक्शन और इमेज प्रोसेसिंग के लिए प्रचलित विशेष नेटवर्क्स हैं।
  • NLP: ReLU कई Natural Language Processing (NLP) कार्यों में भी उपयोग होता है। इस activation function का सफलतापूर्वक उपयोग स्पीच रिकग्निशन और ऑडियो प्रोसेसिंग जैसे क्षेत्रों में नॉन‑लीनियरिटी प्रदान करने के लिए किया गया है।
  • रिकमेंडर सिस्टम्स: व्यक्तिगत अनुशंसाएँ देने के लिए रिकमेंडर सिस्टम्स में ReLU का उपयोग होता है। 

निष्कर्ष

हमने न्यूरल नेटवर्क्स के प्रशिक्षण के दौरान ReLU activation function की केंद्रीय भूमिका को समझा। सरल होने के बावजूद, ReLU सबसे प्रभावी activation functions में से एक है, और शायद सबसे लोकप्रिय भी। 

जैसे‑जैसे न्यूरल नेटवर्क्स विकसित होंगे, activation functions की खोज भी निश्चित रूप से विस्तृत होगी—संभव है कि ऐसी नई रूपरेखाएँ उभरें जो उभरती आर्किटेक्चर्स की विशिष्ट चुनौतियों को संबोधित करें। 

Activation function का सावधानीपूर्वक चयन एक संतुलन साधना है—विज्ञान की समझ और सधे हुए सहज ज्ञान का मेल—जो न्यूरल नेटवर्क्स के प्रदर्शन को महत्वपूर्ण रूप से प्रभावित कर सकता है। 

डीप लर्निंग के बारे में और जानने में रुचि रखते हैं? हमारी समर्पित सामग्रियाँ देखें और AI की सबसे रूपांतरकारी तकनीकों में से एक के लिए तैयार हो जाएँ:

ReLU से जुड़े सामान्य प्रश्न

ReLU, sigmoid और tanh activation functions से अलग कैसे है?

ReLU sigmoid और tanh से अलग है क्योंकि यह आउटपुट को किसी निश्चित रेंज में संकुचित नहीं करता (जैसे sigmoid के लिए [0,1] या tanh के लिए [-1,1])। इसके बजाय, यह धनात्मक मानों के लिए इनपुट को सीधे आउटपुट करता है और ऋणात्मक मानों के लिए शून्य देता है। यह सादगी ReLU को संगणनात्मक रूप से कुशल बनाती है और sigmoid व tanh के साथ आमतौर पर होने वाली vanishing gradient समस्या को संबोधित करने में मदद करती है।

मुझे अन्य activation functions की तुलना में कब ReLU का उपयोग करना चाहिए?

ReLU अधिकांश डीप न्यूरल नेटवर्क्स की hidden layers के लिए एक बेहतरीन डिफ़ॉल्ट विकल्प है, खासकर जब आप बड़े मॉडल्स ट्रेन कर रहे हों या जटिल, नॉन‑लीनियर संबंधों वाले डेटासेट्स संभाल रहे हों। हालाँकि, यदि आपको "dying ReLU" जैसी समस्याएँ मिलती हैं या आपका मॉडल अपेक्षानुसार प्रदर्शन नहीं करता, तो Leaky ReLU, PReLU या ELU जैसी वैरिएंट्स आज़माने पर विचार करें।

क्या न्यूरल नेटवर्क की आउटपुट लेयर में ReLU का उपयोग किया जा सकता है?

ReLU आमतौर पर न्यूरल नेटवर्क की आउटपुट लेयर में उपयोग नहीं किया जाता क्योंकि इसकी रेंज अनबाउंडेड है, जिससे आउटपुट की व्याख्या चुनौतीपूर्ण हो सकती है। आउटपुट लेयर्स के लिए आम विकल्पों में शामिल हैं:

  • Sigmoid: बाइनरी क्लासिफिकेशन समस्याओं के लिए।
  • Softmax: मल्टी‑क्लास क्लासिफिकेशन के लिए।
  • Linear activation: रिग्रेशन कार्यों के लिए।
ReLU sparse activations में कैसे योगदान देता है, और यह क्यों महत्वपूर्ण है?

ReLU सभी ऋणात्मक इनपुट्स के लिए शून्य आउटपुट देकर sparse activations में योगदान देता है, यानी किसी भी समय केवल कुछ न्यूरॉन्स सक्रिय रहते हैं। Sparse activations संगणनात्मक ओवरहेड घटाते हैं, overfitting को रोकते हैं, और नेटवर्क को डेटा की सबसे प्रासंगिक विशेषताओं पर ध्यान केंद्रित करने के लिए प्रोत्साहित करते हैं।

ट्रेनिंग में ReLU से उत्पन्न समस्याओं को डिबग करने के कुछ व्यावहारिक सुझाव क्या हैं?

यहाँ कुछ सुझाव हैं:

  • dying ReLU समस्या की जाँच करें: ट्रेनिंग के दौरान अपनी activations मॉनिटर करें। यदि बड़ी संख्या में न्यूरॉन्स लगातार शून्य आउटपुट दे रहे हैं, तो Leaky ReLU या PReLU का उपयोग करने पर विचार करें।
  • Batch normalization का उपयोग करें: यह ग्रेडिएंट्स को स्थिर करने में मदद कर सकता है और exploding gradients जैसी समस्याओं को रोक सकता है, जो तब हो सकती हैं जब ReLU बड़े धनात्मक मान आउटपुट करता है।
  • Gradient clipping: यदि exploding gradients हों, तो क्लिपिंग ग्रेडिएंट परिमाण को एक निर्दिष्ट मान तक सीमित कर स्थिरता बढ़ा सकती है।
  • Weight initialization के साथ प्रयोग करें: उपयुक्त initialization (जैसे He initialization) dead neurons या धीमे अभिसरण जैसी समस्याओं की संभावना कम कर सकता है।
Javier Canales Luna

लेखक

Javier Canales Luna

मैं एक स्वतंत्र डेटा विश्लेषक हूँ और दुनिया भर की कंपनियों व संगठनों के साथ डेटा साइंस परियोजनाओं पर सहयोग करता/करती हूँ। मैं 2+ वर्षों के अनुभव वाला/वाली डेटा साइंस प्रशिक्षक भी हूँ। मैं नियमित रूप से अंग्रेज़ी और स्पेनिश में डेटा साइंस से संबंधित लेख लिखता/लिखती हूँ, जिनमें से कुछ DataCamp, Towards Data Science और Analytics Vidhya जैसी स्थापित वेबसाइटों पर प्रकाशित हुए हैं। राजनीतिक विज्ञान और क़ानून की पृष्ठभूमि वाले/वाली डेटा वैज्ञानिक के रूप में, मेरा लक्ष्य लोक नीति, क़ानून और प्रौद्योगिकी के संगम पर काम करना है—विचारों की शक्ति का उपयोग करके ऐसे अभिनव समाधान और कथाएँ विकसित करना जो हमें तात्कालिक चुनौतियों, विशेषकर जलवायु संकट, से निपटने में मदद कर सकें। मैं स्वयं-अध्येता, सतत सीखने वाला/वाली और बहुविषयक दृष्टिकोण का प्रबल समर्थक/समर्थक हूँ। नई चीज़ें सीखने में कभी देर नहीं होती।

विषय