परसेप्ट्रॉन: कृत्रिम तंत्रिका नेटवर्क का बिल्डिंग ब्लॉक

स्रोत नोड: 1216283

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

तंत्रिका नेटवर्क की जैविक प्रेरणा

एक न्यूरॉन (तंत्रिका कोशिका) तंत्रिका तंत्र का मूल निर्माण खंड है। एक मानव मस्तिष्क में अरबों न्यूरॉन्स होते हैं जो एक-दूसरे से जुड़े होते हैं। वे मस्तिष्क से संकेत प्राप्त करने और भेजने के लिए जिम्मेदार हैं। जैसा कि नीचे दिए गए चित्र में देखा गया है, एक विशिष्ट न्यूरॉन में तीन मुख्य भाग होते हैं - डेंड्राइट, एक एक्सोन, और कोशिका शरीर या सोम। डेंड्राइट कोशिका शरीर से निकलने वाली पेड़ जैसी शाखाएं हैं। वे अन्य न्यूरॉन्स से जानकारी प्राप्त करते हैं। सोमा न्यूरॉन का मूल है। यह डेंड्राइट्स से प्राप्त जानकारी को संसाधित करने के लिए जिम्मेदार है। एक्सॉन एक केबल की तरह है जिसके माध्यम से न्यूरॉन्स सूचना भेजते हैं। अपने अंत की ओर, अक्षतंतु कई शाखाओं में विभाजित हो जाता है जो अपने डेंड्राइट के माध्यम से अन्य न्यूरॉन्स के साथ संबंध बनाते हैं। अक्षतंतु और अन्य न्यूरॉन डेंड्राइट के बीच संबंध को सिनेप्सेस कहा जाता है।

1: जैविक न्यूरॉन बनाम कृत्रिम तंत्रिका नेटवर्क

छवि स्रोत: विलेम्स, के. (2017, 2 मई)। केरस ट्यूटोरियल: पायथन में गहन शिक्षण.

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

न्यूरॉन की जैविक कार्यप्रणाली से प्रेरित होकर, एक अमेरिकी वैज्ञानिक फ्रैंक रोसेनब्लैट 1957 में कॉर्नेल एयरोनॉटिकल प्रयोगशाला में परसेप्ट्रॉन की अवधारणा लेकर आए।

  • एक न्यूरॉन विभिन्न शक्तियों के विद्युत आवेगों के रूप में अन्य न्यूरॉन्स से जानकारी प्राप्त करता है।
  • न्यूरॉन अन्य न्यूरॉन्स से प्राप्त सभी आवेगों को एकीकृत करता है।
  • यदि परिणामी योग एक निश्चित सीमा मान से बड़ा है, तो न्यूरॉन 'फायर' करता है, जिससे एक एक्शन पोटेंशिअल ट्रिगर होता है जो अन्य जुड़े हुए न्यूरॉन्स तक प्रसारित होता है।

परसेप्ट्रॉन के मुख्य घटक

रोसेनब्लैट का परसेप्ट्रॉन मूल रूप से एक बाइनरी क्लासिफायरियर है। परसेप्ट्रॉन में 3 मुख्य भाग होते हैं:

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

हम इनके बारे में अगले भाग में और अधिक देखेंगे।

एक परसेप्ट्रॉन का कार्य करना

पहले चरण में, सभी इनपुट मानों को उनके संबंधित भार से गुणा किया जाता है और एक साथ जोड़ा जाता है। प्राप्त परिणाम को भारित योग कहा जाता है ∑wi*xi, या अलग ढंग से कहा गया है,  X1*w1 + x2*w2 +…wn*xn. यह योग उनके महत्व के आधार पर इनपुट का उचित प्रतिनिधित्व देता है। इसके अतिरिक्त, एक पूर्वाग्रह शब्द b इस योग में ∑wi*xi + जोड़ा जाता है b. पूर्वाग्रह एक अन्य मॉडल पैरामीटर (वजन के अतिरिक्त) के रूप में कार्य करता है जिसे मॉडल के प्रदर्शन को बेहतर बनाने के लिए ट्यून किया जा सकता है।

दूसरे चरण में, एक सक्रियण फ़ंक्शन f उपरोक्त राशि पर लागू किया जाता है ∑wi*xi + b आउटपुट प्राप्त करने के लिए Y = f(∑wi*xi + b). परिदृश्य और उपयोग किए गए सक्रियण फ़ंक्शन के आधार पर, उत्पादन या तो बाइनरी {1, 0} या एक सतत मान. 

एक परसेप्ट्रॉन का कार्य करना

(अक्सर इन दोनों चरणों को मल्टी-लेयर परसेप्ट्रॉन में एक ही चरण के रूप में दर्शाया जाता है, यहां मैंने बेहतर समझ के लिए उन्हें दो अलग-अलग चरणों के रूप में दिखाया है)

सक्रियण कार्य

एक जैविक न्यूरॉन तभी सक्रिय होता है जब एक निश्चित सीमा पार हो जाती है। इसी प्रकार, कृत्रिम न्यूरॉन भी तभी सक्रिय होगा जब इनपुट का योग (भारित योग) एक निश्चित सीमा मान से अधिक हो जाएगा, मान लीजिए 0. सहज रूप से, हम इस तरह एक नियम-आधारित दृष्टिकोण के बारे में सोच सकते हैं -

यदि ∑wi*xi + b > 0: आउटपुट = 1 अन्यथा: आउटपुट = 0

इसका ग्राफ कुछ इस प्रकार होगा:

सक्रियण कार्य

यह वास्तव में यूनिट स्टेप (थ्रेसहोल्ड) सक्रियण फ़ंक्शन है जिसका उपयोग मूल रूप से रोसेनब्लैट द्वारा किया गया था। लेकिन जैसा कि आप देख सकते हैं, यह फ़ंक्शन 0 पर बंद है, इसलिए यह गणितीय गणनाओं में समस्याएं पैदा करता है। उपरोक्त फ़ंक्शन का एक आसान संस्करण सिग्मॉइड फ़ंक्शन है। यह 0 और 1 के बीच आउटपुट देता है। दूसरा हाइपरबोलिक टैंगेंट (टैन) हैh) फ़ंक्शन, जो -1 और 1 के बीच आउटपुट उत्पन्न करता है। सिग्मॉइड और टैन दोनों फ़ंक्शन गायब होने वाली ग्रेडिएंट समस्याओं से ग्रस्त हैं। आजकल, ReLU और Leaky ReLU सबसे लोकप्रिय रूप से उपयोग किए जाने वाले सक्रियण फ़ंक्शन हैं। वे गहरे नेटवर्क पर तुलनात्मक रूप से स्थिर हैं।

बाइनरी क्लासिफायरियर के रूप में परसेप्ट्रॉन

अब तक, हमने जैविक प्रेरणा और परसेप्ट्रॉन के गणित को देखा है। इस अनुभाग में, हम देखेंगे कि एक परसेप्ट्रॉन एक रैखिक वर्गीकरण समस्या को कैसे हल करता है।

कुछ पुस्तकालय आयात करना -

sklearn.datasets से make_blobs आयात करें matplotlib.pyplot को plt के रूप में आयात करें np %matplotlib इनलाइन के रूप में numpy आयात करें

का उपयोग करके एक डमी डेटासेट तैयार करना make_blobs स्किकिट लर्न द्वारा प्रदान की गई कार्यक्षमता -

# डेटासेट जेनरेट करें
# डेटासेट विज़ुअलाइज़ करें plt.figure(figsize = (6, 6)) plt.scatter(X[:, 0], X[:, 1], c = Y) plt.title('जमीनी सच्चाई', फ़ॉन्टसाइज = 18) plt.शो()
बाइनरी क्लासिफायरियर के रूप में परसेप्ट्रॉन

मान लीजिए कि नीले बिंदु 1s हैं और हरे बिंदु 0 हैं। परसेप्ट्रॉन तर्क का उपयोग करके, हम एक निर्णय सीमा बना सकते हैं(हाइपरप्लेन) वर्गीकरण के लिए जो ग्राफ़ पर विभिन्न डेटा बिंदुओं को अलग करता है।

इससे पहले कि हम आगे बढ़ें, आइए इनपुट वेक्टर में एक पूर्वाग्रह शब्द (एक) जोड़ें -

# इनपुट वेक्टर में एक पूर्वाग्रह जोड़ें X_bias = np.ones([X.shape[0], 3]) X_bias[:, 1:3] =

डेटासेट कुछ इस तरह दिखेगा

डाटासेट

यहां उपरोक्त डेटासेट की प्रत्येक पंक्ति इनपुट वेक्टर (एक डेटापॉइंट) का प्रतिनिधित्व करती है। निर्णय सीमा बनाने के लिए, हमें उचित भार ज्ञात करने की आवश्यकता है। निम्नलिखित नियम का उपयोग करके प्रशिक्षण से वजन 'सीखा' जाता है -

w = w + (अपेक्षित - अनुमानित) * x

परसेप्ट्रॉन डब्ल्यू

इसका मतलब है कि जमीनी सच्चाई से अनुमानित परिणाम को घटाना और फिर इसे वर्तमान इनपुट वेक्टर से गुणा करना और वजन का नया मूल्य प्राप्त करने के लिए इसमें पुराने वजन जोड़ना। यदि हमारा आउटपुट वास्तविक वर्ग के समान है, तो भार नहीं बदलता है। लेकिन अगर हमारा अनुमान ज़मीनी सच्चाई से अलग है तो वज़न उसी हिसाब से बढ़ता या घटता है. इस प्रकार प्रत्येक पुनरावृत्ति में वज़न को उत्तरोत्तर समायोजित किया जाता है।

हम वेट वेक्टर को मनमाना मान निर्दिष्ट करके शुरू करते हैं, फिर हम हाथ में त्रुटि और डेटा का उपयोग करके प्रत्येक पुनरावृत्ति में उन्हें उत्तरोत्तर समायोजित करते हैं -

# यादृच्छिक मानों के साथ वजन प्रारंभ करें w = np.random.rand(3, 1) print(w)

आउटपुट:

[[0.37547448] [0.00239401] [0.18640939]]

परसेप्ट्रॉन के सक्रियण फ़ंक्शन को परिभाषित करें -

def activate_func(z): यदि z >= 1: वापसी 1 अन्यथा: वापसी 0

इसके बाद, हम परसेप्ट्रॉन लर्निंग नियम लागू करते हैं -

रेंज में _ के लिए (100): रेंज में i के लिए (X_bias.shape[0]): y = activate_func(w.transpose().dot(X_bias[i, :])) # वज़न अपडेट करें w = w + (( Y[i] - y) * X_bias[i, :]).reshape(w.shape[0], 1)

इस बात की गारंटी नहीं है कि वज़न एक पास में एकत्रित हो जाएगा, इसलिए हम लगातार सीखने के नियम को लागू करते हुए सभी प्रशिक्षण डेटा को परसेप्ट्रॉन एल्गोरिदम में 100 बार फीड करते हैं ताकि अंततः हम इष्टतम वजन प्राप्त करने में कामयाब हो सकें।

अब, हमने इष्टतम वजन प्राप्त कर लिया है Y = का उपयोग करके प्रत्येक डेटापॉइंट के लिए वर्ग की भविष्यवाणी करें f(∑wi*xi + b) या Y = wT.x वेक्टर रूप में।

# डेटापॉइंट के वर्ग की भविष्यवाणी करना परिणाम_वर्ग = [सक्रियण_func(w.transpose().dot(x)) for x in X_bias]

निर्णय सीमा और अनुमानित वर्ग लेबल की कल्पना करें -

# यूनिट वेक्टर में कनवर्ट करें w = w/np.sqrt(w.transpose().dot(w))
# परिणामों की कल्पना करें plt.figure(figsize = (6, 6)) plt.scatter(X[:, 0], X[:, 1], c = परिणाम_वर्ग) plt.plot([-10, -1], हाइपरप्लेन ([-10, -1], w), lw = 3, c = 'लाल') plt.title('निर्णय सीमा के साथ परसेप्ट्रॉन वर्गीकरण') plt.show()
निर्णय सीमा के साथ परसेप्ट्रॉन वर्गीकरण

आप जमीनी सच्चाई की छवि की तुलना अनुमानित परिणाम की छवि से कर सकते हैं और कुछ बिंदु देख सकते हैं जो गलत वर्गीकृत हैं। यदि हम सटीकता की गणना करते हैं, तो यह लगभग 98% आती है (मैं इसे पाठकों पर एक अभ्यास के रूप में छोड़ता हूं)।

यदि आप देखें, तो यहां हमारा मूल डेटा काफी अलग था, इसलिए हम इतनी अच्छी सटीकता प्राप्त करने में सक्षम हैं। लेकिन वास्तविक दुनिया के डेटा के मामले में ऐसा नहीं है। एकल परसेप्ट्रॉन का उपयोग करके, हम केवल एक रैखिक निर्णय सीमा का निर्माण कर सकते हैं, इसलिए यदि डेटा को आपस में मिलाया जाता है तो परसेप्ट्रॉन एल्गोरिदम खराब प्रदर्शन करेगा। यह एकल परसेप्ट्रॉन मॉडल की सीमाओं में से एक है।

एंडनोट्स

हमने रोसेनब्लैट के परसेप्ट्रॉन के पीछे की जैविक प्रेरणा को समझने से शुरुआत की। फिर हम परसेप्ट्रॉन और सक्रियण कार्यों के गणित की ओर आगे बढ़े। अंत में एक खिलौना डेटासेट का उपयोग करते हुए, हमने देखा कि कैसे परसेप्ट्रॉन एक रैखिक निर्णय सीमा का निर्माण करके बुनियादी वर्गीकरण कर सकता है जो विभिन्न वर्गों से संबंधित डेटापॉइंट्स को अलग करता है।

लेखक के बारे में

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

इस लेख में दिखाया गया मीडिया एनालिटिक्स विद्या के स्वामित्व में नहीं है और इसका उपयोग लेखक के विवेक पर किया जाता है।

स्रोत: https://www.analyticsvidya.com/blog/2021/10/perceptron-building-block-of-artificial-neural-network/

समय टिकट:

से अधिक एनालिटिक्स विधा