विषयसूची[लुकाउनुहोस्][देखाउनु]
हालका वर्षहरूमा, न्यूरल नेटवर्कहरू लोकप्रियतामा बढेका छन् किनभने तिनीहरूले कार्यहरूको विस्तृत दायरामा अत्यन्त राम्रो देखाएको छ।
तिनीहरू छवि र अडियो पहिचान, प्राकृतिक भाषा प्रशोधन, र गो र चेस जस्ता जटिल खेलहरू खेल्नका लागि उत्कृष्ट छनौटको रूपमा देखाइएको छ।
यस पोष्टमा, म तपाईंलाई तंत्रिका नेटवर्कलाई प्रशिक्षण दिने सम्पूर्ण प्रक्रियाको माध्यमबाट हिंड्नेछु। म न्यूरल नेटवर्कलाई तालिम दिन सबै चरणहरू उल्लेख र व्याख्या गर्नेछु।
जब म चरणहरूमा जान्छु, म एक साधारण उदाहरण थप्न चाहन्छु कि त्यहाँ एक व्यावहारिक उदाहरण पनि छ भनेर सुनिश्चित गर्न।
त्यसोभए, आउनुहोस्, र तंत्रिका नेटवर्कहरू कसरी प्रशोधन गर्ने भनेर जानौं
सरल सुरु गरौं र के हो सोधौं तंत्रिका सञ्जालहरू पहिलो स्थानमा।
न्यूरल नेटवर्कहरू के हुन्?
न्यूरल नेटवर्कहरू कम्प्युटर सफ्टवेयर हुन् जसले मानव मस्तिष्कको सञ्चालनलाई अनुकरण गर्दछ। तिनीहरूले डेटा र स्पट ढाँचाहरूको विशाल मात्राबाट सिक्न सक्छन् जुन मानिसहरूलाई पत्ता लगाउन गाह्रो हुन सक्छ।
तस्विर र अडियो पहिचान, प्राकृतिक भाषा प्रशोधन, र भविष्यवाणी मोडलिङ जस्ता कार्यहरूमा बहुमुखी प्रतिभाको कारण हालका वर्षहरूमा न्यूरल नेटवर्कहरू लोकप्रियतामा बढेका छन्।
समग्रमा, तंत्रिका सञ्जालहरू अनुप्रयोगहरूको विस्तृत दायराको लागि बलियो उपकरण हो र हामीसँग कामहरूको विस्तृत दायरामा पुग्ने तरिकालाई रूपान्तरण गर्ने मौका छ।
हामीले तिनीहरूको बारेमा किन जान्नुपर्छ?
तंत्रिका सञ्जालहरू बुझ्न महत्त्वपूर्ण छ किनभने तिनीहरूले कम्प्युटर दृष्टि, वाक् पहिचान, र प्राकृतिक भाषा प्रशोधन सहित विभिन्न क्षेत्रहरूमा खोजहरूको नेतृत्व गरेका छन्।
न्यूरल नेटवर्कहरू, उदाहरणका लागि, सेल्फ-ड्राइभिङ कारहरू, स्वचालित अनुवाद सेवाहरू, र चिकित्सा निदानहरूमा पनि हालैका घटनाक्रमहरूको केन्द्रमा छन्।
तंत्रिका नेटवर्कहरूले कसरी काम गर्छ र तिनीहरूलाई कसरी डिजाइन गर्ने भन्ने कुरा बुझ्दा हामीलाई नयाँ र आविष्कारक अनुप्रयोगहरू निर्माण गर्न मद्दत गर्छ। र, सायद, यसले भविष्यमा अझ ठूलो खोजहरू निम्त्याउन सक्छ।
ट्यूटोरियल बारे एक नोट
मैले माथि भनेझैं, म उदाहरण दिएर तंत्रिका नेटवर्कलाई प्रशिक्षण दिने चरणहरू व्याख्या गर्न चाहन्छु। यो गर्नको लागि, हामीले MNIST डाटासेटको बारेमा कुरा गर्नुपर्छ। यो न्यूरल नेटवर्कहरूसँग सुरु गर्न चाहने शुरुआतीहरूको लागि लोकप्रिय छनोट हो।
MNIST एक संक्षिप्त रूप हो जुन परिमार्जित राष्ट्रिय मानक र प्रविधिको संस्थान हो। यो हस्तलिखित अंक डेटासेट हो जुन सामान्यतया मेसिन लर्निङ मोडेलहरू, विशेष गरी न्यूरल नेटवर्कहरू प्रशिक्षण र परीक्षण गर्न प्रयोग गरिन्छ।
संग्रहमा 70,000 देखि 0 सम्मको हस्तलिखित अंकहरूको 9 ग्रेस्केल फोटोहरू छन्।
MNIST डेटासेट को लागि एक लोकप्रिय बेन्चमार्क हो छवि वर्गीकरण कार्यहरू। मेसिन लर्निङ एल्गोरिदमलाई जवाफ दिन कठिन चुनौती खडा हुँदा पनि यो कम्प्याक्ट र व्यवहार गर्न सजिलो भएकोले यो प्रायः शिक्षण र सिक्नका लागि प्रयोग गरिन्छ।
MNIST डाटासेटलाई TensorFlow, Keras, र PyTorch सहित धेरै मेसिन लर्निङ फ्रेमवर्क र पुस्तकालयहरूद्वारा समर्थित छ।
अब हामीलाई MNIST डेटासेटको बारेमा थाहा छ, हामी एक न्यूरल नेटवर्कलाई प्रशिक्षण दिने हाम्रो चरणहरू सुरु गरौं।
एक तंत्रिका नेटवर्क प्रशिक्षित गर्न आधारभूत चरणहरू
आवश्यक पुस्तकालयहरू आयात गर्नुहोस्
जब पहिलो पटक तंत्रिका नेटवर्कलाई तालिम दिन थाल्छ, यो मोडेल डिजाइन गर्न र तालिम दिन आवश्यक उपकरणहरू हुनु महत्त्वपूर्ण छ। न्यूरल नेटवर्क सिर्जना गर्ने प्रारम्भिक चरण भनेको TensorFlow, Keras र NumPy जस्ता आवश्यक पुस्तकालयहरू आयात गर्नु हो।
यी पुस्तकालयहरूले तंत्रिका नेटवर्कको विकासको लागि निर्माण ब्लकको रूपमा सेवा गर्छन् र महत्त्वपूर्ण क्षमताहरू प्रदान गर्छन्। यी पुस्तकालयहरूको संयोजनले परिष्कृत न्यूरल नेटवर्क डिजाइनहरू र द्रुत प्रशिक्षणको सिर्जना गर्न अनुमति दिन्छ।
हाम्रो उदाहरण सुरु गर्न; हामी आवश्यक पुस्तकालयहरू आयात गर्नेछौं, जसमा TensorFlow, Keras, र NumPy समावेश छ। TensorFlow एक ओपन सोर्स मेसिन लर्निङ फ्रेमवर्क हो, केरास एक उच्च स्तरको न्यूरल नेटवर्क 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()
डाटा पूर्वप्रक्रिया गर्नुहोस्
डाटा प्रिप्रोसेसिङ एक न्यूरल नेटवर्क को प्रशिक्षण मा एक महत्वपूर्ण चरण हो। यसले न्यूरल नेटवर्कमा फिड गर्नु अघि डाटा तयारी र सफा गर्न समावेश गर्दछ।
पिक्सेल मानहरू मापन गर्ने, डेटालाई सामान्य बनाउने, र लेबलहरूलाई एक-तातो एन्कोडिङमा रूपान्तरण गर्ने प्रक्रियाहरू प्रिप्रोसेसिङका उदाहरणहरू हुन्। यी प्रक्रियाहरूले न्यूरल नेटवर्कलाई अझ प्रभावकारी र सटीक रूपमा सिक्न मद्दत गर्दछ।
डाटा पूर्व-प्रशोधनले ओभरफिटिंग कम गर्न र न्यूरल नेटवर्कको कार्यसम्पादन सुधार गर्न पनि मद्दत गर्न सक्छ।
तपाईंले तंत्रिका नेटवर्कलाई तालिम दिनु अघि डाटा पूर्व-प्रक्रिया गर्नुपर्छ। यसमा लेबलहरूलाई एक-हट एन्कोडिङमा परिवर्तन गर्ने र पिक्सेल मानहरूलाई ० र १ बीचमा मापन गर्ने समावेश छ।
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 डेटासेटमा अंकहरू पत्ता लगाउन न्यूरल नेटवर्कलाई तालिम दियौं।
प्रशिक्षित मोडेलको प्रभावकारिता मूल्याङ्कन गर्न डाटा तयार गर्नदेखि, न्यूरल नेटवर्कलाई प्रशिक्षण दिन धेरै प्रक्रियाहरू समावेश हुन्छन्। यी निर्देशनहरूले कुशलतापूर्वक न्यूरल नेटवर्कहरू निर्माण र प्रशिक्षणमा नौसिखियाहरूलाई मद्दत गर्दछ।
विभिन्न समस्याहरू समाधान गर्न न्यूरल नेटवर्कहरू प्रयोग गर्न चाहने शुरुआतीहरूले यी निर्देशनहरू पछ्याएर त्यसो गर्न सक्छन्।
उदाहरणको कल्पना गर्दै
राम्रोसँग बुझ्नको लागि हामीले यो उदाहरणको साथ के गर्यौं भनेर कल्पना गर्ने प्रयास गरौं।
Matplotlib प्याकेज यस कोड स्निपेटमा प्रशिक्षण डेटासेटबाट फोटोहरूको अनियमित चयन प्लट गर्न प्रयोग गरिन्छ। पहिले, हामी Matplotlib को "pyplot" मोड्युल आयात गर्छौं र यसलाई "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()
महत्त्वपूर्ण न्यूरल नेटवर्क मोडेलहरू
- Feedforward न्यूरल नेटवर्क (FFNN): एक साधारण प्रकारको तंत्रिका नेटवर्क जसमा जानकारी एक वा धेरै लुकेका तहहरू मार्फत इनपुट तहबाट आउटपुट तहमा एक तरिकामा मात्र यात्रा गर्दछ।
- कन्भोलुसनल न्यूरल नेटवर्क (CNN): एक तंत्रिका नेटवर्क जुन सामान्यतया छवि पत्ता लगाउन र प्रशोधन गर्न प्रयोग गरिन्छ। CNN हरू स्वचालित रूपमा तस्विरहरूबाट सुविधाहरू पहिचान गर्न र निकाल्नको लागि हो।
- आवर्ती न्यूरल नेटवर्क (RNN): एक तंत्रिका नेटवर्क जुन सामान्यतया छवि पत्ता लगाउन र प्रशोधन गर्न प्रयोग गरिन्छ। CNN हरू स्वचालित रूपमा तस्विरहरूबाट सुविधाहरू पहिचान गर्न र निकाल्नको लागि हो।
- लामो छोटो अवधि मेमोरी (LSTM) नेटवर्कहरू: RNN को एक रूप मानक RNN मा ढाँचाहरू हराउने समस्या समाधान गर्न सिर्जना गरियो। क्रमिक डेटामा लामो-अवधि निर्भरताहरू LSTM को साथ राम्रोसँग कब्जा गर्न सकिन्छ।
- अटोइन्कोडरहरू: असुरक्षित लर्निंग न्यूरल नेटवर्क जसमा नेटवर्कलाई यसको आउटपुट तहमा यसको इनपुट डाटा पुन: उत्पादन गर्न सिकाइन्छ। डाटा कम्प्रेसन, विसंगति पत्ता लगाउने, र तस्विर denoising सबै autoencoders संग पूरा गर्न सकिन्छ।
- जेनेरेटिभ एडभर्सरियल नेटवर्क (GAN): जेनेरेटिभ न्यूरल नेटवर्क भनेको न्यूरल नेटवर्कको एक रूप हो जुन नयाँ डाटा उत्पादन गर्न सिकाइन्छ जुन प्रशिक्षण डेटासेटसँग तुलना गर्न सकिन्छ। GAN दुई सञ्जालहरू मिलेर बनेको हुन्छ: एउटा जेनेरेटर नेटवर्क जसले ताजा डाटा सिर्जना गर्छ र एउटा भेदभाव गर्ने नेटवर्क जसले सिर्जना गरिएको डाटाको गुणस्तर मूल्याङ्कन गर्छ।
र्याप-अप, तपाईंको अर्को चरणहरू के हुनुपर्छ?
तंत्रिका सञ्जाललाई प्रशिक्षण दिने बारे थप जान्न धेरै अनलाइन स्रोतहरू र पाठ्यक्रमहरू अन्वेषण गर्नुहोस्। परियोजनाहरू वा उदाहरणहरूमा काम गर्नु भनेको तंत्रिका सञ्जालहरूको राम्रो समझ प्राप्त गर्ने एक तरिका हो।
बाइनरी वर्गीकरण समस्याहरू वा चित्र वर्गीकरण कार्यहरू जस्ता सजिलो उदाहरणहरूबाट सुरु गर्नुहोस्, र त्यसपछि प्राकृतिक भाषा प्रशोधन वा जस्ता थप कठिन कार्यहरूमा जानुहोस्। प्रबलन सिकाउने.
परियोजनाहरूमा काम गर्दा तपाईंलाई वास्तविक अनुभव प्राप्त गर्न र तपाईंको न्यूरल नेटवर्क प्रशिक्षण कौशल सुधार गर्न मद्दत गर्दछ।
तपाईं अन्य शिक्षार्थी र पेशेवरहरूसँग अन्तरक्रिया गर्न, आफ्नो काम साझा गर्न, र टिप्पणीहरू र मद्दत प्राप्त गर्न अनलाइन मेसिन लर्निङ र न्यूरल नेटवर्क समूहहरू र फोरमहरूमा सामेल हुन सक्नुहुन्छ।
LSRS MONRAD-KROHN
त्रुटि न्यूनीकरणका लागि पाइथन कार्यक्रम हेर्न मनपर्छ। अर्को तहमा तौल परिवर्तनका लागि विशेष चयन नोडहरू