Neural Network (স্নায়বিক নেটওয়ার্ক) হচ্ছে এক ধরনের কৃত্রিম বুদ্ধিমত্তা (AI) এবং মেশিন লার্নিং (ML) মডেল, যা মানুষের মস্তিষ্কের নিউরন গঠন ও কাজের অনুকরণে ডিজাইন করা হয়েছে। এটি মূলত ডেটা থেকে প্যাটার্ন এবং সম্পর্ক শিখে ফলাফল নির্ধারণ করে। Neural Network সাধারণত বিভিন্ন স্তরের (Layer) সমন্বয়ে গঠিত হয়। এই স্তরগুলো হলো:
- ইনপুট লেয়ার (Input Layer): এটি সেই লেয়ার যা ডেটা গ্রহণ করে। ডেটার ভিন্ন ভিন্ন বৈশিষ্ট্য বা ফিচার ইনপুট লেয়ারে স্থান পায়।
- হিডেন লেয়ার (Hidden Layer): এই লেয়ারগুলোর কাজ হলো ইনপুট ডেটা থেকে বিভিন্ন প্যাটার্ন শিখে আউটপুট তৈরি করা। একটি মডেলে এক বা একাধিক হিডেন লেয়ার থাকতে পারে।
- আউটপুট লেয়ার (Output Layer): এটি মডেলের চূড়ান্ত স্তর যেখানে মডেল ফলাফল প্রদান করে।
Neural Network এর কাজের প্রক্রিয়া
প্রথমে ইনপুট লেয়ারের মাধ্যমে ডেটা নেটওয়ার্কে প্রবেশ করে। এরপর হিডেন লেয়ারগুলো ইনপুট ডেটার উপর ভিত্তি করে বিভিন্ন গাণিতিক অপারেশন (যেমন: ম্যাট্রিক্স মাল্টিপ্লিকেশন, অ্যাক্টিভেশন ফাংশন প্রয়োগ) সম্পাদন করে এবং শেষ পর্যায়ে আউটপুট লেয়ারে ফলাফল প্রদান করে। নেটওয়ার্কটি এর মধ্যবর্তী ওজন (weights) এবং বায়াস (bias) আপডেট করতে ব্যাকপ্রোপাগেশন (Backpropagation) পদ্ধতি ব্যবহার করে, যাতে এটি ক্রমাগত সঠিক ফলাফল শিখতে পারে।
একটি Simple Neural Network তৈরি করার প্রক্রিয়া (Python এবং PyTorch ব্যবহার করে)
প্রথমে, PyTorch লাইব্রেরি ইনস্টল করতে হবে (যদি আগে ইনস্টল না থাকে):
pip install torch
এখন আমরা একটি সরল Neural Network তৈরি করতে পারি:
import torch
import torch.nn as nn
import torch.optim as optim
# Neural Network এর ক্লাস তৈরি
class SimpleNN(nn.Module):
def __init__(self):
super(SimpleNN, self).__init__()
self.layer1 = nn.Linear(2, 3) # ইনপুট ২ ফিচার, আউটপুট ৩ নিউরন
self.layer2 = nn.Linear(3, 1) # ৩ ইনপুট, ১ আউটপুট
def forward(self, x):
x = torch.relu(self.layer1(x)) # প্রথম লেয়ারে ReLU অ্যাক্টিভেশন
x = torch.sigmoid(self.layer2(x)) # দ্বিতীয় লেয়ারে Sigmoid অ্যাক্টিভেশন
return x
# মডেল, লস ফাংশন এবং অপ্টিমাইজার তৈরি
model = SimpleNN()
criterion = nn.MSELoss() # Mean Squared Error লস ফাংশন
optimizer = optim.SGD(model.parameters(), lr=0.01) # Stochastic Gradient Descent
# ডেটাসেট প্রস্তুত
inputs = torch.tensor([[0.0, 0.0], [0.0, 1.0], [1.0, 0.0], [1.0, 1.0]])
targets = torch.tensor([[0.0], [1.0], [1.0], [0.0]]) # XOR গেটের উদাহরণ
# ট্রেনিং লুপ
for epoch in range(1000):
optimizer.zero_grad() # গ্রেডিয়েন্ট রিসেট
outputs = model(inputs) # মডেলে ইনপুট প্রয়োগ
loss = criterion(outputs, targets) # লস গণনা
loss.backward() # ব্যাকপ্রোপাগেশন
optimizer.step() # অপ্টিমাইজেশন স্টেপ
# মডেল টেস্টিং
test_input = torch.tensor([[1.0, 0.0]])
prediction = model(test_input)
print("Prediction:", prediction.item())
ব্যাখ্যা:
- SimpleNN ক্লাস: এটি একটি সরল নিউরাল নেটওয়ার্ক ক্লাস যা ইনপুট লেয়ার এবং দুটি লেয়ার নিয়ে গঠিত।
- ReLU এবং Sigmoid: প্রথম হিডেন লেয়ারে ReLU (Rectified Linear Unit) এবং আউটপুট লেয়ারে Sigmoid ফাংশন ব্যবহার করা হয়েছে।
- ট্রেনিং লুপ: মডেলটি ১০০০ ইপক পর্যন্ত ট্রেনিং করা হয় এবং প্রতিটি ইপকে লস আপডেট হয়।
এই পদ্ধতিতে, আপনি বিভিন্ন সমস্যার সমাধান করতে Neural Network ব্যবহার করতে পারেন।
Read more