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

bookCome Impilare i Blocchi Transformer

Scorri per mostrare il menu

123456789101112131415161718192021222324252627282930313233343536373839404142434445
import torch import torch.nn as nn class EncoderBlock(nn.Module): def __init__(self, embed_dim, num_heads, ff_dim): super().__init__() self.attn = nn.MultiheadAttention(embed_dim, num_heads, batch_first=True) self.norm1 = nn.LayerNorm(embed_dim) self.ff = nn.Sequential( nn.Linear(embed_dim, ff_dim), nn.ReLU(), nn.Linear(ff_dim, embed_dim) ) self.norm2 = nn.LayerNorm(embed_dim) def forward(self, x): attn_output, _ = self.attn(x, x, x) x = self.norm1(x + attn_output) ff_output = self.ff(x) x = self.norm2(x + ff_output) return x class StackedEncoder(nn.Module): def __init__(self, num_layers, embed_dim, num_heads, ff_dim): super().__init__() self.layers = nn.ModuleList([ EncoderBlock(embed_dim, num_heads, ff_dim) for _ in range(num_layers) ]) def forward(self, x): for layer in self.layers: x = layer(x) return x # Example usage: stack 4 encoder blocks for input text embeddings embed_dim = 64 num_heads = 4 ff_dim = 256 num_layers = 4 stacked_encoder = StackedEncoder(num_layers, embed_dim, num_heads, ff_dim) input_tensor = torch.rand(2, 10, embed_dim) # batch_size=2, seq_len=10 output = stacked_encoder(input_tensor) print("Stacked encoder output shape:", output.shape)
copy

Quando si elabora il testo con un Transformer, spesso si utilizzano diversi blocchi encoder o decoder impilati uno sopra l'altro. Nel codice sopra, viene mostrato come creare una pila di blocchi encoder utilizzando PyTorch. Ogni EncoderBlock contiene self-attention multi-head, una rete feed-forward e una normalizzazione del layer. La classe StackedEncoder costruisce una sequenza di questi blocchi, passando l'output di un blocco come input al successivo. Questa impilazione consente al modello di apprendere rappresentazioni sempre più complesse del testo a ogni livello. Per i compiti di NLP, come la classificazione del testo o la traduzione, l'impilamento dei blocchi aiuta a catturare relazioni e contesti più profondi nei dati. L'input iniziale - testo convertito in embedding - attraversa ogni blocco encoder, con ciascun blocco che affina la rappresentazione sulla base sia dell'input sia del contesto appreso nei livelli precedenti.

Le architetture Transformer possono essere raggruppate in tre tipologie principali, ciascuna adatta a diversi compiti di NLP:

Modelli Solo Encoder

  • Struttura: Composta da una pila di blocchi encoder.
  • Casi d'Uso Tipici: Questi modelli sono ideali per comprendere o analizzare il testo. Applicazioni comuni includono classificazione del testo, analisi del sentiment e riconoscimento di entità nominate. Un esempio noto di questo tipo è BERT.

Modelli Solo Decoder

  • Struttura: Composta da una pila di blocchi decoder.
  • Casi d'Uso Tipici: Questi modelli sono progettati per generare testo, come nel language modeling e nei compiti di completamento del codice. GPT è un esempio importante di modello solo decoder.

Modelli Encoder-Decoder

  • Struttura: Combinano blocchi encoder che elaborano l'input e blocchi decoder che generano l'output, con il flusso di informazioni dall'encoder al decoder.
  • Casi d'Uso Tipici: Sono utilizzati per compiti sequence-to-sequence in cui sia l'input che l'output sono sequenze. Applicazioni includono traduzione automatica, sintesi e question answering. T5 e il Transformer originale sono esempi di architetture encoder-decoder.

In sintesi, la scelta dell'architettura determina i tipi di problemi NLP che si possono risolvere: modelli solo encoder per l'analisi, solo decoder per la generazione e encoder-decoder per compiti che richiedono la mappatura di una sequenza in un'altra.

question mark

Quale architettura Transformer si utilizzerebbe tipicamente per un compito di traduzione automatica?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 6

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 6
some-alt