Che cos'è un modello encoder-decoder?

Autori

Jacob Murel Ph.D.

Senior Technical Content Creator

Joshua Noble

Data Scientist

L'encoder-decoder è un tipo di architettura di rete neurale utilizzata per il trattamento dei dati e la generazione sequenziali.

Nel deep learning, l'architettura encoder-decoder è un tipo di rete neurale più ampiamente associata all'architettura trasformativa e utilizzata nell'apprendimento sequence-to-sequence. La letteratura talvolta fa riferimento a encoder-decoder come a una forma di modello sequence-to-sequence (modello seq2seq). Gran parte della ricerca sul machine learning si concentra sui modelli di encoder-decoder per attività di elaborazione del linguaggio naturale (NLP) che coinvolgono modelli linguistici di grandi dimensioni (LLM).

I modelli encoder-decoder vengono utilizzati per gestire dati sequenziali, in particolare mappando le sequenze di input su sequenze di output di diversa lunghezza, come la traduzione automatica neurale, il riepilogo del testo, i sottotitoli delle immagini e il riconoscimento vocale. In tali attività, la mappatura di un token in input a uno in output è spesso indiretta. Prendiamo ad esempio la traduzione automatica: in alcune lingue, il verbo appare vicino all'inizio della frase (come in inglese), in altre alla fine (come il tedesco) e in alcune la posizione del verbo può essere più variabile (ad esempio, il latino). Una rete encoder-decoder genera sequenze di output di lunghezza variabile ma contestualmente appropriate per corrispondere a una determinata sequenza di input.1

Le ultime tendenze in materia di AI, proposte da esperti

Ricevi insight selezionati sulle notizie più importanti e interessanti sull'AI. Iscriviti alla nostra newsletter settimanale Think. Leggi l'Informativa sulla privacy IBM.

Grazie per aver effettuato l'iscrizione!

L'abbonamento sarà fornito in lingua inglese. Troverai un link per annullare l'iscrizione in tutte le newsletter. Puoi gestire i tuoi abbonamenti o annullarli qui. Per ulteriori informazioni, consulta l'Informativa sulla privacy IBM.

L'architettura encoder-decoder

Come si può dedurre dai rispettivi nomi, l'encoder codifica un dato input in una rappresentazione vettoriale e il decoder decodifica questo vettore nello stesso tipo di dati del set di dati di input originale.

Sia l'encoder che il decoder sono reti neurali separate e completamente connesse. Possono essere reti neurali ricorrenti (RNN), più varianti di memoria a breve-lungo termine(LSTM), unità ricorrenti gate (GRU) e reti neurali convoluzionali (CNN), oltre a modelli di transformer. Un modello di encoder-decoder contiene in genere diversi encoder e diversi decoder.

Diagramma dell'architettura encoder-decoder

Ogni encoder è composto da due livelli: il livello di self-attention (o meccanismo di self-attention) e la rete neurale feed-forward. Il primo livello guida l'encoder nel rilevare e concentrarsi su altre parole correlate in un dato input, mentre codifica una parola specifica. La rete neurale feed-forward elabora ulteriormente gli encoding in modo che siano accettabili per i successivi livelli di encoder o decoder.

La parte del decoder è costituita anche da uno strato di self-attention e da una rete neurale feed-forward, oltre a un terzo livello aggiuntivo: il livello di attenzione encoder-decoder. Questo livello focalizza l'attenzione della rete su parti specifiche dell'output dell'encoder. Lo strato di attenzione multi-head mappa quindi i token da due sequenze diverse.2

Diagramma delle parti degli stack di encoder e decoder

Come funzionano i modelli encoder-decoder

La letteratura presenta ampiamente i modelli di encoder-decoder come composti da tre componenti: l'encoder, il vettore di contesto e il decoder.3

Encoder

Il componente principale dell'encoder è il meccanismo di auto-attenzione. Il meccanismo di self-attention determina il peso dei token in un input di testo per riflettere le relazioni tra i token. A differenza di un tradizionale word embedding, che ignora l'ordine delle parole, self-attention elabora l'intera sequenza di testo di input per calcolare la media ponderata dell'embedding di ciascun token che tiene conto della distanza di quel token da tutti gli altri nella sequenza di testo. Calcola questo embedding medio come una combinazione lineare di tutti gli embedding per la sequenza di input secondo la seguente formula:

La formula della sequenza matematica di input dell'encoder che indica x primo sub i è uguale alla somma da j è uguale a 1 a n di w sub j i volte x sub j

Qui, xj è un determinato token di input nella posizione j-esima nella stringa di testo di input e xi è il token di output corrispondente alla i-esima posizione nella stringa di testo di input. Il coefficiente wij è il peso dell'attenzione, che viene calcolato utilizzando la cosiddetta funzione softmax e rappresenta l'importanza di quel token nel testo di output per la sequenza sorgente corrispondente. In altre parole, questo coefficiente indica quanta attenzione l'encoder deve prestare a ciascun token nel testo di output rispetto all'importanza del token originale nel testo sorgente.4

Diagramma che mostra gli embedding di parole combinati con la codifica posizionale per creare embedding con segnale temporale per tre parole: Alas, poor, Yorick

L'encoder passa questo token embedding al livello feed-forward che aggiunge un encoding posizionale (o embedding posizionale) all'embedding del token. Questo encoding posizionale tiene conto dell'ordine dei token in un testo, e in particolare della distanza tra i token. Insieme, questo token embedding e questo embedding posizionale costituiscono lo stato nascosto trasmesso al decoder.5

Vettore di contesto

La letteratura chiama ampiamente lo stato nascosto finale dell'encoder vettore di contesto. È una rappresentazione numerica condensata del testo di input iniziale dell'encoder. Più semplicemente, consiste nell'embedding e nell'encoding posizionale prodotti dall'encoder per ogni parola nella sequenza input.

La letteratura spesso definisce il vettore di contesto utilizzando la seguente funzione, in cui il vettore di contesto X è definito come ogni token (x) nella i-esimaposizione nella sequenza di input:6

Formula della funzione del vettore di contesto che mostra che C è uguale a una sequenza di valori x da 1 a n sub x

Decoder

Proprio come l'encoder, il decoder è composto da un livello di self-attention e da una rete di feed-forward. Tra questi, il decoder contiene uno strato di mascheramento dell'attenzione multi-head. Questo segna la differenza tra encoder e decoder. Mentre l'encoder genera simultaneamente embedding contestualizzati di token, il livello di attenzione multi-head del decoder utilizza il mascheramento autoregressivo.

Innanzitutto, il decoder riceve il vettore di contesto dall'encoder. Il decoder utilizza questi embedding posizionali per calcolare i punteggi di attenzione per ogni token. Questi punteggi di attenzione determinano in che misura ogni token della sequenza di input influirà sui token successivi; in altre parole, i punteggi determinano il peso che ciascun token ha nelle determinazioni degli altri token nella generazione delle sequenze di output.

Una caratteristica importante di questo, tuttavia, è che il decoder non utilizzerà i token futuri per determinare i token precedenti nella stessa sequenza. L'output generato da ogni token dipende solo dai token precedenti; in altre parole, quando genera l'output di un token, il decoder non considera le parole o i token successivi a quello corrente. Come nel caso di molte tecniche di intelligenza artificiale, questo mira a imitare le comprensioni convenzionali di come gli esseri umani elaborano le informazioni, in particolare il linguaggio. Questo approccio all'elaborazione delle informazioni è chiamato autoregressivo.7

Diagramma del mascheramento autoregressivo della citazione di Amleto

Perché utilizzare i modelli encoder-decoder nell'NLP?

Uno dei principali vantaggi dei modelli encoder-decoder per attività di PNL a valle come l'analisi del sentimento o la modellazione del linguaggio mascherato è la produzione di embeddings. Questi embedding sono diversi dagli embedding di parole fissi utilizzati nei modelli bag of words.

Innanzitutto, gli embedding fissi non tengono conto dell'ordine delle parole, quindi ignorano le relazioni tra i token in una sequenza di testo. Gli embedding contestualizzati, tuttavia, tengono conto dell'ordine delle parole tramite codifiche posizionali. Inoltre, gli embedding contestualizzati tentano di catturare la relazione tra i token attraverso il meccanismo di attenzione, che considera la distanza tra i token in una determinata sequenza durante la produzione degli embedding.

Gli embedding fissi generano un embedding per un determinato token, fondendo tutte le istanze di quel token. I modelli encoder-decoder producono embedding contestualizzati per ogni istanza di un token. Di conseguenza, gli embedding contestualizzati gestiscono più abilmente le parole polisemiche, ovvero le parole con significati multipli. Ad esempio, pesca può significare uno sport o un frutto. Un embedding di parole fisso riduce i significati di questa parola creando un singolo embedding per il token o la parola. Ma un modello encoder-decoder genera embedding contestualizzati individuali per ogni occorrenza della parola pesca, e quindi cattura i suoi vari significati attraverso più embedding distinti.8

Mixture of Experts | 12 dicembre, episodio 85

Decoding AI: Weekly News Roundup

Unisciti al nostro gruppo di livello mondiale di ingegneri, ricercatori, leader di prodotto e molti altri mentre si fanno strada nell'enorme quantità di informazioni sull'AI per darti le ultime notizie e gli ultimi insight sull'argomento.

Tipi di varianti di encoder-decoder

Come prevedibile, l'architettura encoder-decoder ha molte varianti, ognuna con i propri casi d'uso principali nella data science e machine learning.

Solo encoderQuesti modelli (descritti anche come auto-encoder) utilizzano solo lo stack di codificatori, evitando i decoder. Tali modelli non hanno quindi una modellazione mascherata autoregressiva e hanno accesso a tutti i token nel testo di input iniziale. Pertanto, sono descritti come bidirezionali, in quanto utilizzano tutti i token circostanti, sia precedenti che successivi, per fare previsioni per un determinato token. I modelli di encoder più noti sono la famiglia di modelli BERT, come BERT,9 RoBERTa,10 ed ELECTRA,11, nonché i modelli IBM® Slate. I modelli solo encoder vengono spesso utilizzati per attività che richiedono la comprensione di un intero input di testo, come la classificazione del testo o la named entity recognition.

Solo decoderQuesti modelli (detti anche modelli autoregressivi) utilizzano solo lo stack di decodifica, rinunciando a qualsiasi encoder. Pertanto, quando si effettuano previsioni sui token, i livelli di attenzione del modello possono accedere solo ai token che precedono il token in esame. I modelli solo decoder vengono spesso utilizzati per attività di generazione di testo come la risposta alle domande, la scrittura di codice o chatbot come ChatGPT. Un esempio di modello solo decoder è la famiglia di foundation model IBM® Granite.12

Soluzioni correlate
IBM watsonx.ai

Addestra, convalida, adatta e implementa le funzionalità di AI generativa, foundation model e machine learning con IBM watsonx.ai, uno studio aziendale di nuova generazione per builder AI. Crea applicazioni AI in tempi ridotti e con una minima quantità di dati.

Scopri watsonx.ai
Soluzioni di intelligenza artificiale

Metti l'AI al servizio della tua azienda grazie all'esperienza leader di settore e alla gamma di soluzioni di IBM nel campo dell'AI.

Esplora le soluzioni AI
Consulenza e servizi sull'AI

Reinventa i flussi di lavoro e le operazioni critiche aggiungendo l'AI per massimizzare le esperienze, il processo decisionale in tempo reale e il valore di business.

Esplora i servizi AI
Fai il passo successivo

Ottieni l'accesso completo a funzionalità che coprono l'intero ciclo di vita dello sviluppo dell'AI. Crea soluzioni AI all'avanguardia con interfacce intuitive, workflow e accesso alle API e agli SDK standard di settore.

Esplora watsonx.ai Prenota una demo live
Note a piè di pagina

Jurafsky, D., Martin, J.,  “Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition”, Terza edizione, 2023.

Telmo, P., Lopes, A. V., Assogba, Y., Setiawan, H. “One Wide Feedforward Is All You Need” , 2023.
Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, L., Polosukhin I. “Attention Is All You Need”, 2017.
Tunstall, L., Werra, L., Wolf T. “Natural Language Processing with Transformers”, Revised Edition, O’Reilly, 2022

3 Goodfellow, I., Bengio, Y., Courville, A. “Deep Learning”, MIT Press, 2016.
Jurafsky, D., Martin, J. “Speech and Language Processing”, Terza edizione, 2023.
Tunstall, L., Werra, L., Wolf T. “Natural Language Processing with Transformers”, Revised Edition, O’Reilly, 2022.

4 Tunstall, L., Werra, L., Wolf T. “Natural Language Processing with Transformers”, Revised Edition, O’Reilly, 2022.
Goldberg, Y. “Neural network methods for Natural Language Processing”, Springer, 2022.

5 Alammar, J. and Grootendorst, M. “Hands-on Large Language Models”, O’Reilly, 2024.

6
Goodfellow, I., Bengio, Y.m Courville, A. “Deep Learning”, MIT Press, 2016.
Jurafsky, D., Martin, J. “Speech and Language Processing”, Terza edizione, 2023.

7 Foster, D. “Generative Deep Learning”, Second Edition, O’Reilly, 2023.
Rothman, D. “Transformers for Natural Language Processing”, Seconda edizione, 2022. 
Jurafsky, D. and Martin, J. Speech and Language Processing”, Terza edizione, 2023.

8 Tunstall, L., Werra, L., Wolf T. “Natural Language Processing with Transformers”, Revised Edition, O’Reilly, 2022. 

9 Devlin, J. et all. “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”, 2019.

10 Liu, Y., Ott, M., Goyal, N., Du, J.,  Joshi, M., Chen,  D., Levy, O., Lewis, M. ,  Zettlemoyer,  L., Stoyanov, V. “RoBERTa: A Robustly Optimized BERT Pretraining Approach”,  2019.

11 Clark, K. et all. “ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators”,  2020.

12 Mayank, M. et all. “Granite Code Models: A Family of Open Foundation Models for Code Intelligence” 2024.
Ruiz, A. “IBM Granite Large Language Models Whitepaper” 2024.