মূল content-এ যাও

Deep Learning/Neural Network-এর ভিত্তি/Lesson 01

Perceptron: একটা neuron

Neural network-এর সবচেয়ে ছোট একক — weighted sum, bias আর একটা সিদ্ধান্ত। Perceptron learning rule দিয়ে নিজে হাতে AND/OR শেখানো, আর XOR কেন পারে না — যে সমস্যা "deep" learning-এর জন্ম দিয়েছে।

সময়
24 মিনিট
Exercise
1
Challenge
1
Quiz
3 প্রশ্ন

সহজ ভাষায়

মস্তিষ্কের একটা neuron অনেকগুলো সংকেত পায়, প্রতিটার গুরুত্ব আলাদা, আর মোট সংকেত যথেষ্ট শক্তিশালী হলে "জ্বলে ওঠে"। Perceptron (১৯৫৮) এর সবচেয়ে সরল গাণিতিক রূপ:

y^={1যদি w1x1+w2x2+⋯+b>00নাহলে\hat{y} = \begin{cases} 1 & \text{যদি } w_1 x_1 + w_2 x_2 + \dots + b > 0 \\ 0 & \text{নাহলে} \end{cases}
x1 ──(w1)──┐
            ├──► Σ wᵢxᵢ + b ──► > 0 ? ──► 1 বা 0
x2 ──(w2)──┘
  • weight (ww) — প্রতিটা input কতটা গুরুত্বপূর্ণ
  • bias (bb) — কতটা সহজে "জ্বলে ওঠে"

Math path-এর y=wx+by = wx + b মনে আছে? Perceptron হুবহু সেটাই, শেষে একটা হ্যাঁ/না সিদ্ধান্ত।

কেন দরকার?

GPT, Claude, image recognition — সব neural network আসলে লাখ লাখ, কোটি কোটি এমন neuron-এর জাল। একটা neuron বুঝলে পুরো জালের ভিত্তি বোঝা হয়ে যায়। আর এই path-এ আমরা আগে NumPy দিয়ে নিজে হাতে সবকিছু বানাবো — তারপর PyTorch-এ যাবো, যাতে library-র ভেতরে কী হচ্ছে সেটা অজানা না থাকে।

এই playground-এ PyTorch চলে না (browser-এ চালানোর মতো ছোট না) — কিন্তু তাতে ক্ষতি নেই। NumPy দিয়ে নিজে বানানো network-ই সবচেয়ে ভালো শিক্ষক। PyTorch lesson-গুলোর code তোমার computer-এ বা Google Colab-এ চালাবে।

হাতে weight বসানো

main.py

একই neuron, শুধু bias আলাদা — আর logic gate বদলে গেল। AND-এর জন্য দুটো input-ই লাগে (1 + 1 − 1.5 > 0), OR-এর জন্য একটাই যথেষ্ট।

Visual intuition: একটা সরলরেখা

Perceptron আসলে 2D সমতলে একটা সরলরেখা টানে — একপাশে 1, অন্যপাশে 0:

main.py

রেখাটা w1x1+w2x2+b=0w_1x_1 + w_2x_2 + b = 0 — এর একপাশে সবুজ (1), অন্যপাশে লাল (0)। একে বলে decision boundary।

শেখা: perceptron learning rule

Weight হাতে না বসিয়ে data থেকে শেখা যায়। নিয়মটা সহজ — ভুল হলে, ভুলের উল্টো দিকে একটু সরো:

w←w+η (y−y^) xb←b+η (y−y^)w \leftarrow w + \eta \, (y - \hat{y}) \, x \qquad b \leftarrow b + \eta \, (y - \hat{y})

η\eta (eta) হলো learning rate — প্রতিবার কতটা সরবে।

  • 1 হওয়ার কথা, বলেছে 0 → y−y^=1y - \hat{y} = 1 → weight বাড়ে → পরেরবার sum বড়
  • 0 হওয়ার কথা, বলেছে 1 → y−y^=−1y - \hat{y} = -1 → weight কমে
  • ঠিক বলেছে → কিছুই বদলায় না

Challenge-এ এই নিয়মটা নিজে লিখবে, আর দেখবে perceptron নিজেই OR, AND, NAND শিখে ফেলে।

XOR: যে সমস্যা AI-কে থামিয়ে দিয়েছিল

XOR — দুটো input আলাদা হলে 1:

main.py

১০০০ epoch-এও পারে না! কারণ XOR-এর বিন্দুগুলো (০,১) আর (১,০) একদিকে, (০,০) আর (১,১) আরেকদিকে — কোনো একটা সরলরেখা দিয়ে এদের আলাদা করা অসম্ভব।

১৯৬৯-এ Minsky আর Papert এটা প্রমাণ করলেন, আর neural network গবেষণায় প্রায় ১৫ বছরের "AI winter" নেমে এল। সমাধান এল পরে: একাধিক neuron, একাধিক layer — প্রথম layer কয়েকটা রেখা টানে, পরের layer সেগুলো মেলায়। এটাই deep learning-এর "deep"। Forward propagation lesson-এ নিজে XOR সমাধান করবে।

Exercise

Exercise

হাতে weight বসিয়ে AND gate

+20 XP

Perceptron-এর নিয়ম: output = 1 যদি (w₁x₁ + w₂x₂ + b) > 0, নাহলে 0।

w = np.array([1.0, 1.0]) আর b = -1.5 দিয়ে perceptron(x, w, b) function লেখো, তারপর চারটা input-এর জন্য output outputs array-তে রাখো।

দেখো — এই weight দিয়ে perceptron AND gate হয়ে যায় (দুটোই 1 হলে তবেই 1)।

solution.py

Quiz

  1. Q1Perceptron-এর output কীভাবে ঠিক হয়?
  2. Q2একটা perceptron XOR (দুটো input আলাদা হলে 1) শিখতে পারে না কেন?
  3. Q3Perceptron learning rule-এ prediction ঠিক হলে weight-এর কী হয়?
0/3 answered

Challenge

Challenge

Perceptron নিজে শিখুক

+50 XP

Weight হাতে না বসিয়ে data থেকে শেখাও — perceptron learning rule (Rosenblatt, 1958):

প্রতিটা sample-এর জন্য: prediction ভুল হলে - w ← w + lr · (y − ŷ) · x - b ← b + lr · (y − ŷ)

train_perceptron(X, y, lr=0.1, epochs=20) লেখো: w আর b শূন্য দিয়ে শুরু, প্রতি epoch-এ সব sample একবার করে (ক্রম অনুযায়ী), শেষে (w, b) return।

solution.py

বাস্তবে কোথায় ব্যবহার হয়?

আধুনিক neural network-এর প্রতিটা neuron এখনো perceptron-এর মূল কাজটাই করে — w⋅x+bw \cdot x + b — শুধু দুটো পার্থক্য:

  1. শেষের "হ্যাঁ/না" (step function)-এর বদলে মসৃণ activation function (ReLU, sigmoid) — পরের lesson
  2. ভুল থেকে শেখার জন্য perceptron rule-এর বদলে gradient descent + backpropagation — এই module-এর শেষ lesson

PyTorch-এ একটা perceptron-এর সমতুল্য: nn.Linear(2, 1) — দুটো input, একটা output, ভেতরে ঠিক ww আর bb।

Interview প্রশ্ন

  • Beginner: Perceptron কী? Weight আর bias কী কাজ করে?
  • Intermediate: একটা perceptron XOR শিখতে পারে না কেন? "Linearly separable" মানে কী?
  • Advanced: Perceptron convergence theorem কী বলে? Data linearly separable না হলে কী হয়?

এরপর কী?

Step function — হঠাৎ 0 থেকে 1 লাফ — শেখার জন্য সমস্যাজনক: সামান্য weight বদলালে output-এ কোনো পরিবর্তনই হয় না, তাই "কোন দিকে সরবো" বোঝা যায় না। সমাধান: মসৃণ function। পরের lesson: Activation functions।