A CNN két zseniális trükkje

Paraméter-megosztás és transzláció-invariancia — részletesen, animációkkal

Kulcsfogalmak:
FC = Fully Connected (teljesen összekötött) = dense/linear layer
CNN = Convolutional Neural Network (konvolúciós neurális háló)
Kernel = filter = szűrőmag (pl. 3×3 súlymátrix)
Feature map = jellemzőtérkép (egy kernel kimenete)
Weight sharing = súlymegosztás  •  Pooling = összevonás
Backpropagation = visszaterjesztés  •  Loss = veszteségfüggvény
↓ Görgess ↓

01 // FC VS CNNGlobális vs. lokális kapcsolatok

Az FC (Fully Connected = teljesen összekötött) rétegben minden neuron minden bemenethez kapcsolódik — a CNN (Convolutional Neural Network = konvolúciós neurális háló) rétegben csak a szomszédokhoz. Más elnevezések: FC = „dense layer" (Keras), „linear layer" (PyTorch).

🔗 Kapcsolati struktúra — FC vs CNN

FC: minden→minden (N²) CNN: lokális 3×1 kernel (3N)
FC: N² kapcsolat, N² különböző súly. Nincs struktúra-feltevés — mindent „brute force" tanul.
CNN: 3N kapcsolat, de csak 3 különböző súly (megosztott kernel)! Feltevés: a lokális minta pozíció-független.

02 // MEGOSZTOTT KERNELEgy kernel csúszik mindenhol

A CNN lényege: egyetlen kernel (= szűrőmag, filter) végigcsúszik az egész képen/jelen. Ez a weight sharing (= súlymegosztás): ugyanaz a 3×3 súly néz bele a bal felső és a jobb alsó sarokba is.

🎯 Kernel csúsztatás — a súlyok SZÍNE azonos!

Kernel pozíció Feature map kimenet
CNN: y[i,j] = Σ w[m,n] · x[i+m, j+n] — UGYANAZ a w[m,n] mindenhol
FC: y[i,j] = Σ w_ij[m,n] · x[m,n] — KÜLÖNBÖZŐ w minden pozícióra

03 // PARAMÉTERSZÁM50 millió vs 640

Ez nem elírás. Egy 224×224 képnél az FC réteg 50 milliárd súlyt igényel — a CNN kevesebb mint ezret.

📊 Paraméterszám összehasonlítás — interaktív

Miért baj a sok paraméter? (1) Memória és számítás. (2) Overfitting (= túltanulás): a háló „magol" — megtanulja a tanító adatot, de új adatra rosszul általánosít. Minél kevesebb paraméterrel old meg egy feladatot, annál robusztusabb (generalizáció = általánosítóképesség).

04 // LOKÁLIS KAPCSOLATA képek lokális struktúrával rendelkeznek

Egy pixel a szomszédjaival együtt alkotja az éleket, textúrákat. A kép másik sarkában lévő pixellel nincs közvetlen kapcsolata — az FC feleslegesen próbálja megtanulni ezt. A CNN neuron receptive field-je (= receptív mező, látómező) az a terület, amit közvetlenül „lát".

🔬 Receptív mező — mit „lát" egy neuron?

Közvetlen receptív mező Effektív receptív mező (mélyebb réteg)
Receptive field (= receptív mező) növekedése: L1: 3×3, L2: 5×5, L3: 7×7... Mélyebb réteg = nagyobb terület → lokálisból fokozatosan globális! A háló „alulról felfelé" (bottom-up) építi a megértést: edge → texture → pattern → object.

05 // EKVIVARANCIAHa a bemenet eltolódik, a kimenet is eltolódik

A konvolúciós réteg translation equivariant (= transzláció-ekviváriáns): ha a minta 3 pixellel jobbra tolódik, a feature map (= jellemzőtérkép) is 3 pixellel jobbra tolódik — de az értéke nem változik! A feature map a kernel egy adott „kérdésére" adott válasz térképe.

➡️ Eltolás hatása — interaktív

Bemenet (eredeti) Kernel (rögzített) Feature map (követi az eltolást!)
Conv(shift(x, Δ)) = shift(Conv(x), Δ) — az eltolás és a konvolúció felcserélhető!
Stride (= lépésköz): hány pixelt ugrik a kernel (stride=2 → felezi a kimenetet)
Padding (= kitöltés): széleken nullákkal bővít, hogy a kimenet mérete megmaradjon

06 // POOLING → INVARIANCIAA pooling „elnyeli" a kis eltolást

Az ekvivarianciát a pooling (= összevonó) réteg alakítja invarianciává (= változatlansággá): a 2×2 max-pool (= maximumválasztó összevonás) 1 pixelnyi eltolást már nem „látja" — a maximum ugyanaz marad. Létezik average pooling (= átlagoló) is.

🏊 Max-pooling hatása eltolásra

Feature map (konv. után) Max-pool kimenet Maximum pozíció
Ekvivarancia → Invariancia (Equivariance → Invariance):
• Konvolúció = equivariant (ekviváriáns): eltolás → eltolás (a feature map „együtt mozog")
• + Pooling = invariant (invariáns): kis eltolás → ugyanaz a kimenet
• Több pooling réteg → nagyobb eltolástűrés (translation tolerance)

07 // 1D JEL ANALÓGIAJelfeldolgozás = CNN 1D-ben

A FIR (Finite Impulse Response = véges impulzusválaszú) szűrő h[k] pontosan ugyanúgy működik, mint a CNN kernel: megosztott súlyok, lokális kapcsolat, csúsztatás. A CNN ezt tanulhatóvá teszi a backpropagation (= visszaterjesztés) algoritmussal, ami a loss function (= veszteségfüggvény) gradiensét számítja ki.

🔊 FIR szűrő vs 1D CNN — ugyanaz!

Bemenet x[k] Kernel/szűrő h[k] Kimenet y[k]
Az egyetlen különbség: a FIR szűrőt az ember tervezi (pl. Butterworth, Chebyshev). A CNN kernelt a backpropagation (visszaterjesztés) tanulja meg a training data-ból (= tanítóadatból). A gradient descent (= gradiens-ereszkedés) iteratívan módosítja a kernel súlyait, amíg a loss minimális. De matematikailag: UGYANAZ a konvolúció.

08 // ÖSSZEFOGLALÁSA teljes kép

🎯 A CNN két trükkje — vizuális összefoglaló

1. Paraméter-megosztás (Weight Sharing): Egy kernel (3×3 = 9 súly) csúszik mindenhol → 5 nagyságrenddel kevesebb paraméter → kevesebb overfitting (túltanulás), gyorsabb tanulás.
Inductive bias (= indukciós előfeltevés): „egy él az él, bárhol is van a képen."
2. Lokális kapcsolat → Transzláció-invariancia (Translation Invariance): Csak szomszédokat néz (local connectivity) → felesleges távoli kapcsolatok kizárva. Konvolúció = equivariance (ekvivarancia: kimenet együtt tolódik) + pooling (összevonás) = invariance (invariancia: kis eltolás → ugyanaz a kimenet).
Jelfeldolgozási analógia: A FIR (véges impulzusválaszú) szűrő = CNN kernel, csak a CNN-ben a backpropagation (visszaterjesztés) tanulja meg az együtthatókat. Rezgésjel, delfin-kattintás, ipari hang: 1D CNN = tanulható szűrőbank (filter bank).

09 // RÖVIDÍTÉSEKFogalomtár & rövidítésjegyzék

Az összes rövidítés és szakkifejezés, ami az anyagban előfordul — egy helyen.

📖 Rövidítések A–Z