Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Come la normalizzazione dei livelli stabilizza i transformer | Costruire Componenti Dei Transformer
Transformer per l'elaborazione del linguaggio naturale

bookCome la normalizzazione dei livelli stabilizza i transformer

Scorri per mostrare il menu

I modelli di deep learning moderni si basano su tecniche di normalizzazione per garantire un addestramento efficiente e accurato. Nel processamento del linguaggio naturale (NLP), dove le sequenze di input possono variare in lunghezza e struttura, la normalizzazione è particolarmente importante per stabilizzare il processo di apprendimento. Due metodi di normalizzazione comuni sono batch normalization e layer normalization, ma rispondono a esigenze diverse e sono adatti a differenti tipi di dati.

Batch Normalization
expand arrow

La batch normalization calcola la media e la varianza di ciascuna caratteristica su tutto il batch di input. Questo approccio funziona bene nei compiti di computer vision, dove ogni immagine in un batch ha tipicamente la stessa dimensione e struttura. Tuttavia, nei compiti NLP, specialmente con sequenze di lunghezza variabile, la batch normalization può introdurre dipendenze indesiderate tra i campioni di un batch e potrebbe non gestire in modo ottimale le diverse lunghezze delle sequenze.

Layer Normalization
expand arrow

La layer normalization, invece, normalizza le caratteristiche di input all'interno di ciascun dato (come ogni embedding di token in una frase) indipendentemente dagli altri dati nel batch. Questo la rende molto più adatta all'NLP e alla modellazione di sequenze. Standardizzando la somma degli input a un neurone all'interno di uno strato, la layer normalization assicura che la rappresentazione di ciascun token sia su una scala simile, indipendentemente dalla posizione o dalla composizione del batch. Questo aiuta i Transformer ad addestrarsi in modo stabile e a rappresentare il testo in modo più efficace, soprattutto quando si lavora con frasi lunghe o complesse.

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

Immagina ogni riga del tuo input come un embedding di token unico - come un personaggio in una storia, ognuno con le proprie particolarità. La funzione layer_norm offre a ogni token le stesse opportunità regolando i suoi valori affinché siano centrati attorno allo zero e condividano la stessa scala. Calcola la media e la varianza per ogni riga, quindi trasforma i valori in modo che nessun token risalti troppo o passi inosservato. Questa normalizzazione indipendente significa che, indipendentemente dalla lunghezza della sequenza o dalla composizione del batch, le caratteristiche di ogni token sono bilanciate e pronte per essere interpretate dal modello. Questo approccio mantiene l'addestramento del modello stabile ed efficiente, soprattutto quando si lavora con lunghezze e strutture imprevedibili tipiche dei dati NLP reali.

question mark

Perché la layer normalization è preferita rispetto alla batch normalization nei Transformer per NLP?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 4

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 2. Capitolo 4
some-alt