Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Hoe Laagnormalisatie Transformers Stabiliseert | Transformercomponenten Bouwen
Transformers voor Natuurlijke Taalverwerking

bookHoe Laagnormalisatie Transformers Stabiliseert

Veeg om het menu te tonen

Moderne deep learning-modellen vertrouwen op normalisatietechnieken om efficiënt en nauwkeurig te kunnen trainen. In natural language processing (NLP), waar invoersequenties kunnen variëren in lengte en structuur, is normalisatie bijzonder belangrijk voor het stabiliseren van het leerproces. Twee veelgebruikte normalisatiemethoden zijn batchnormalisatie en laagnormalisatie, maar ze hebben verschillende doelen en zijn geschikt voor verschillende soorten data.

Batchnormalisatie
expand arrow

Batchnormalisatie berekent het gemiddelde en de variantie van elk kenmerk over de gehele batch van invoerdata. Deze aanpak werkt goed voor computer vision-taken, waarbij elke afbeelding in een batch doorgaans dezelfde grootte en structuur heeft. In NLP-taken, vooral met sequenties van variabele lengte, kan batchnormalisatie echter ongewenste afhankelijkheden tussen voorbeelden in een batch introduceren en mogelijk niet goed omgaan met verschillende sequentielengtes.

Laagnormalisatie
expand arrow

Laagnormalisatie daarentegen normaliseert invoerkenmerken binnen elk datapunt (zoals elke tokenembedding in een zin) onafhankelijk van andere datapunten in de batch. Dit maakt het veel geschikter voor NLP en sequentiemodellering. Door de gesommeerde input naar een neuron binnen een laag te standaardiseren, zorgt laagnormalisatie ervoor dat de representatie van elk token op een vergelijkbare schaal ligt, ongeacht de positie of samenstelling van de batch. Dit helpt Transformers stabiel te trainen en tekst effectiever te representeren, vooral bij lange of complexe zinnen.

123456789101112131415161718192021
import numpy as np def layer_norm(x, epsilon=1e-5): """ Applies layer normalization to a 2D numpy array x. Each row is normalized independently. """ mean = np.mean(x, axis=1, keepdims=True) variance = np.var(x, axis=1, keepdims=True) normalized = (x - mean) / np.sqrt(variance + epsilon) # Optional: learnable scale and bias (gamma and beta) gamma = np.ones_like(mean) beta = np.zeros_like(mean) return gamma * normalized + beta # Example: normalize a batch of 3 token embeddings (rows) embeddings = np.array([[2.0, 4.0, 6.0], [1.0, 3.0, 5.0], [0.0, 0.0, 0.0]]) normalized_embeddings = layer_norm(embeddings) print(normalized_embeddings)
copy

Stel je elke rij in je invoer voor als een unieke token-embedding – als een personage in een verhaal, elk met zijn eigen eigenaardigheden. De functie layer_norm geeft elk token een gelijke kans door de waarden aan te passen zodat ze rond nul gecentreerd zijn en dezelfde schaal delen. Het berekent het gemiddelde en de variantie voor elke rij en transformeert vervolgens de waarden zodat geen enkel token te veel opvalt of wegvalt in de achtergrond. Deze onafhankelijke normalisatie betekent dat, ongeacht de sequentielengte of batchsamenstelling, de kenmerken van elk token in balans zijn en klaar voor interpretatie door het model. Deze aanpak houdt de training van je model stabiel en efficiënt, vooral bij het werken met de onvoorspelbare lengtes en structuren die voorkomen in echte NLP-data.

question mark

Waarom heeft laagnormalisatie de voorkeur boven batchnormalisatie voor NLP-transformers?

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 4

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 2. Hoofdstuk 4
some-alt