Neural Network কেন দরকার, যখন Random Forest আছেই?

কখন Deep Learning, কখন নয় (Series 06, Episode 01)

🟢 BEGINNER Series 06 — Deep Learning with PyTorch Episode 01 / 08

📑 এই পর্বে যা যা আছে

🧩 ১. গল্প: Random Forest দিয়ে সব হচ্ছে, তাহলে নতুন কী দরকার?

Series 05 শেষ করে Rahim বেশ আত্মবিশ্বাসী। House price predict করেছে Linear Regression দিয়ে, customer churn ধরেছে Logistic Regression আর Random Forest দিয়ে, XGBoost দিয়ে accuracy বাড়িয়েছে। তার মনে হচ্ছে — "classical ML দিয়েই তো সব হয়ে যাচ্ছে, তাহলে Deep Learning শেখার দরকার কী?"

Rahim: "আপা, XGBoost তো Kaggle-এ এত ভালো করে। তাহলে সবাই Deep Learning, PyTorch নিয়ে এত মাতামাতি করে কেন? আমার Random Forest দিয়েই তো সমস্যাগুলো solve হচ্ছে।"

Maya: "ঠিক ধরেছ — tabular data-তে, মানে row-column-এর টেবিল data-তে, XGBoost/Random Forest প্রায়ই Deep Learning-কে হারিয়ে দেয়। কিন্তু আমাকে একটা কাজ করে দাও তো — এই ১০ হাজার X-ray ছবি দেখে বলো কোনটায় নিউমোনিয়া আছে। Random Forest দিয়ে করো।"

Rahim: "ছবি? ছবিকে তো... হুম, ছবির প্রতিটা pixel কি feature হবে? একটা 224×224 রঙিন ছবিতে তো দেড় লাখেরও বেশি number! আর pixel-গুলো তো একটার সাথে আরেকটা সম্পর্কিত..."

Maya: "এইখানেই তোমার Random Forest হাঁপিয়ে যাবে। স্বাগতম Deep Learning-এ।"

২. আসল সমস্যা: কিছু data-তে classical ML হার মানে

Classical ML (Linear/Logistic Regression, Decision Tree, Random Forest, XGBoost) দুর্দান্ত কাজ করে যখন আপনার data হলো structured / tabular — যেখানে প্রতিটা column একটা অর্থপূর্ণ feature (বয়স, আয়, এলাকা, order সংখ্যা)। কিন্তু সমস্যা শুরু হয় unstructured data-তে:

এই data-তে feature engineering হাতে করা প্রায় অসম্ভব। একটা বিড়ালের ছবি চেনার জন্য আপনি হাতে হাতে কি লিখবেন — "যদি কান ত্রিভুজাকার এবং গোঁফ আছে তবে..."? সম্ভব না। এখানেই দরকার এমন model যে নিজে নিজে feature শিখে নেয় raw data থেকে।

মূল কথা: classical ML-এ আপনি feature ঠিক করে দেন; Deep Learning-এ model নিজে raw data থেকে দরকারি feature শিখে নেয় (representation learning)। এটাই সবচেয়ে বড় পার্থক্য।

🌱 ৩. Neural Network কেন জন্ম নিলো?

ধারণাটা এসেছে মানুষের মস্তিষ্ক থেকে অনুপ্রাণিত হয়ে — যদিও এখন আমরা জানি একটা artificial neural network আসলে জীববিজ্ঞানের brain নয়, বরং একটা গণিতের function যা অনেকগুলো ছোট ছোট গণনা (neuron) দিয়ে তৈরি। মূল লক্ষ্য একটাই: এমন একটা নমনীয় (flexible) function বানানো যা যথেষ্ট data পেলে যেকোনো জটিল pattern approximate করতে পারে।

এই ধারণাকে বলে Universal Approximation — পর্যাপ্ত neuron আর data থাকলে একটা neural network প্রায় যেকোনো সম্পর্ক (input → output) শিখতে পারে। Random Forest-ও শক্তিশালী, কিন্তু image/text-এর মতো high-dimensional, spatial/sequential data-তে neural network-এর মতো efficiently pattern ধরতে পারে না।

🎯 ৪. তিন স্তরে বুঝি: intuition → technical → engineer

Level 1 — সহজ intuition:
একজন নতুন কর্মচারীকে ভাবুন যাকে আপনি হাজারটা উদাহরণ দেখিয়ে শেখাচ্ছেন "এটা ভালো product, এটা খারাপ"। সে প্রথমে ভুল করে, আপনি শুধরে দেন, সে একটু একটু করে নিজের "মাথার ভেতরের নিয়ম" ঠিক করে নেয়। Neural network ঠিক তাই — অনেক উদাহরণ থেকে ভুল করতে করতে নিজের ভেতরের সংখ্যাগুলো (weights) ঠিক করে শেখে।

Level 2 — technically কী হচ্ছে:
Neural network হলো স্তরে স্তরে (layers) সাজানো অনেকগুলো neuron। প্রতিটা neuron তার input-গুলোকে weight দিয়ে গুণ করে, যোগ করে, একটা activation function-এর মধ্য দিয়ে পাঠায়। প্রথম layer সরল feature শেখে (যেমন ছবির edge), পরের layer সেগুলো জুড়ে জটিল feature (চোখ, কান), শেষ layer সিদ্ধান্ত নেয় (বিড়াল/কুকুর)।

Level 3 — engineer হিসেবে:
একজন AI Engineer প্রথমেই জিজ্ঞেস করে — "data কি tabular নাকি unstructured? কত data আছে? latency আর cost budget কত?" ছোট tabular data হলে সে XGBoost-এ যায় (দ্রুত, সস্তা, ব্যাখ্যাযোগ্য)। বড় image/text data হলে neural network। Deep Learning "cool" বলে নয়, সমস্যা দাবি করে বলে সে বাছে।

🔬 ৫. Perceptron থেকে Neuron — একদম শুরু

সবচেয়ে সরল neural unit হলো Perceptron (১৯৫৮ সাল)। এটা একটা neuron: কয়েকটা input নেয়, প্রতিটাকে একটা weight দিয়ে গুণ করে, সব যোগ করে একটা bias যোগ করে, তারপর সিদ্ধান্ত দেয়। গণিতে:

x1 ──(w1)──┐ x2 ──(w2)──┤ x3 ──(w3)──┤──> [ Σ (w·x) + b ] ──> activation ──> output ... │ xn ──(wn)──┘ z = w1·x1 + w2·x2 + ... + wn·xn + b output = activation(z)

একটা perceptron NumPy দিয়ে লিখলে এমন দেখায় (আমরা এখানে PyTorch নয়, বরং raw NumPy ব্যবহার করছি যাতে "ভেতরে আসলে কী হচ্ছে" সেটা পরিষ্কার হয়):

import numpy as np def perceptron(x, w, b): """একটা neuron: weighted sum + activation (এখানে step function).""" z = np.dot(w, x) + b # w·x + b return 1 if z > 0 else 0 # সরল step activation # উদাহরণ: AND gate শেখানো (দুটো input দুটোই 1 হলে output 1) w = np.array([1.0, 1.0]) # weights b = -1.5 # bias for x1 in [0, 1]: for x2 in [0, 1]: x = np.array([x1, x2]) print(f"{x1} AND {x2} = {perceptron(x, w, b)}")

একটা single perceptron শুধু সরল (linearly separable) সমস্যা solve করতে পারে। কিন্তু অনেকগুলো perceptron স্তরে স্তরে জুড়লে (multi-layer) তখন সেটা জটিল, non-linear pattern শিখতে পারে — সেটাই Neural Network। পরের পর্বে আমরা এই layer-এর ভেতরটা খুলে দেখব।

🖼️ ৬. Visual: classical ML বনাম Deep Learning

CLASSICAL ML (আপনি feature বানান) Raw data ─> [মানুষ হাতে feature engineering] ─> XGBoost ─> উত্তর DEEP LEARNING (model নিজে feature শেখে) Raw data ─> [Layer 1: edge] ─> [Layer 2: আকৃতি] ─> [Layer 3: বস্তু] ─> [Output layer] ─> উত্তর

খেয়াল করুন: classical ML-এ সবচেয়ে কঠিন ও সময়সাপেক্ষ কাজটা (feature engineering) মানুষের কাঁধে। Deep Learning সেই কাজটা model-এর ভেতরে নিয়ে নেয় — বিনিময়ে চায় অনেক data আর computing power।

⚖️ ৭. কখন Deep Learning, কখন Random Forest?

পরিস্থিতিভালো বাছাইকেন
Tabular data, কয়েক হাজার rowXGBoost / Random Forestদ্রুত, সস্তা, প্রায়ই বেশি accurate, ব্যাখ্যাযোগ্য
Image, audio, videoDeep Learning (CNN)spatial pattern classical ML ধরতে পারে না
Text, ভাষা, sequenceDeep Learning (Transformer/RNN)শব্দের ক্রম ও context দরকার
খুব কম data (শত row)Classical MLDeep Learning কম data-তে overfit করে
ব্যাখ্যা (interpretability) জরুরিClassical MLtree-based model ব্যাখ্যা করা সহজ
বিশাল data + GPU আছেDeep Learningdata বাড়ার সাথে DL-এর performance বাড়ে
Must Know / Good to Know / Learn Later:
Must Know (চাকরির আগে): কখন DL লাগে কখন না, perceptron/neuron-এর ধারণা।
Good to Know: universal approximation-এর intuition।
Learn Later (চাকরির পরেও চলবে): custom architecture, distributed training।

🧪 ৮. ছোট experiment: নিজে যাচাই করুন

উপরের perceptron কোডটা চালান। তারপর b = -1.5 বদলে b = -0.5 করুন আর দেখুন কীভাবে এটা এখন OR-এর মতো আচরণ শুরু করে। এই ছোট পরীক্ষা থেকেই বুঝবেন — একই structure, শুধু weight/bias বদলালেই আচরণ বদলে যায়। Training মানে আসলে সঠিক weight/bias খুঁজে বের করা

যদি বুঝে থাকেন যে "শেখা = সঠিক সংখ্যা (weights) খুঁজে বের করা", তাহলে পুরো Deep Learning-এর ভিত্তি আপনার হাতে চলে এসেছে। পরের পর্বগুলোতে আমরা দেখব সেই সংখ্যাগুলো কীভাবে নিজে নিজে ঠিক হয়।

🇧🇩 ৯. বাংলাদেশের বাস্তব উদাহরণ

মানে বাংলাদেশের বাজারেও দুটোই দরকার। একজন ভালো engineer জানে কোন সমস্যায় কোনটা — এটাই তাকে আলাদা করে।

👷 ১০. AI Engineer-এর দৃষ্টিভঙ্গি

নতুনরা ভাবে "Deep Learning মানেই উন্নত, তাই সবখানে DL লাগাই"। অভিজ্ঞ engineer উল্টো ভাবে — সে সবচেয়ে সরল model দিয়ে শুরু করে (baseline), তারপর দরকার হলে জটিল করে। কারণ DL মানে বেশি GPU খরচ, বেশি training সময়, কম interpretability, আর বেশি maintenance। "সমস্যা যদি XGBoost-এ solve হয়, তবে DL ব্যবহার করা প্রকৌশলগত ভুল।"

💼 ১১. Boss Question

Boss: "এই Deep Learning জিনিসটা তো GPU খায়, খরচ বেশি। আমাকে বলো — এটা আমার business-এ কোথায় লাগবে, আর কোথায় লাগবে না?"

উত্তর: "স্যার, আমাদের transaction/customer data (tabular) নিয়ে prediction করতে হলে সস্তা XGBoost-ই যথেষ্ট — GPU লাগবে না। কিন্তু যদি আমরা ছবি (product image auto-tagging, document scan থেকে তথ্য বের করা) বা বাংলা টেক্সট (support ticket auto-routing) নিয়ে কাজ করি, তখন Deep Learning ছাড়া উপায় নেই — কারণ classical ML সেই pattern ধরতেই পারবে না। মানে খরচটা তখনই করব যখন এটা সরাসরি নতুন capability এনে দেয়।"

🔎 ১২. Job Requirement Decoder

Job description-এ প্রায়ই থাকে:

"Experience with Deep Learning / Neural Networks (PyTorch/TensorFlow)."
প্রশ্নউত্তর
কী বোঝায়?আপনি neural network দিয়ে unstructured data (image/text) নিয়ে কাজ করতে পারেন।
কেন চায়?এই কাজগুলো classical ML দিয়ে হয় না; কোম্পানির নতুন product feature এখানে নির্ভর করে।
কোন সমস্যা সমাধান করে?manual feature engineering-এর সীমাবদ্ধতা; high-dimensional data।
junior-এর কী জানা লাগে?DL কখন লাগে/লাগে না, neuron/layer-এর ধারণা, একটা ছোট network train করার অভিজ্ঞতা।
এখনই কী master লাগে না?নতুন architecture design, distributed/multi-GPU training, research paper implement।
GitHub-এ কীভাবে দেখাবে?একটা image classifier (P4) project — README-তে "কেন DL, কেন classical ML নয়" ব্যাখ্যা সহ।
interview-তে কী জিজ্ঞেস করতে পারে?"কখন Deep Learning ব্যবহার করবেন classical ML-এর বদলে?"

⚠️ ১৩. সাধারণ ভুল ধারণা

ভুল ১: "Deep Learning সবসময় Random Forest-এর চেয়ে ভালো।" → ঠিক: tabular data-তে প্রায়ই উল্টো; XGBoost জেতে।

ভুল ২: "Neural network মানুষের মস্তিষ্কের মতো ভাবে।" → ঠিক: এটা অনুপ্রেরণা মাত্র; বাস্তবে এটা একটা গণিতের function, weight optimize করা।

ভুল ৩: "কম data থাকলেও DL ব্যবহার করি।" → ঠিক: কম data-তে DL overfit করে; classical ML বা transfer learning ভালো।

ভুল ৪: "Deep Learning = AI।" → ঠিক: DL হলো ML-এর subset, ML হলো AI-এর subset (Series 01 মনে করুন)।

🎤 ১৪. Interview Prep

প্রশ্ন ১: কখন Deep Learning ব্যবহার করবেন classical ML-এর বদলে?
উত্তর: unstructured data (image/text/audio), প্রচুর data ও compute আছে, এবং manual feature engineering কঠিন — এমন হলে DL। ছোট tabular data-তে classical ML।

প্রশ্ন ২: Perceptron কী?
উত্তর: সবচেয়ে সরল neuron — weighted sum + bias, তারপর activation। শুধু linearly separable সমস্যা solve করে।

প্রশ্ন ৩: "Representation learning" মানে কী?
উত্তর: model নিজে raw data থেকে দরকারি feature শিখে নেয়, মানুষকে feature বানাতে হয় না — এটাই DL-এর মূল শক্তি।

প্রশ্ন ৪: Deep network-এ একাধিক layer কেন দরকার?
উত্তর: প্রতিটা layer আগেরটার feature জুড়ে আরও জটিল, উচ্চ-স্তরের feature বানায় (edge → shape → object)।

✍️ ১৫. হাতে-কলমে

১. উপরের perceptron কোড চালিয়ে AND, OR (b বদলে) বানান।
২. নিচের ৫টা সমস্যার প্রতিটার জন্য লিখুন — classical ML নাকি Deep Learning, আর কেন:
  (ক) দোকানের মাসিক বিক্রি prediction (tabular)
  (খ) হাতে লেখা বাংলা সংখ্যা চেনা (image)
  (গ) loan default হবে কিনা (tabular)
  (ঘ) support ticket-এর ভাষা বোঝা (text)
  (ঙ) ৩০০ row-এর ছোট survey data (tabular, কম data)
(ইঙ্গিত: খ, ঘ → DL; ক, গ, ঙ → classical ML)

🚀 ১৬. Project Connection

আমাদের flagship "Bangladesh Tech Career Assistant"-এ এখন পর্যন্ত (V1–V3) সব ছিল tabular/CLI/classical ML। এই Series-এ আমরা V4 (Deep Learning module) যোগ করব — যেমন job post-এর সাথে দেওয়া company logo বা screenshot চেনা, কিংবা পরে NLP-র জন্য ভিত্তি তৈরি করা। পাশাপাশি এই Series-এর নিজস্ব standalone project P4: Image Classifier (E06-এ) আমরা শূন্য থেকে বানাব। আজকের শেখা — "কখন DL দরকার" — সেই সিদ্ধান্তের ভিত্তি।

📌 ১৭. সারসংক্ষেপ ও পরবর্তী পর্ব

এই পর্বে শিখলাম:
✓ Classical ML tabular data-তে দুর্দান্ত; unstructured data-তে (image/text) হার মানে
✓ Deep Learning-এর আসল শক্তি — নিজে নিজে feature শেখা (representation learning)
✓ Perceptron = সরলতম neuron; multi-layer জুড়লেই neural network
✓ "শেখা = সঠিক weight/bias খুঁজে বের করা"
✓ DL "cool" বলে নয়, সমস্যা দাবি করলে ব্যবহার করতে হয়
পরবর্তী পর্ব (S06E02): "Neuron, Activation, Forward Propagation" — একটা layer-এর ভেতরটা খুলে দেখব: weight, bias, activation function কীভাবে কাজ করে, আর NumPy দিয়ে হাতে একটা forward pass চালাব।
© 2025 Sheikh Thanbir Alam. All Rights Reserved. thanbirtamim.github.io
এই লেখা মূল লেখকের সম্পত্তি — লিখিত অনুমতি ছাড়া কপি করে অন্য কোনো ওয়েবসাইট, ব্লগ, বই বা প্ল্যাটফর্মে প্রকাশ/বিতরণ করা কঠোরভাবে নিষিদ্ধ। Content may not be copied or republished without permission.