Neural Networksপড়তে ৭ মিনিট লাগবে

পারসেপ্ট্রন (Perceptron)

একটিমাত্র নিউরন — গুণ করা, যোগ করা আর সিদ্ধান্ত নেওয়া
training:O(n * d * epochs) — ডেটাগুলোর ওপর কয়েকবার করে পর্যায়ক্রমিক বা ইটারেট (iterate) করা হয়prediction:O(d) — একটি ডট গুণফল (dot product) + থ্রেশহোল্ড (threshold)limitation:শুধুমাত্র লিনিয়ারলি সেপারেবল (linearly separable) প্যাটার্নগুলোই শিখতে পারে

ভাবুন তো, একটি সাধারণ ভোটিং কমিটির (voting committee) কথা, যেখানে মাত্র তিনজন সদস্য আছেন। এখানকার প্রত্যেক সদস্যের প্রভাব বা ওয়েট (weight) আলাদা আলাদা। সদস্য A-এর (Member A) ভোটের মান দ্বিগুণ, সদস্য B-এর (Member B) ভোটের মান তিনগুণ এবং সদস্য C-এর (Member C) ভোটের মান মাত্র একবার গণনা করা হয়। তারা প্রত্যেকেই একটি করে ভোট দেন (হ্যাঁ-এর জন্য ১, না-এর জন্য ০), এরপর আপনি তাদের প্রত্যেকটি ভোটকে নিজ নিজ প্রভাব বা ওয়েট (weight) দিয়ে গুণ করেন, গুণফলগুলো সব একসাথে যোগ করেন, এবং যদি সেই যোগফলটি একটি নির্দিষ্ট থ্রেশহোল্ড (threshold) পার করে যায় — তবেই প্রস্তাবটি পাস বা গৃহীত হয়

আর এটিই হলো মূলত একটি পারসেপ্ট্রন (perceptron)। এটি সম্ভাব্য সবচেয়ে সাধারণ বা সহজ নিউরাল নেটওয়ার্ক — যা মূলত একটি মাত্র নিউরন (single neuron) দিয়ে তৈরি। এটি এর ইনপুটগুলো (inputs) গ্রহণ করে, প্রত্যেকটিকে একটি করে ওয়েট (weight) দিয়ে গুণ করে, তাদের একসাথে যোগ করে এবং এরপর সেই যোগফলটি যদি একটি থ্রেশহোল্ড (threshold) পার করে বা অতিক্রম করে, তবে এটি ফায়ার (fires) করে বা অ্যাক্টিভ হয়ে যায় (১ আউটপুট দেয়)। আর অন্যথায়, এটি চুপচাপ বা শান্ত থাকে (০ আউটপুট দেয়)।

এর অংকটি: একেবারেই সহজ (The math: dead simple)

একটি পারসেপ্ট্রন (perceptron) মূলত যেভাবে হিসাব করে:

  1. গুণ করা (Multiply): প্রতিটি ইনপুটকে এর নিজস্ব ওয়েট বা ওজন দিয়ে গুণ করে: x1*w1, x2*w2, ...
  2. যোগ করা (Add): সবগুলোকে একত্রে যোগ করে (সাথে একটি বায়াস বা bias): sum = x1*w1 + x2*w2 + ... + b
  3. সিদ্ধান্ত নেওয়া (Decide): যদি যোগফল (sum) > ০ হয়, তবে এটি ১ আউটপুট দেয়। আর অন্যথায়, এটি ০ আউটপুট দেয়।

ব্যাস, এতটুকুই কাজ। মাত্র তিনটি ধাপ। গুণ করা, যোগ করা, এবং সিদ্ধান্ত নেওয়া (Multiply, add, decide)।

এটি কীভাবে শেখে? (How does it learn?)

পারসেপ্ট্রন লার্নিং অ্যালগরিদমটি (perceptron learning algorithm) খুবই সুন্দর এবং ইনটুইটিভ (intuitive):

  1. এলোমেলো বা রেন্ডম ওয়েট (random weights) দিয়ে কাজ শুরু করুন
  2. এতে একটি ট্রেইনিং বা অভ্যাসের উদাহরণ (training example) দিন বা ফিড (Feed) করুন
  3. যদি এর প্রেডিকশন বা অনুমানটি সঠিক (correct) হয় — তবে কিছুই করবেন না
  4. যদি এটি ০ প্রেডিক্ট করে কিন্তু আসল উত্তর ১ হ‌ওয়ার কথা থাকে — তবে এর ওয়েটগুলো (weights) একটু বাড়িয়ে দিন (যাতে করে পরের বার এর ফায়ার করার বা অ্যাক্টিভ হ‌ওয়ার সম্ভাবনা বেশি হয়)
  5. আর যদি এটি ১ প্রেডিক্ট করে কিন্তু আসল উত্তর ০ হ‌ওয়ার কথা থাকে — তবে এর ওয়েটগুলো (weights) একটু কমিয়ে দিন (যাতে করে এটি পরের বার একটু কম করে ফায়ার করে)
  6. সমস্ত ট্রেইনিং উদাহরণগুলোর (training examples) জন্য এই একই জিনিস বেশ কয়েকবার করে রিপিট (Repeat) বা পুনরাবৃত্তি করুন

এটি ঠিক কোনো শিক্ষকের তার ছাত্রকে খোঁচা দেওয়ার মতো কাজ করে: "তোমার এখানে হ্যাঁ বলা উচিত ছিল — তাই পরের বার এসব ফিচারের (features) দিকে আরেকটু বেশি মনোযোগ দিয়ো।"

পারসেপ্ট্রন লার্নিং: অ্যান্ড গেট (Perceptron Learning: AND Gate)

import random
def perceptron_train(X, y, epochs=10, lr=0.1):
weights = [random.uniform(-1, 1) for _ in range(len(X[0]))]
bias = random.uniform(-1, 1)
for epoch in range(epochs):
errors = 0
for xi, yi in zip(X, y):
# ফরোয়ার্ড পাস (Forward pass)
total = sum(w * x for w, x in zip(weights, xi)) + bias
pred = 1 if total > 0 else 0
# ভুল হলে আপডেট করা (Update if wrong)
error = yi - pred
if error != 0:
errors += 1
weights = [w + lr * error * x
for w, x in zip(weights, xi)]
bias += lr * error
if errors == 0:
print(f"Converged at epoch {epoch + 1}!")
break
return weights, bias
# অ্যান্ড গেট: দুটি ইনপুটকেই ১ হতে হবে (AND gate: both inputs must be 1)
X = [[0,0], [0,1], [1,0], [1,1]]
y = [0, 0, 0, 1]
random.seed(42)
w, b = perceptron_train(X, y)
print(f"Weights: [{w[0]:.2f}, {w[1]:.2f}], Bias: {b:.2f}")
for xi in X:
total = sum(wi * xi_i for wi, xi_i in zip(w, xi)) + b
print(f"{xi}{1 if total > 0 else 0}")
Output
Converged at epoch 5!
Weights: [0.13, 0.20], Bias: -0.24
[0, 0] → 0
[0, 1] → 0
[1, 0] → 0
[1, 1] → 1

XOR বা এক্স-অর সমস্যা: পারসেপ্ট্রনের সবচেয়ে বড় হার (The XOR problem: the perceptron's fatal flaw)

একটি পারসেপ্ট্রন (perceptron) চাইলে খুব নিখুঁতভাবে AND (অ্যান্ড), OR (অর), এবং NOT (নট) গেটগুলো (gates) শিখতে পারে। কিন্তু এটি কখনোই XOR বা এক্স-অর (এক্সক্লুসিভ অর বা exclusive or: যেখানে ইনপুটগুলো ভিন্ন হলে আউটপুট ট্রু বা সত্য হয়) শিখতে পারে না

কিন্তু কেন? কারণ XOR লিনিয়ারলি সেপারেবল (linearly separable) নয়। আপনি এখানে চাইলে একটি মাত্র সরলরেখা টানার মাধ্যমে এর "অন (on)" এবং "অফ (off)" কেইসগুলোকে (cases) আলাদা করতে পারবেন না। নিজে একবার চেষ্টা করে দেখুন তো — (০,০)=০, (০,১)=১, (১,০)=১, (১,১)=০ প্লটগুলোকে (plot) গ্রাফে বসান। দেখবেন কোনো একটি সরলরেখা দিয়েই এই সবগুলো কভার করা যাবে না।

এই সীমাবদ্ধতাটি সে সময় এতটাই মারাত্মক ছিল যে এর কারণেই মূলত ১৯৭০-এর দশকে প্রথমবারের মতো "এআই উইন্টার (AI winter) বা কৃত্রিম বুদ্ধিমত্তার শীতকাল" নেমে আসে। তাহলে এর সমাধান কী? একাধিক পারসেপ্ট্রনকে পরপর স্তরে স্তরে বা লেয়ার (layers) আকারে স্ট্যাক (Stack) বা সাজিয়ে রাখা — এটি করলে আপনি এমন একটি সম্পূর্ণ নিউরাল নেটওয়ার্ক (neural network) পেয়ে যাবেন, যা দিয়ে চাইলেই XOR সহ আরও অনেক জটিল সমস্যার সমাধান করা সম্ভব।

Note: এই পারসেপ্ট্রন (perceptron) থেকেই মূলত ডিপ লার্নিংয়ের (deep learning) যাত্রা শুরু হয়। যেকোনো নিউরাল নেটওয়ার্কের (neural network) প্রতিটি নিউরনই মূলত একটি করে পারসেপ্ট্রন — তবে এগুলোতে একটু ফ্যান্সি (fancier) বা উন্নত মানের অ্যাক্টিভেশন ফাংশন (activation function) ব্যবহার করা হয়। আপনি যদি পারসেপ্ট্রন বুঝতে পারেন, তবে আপনি আধুনিক কালের সমস্ত এআই (AI) এর মূল বিল্ডিং ব্লক (building block) বা ভিত্তি প্রস্তর খুব ভালোভাবেই বুঝতে পারবেন।

Key Metrics

ট্রেইনিং (Training)
যদি এর ডেটাটি লিনিয়ারলি সেপারেবল (linearly separable) হয়, তবে তা ভালোভাবে কাজ করার ব্যাপারে একে গ্যারান্টি বা নিশ্চয়তা দেয়
দ্রুত (Fast) O(n * d * epochs)
প্রেডিকশন বা অনুমান (Prediction)
একটি ডট প্রোডাক্ট (dot product) এবং একটি তুলনা (comparison)
অতি দ্রুত (Very fast) O(d)
সাবলীলতা বা এক্সপ্রেসিভনেস (Expressiveness)
এটি XOR বা এ জাতীয় কোনো লিনিয়ার নয় (non-linearly) এমন কোনো সমস্যা সমাধান করতে পারে না
লিমিটেড বা সীমিত (Limited) শুধুমাত্র লিনিয়ার বা রৈখিক সীমানা (Linear boundaries only)
ইতিহাস বা হিস্টোরিক্যাল ইমপ্যাক্ট (Historical impact)
প্রতিটি আধুনিক নিউরাল নেটওয়ার্কের নিউরনই মূলত উন্নত বা ফ্যান্সি (fancy) একেকটি পারসেপ্ট্রন
বিশাল (Huge) নিউরাল নেটওয়ার্কের একেবারে শুরুর দিকের ভিত্তি বা ফাউন্ডেশন (Foundation)

ছোট কুইজ

একটি পারসেপ্ট্রন (perceptron) ঠিক কোন ৩টি কাজ বা ধাপ পূরণ করে?
Challenge

পড়া চালিয়ে যান

নিউরাল নেটওয়ার্ক বেসিকস (Neural Network Basics)
লজিকের মতো নিউরনগুলো একে অপরের সাথে স্তরে স্তরে যুক্ত থাকে
অ্যাক্টিভেশন ফাংশন (Activation Functions)
ReLU, সিগময়েড (sigmoid), ট্যানএইচ (tanh) — অর্থাৎ নিউরনগুলোর অন/অফ (on/off) সুইচ
লজিস্টিক রিগ্রেশন (Logistic Regression)
হ্যাঁ নাকি না? এমন একটি লাইন টানুন যা এদের দুজনকে আলাদা করতে পারে
ব্যাকপ্রোপাগেশন (Backpropagation)
এরর বা ভুলগুলো পেছনের দিকে প্রবাহিত হয় যাতে নেটওয়ার্কটি শিখতে পারে