Verschuiving van de Gradiënt (Vanishing Gradient): Waarom Deep Learning een 'Kortetermijnvergeetziekte' heeft

1. Introductie: "Chef, ik hoor je niet!"



In de vorige sessie leerden we dat we via backpropagation de fout (Loss) van de uitvoerlaag naar de invoerlaag sturen om te leren. Theoretisch zou een dieper netwerk (Deep) complexere problemen beter moeten kunnen oplossen.

Maar tot het begin van de jaren 2000 was deep learning een donkere periode. Wanneer men 10 of 20 lagen stapelde, verslechterde de prestaties of stopte het leren helemaal.

Het ziet er zo uit:

  • CEO (uitvoerlaag): "Waarom is de productkwaliteit zo slecht! (Loss)" schreeuwt hij.
  • Directeur → Manager → Supervisor…: Deze schreeuw moet naar beneden worden overgedragen,
  • Junior medewerker (invoerlaag): "...? Wat zei er boven? Ik hoor niets!"

De parameters aan de voorzijde (invoerlaag), die de basisstructuur verzorgen, worden niet aangepast. Dit is het Verschuiving van de Gradiënt (Vanishing Gradient) probleem.


2. Oorzaakanalyse: De schuldige is 'Sigmoid' en 'Multiplicatie'

Waarom verdwijnt het signaal? De schuldige is de activatiefunctie Sigmoid en de wiskundige eigenschap van de kettingregel.

(1) Sigmoid's verraad: "Te strakke filter"

Oude deep learning onderzoekers hielden van Sigmoid. Het produceerde waarden tussen 0 en 1, wat leek op de kans dat een neuron uitzendt. Vanuit ontwikkelaarsperspectief is Sigmoid echter een compressor die de invoer vervormt.

  • Probleem 1: Gradiëntlimiet (Max Gradient = 0.25)
  • De afgeleide van Sigmoid bereikt een maximum van slechts 0.25 (en alleen bij x=0).
  • Als de invoer iets groter of kleiner is, nadert de gradiënt bijna 0.
  • Vergelijkbaar met een microfoonvolume op het laagste niveau.

(2) Kettingregel tragedie: "0.25 tot de macht N"

De kern van deep learning leren is gewichten = gewichten - (leerleregel * gradiënt). De gradiënt moet aanwezig zijn om gewichten te veranderen.

Backpropagation vermenigvuldigt afgeleiden van de uitvoer naar de invoer.

Stel dat er 30 lagen zijn. Zelfs als elke afgeleide 0.25 is, wordt het resultaat verwoest:

$$0.25 \times 0.25 \times \dots \times 0.25 \,(30\,keer) \approx 0.0000000000000000008$$

  • Resultaat: De gradiënt bij de invoer is kleiner dan wat de computer kan representeren, dus wordt het simpelweg 0 (Underflow).
  • Gevolg: De updateformule voor de eerste lagen wordt w = w - 0, dus het leren stopt.
  • Vergelijking: Het is alsof je een netwerk hebt met een pakketverlies van 99.99%.

3. Oplossing 1: ReLU – "Van analoog naar digitaal"



De held die dit probleem oploste, was ReLU (Rectified Linear Unit), een eenvoudige code regel.

Jeffrey Hinton en zijn team brachten het, en iedereen was verbaasd.

(1) Revolutie in de afgeleide: "1 of 0"

ReLU-code:


def relu(x):
    return max(0, x)

De afgeleide is duidelijk:

  • x > 0 (actief): Gradiënt is 1.
  • x ≤ 0 (inactief): Gradiënt is 0.

Waarom is dit belangrijk? In het positieve bereik blijft het signaal niet afnemen.

$$1 \times 1 \times 1 \times \dots \times 1 = 1$$

Sigmoid zou 0.25 aftrekken, maar ReLU laat het signaal verliesvrij doorgaan.

(2) Prestatieoptimalisatie: exp() vs if

Sigmoid gebruikt exponentiële berekeningen (exp(x)), wat CPU/GPU-intensief is. ReLU gebruikt een eenvoudige vergelijking (if x > 0), waardoor het veel sneller is.

(3) Let op: Dying ReLU

Een nadeel is dat negatieve invoer een gradiënt van 0 geeft, waardoor een neuron 'dood' kan worden. Varianten zoals Leaky ReLU geven een kleine gradiënt voor negatieve waarden.


4. Oplossing 2: ResNet (Residual Connection) – "Een speciale hotline"

Dankzij ReLU konden we 20–30 lagen stapelen, maar de ambitie bleef groeien. Bij 100 of 1000 lagen stopte het leren opnieuw. ResNet (Residual Network) kwam als redder.

(1) Idee: "Leer alleen de verandering"

Een conventioneel netwerk probeert een volledige output $H(x)$ te maken. ResNet introduceert een Skip Connection:

$$Output = F(x) + x$$

Dit betekent:

  • Het model hoeft niet alles opnieuw te maken.
  • Het neemt alleen de noodzakelijke verandering (residual) en voegt het toe aan het origineel.

(2) Backpropagation snelweg (Gradient Superhighway)

In de afgeleide is optelling een mooie eigenschap: distributief.

$$\frac{\partial Output}{\partial x} = \frac{\partial F(x)}{\partial x} + 1$$

De +1 zorgt ervoor dat, zelfs als $F(x)$ een gradiënt van 0 heeft, er nog steeds een gradiënt van 1 overblijft.

  • Oude methode: Als de weg blokkeert, stopt het.
  • ResNet: Een shortcut zorgt voor een directe route voor de gradiënt.

Dankzij dit kunnen we netwerken van 152 lagen (ResNet-152) of zelfs 1000 lagen trainen.


5. Conclusie: De winter van deep learning eindigt dankzij engineering

Het verschuiving van de gradiënt leek een theoretische limiet. Maar de oplossingen waren geen nieuwe wiskundige formules, maar ingenieursoplossingen.

image

  1. ReLU: Verwijder complexe berekeningen, ga simpelweg lineair.
  2. ResNet: Maak een shortcut als de weg blokkeert.

Deze benaderingen zijn nu de basis van moderne architecturen zoals Transformers (GPT) en CNN's.

Wanneer je een PyTorch-model ontwerpt en return x + layer(x) ziet, weet je nu dat dit een veiligheidsbalk (shortcut) is om de gradiënt te behouden.

"Ah, er is een veiligheidsbalk geïnstalleerd om de gradiënt niet te laten verdwijnen. Nu kan ik gerust die lagen verdiepen!"