Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Sfida: Strutturare i Blocchi Encoder e Decoder | Costruire Componenti Dei Transformer
Transformer per l'elaborazione del linguaggio naturale
Sezione 2. Capitolo 5
single

single

bookSfida: Strutturare i Blocchi Encoder e Decoder

Scorri per mostrare il menu

Comprendere la struttura dei blocchi encoder e decoder è fondamentale per padroneggiare il modo in cui i Transformer elaborano e generano testo. Ogni blocco encoder in un Transformer è progettato per trasformare sequenze di input in rappresentazioni ricche di contesto, mentre ogni blocco decoder genera sequenze di output prestando attenzione sia agli output precedenti sia alle rappresentazioni dell'encoder. Nei compiti di sequenza a sequenza, come la traduzione o il riassunto, l'encoder prende il testo di input e lo codifica in una serie di stati nascosti. Il decoder utilizza poi questi stati nascosti, insieme alla propria self-attention, per generare la sequenza di destinazione passo dopo passo. Questa interazione tra blocchi encoder e decoder consente al modello di catturare dipendenze complesse nel testo, rendendo i Transformer estremamente efficaci per una vasta gamma di compiti di elaborazione del linguaggio naturale.

La seguente tabella riassume la sequenza delle operazioni in un blocco encoder di un Transformer e ne evidenzia l'importanza per i dati testuali:

StepOperationPurpose for Text Data
1Multi-head self-attentionCaptures relationships between all tokens in the input.
2Add & NormalizeStabilizes training and preserves information.
3Feed-forward networkApplies non-linear transformations to each token.
4Add & NormalizeFurther stabilizes and enables deep stacking.

Each operation ensures that the encoder builds increasingly abstract and context-aware representations of the input text, which are essential for downstream sequence-to-sequence tasks.

Compito

Scorri per iniziare a programmare

Il tuo compito è completare le parti mancanti della classe TransformerEncoderBlock inizializzando correttamente i suoi componenti chiave e assicurandoti che vengano utilizzati nel calcolo forward.

La classe TransformerEncoderBlock modella un singolo blocco encoder in un'architettura Transformer. Devi inizializzare correttamente due componenti principali nel costruttore della classe (metodo __init__):

  • Il layer di self-attention utilizzando MultiHeadAttention(hidden_dim). Questo layer consente a ciascun token in input di prestare attenzione a tutti gli altri token, catturando le relazioni contestuali;
  • La rete feed-forward utilizzando FeedForward(hidden_dim). Questo layer applica trasformazioni non lineari a ciascuna rappresentazione di token individualmente, elaborando ulteriormente l'output del layer di self-attention;
  • Nel metodo forward, dovresti applicare questi due layer in sequenza:
    • prima, passa l'input x attraverso il layer di self-attention;
    • poi, passa l'output del layer di self-attention attraverso la rete feed-forward;
    • restituisci l'output finale.

Assicurati di istanziare sia MultiHeadAttention sia FeedForward con il parametro hidden_dim fornito alla classe. Questi componenti rappresentano la struttura centrale di un blocco encoder e devono essere applicati nell'ordine corretto affinché il blocco funzioni correttamente.

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 5
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

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

some-alt