পাঠ ১০ · ৩৫-এর মধ্যে · মডিউল ২

LeNet — প্রথম CNN

LeNet — the first practical CNN (1998)
৬ মিনিট পড়া মাঝারি · Intermediate PyTorch কোডসহ

এই পাঠে যা শিখবেন

  • LeNet-এর historical context
  • LeNet-5-এর layer-by-layer architecture
  • কেন LeNet revolutionary ছিল
  • PyTorch-এ LeNet implementation ও MNIST training

১ · Historical context — ১৯৮৯-১৯৯৮

১৯৮০-র দশকে — Backpropagation reinvent (Rumelhart 1986). ১৯৮৯-এ LeCun প্রথম CNN paper — handwritten ZIP code recognition AT&T Bell Labs-এ। ১৯৯৮-এ LeNet-5 published — current name.

সমস্যা: US Postal Service ও bank-এ প্রতিদিন লক্ষ লক্ষ চেক ও envelope-এ handwritten digit. Manual entry expensive ও error-prone.

সময়ের অন্য approach: SVM, K-NN, decision tree — hand-crafted feature-এর উপর। Maximum 95% accuracy.

কেন্দ্রীয় ধারণা

LeCun bet করেছিলেন — feature-ও শেখা যায়, hand-design করতে হয় না। Convolution + pooling + backprop combo দিয়ে। ১৯৯৮-এ এটি heretical idea ছিল।

২ · LeNet-5 architecture

Input: 32×32 grayscale digit (MNIST-এ 28×28 padded to 32×32).

  1. C1 — Conv: 6 filters, 5×5 kernel → output 28×28×6.
  2. S2 — Subsampling: 2×2 average pool → 14×14×6.
  3. C3 — Conv: 16 filters, 5×5 → 10×10×16. (LeCun-এর সংযোগ pattern অদ্ভুত — কিছু output শুধু কিছু input channel দেখে)।
  4. S4 — Subsampling: 2×2 average pool → 5×5×16.
  5. C5 — Conv (FC-equivalent): 120 filters, 5×5 → 1×1×120.
  6. F6 — FC: 84 neurons.
  7. Output: 10 RBF units (digit 0-9).

Total parameters: ~60,000.

Activation: tanh (sigmoid এর variant). ReLU তখন invent হয়নি।

৩ · কেন এই specific design?

  • 5×5 kernel: এই size-এ digit-এর local feature (curve, line) ধরা যায়।
  • Average pool: Max pool সেই সময় common ছিল না। Subsampling = "average + scaling".
  • Channel ক্রমশ বাড়া (1→6→16→120): বিচিত্র feature শেখা।
  • Spatial ক্রমশ কমা (32→14→10→5→1): abstract representation.
  • Two FC layer-এ end: classification head.

৪ · Training challenge ১৯৯৮-এ

  • Hardware: SGI workstation, 100 MHz CPU. Modern GPU-র billionth.
  • Memory: 16 MB RAM common. Batch ছোট।
  • Training time: ৩ দিন MNIST-এ।
  • Library: custom C — PyTorch/TensorFlow নেই।
  • Initialization: Xavier/He invent হয়নি — heuristic.
LeNet ১৯৯৮-এ — আজকের MobileNet-এর tiniest cousin. 60K parameters, MNIST-এ 99%. Modern GPU-তে এক ব্যাচ secondes-এ চলে। কিন্তু সেই সময় — academic ও industrial breakthrough.
LeNet-5 — Yann LeCun, 1998 Input 32×32×1 digit C1 conv 5×5 28×28×6 156 params S2 pool 2×2 14×14×6 C3 conv 5×5 10×10×16 1.5K params S4 pool 5×5×16 C5 5×5 1×1×120 48K F6 FC 84 10K Output 10 digit class Total ~60K parameters · 99% accuracy on MNIST deployed in US bank check reading systems by late 1990s এই blueprint থেকেই AlexNet, VGG, ResNet, EfficientNet
LeNet-5 — Conv-Pool-Conv-Pool-FC pattern, যা পরবর্তী ২৫ বছরের CNN architecture-এর base.

৫ · LeNet ও MNIST

MNIST = Modified NIST. LeCun ১৯৯৪-এ assemble. 60,000 training + 10,000 test handwritten digit (0-9), 28×28 grayscale.

  • LeNet-5 — 0.8% error rate (১৯৯৮)।
  • আজ — modern CNN 0.2% error.
  • "Hello world" of CV — every CNN tutorial শুরু এতে।

৬ · PyTorch-এ LeNet implementation

Python · PyTorch
import torch
import torch.nn as nn

class LeNet5(nn.Module):
    def __init__(self, num_classes=10):
        super().__init__()
        # original — tanh activation
        self.features = nn.Sequential(
            nn.Conv2d(1, 6, kernel_size=5),    nn.Tanh(),
            nn.AvgPool2d(2),
            nn.Conv2d(6, 16, kernel_size=5),   nn.Tanh(),
            nn.AvgPool2d(2),
            nn.Conv2d(16, 120, kernel_size=5), nn.Tanh(),  # C5 fully spatial
        )
        self.classifier = nn.Sequential(
            nn.Flatten(),
            nn.Linear(120, 84), nn.Tanh(),
            nn.Linear(84, num_classes),
        )
    def forward(self, x):
        return self.classifier(self.features(x))

model = LeNet5()
x = torch.randn(8, 1, 32, 32)
y = model(x)
print("Output:", y.shape)                # (8, 10)
print("Parameters:", sum(p.numel() for p in model.parameters()))

    
~62K parameters. Modern GPU-তে MNIST training সেকেন্ডে। ১৯৯৮-এ ৩ দিন। Hardware-এর evolution miracle.

৭ · LeNet-এর legacy

  • Banking: NCR, AT&T-এর OCR — LeNet-derived.
  • USPS: ZIP code reading automation.
  • Academic seed: AlexNet (২০১২) — directly LeNet-এর scaled-up version.
  • Pedagogical: "Hello CNN" — every textbook.

৮ · LeNet থেকে modern CNN — কী বদলায়

  • Activation: tanh → ReLU.
  • Pool: avg → max.
  • Init: heuristic → Xavier/He.
  • Optimizer: SGD → Adam.
  • BatchNorm: add.
  • Dropout: add.
  • Depth: 7 layer → 100+.
  • Data: 60K → 14M (ImageNet).

৯ · LeNet-এর আজও practical use

  • Educational baseline: CNN শেখা শুরু।
  • Embedded device: 60K parameters — microcontroller-এ চলে।
  • Quick prototype: ছোট dataset (digit, signature).
  • OCR-light: simple character recognition.
LeNet সরল কিন্তু genius — convolution, pooling, hierarchy-র concept সবই এতে। আধুনিক CNN-এর সব কিছু বুঝতে এর architecture বোঝা ভিত্তি।

ভাবনার প্রশ্ন

প্র ০১ LeNet ১৯৯৮-এ MNIST-এ 99%. কিন্তু ২০১২ পর্যন্ত (AlexNet) CNN dominant হলো না কেন? "DL winter"-এর কারণ?

এটি AI history-র সবচেয়ে instructive case study. ১৪ বছরের delay-এর কারণ প্রযুক্তি, data, ও mindset.

Hardware bottleneck:

  • ১৯৯৮: 100 MHz CPU, 16 MB RAM. MNIST training ৩ দিন।
  • ImageNet (১.৪M images) — তখনকার hardware-এ অসম্ভব।
  • GPU general-purpose computing ২০০৭ (CUDA).
  • ২০১২ AlexNet — দু'টি GTX 580 GPU-তে train, ৫-৬ দিন।

Data scarcity:

  • ImageNet ২০০৯-এ start, ২০১২-এ mature (Fei-Fei Li-র vision).
  • Before — কয়েক হাজার labeled image সর্বোচ্চ।
  • Big data + crowdsourcing era CNN-এর অপেক্ষায় ছিল।

Algorithmic gaps:

  • ReLU: ২০১০ (Nair & Hinton) — vanishing gradient solved.
  • Dropout: ২০১২ (Hinton et al.) — overfitting tamed.
  • Xavier init: ২০১০।
  • Backprop optimizers: Adam ২০১৪।
  • Together — deeper network train possible.

Community skepticism (DL winter):

  • Symbolic AI camp NN-কে "dead end" বলত।
  • SVM theoretically backed — kernel method dominant ১৯৯৫-২০১০।
  • NeurIPS-এ deep network paper reject হতো।
  • LeCun, Hinton, Bengio — "lonely crusaders".

২০১২-র turning point:

  • AlexNet — ImageNet 2012 top-5 error: 26% → 15%.
  • 10 percentage point gap unprecedented.
  • CV community stunned — within months pivot to CNN.
  • Industry investment, GPU vendors interest.

Lessons:

  • Algorithm ≠ adoption. Three things needed: algorithm + compute + data.
  • Visionary research (LeCun) এর timing important.
  • Failure-to-scale ≠ failure-of-idea.
  • Today's "stuck" research — tomorrow's revolution.

Modern parallel:

  • Transformer ২০১৭ — first NLP-এ। Vision ২০২০-এ।
  • Diffusion model ২০১৫ — ২০২২-এ Stable Diffusion.
  • Idea inception → public adoption — typically 5-10 years.

মূল উপলব্ধি: Research timeline non-linear. LeCun-এর persistence ১৪ বছর — যা CV-কে বদলে দিয়েছে। Researcher-দের long-term vision-এর শক্তি।

প্র ০২ LeNet-এ C3 layer-এ অদ্ভুত connection pattern (some output channel connected to subset of input channels). আজকের CNN-এ এটি নেই কেন?

LeNet-এর এই detail প্রায়ই tutorial-এ skip. Historical artifact কিন্তু philosophical implication আছে।

LeNet C3 connection:

  • S2 output: 6 channel. C3 output: 16 filter.
  • Standard "fully connected" conv: 16 × 6 = 96 connection.
  • LeCun: কিছু output শুধু 3 input channel দেখে, কিছু 4, কিছু 6.
  • Total connection ≈ 60% of full.

কেন এই sparse pattern?

  • Compute saving: ১৯৯৮-এ resource scarce. Sparsity 40% reduce.
  • Symmetry breaking: different filter ভিন্ন combination শিখে — diversify feature.
  • Inductive bias: hierarchical — "low-level → mid-level"-এ specific selection.

আজকের CNN-এ কী?

  • Standard conv = fully connected across channels (every output uses every input).
  • GPU optimized for dense matmul — sparsity overhead-এর সাথে speedup না।
  • Modern "sparsity" ভিন্ন নামে: group convolution.

Group convolution:

  • Input channels-কে $g$ group-এ ভাগ। প্রতিটি group আলাদা filter.
  • Group=1 = standard conv. Group=$C$ = depthwise conv.
  • AlexNet — 2-group (২ GPU-এ split — engineering reason, not theoretical).
  • ResNeXt — 32 group, accuracy gain.
  • MobileNet — depthwise separable. 8x cheap.
  • ShuffleNet — group + channel shuffle.

Sparsity philosophy:

  • "All connection necessary" assumption — চ্যালেঞ্জ।
  • Lottery ticket hypothesis (Frankle & Carbin, 2019): trained network-এর 90% weight prune করেও same accuracy possible.
  • LeCun-এর intuition ১৯৯৮-এ — sparsity productive.

আধুনিক sparse CNN:

  • Pruning post-training: 50-90% weight zero.
  • NAS (Neural Architecture Search) — sparse pattern auto-discover.
  • Mixture-of-Experts — selective activation.

মূল উপলব্ধি: "অপ্রয়োজনীয়" historical detail অনেক সময় profound idea-এর precursor. LeNet-এর hand-crafted sparsity আজকের efficient architecture-এর দিকে route.

প্র ০৩ LeNet-এ tanh, AlexNet-এ ReLU. ReLU এত সরল ($\max(0,x)$) — কেন এর introduction এত revolutionary?

ReLU history-এ প্রায়ই trivial মনে হয়। Actually — DL renaissance-এর 3-4 key enabler-এর একটি।

tanh-এর সমস্যা:

  • Vanishing gradient: tanh-এর derivative max 1, saturated region-এ ~0.
  • Deep network-এ — chain rule-এ gradient layer-wise multiply → exponentially shrink.
  • 10-layer network-এ first layer-এর gradient nearly zero — train করতে পারে না।
  • 1990s-এ এই কারণে network 5-7 layer-এ সীমাবদ্ধ ছিল।

ReLU-র breakthrough:

  • Active region-এ derivative = 1. Saturation নেই (positive side-এ)।
  • Gradient deep network-এ stable propagate.
  • Sparse activation — many neuron 0, fewer active. Information bottleneck-এর moderate.

Mathematical comparison:

  • $\tanh'(x) = 1 - \tanh^2(x) \le 1$, often << 1.
  • $\text{ReLU}'(x) = 1$ if $x>0$ else $0$।
  • Sigmoid $\sigma'(x) = \sigma(x)(1-\sigma(x)) \le 0.25$।

Computational cost:

  • tanh: exp() — expensive in hardware.
  • ReLU: comparison + select — single instruction.
  • Backward pass — branch-free, vectorizable.
  • GPU-এ 5-10x speedup.

Biological inspiration:

  • Neuron firing — typically positive only (excitatory).
  • Sparse activation — neuroscience-এর observation.
  • "Half-wave rectification" in sensory systems.

ReLU-র সমস্যা:

  • Dying ReLU: neuron stuck at 0 forever (negative bias).
  • Not zero-centered: bias activation drift.
  • Unbounded: activation explosion possible.

Variants:

  • Leaky ReLU: $\max(0.01x, x)$ — dying ReLU avoid.
  • PReLU: learnable slope.
  • ELU: exponential negative tail.
  • GELU: Gaussian probability — Transformer default.
  • Swish/SiLU: $x \cdot \sigma(x)$ — EfficientNet, modern CNN.

Adoption timeline:

  • ২০০০ — Hahnloser et al. গভীর paper.
  • ২০১০ — Nair & Hinton. RBM context-এ।
  • ২০১২ — AlexNet popularize.
  • আজ — DL-এর default.

মূল উপলব্ধি: Simple trick → big effect. ReLU = "conceptual minimal viable activation". AI breakthroughs প্রায়ই এমন simple swap.

প্র ০৪ আজ ২০২৬-এ একটি Bangla হাতে-লেখা সংখ্যা চেনার system বানাতে — LeNet, ResNet, বা ViT-tiny কোনটা বাছবেন? Considerations?

এটি real-world Bangladesh edu-tech problem. JSC, SSC, exam OMR — handwriting recognition দরকার।

Task profile:

  • Bangla digits 0-9 (০-৯) recognize.
  • Handwriting variability — student-ভেদে বিরাট।
  • Deploy on basic Android phone বা scanner server.
  • Realtime expectation.

Option 1 — LeNet:

  • ✅ ~60K params — extremely lightweight.
  • ✅ Microsecond inference — embedded device OK.
  • ✅ MNIST-style task-এ 95-98% accuracy.
  • ❌ Bangla digit MNIST-এর তুলনায় বেশি diverse — accuracy ceiling.
  • Verdict: pilot study বা low-resource device-এ ভাল।

Option 2 — ResNet-18:

  • ✅ 11M params, ImageNet-pretrained.
  • ✅ Transfer learning থেকে ভাল accuracy (99%+).
  • ✅ PyTorch, TF-এ ready-made.
  • ❌ Mobile-এ inference 50-100ms — borderline realtime.
  • Verdict: server-side OK, edge device challenge.

Option 3 — ViT-tiny:

  • ✅ 5M params, recent SOTA.
  • ✅ Bigger pretrained model (DINO, MAE) থেকে fine-tune.
  • ❌ Patch attention — small image (28×28) reflect awkward.
  • ❌ Pretrain large image, downstream small — accuracy mid.
  • ❌ Slower than ResNet-18 typically.
  • Verdict: overkill for digit task.

Bangla-specific considerations:

  • Dataset size: NumtaDB, BanglaLekha — ~50K labeled digits. Small for transformer.
  • Style diversity: Bangladesh + India + Bengali speakers — variety.
  • Conjuncts: digits straightforward, কিন্তু character recognition different beast.

Recommended approach:

  1. Baseline: LeNet-modified (ReLU, BN, dropout). Quick benchmark.
  2. Production: MobileNetV3-small ImageNet pretrained — transfer learn.
  3. Server with budget: ResNet-18.
  4. Augmentation aggressive: rotation ±15°, slight elastic, noise, thickness variation.
  5. Confidence threshold: low confidence → manual review.

Architecture selection rule:

  • Task complexity ↑ → architecture complexity ↑।
  • Single-class digit recognition → LeNet/MobileNet sufficient.
  • Full Bangla character (50+ class) → ResNet/EfficientNet.
  • Sentence-level OCR → Transformer (TrOCR).

Local context:

  • Bornom OCR (Bengali initiative) — ResNet-based.
  • Bangladesh Election Commission — printed digit OK.
  • Educational tech (10 Minute School) — mobile-first.

মূল উপলব্ধি: "Latest architecture" নয় — task-fit architecture. Bangladesh-এর constraint-এ pragmatic choice often LeNet-spirit. MobileNet, EfficientNet — LeNet-এর grand-children.

অনুশীলন

  1. Param count: LeNet-এ C1 (1→6 ch, 5×5) layer-এ মোট parameter (bias সহ)?

    $1 \times 6 \times 5 \times 5 + 6 = 156$।

  2. Modernize: LeNet-এ tanh → ReLU, AvgPool → MaxPool. 28×28 input থেকে শুরু (32 padding না)। PyTorch.
    nn.Conv2d(1, 6, 5, padding=2),  # padding 2 যাতে output 28
    nn.ReLU(), nn.MaxPool2d(2),
    nn.Conv2d(6, 16, 5),
    nn.ReLU(), nn.MaxPool2d(2),
    # ... continue
  3. ভাবুন: LeNet-এ FC layer (84 → 10) parameter count = 850. শুধু এই layer remove করলে কী effect? কেন এই tiny layer matter?

    FC2 — final classifier. Remove করলে 120 → 10 directly. সামান্য parameter কম, কিন্তু classification capacity-ও কম। 84-D intermediate representation feature mix-এর জায়গা — abstract feature compose.

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

কোড রানার কাজ না করলে? ব্রাউজারে কাজ না করলে Google Colab ব্যবহার করুন — Google-এর ফ্রি অনলাইন Python পরিবেশ, শুধু Gmail অ্যাকাউন্ট লাগে।
পূর্ববর্তী পাঠ
পাঠ ০৯ · CNN recap