अनुक्रमणिका[लपवा][दाखवा]
अलिकडच्या वर्षांत, न्यूरल नेटवर्क्सची लोकप्रियता वाढली आहे कारण त्यांनी कार्यांच्या विस्तृत श्रेणीत अत्यंत चांगले असल्याचे दर्शवले आहे.
ते प्रतिमा आणि ऑडिओ ओळख, नैसर्गिक भाषा प्रक्रिया आणि गो आणि बुद्धिबळ सारखे क्लिष्ट खेळ खेळण्यासाठी एक उत्तम पर्याय असल्याचे दर्शविले गेले आहे.
या पोस्टमध्ये, मी तुम्हाला न्यूरल नेटवर्कला प्रशिक्षण देण्याच्या संपूर्ण प्रक्रियेतून मार्गक्रमण करेन. मी न्यूरल नेटवर्कला प्रशिक्षित करण्याच्या सर्व चरणांचा उल्लेख आणि स्पष्टीकरण देईन.
मी पायऱ्यांवर जाईन तेव्हा मला एक साधे उदाहरण जोडायचे आहे जेणेकरून एक व्यावहारिक उदाहरण देखील असेल याची खात्री करा.
तर, चला, आणि न्यूरल नेटवर्क्सवर प्रक्रिया कशी करायची ते शिकू या
चला सोपी सुरुवात करूया आणि काय आहेत ते विचारूया न्यूरल नेटवर्क प्रथम स्थानावर.
न्यूरल नेटवर्क्स नेमके काय आहेत?
न्यूरल नेटवर्क्स हे संगणक सॉफ्टवेअर आहेत जे मानवी मेंदूच्या ऑपरेशनचे अनुकरण करतात. ते मोठ्या प्रमाणात डेटा आणि स्पॉट पॅटर्नमधून शिकू शकतात जे लोकांना शोधणे कठीण होऊ शकते.
अलिकडच्या वर्षांत न्यूरल नेटवर्कची लोकप्रियता वाढली आहे कारण चित्र आणि ऑडिओ ओळख, नैसर्गिक भाषा प्रक्रिया आणि भविष्यसूचक मॉडेलिंग यासारख्या कार्यांमध्ये त्यांच्या बहुमुखीपणामुळे.
एकंदरीत, न्यूरल नेटवर्क हे विस्तृत ऍप्लिकेशन्ससाठी एक सशक्त साधन आहे आणि आमच्याकडे विविध प्रकारच्या नोकऱ्यांकडे जाण्याचा मार्ग बदलण्याची संधी आहे.
आपण त्यांच्याबद्दल का जाणून घेतले पाहिजे?
न्यूरल नेटवर्क्स समजून घेणे महत्त्वाचे आहे कारण त्यांनी संगणक दृष्टी, उच्चार ओळखणे आणि नैसर्गिक भाषा प्रक्रिया यासह विविध क्षेत्रात शोध लावले आहेत.
न्यूरल नेटवर्क्स, उदाहरणार्थ, सेल्फ-ड्रायव्हिंग कार, स्वयंचलित भाषांतर सेवा आणि अगदी वैद्यकीय निदानातील अलीकडील घडामोडींच्या केंद्रस्थानी आहेत.
न्यूरल नेटवर्क कसे कार्य करतात आणि त्यांची रचना कशी करावी हे समजून घेणे आम्हाला नवीन आणि कल्पक अनुप्रयोग तयार करण्यात मदत करते. आणि, कदाचित, यामुळे भविष्यात आणखी मोठे शोध होऊ शकतात.
ट्यूटोरियल बद्दल एक टीप
मी वर म्हटल्याप्रमाणे, मी एक उदाहरण देऊन न्यूरल नेटवर्कला प्रशिक्षण देण्याच्या पायऱ्या समजावून सांगू इच्छितो. हे करण्यासाठी, आपण MNIST डेटासेटबद्दल बोलले पाहिजे. न्यूरल नेटवर्कसह प्रारंभ करू इच्छिणाऱ्या नवशिक्यांसाठी ही एक लोकप्रिय निवड आहे.
MNIST हे मॉडिफाईड नॅशनल इंस्टिट्यूट ऑफ स्टँडर्ड्स अँड टेक्नॉलॉजीचे संक्षिप्त रूप आहे. हा हस्तलिखित अंकी डेटासेट आहे जो सामान्यतः मशीन लर्निंग मॉडेलचे प्रशिक्षण आणि चाचणीसाठी वापरला जातो, विशेषत: न्यूरल नेटवर्क.
संग्रहात 70,000 ते 0 पर्यंतच्या हस्तलिखित अंकांचे 9 ग्रेस्केल फोटो आहेत.
MNIST डेटासेट यासाठी लोकप्रिय बेंचमार्क आहे प्रतिमा वर्गीकरण कार्ये हे वारंवार शिकवण्यासाठी आणि शिकण्यासाठी वापरले जाते कारण ते कॉम्पॅक्ट आणि हाताळण्यास सोपे आहे तरीही मशीन लर्निंग अल्गोरिदमसाठी उत्तर देणे कठीण आव्हान आहे.
TensorFlow, Keras आणि PyTorch यासह अनेक मशीन लर्निंग फ्रेमवर्क आणि लायब्ररीद्वारे MNIST डेटासेट समर्थित आहे.
आता आम्हाला MNIST डेटासेटबद्दल माहिती आहे, चला न्यूरल नेटवर्कला प्रशिक्षण देण्याच्या आमच्या चरणांसह प्रारंभ करूया.
न्यूरल नेटवर्क प्रशिक्षित करण्यासाठी मूलभूत पायऱ्या
आवश्यक लायब्ररी आयात करा
जेव्हा पहिल्यांदा न्यूरल नेटवर्कला प्रशिक्षित करणे सुरू केले जाते, तेव्हा मॉडेल डिझाइन आणि प्रशिक्षित करण्यासाठी आवश्यक साधने असणे महत्वाचे आहे. न्यूरल नेटवर्क तयार करण्याची सुरुवातीची पायरी म्हणजे आवश्यक लायब्ररी जसे की टेन्सरफ्लो, केरास आणि NumPy आयात करणे.
ही लायब्ररी न्यूरल नेटवर्कच्या विकासासाठी बिल्डिंग ब्लॉक्स म्हणून काम करतात आणि महत्त्वपूर्ण क्षमता प्रदान करतात. या लायब्ररींचे संयोजन अत्याधुनिक न्यूरल नेटवर्क डिझाइन आणि वेगवान प्रशिक्षण तयार करण्यास अनुमती देते.
आमचे उदाहरण सुरू करण्यासाठी; आम्ही आवश्यक लायब्ररी आयात करू, ज्यात TensorFlow, Keras आणि NumPy यांचा समावेश आहे. टेन्सर फ्लो एक ओपन-सोर्स मशीन लर्निंग फ्रेमवर्क आहे, केरास एक उच्च-स्तरीय न्यूरल नेटवर्क API आहे आणि NumPy एक संख्यात्मक संगणन पायथन लायब्ररी आहे.
import tensorflow as tf
from tensorflow import keras
import numpy as np
डेटासेट लोड करा
डेटासेट आता लोड करणे आवश्यक आहे. डेटासेट हा डेटाचा संच आहे ज्यावर न्यूरल नेटवर्क प्रशिक्षित केले जाईल. हा फोटो, ऑडिओ आणि मजकूर यासह कोणत्याही प्रकारचा डेटा असू शकतो.
डेटासेटचे दोन भागांमध्ये विभाजन करणे महत्त्वाचे आहे: एक न्यूरल नेटवर्कला प्रशिक्षण देण्यासाठी आणि दुसरा प्रशिक्षित मॉडेलच्या अचूकतेचे मूल्यांकन करण्यासाठी. डेटासेट आयात करण्यासाठी TensorFlow, Keras आणि PyTorch यासह अनेक लायब्ररी वापरल्या जाऊ शकतात.
आमच्या उदाहरणासाठी, आम्ही MNIST डेटासेट लोड करण्यासाठी Keras देखील वापरतो. डेटासेटमध्ये 60,000 प्रशिक्षण फोटो आणि 10,000 चाचणी प्रतिमा आहेत.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
डेटा पूर्वप्रक्रिया
न्यूरल नेटवर्कला प्रशिक्षण देण्यासाठी डेटा प्रीप्रोसेसिंग हा महत्त्वाचा टप्पा आहे. हे न्यूरल नेटवर्कमध्ये भरण्यापूर्वी डेटा तयार करणे आणि साफ करणे आवश्यक आहे.
पिक्सेल व्हॅल्यू स्केलिंग करणे, डेटा सामान्य करणे आणि लेबल्सला वन-हॉट एन्कोडिंगमध्ये रूपांतरित करणे ही प्रीप्रोसेसिंग प्रक्रियेची उदाहरणे आहेत. या प्रक्रिया तंत्रिका नेटवर्कला अधिक प्रभावीपणे आणि अचूकपणे शिकण्यात मदत करतात.
डेटाची प्री-प्रोसेसिंग ओव्हरफिटिंग कमी करण्यासाठी आणि न्यूरल नेटवर्कची कार्यक्षमता सुधारण्यासाठी देखील मदत करू शकते.
न्यूरल नेटवर्कला प्रशिक्षण देण्यापूर्वी तुम्ही डेटा पूर्वप्रक्रिया करणे आवश्यक आहे. यामध्ये लेबल्स एक-हॉट एन्कोडिंगमध्ये बदलणे आणि पिक्सेल मूल्ये 0 आणि 1 च्या दरम्यान स्केलिंग करणे समाविष्ट आहे.
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = keras.utils.to_categorical(train_labels, 10)
test_labels = keras.utils.to_categorical(test_labels, 10)
मॉडेल परिभाषित करा
न्यूरल नेटवर्क मॉडेल परिभाषित करण्याच्या प्रक्रियेमध्ये त्याचे आर्किटेक्चर स्थापित करणे समाविष्ट आहे, जसे की स्तरांची संख्या, प्रति स्तर न्यूरॉन्सची संख्या, सक्रियकरण कार्ये आणि नेटवर्क प्रकार (फीडफॉरवर्ड, रिकरंट किंवा कॉन्व्होल्युशनल).
तुम्ही वापरत असलेले न्यूरल नेटवर्क डिझाइन तुम्ही ज्या समस्येचे निराकरण करण्याचा प्रयत्न करत आहात त्यानुसार निर्धारित केले जाते. सु-परिभाषित न्यूरल नेटवर्क डिझाईन अधिक कार्यक्षम आणि अचूक बनवून न्यूरल नेटवर्क शिकण्यात मदत करू शकते.
या टप्प्यावर न्यूरल नेटवर्क मॉडेलचे वर्णन करण्याची वेळ आली आहे. या उदाहरणासाठी, दोन लपविलेल्या स्तरांसह, प्रत्येकी 128 न्यूरॉन्ससह, आणि 10 न्यूरॉन्स असलेल्या सॉफ्टमॅक्स आउटपुट लेयरसह एक साधे मॉडेल वापरा.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
मॉडेल संकलित करा
न्यूरल नेटवर्क मॉडेलच्या संकलनादरम्यान नुकसान कार्य, ऑप्टिमायझर आणि मेट्रिक्स निर्दिष्ट करणे आवश्यक आहे. आउटपुटचा अचूक अंदाज लावण्याची न्यूरल नेटवर्कची क्षमता नुकसान कार्याद्वारे मोजली जाते.
प्रशिक्षणादरम्यान न्यूरल नेटवर्कची अचूकता वाढवण्यासाठी, ऑप्टिमायझर त्याचे वजन बदलतो. प्रशिक्षणादरम्यान न्यूरल नेटवर्कची प्रभावीता मेट्रिक्स वापरून मोजली जाते. न्यूरल नेटवर्क प्रशिक्षित करण्यापूर्वी मॉडेल तयार करणे आवश्यक आहे.
आमच्या उदाहरणात, आपण आत्ताच मॉडेल तयार केले पाहिजे.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
मॉडेलला प्रशिक्षण द्या
न्यूरल नेटवर्कद्वारे तयार केलेला डेटासेट पास करणे हे न्यूरल नेटवर्कचे प्रशिक्षण म्हणून ओळखले जाते.
प्रमाणीकरण डेटासेटचा उपयोग प्रशिक्षणादरम्यान न्यूरल नेटवर्कची प्रभावीता तपासण्यासाठी आणि ओव्हरफिटिंग टाळण्यासाठी केला जातो. प्रशिक्षण प्रक्रियेस थोडा वेळ लागू शकतो, त्यामुळे न्यूरल नेटवर्क अंडरफिटिंग टाळण्यासाठी योग्यरित्या प्रशिक्षित आहे याची खात्री करणे महत्वाचे आहे.
प्रशिक्षण डेटा वापरून, आम्ही आता मॉडेलला प्रशिक्षण देऊ शकतो. हे करण्यासाठी, आम्ही बॅच आकार (मॉडेल अद्यतनित करण्यापूर्वी प्रक्रिया केलेल्या नमुन्यांची संख्या) आणि युगांची संख्या (संपूर्ण डेटासेटमध्ये पुनरावृत्तीची संख्या) परिभाषित करणे आवश्यक आहे.
model.fit(train_images, train_labels, epochs=10, batch_size=32)
मॉडेलचे मूल्यांकन
चाचणी डेटासेटवर न्यूरल नेटवर्कच्या कार्यक्षमतेची चाचणी करणे ही त्याचे मूल्यांकन करण्याची प्रक्रिया आहे. या टप्प्यात, चाचणी डेटासेटवर प्रक्रिया करण्यासाठी प्रशिक्षित न्यूरल नेटवर्कचा वापर केला जातो आणि अचूकतेचे मूल्यांकन केले जाते.
अगदी नवीन, न वापरलेल्या डेटावरून न्यूरल नेटवर्क किती प्रभावीपणे योग्य परिणामाचा अंदाज लावू शकते हे त्याच्या अचूकतेचे मोजमाप आहे. मॉडेलचे विश्लेषण केल्याने न्यूरल नेटवर्क किती चांगले काम करत आहे हे निर्धारित करण्यात मदत करू शकते आणि ते आणखी चांगले बनवण्याचे मार्ग देखील सुचवू शकतात.
प्रशिक्षणानंतर चाचणी डेटा वापरून आम्ही शेवटी मॉडेलच्या कामगिरीचे मूल्यांकन करू शकतो.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
इतकंच! आम्ही MNIST डेटासेटमधील अंक शोधण्यासाठी न्यूरल नेटवर्क प्रशिक्षित केले.
डेटा तयार करण्यापासून ते प्रशिक्षित मॉडेलच्या परिणामकारकतेचे मूल्यांकन करण्यापर्यंत, न्यूरल नेटवर्कला प्रशिक्षण देण्यासाठी अनेक प्रक्रियांचा समावेश होतो. या सूचना नवशिक्यांना कार्यक्षमतेने न्यूरल नेटवर्क तयार करण्यात आणि प्रशिक्षण देण्यात मदत करतात.
नवशिक्या ज्यांना विविध समस्या हाताळण्यासाठी न्यूरल नेटवर्क वापरायचे आहे ते या सूचनांचे पालन करून तसे करू शकतात.
उदाहरणाची कल्पना करणे
अधिक चांगल्या प्रकारे समजून घेण्यासाठी या उदाहरणाद्वारे आपण काय केले आहे हे पाहण्याचा प्रयत्न करूया.
या कोड स्निपेटमध्ये मॅटप्लॉटलिब पॅकेजचा वापर प्रशिक्षण डेटासेटमधून फोटोंची यादृच्छिक निवड करण्यासाठी केला जातो. प्रथम, आम्ही मॅटप्लॉटलिबचे “पायप्लॉट” मॉड्यूल आयात करतो आणि त्याला “plt” असे उपनाव देतो. त्यानंतर, एकूण 10 बाय 10 इंच आकारमानासह, आम्ही 5 पंक्ती आणि सबप्लॉटच्या 5 स्तंभांसह एक आकृती बनवतो.
त्यानंतर, आम्ही सबप्लॉट्सवर पुनरावृत्ती करण्यासाठी फॉर लूप वापरतो, प्रत्येकावर प्रशिक्षण डेटासेटमधून एक चित्र प्रदर्शित करतो. चित्र प्रदर्शित करण्यासाठी, "imshow" फंक्शन वापरला जातो, ज्यामध्ये "cmap" पर्याय ग्रेस्केलमध्ये फोटो प्रदर्शित करण्यासाठी 'ग्रे' वर सेट केला जातो. प्रत्येक सबप्लॉटचे शीर्षक देखील संग्रहातील संबंधित प्रतिमेच्या लेबलवर सेट केले आहे.
शेवटी, आकृतीमध्ये प्लॉट केलेली चित्रे प्रदर्शित करण्यासाठी आम्ही "शो" फंक्शन वापरतो. हे फंक्शन आम्हाला डेटासेटमधील फोटोंच्या नमुन्याचे दृष्यदृष्ट्या मूल्यमापन करण्यास अनुमती देते, जे आम्हाला डेटा समजून घेण्यात आणि कोणत्याही संभाव्य समस्या ओळखण्यात मदत करू शकते.
import matplotlib.pyplot as plt
# Plot a random sample of images
fig, axes = plt.subplots(nrows=5, ncols=5, figsize=(10,10))
for i, ax in enumerate(axes.flat):
ax.imshow(train_images[i], cmap='gray')
ax.set_title(f"Label: {train_labels[i].argmax()}")
ax.axis('off')
plt.show()
महत्वाचे न्यूरल नेटवर्क मॉडेल
- फीडफॉरवर्ड न्यूरल नेटवर्क्स (FFNN): न्यूरल नेटवर्कचा एक साधा प्रकार ज्यामध्ये माहिती एका मार्गाने, इनपुट स्तरापासून आउटपुट स्तरापर्यंत एक किंवा अधिक लपविलेल्या स्तरांद्वारे प्रवास करते.
- कॉन्व्होल्युशनल न्यूरल नेटवर्क्स (CNN): एक न्यूरल नेटवर्क जे सामान्यतः प्रतिमा शोधणे आणि प्रक्रिया करण्यासाठी वापरले जाते. CNN चा हेतू चित्रांमधील वैशिष्ट्ये स्वयंचलितपणे ओळखणे आणि काढणे आहे.
- रिकरंट न्यूरल नेटवर्क्स (RNN): एक न्यूरल नेटवर्क जे सामान्यतः प्रतिमा शोधणे आणि प्रक्रिया करण्यासाठी वापरले जाते. CNN चा हेतू चित्रांमधील वैशिष्ट्ये स्वयंचलितपणे ओळखणे आणि काढणे आहे.
- लाँग शॉर्ट-टर्म मेमरी (LSTM) नेटवर्क: मानक RNN मधील ग्रेडियंट गायब होण्याच्या समस्येवर मात करण्यासाठी RNN चा एक प्रकार तयार केला आहे. अनुक्रमिक डेटामधील दीर्घकालीन अवलंबित्व LSTM सह अधिक चांगल्या प्रकारे कॅप्चर केले जाऊ शकते.
- ऑटोएनकोडर: पर्यवेक्षित नसलेले शिक्षण न्यूरल नेटवर्क ज्यामध्ये नेटवर्कला त्याचा इनपुट डेटा त्याच्या आउटपुट स्तरावर पुनरुत्पादित करण्यास शिकवले जाते. डेटा कॉम्प्रेशन, विसंगती शोधणे आणि चित्र काढून टाकणे हे सर्व ऑटोएनकोडरसह पूर्ण केले जाऊ शकतात.
- जनरेटिव्ह अॅडव्हर्सरियल नेटवर्क्स (GAN): जनरेटिव्ह न्यूरल नेटवर्क हा न्यूरल नेटवर्कचा एक प्रकार आहे जो प्रशिक्षण डेटासेटशी तुलना करता येणारा नवीन डेटा तयार करण्यास शिकवला जातो. GAN दोन नेटवर्कचे बनलेले आहेत: एक जनरेटर नेटवर्क जे नवीन डेटा तयार करते आणि एक डिस्क्रिमिनेटर नेटवर्क जे तयार केलेल्या डेटाच्या गुणवत्तेचे मूल्यांकन करते.
रॅप-अप, तुमचे पुढचे पाऊल काय असावे?
न्यूरल नेटवर्कला प्रशिक्षण देण्याबद्दल अधिक जाणून घेण्यासाठी अनेक ऑनलाइन संसाधने आणि अभ्यासक्रम एक्सप्लोर करा. प्रोजेक्ट्स किंवा उदाहरणांवर काम करणे ही न्यूरल नेटवर्क्सची चांगली समज मिळविण्याची एक पद्धत आहे.
बायनरी वर्गीकरण समस्या किंवा चित्र वर्गीकरण कार्ये यासारख्या सोप्या उदाहरणांसह प्रारंभ करा आणि नंतर नैसर्गिक भाषा प्रक्रिया किंवा अधिक कठीण कार्यांवर जा. मजबुतीकरण शिक्षण.
प्रकल्पांवर काम केल्याने तुम्हाला खरा अनुभव मिळण्यास आणि तुमचे न्यूरल नेटवर्क प्रशिक्षण कौशल्य सुधारण्यास मदत होते.
तुम्ही ऑनलाइन मशीन लर्निंग आणि न्यूरल नेटवर्क ग्रुप्स आणि फोरममध्ये इतर शिकणाऱ्या आणि व्यावसायिकांशी संवाद साधण्यासाठी, तुमचे काम शेअर करण्यासाठी आणि टिप्पण्या आणि मदत मिळवण्यासाठी देखील सामील होऊ शकता.
एलएसआरएस मोनरॅड-क्रोहन
⁶ĵ त्रुटी कमी करण्यासाठी पायथन प्रोग्राम बघायला आवडेल. पुढील स्तरावर वजन बदलण्यासाठी विशेष निवड नोड्स