Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Hvordan Lag-Normering Stabiliserer Transformere | Bygge transformer-komponenter
Transformers for Naturlig Språkprosessering

bookHvordan Lag-Normering Stabiliserer Transformere

Sveip for å vise menyen

Moderne dyp læring-modeller er avhengige av normaliseringsteknikker for å trene effektivt og nøyaktig. Innen naturlig språkprosessering (NLP), hvor inndatasekvenser kan variere i lengde og struktur, er normalisering spesielt viktig for å stabilisere læringsprosessen. To vanlige normaliseringsmetoder er batch-normalisering og lag-normalisering, men de har ulike formål og passer til forskjellige typer data.

Batch-normalisering
expand arrow

Batch-normalisering beregner gjennomsnitt og varians for hver funksjon på tvers av hele batchen med inndata. Denne tilnærmingen fungerer godt for oppgaver innen datamaskinsyn, hvor hvert bilde i en batch vanligvis har samme størrelse og struktur. I NLP-oppgaver, spesielt med sekvenser av variabel lengde, kan batch-normalisering imidlertid introdusere uønskede avhengigheter mellom eksempler i en batch og håndterer kanskje ikke varierende sekvenslengder på en god måte.

Lag-normalisering
expand arrow

Lag-normalisering derimot, normaliserer inndatafunksjoner innen hvert datapunkt (for eksempel hver token-embedding i en setning) uavhengig av andre datapunkter i batchen. Dette gjør den langt bedre egnet for NLP og sekvensmodellering. Ved å standardisere de summerte inndataene til et nevron innen et lag, sikrer lag-normalisering at hver tokens representasjon er på en lignende skala, uavhengig av posisjon eller batchens sammensetning. Dette hjelper Transformere å trene stabilt og representere tekst mer effektivt, spesielt ved håndtering av lange eller komplekse setninger.

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

Se for deg hver rad i inndataene som en unik token-embedding – som en karakter i en fortelling, hver med sine egne særtrekk. Funksjonen layer_norm gir hver token like muligheter ved å justere verdiene slik at de er sentrert rundt null og har samme skala. Den beregner gjennomsnitt og varians for hver rad, og transformerer deretter verdiene slik at ingen token skiller seg for mye ut eller forsvinner i bakgrunnen. Denne uavhengige normaliseringen betyr at, uavhengig av sekvenslengde eller batch-sammensetning, er hver tokens egenskaper balanserte og klare for modellens tolkning. Denne tilnærmingen holder modellens trening stabil og effektiv, spesielt når man arbeider med uforutsigbare lengder og strukturer som finnes i ekte NLP-data.

question mark

Hvorfor foretrekkes lag-normalisering fremfor batch-normalisering for NLP-transformere?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 4

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 2. Kapittel 4
some-alt