जर तुम्ही टेक क्षेत्रात “न्यूरल नेटवर्क” हा शब्द ऐकला असेल, तर तुम्ही कदाचित काहीतरी जैविक कल्पना केली असेल. न्यूरॉन हा शब्द नवीन प्रोग्रामरला एआई सोबत काम करण्यासाठी मेंदूचा जीवशास्त्र समजून घेणे आवश्यक आहे असे वाटू शकते. त्यांना नाही. पण न्यूरॉन खरोखर काय करतो आणि तो तुमच्या कोडमध्ये लिहिलेल्या फंक्शनपेक्षा कसे वेगळा आहे याबद्दल गोंधळ वास्तव आहे. आणि हा फरक महत्त्वाचा आहे [1][2].
न्यूरॉन खरोखर काय आहे?
एआई मध्ये न्यूरॉन हा एक संगणकीय एकक आहे. सरलतेने सांगायचे तर, तो असा गोष्ट आहे जो इनपुट घेतो, गणित करतो आणि आउटपुट तयार करतो. हे फंक्शन सारखे वाटते, बरोबर? काहीसे तसेच आहे. पण समानता येथे संपते.
एकाच कृत्रिम न्यूरॉनच्या आंतरभागात काय होते ते येथे आहे [1]:
- इनपुट इतरत्र (मूळ डेटा किंवा मागील न्यूरॉन्सचे आउटपुट) पासून येतो
- प्रत्येक इनपुट वजनाने गुणाकार होतो — एक संख्यात्मक मूल्य जो निर्धारित करते की ते इनपुट किती महत्त्वाचे आहे
- सर्व वजनित इनपुट्स एकत्रित केली जातात
- एक बायस जोडला जातो (एक स्वतंत्र समायोज्य संख्या)
- परिणाम एक सक्रियता फंक्शन द्वारे [3] पास होतो
- बाहेर एकाच आउटपुट येतो
तर न्यूरॉन असे काहीतरी गणना करतो: आउटपुट = सक्रियता_फंक्शन(बेरीज(इनपुट्स × वजन) + बायस).
हे फंक्शनपेक्षा कसे वेगळे आहे
समजा तुम्ही Python फंक्शन लिहा:
def add_numbers(a, b):
return a + b
हे फंक्शन नेहमीच एकच प्रकारे वर्तन करते. त्याला 2 आणि 3 दे, 5 मिळे. त्याला कधीही समान इनपुट दे, तुम्हाला नेहमीच समान आउटपुट मिळे. तर्क स्थिर आहे.
न्यूरॉन? त्याचे वर्तन वेळेत बदलते [2]. वजन आणि बायस स्थिरांक नाहीत जे तुम्ही कोडमध्ये लिहा. ते पॅरामीटर आहेत जे प्रशिक्षणामध्ये समायोजित केली जातात. न्यूरॉन यादृच्छिक वजनासह सुरू होतो, त्याचे आउटपुट बरोबर होते किंवा गलत होते हे प्रतिक्रिया प्राप्त करतो, आणि नंतर पुढे अधिक चांगले करण्यासाठी ते वजन समायोजित करतो. तुमचे कठोर कोडित फंक्शन असे करू शकत नाही.
दुसरा फरक: नियमित फंक्शन निश्चितात्मक आणि पारदर्शक असतो. मी कोड वाचू शकतो आणि ते नेमकी काय करते हे बघू शकतो. न्यूरॉनची गणना दृश्यमान आहे, निश्चितच, पण तो ते वजन समायोजन का केला हे कमी स्पष्ट आहे. जेव्हा न्यूरल नेटवर्क हजारो उदाहरणांवर प्रशिक्षित केली जाते, तेव्हा विशिष्ट न्यूरॉन शेषावर 0.73 ऐवजी 0.75 वजन का संपली ते शोधणे खरोखरच कठीण होते [2].
वजन आणि बायस — शिक्षणीय भाग
हे तो कारण आहे जर न्यूरॉन फंक्शनपेक्षा वेगळे आहेत. ते वजन आणि बायस? ते हाताने लिहिलेले नाहीत. ते शिकले जातात.
प्रशिक्षणामध्ये, एक अल्गोरिदम (सामान्यतः backpropagation असे म्हणतात) न्यूरॉनने तयार केलेली आउटपुट पाहतो, ती तुला असायला हवी होती त्याशी तुलना करतो, आणि त्या त्रुटी कमी करण्यासाठी वजन आणि बायसचा आग्रह करतो. लाखो वेळा हे करा अरबो पॅरामीटरच्या आरपार, आणि अचानक नेटवर्कने डेटामधील नमुने शिकले आहेत ज्या मनुष्यांनी कधीही स्पष्टपणे प्रोग्राम केले नाहीत [4].
वजन इनपुटवर नियंत्रण करते की तो इनपुट न्यूरॉनच्या आउटपुटवर किती प्रभाव पाडतो. उच्च वजन म्हणजे “हा इनपुट खूप महत्त्वाचा आहे.” नकारात्मक वजन म्हणजे “जर हा इनपुट उच्च असेल, तर आउटपुट कमी करा.”
बायस एक ऑफसेट आहे. सर्व इनपुट्स शून्य असल्याशी, न्यूरॉनला त्याचा निर्णय सीमा शिफ्ट करण्याचा एक मार्ग आहे. न्यूरॉनचा बेसलाइन प्रवृत्ती म्हणून विचार करा — डेटा येण्यापूर्वीच ते 1 किंवा 0 आउटपुट करण्याकडे झुकतो का? [4][5]
सक्रियता फंक्शन — न्यूरॉन्सचे गैरलिनिअरिटी का आवश्यक आहे
येथे एक तपशील आहे जो काही नवीन लोकांना आश्चर्य वाटतो: जर न्यूरॉन्स फक्त सक्रियता फंक्शन शिवाय वजनित इनपुट्स जोडली तर त्यांना स्टॅक करणे शक्ती जोडत नाहीत. तुम्ही फक्त दुसरे रेषीय फंक्शन मिळवाल.
(w1*x1 + b) → (w2*(w1*x1 + b) + b2) → अजूनही फक्त एक रेषा
सक्रियता फंक्शन हे तोडतो. हे वजनित बेरजेला लागू केलेले गैरलिनिअर फंक्शन आहे. सामान्य निवड:
- ReLU (Rectified Linear Unit): इनपुट नकारात्मक असेल तर आउटपुट 0. अन्यथा, आउटपुट इनपुट. साधे पण शक्तिशाली.
- Sigmoid: आउटपुट 0 आणि 1 च्या दरम्यान दाबतो. संभाव्यतांसाठी चांगले.
- Tanh: सिग्मॉईड सारखेच पण आउटपुट -1 आणि 1 च्या दरम्यान.
सक्रियता फंक्शन हेच न्यूरॉन्सला मनोरंजक प्रकारे एकत्रित होण्याचे आणि जटिल संबंध मॉडेल करण्याचे अनुमती देते [3].
एक न्यूरॉन उपयोगी नाही. बर्यापैकी आहेत.
एकाच न्यूरॉन? अधिक शक्तिशाली नाही. हे डेटाचे दोन वर्ग यांच्यातील साधी रेषीय सीमा शिकू शकते. परंतु शेकडो किंवा हजारो त्यांना एकत्रित करा — त्यांना स्तरांमध्ये व्यवस्थित करा जिथे प्रत्येक स्तरचे आउटपुट पुढील्यामध्ये फीड होते — आणि अचानक तुम्ही अविश्वसनीयपणे जटिल नमुने शिकू शकता [1].
तो स्तरीय व्यवस्था हा न्यूरल नेटवर्क आहे. पहिली स्तर कच्चा इनपुट प्रक्रिया करतो. मध्यभागी लपलेली स्तरे सिग्नल परिष्कृत करतात. आउटपुट स्तर तुम्हाला तुमचे अंतिम उत्तर देते. न्यूरॉन्स दरम्यानच्या प्रत्येक जोडीला त्यचे स्वतःचे वजन आहे, आणि प्रशिक्षणामध्ये, हे सर्व एकसाथ समायोजित केली जातात [3].
तर त्याला न्यूरॉन असे का म्हणतात?
नाव जैविक प्रेरणेतून येते. तुमच्या मेंदूमधील खरे न्यूरॉन्स शेजारच्या न्यूरॉन्सपासून सिग्नल प्राप्त करतात, ते सिग्नल्स एकत्रित करतात, आणि त्या बेरजेने थ्रेशोल्ड ओलांडली तरी आग किंवा आग नाही. कृत्रिम न्यूरॉन्स गणितीयदृष्ट्या काहीतरी समान करतात — ते वजनित इनपुट्स एकत्रित करतात, बायस जोडतात, गैरलिनिअर फंक्शन लागू करतात.
समानता तुम्ही ते खूप दूर ढकलल्यास द्रुत तुटतो. खरे न्यूरॉन्स अधिक जटिल आहेत, विविध प्रकारासह, वेळ-अवलंबित गतिशीलता असलेले, आणि रासायनिक प्रक्रिया ज्या आम्ही पूर्णपणे समजत नाहीत. परंतु एआई मॉडेल्स बांधण्याच्या उद्देशाने, समानता उपयोगी होण्यास पुरेशी जवळ आहे [1][2].
व्यावहारिक सारांश
जेव्हा तुम्ही न्यूरल नेटवर्क बनवत किंवा वापरत असता, तर न्यूरॉन्सला लहान प्रोग्राम म्हणून विचार करू नका. त्यांना समायोज्य गणितीय द्वार म्हणून विचार करा. प्रत्येकी साधे. अगदी मूर्ख, स्वतःसार. बुद्धिमत्ता त्यांच्यापैकी बरेच असण्यातून, डेटा पासून शिकण्यातून, आणि त्यांचे वजन उपयोगी मूल्यांमध्ये एकत्रित होण्यातून उदयास येते.
फंक्शन हा एकदा लिहिलेला आणि कायमस्वरूपी चालवलेला स्थिर वर्तन आहे. न्यूरॉन एक शिक्षणीय घटक आहे जो डेटावर आधारित अनुकूलित होतो. तो मूळ फरक आहे, आणि तो कारण आहे की न्यूरल नेटवर्क्स पारंपरिक प्रोग्राम केलेल्या फंक्शन्स करू शकत नाहीत असे काम करू शकतात.
शेवट