Attention Is All You Need (2017): differenze tra le versioni

Da Wiki AI.
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(6 versioni intermedie di 2 utenti non mostrate)
Riga 1: Riga 1:
Famosissimo paper che riguarda il meccanismo di [[Attention]].
{{template pubblicazione
|data=2017
|autori=Ashish Vaswani, Noam M. Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin
|URL=https://www.semanticscholar.org/paper/204e3073870fae3d05bcbc2f6a8e263d9b72e776
|topic=Attention
|citazioni=100986
}}
Famosissimo paper del 2017 di [[Vaswani]] et al. che parallelizza il meccanismo di [[Attention]], eliminando la necessità di utilizzo di reti neurali ricorsive nei task di traduzione e di generazione del testo: è il paper che implementa l'architettura [[Transformer (Architettura di Deep Learning)|Transformer.]]


Tradizionalmente, nei task di [[Automatic Translation|automatic translation]], è stato utilizzato il modello [[Sequence To Sequence (Seq2Seq)|Sequence To Sequence]], in cui la rappresentazione della frase
=== Background ===
E' consigliabile leggere la pagina [[Attention (Machine Learning)]] per avere un background completo.
 
Tradizionalmente, nei task di [[Automatic Translation|automatic translation]], è stato utilizzato il modello [[Sequence to Sequence (seq2seq)|Sequence To Sequence]], in cui la rappresentazione della frase
  Il gatto mangia il topo
  Il gatto mangia il topo
viene codificata in una rappresentazione vettoriale - un embedding - attraverso [[Long Short-Term Memory (LSTM)]] , prendendo il valore del layer nascosto al termine della codifica della frase.
viene codificata in una rappresentazione vettoriale - un embedding - attraverso [[Long Short-Term Memory (LSTM)]] , prendendo il valore del layer nascosto al termine della codifica della frase.
Riga 10: Riga 20:
* Passato alla RNN o LSTM che aggiorna lo stato nascosto, anche in base al valore precedente dello stato nascosto H
* Passato alla RNN o LSTM che aggiorna lo stato nascosto, anche in base al valore precedente dello stato nascosto H
L'ultimo stato nascosto viene poi mandato al Decoder che può a questo punto iniziare a emettere token in base alla rappresentazione "densa" contenuta nello stato nascosto dell'encoder. Anche in questo caso viene utilizzata una rete LSTM in modalità autoregressiva, usando come input l'ultimo token emesso in output.
L'ultimo stato nascosto viene poi mandato al Decoder che può a questo punto iniziare a emettere token in base alla rappresentazione "densa" contenuta nello stato nascosto dell'encoder. Anche in questo caso viene utilizzata una rete LSTM in modalità autoregressiva, usando come input l'ultimo token emesso in output.


Il problema è che il decoder ha come uniche informazioni su cui decidere quale token emettere: l'ultimo token emesso, e lo stato nascosto. Immaginiamo il numero di trasformazioni che sono già state eseguite da quando "mangia" è stato codificato a quando '''eats''' dev'essere emessa.
Il problema è che il decoder ha come uniche informazioni su cui decidere quale token emettere: l'ultimo token emesso, e lo stato nascosto. Immaginiamo il numero di trasformazioni che sono già state eseguite da quando "mangia" è stato codificato a quando '''eats''' dev'essere emessa.
  The cat '''eats'''
  The cat '''eats'''
L'idea è che il decoder possa "vedere" direttamente gli stati nascosti del decoder
L'idea che il decoder possa "vedere" direttamente gli stati nascosti del decoder fu implementata da [[Attention (Machine Learning)|Bahdanau]] nel 2014 e migliorata da Luong nel 2015.
 
=== Contributo ===
I modelli Extended Neural GPU, ByteNet e ConvS2S avevano già proposto l'eliminazione della parte ricorrente nel modelli [[Sequence to Sequence (seq2seq)|seq2seq]], parallelizzando le operazioni attraverso l'uso di [[Reti Neurali Convoluzionali (CNN)|CNN]] : ma in questi modelli il numero di operazioni necessarie per stabilire una relazione fra due punti arbitrari della sequenza di input e di ouput cresce con la distanza fra le loro posizioni: linearmente per ConvS2S e in maniera logaritmica in ByteNet, e questo rende più difficile imparare le dipendenze fra posizioni distanti. Nel Transformer, questo numero viene reso costante: questo implica una diminuzione della risoluzione a causa dell'operazione di media aritmetica sulle posizioni, un effetto che viene però alleviato con l'utilizzo del meccanismo della Multi-headed attention.


=== Links ===
=== Links ===
[http://nlp.seas.harvard.edu/2018/04/03/attention.html The Annotated Transformer]
[http://nlp.seas.harvard.edu/2018/04/03/attention.html The Annotated Transformer]
[https://github.com/tensorflow/tensor2tensor/blob/master/tensor2tensor/models/transformer.py Implementazione del Transformer in tensor2tensor]
[https://github.com/tensorflow/tensor2tensor/blob/master/tensor2tensor/models/transformer.py Implementazione del Transformer in tensor2tensor]
[[Category:Pubblicazione]]

Versione attuale delle 10:20, 17 ago 2024

Attention Is All You Need (2017)
Data 2017
Autori Ashish Vaswani, Noam M. Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin
URL https://www.semanticscholar.org/paper/204e3073870fae3d05bcbc2f6a8e263d9b72e776
Topic Attention
Citazioni 100986

Famosissimo paper del 2017 di Vaswani et al. che parallelizza il meccanismo di Attention, eliminando la necessità di utilizzo di reti neurali ricorsive nei task di traduzione e di generazione del testo: è il paper che implementa l'architettura Transformer.

Background

E' consigliabile leggere la pagina Attention (Machine Learning) per avere un background completo.

Tradizionalmente, nei task di automatic translation, è stato utilizzato il modello Sequence To Sequence, in cui la rappresentazione della frase

Il gatto mangia il topo

viene codificata in una rappresentazione vettoriale - un embedding - attraverso Long Short-Term Memory (LSTM) , prendendo il valore del layer nascosto al termine della codifica della frase.

Ogni token viene quindi, uno alla volta:

  • Codificato in Word Embedding
  • Passato alla RNN o LSTM che aggiorna lo stato nascosto, anche in base al valore precedente dello stato nascosto H

L'ultimo stato nascosto viene poi mandato al Decoder che può a questo punto iniziare a emettere token in base alla rappresentazione "densa" contenuta nello stato nascosto dell'encoder. Anche in questo caso viene utilizzata una rete LSTM in modalità autoregressiva, usando come input l'ultimo token emesso in output.

Il problema è che il decoder ha come uniche informazioni su cui decidere quale token emettere: l'ultimo token emesso, e lo stato nascosto. Immaginiamo il numero di trasformazioni che sono già state eseguite da quando "mangia" è stato codificato a quando eats dev'essere emessa.

The cat eats

L'idea che il decoder possa "vedere" direttamente gli stati nascosti del decoder fu implementata da Bahdanau nel 2014 e migliorata da Luong nel 2015.

Contributo

I modelli Extended Neural GPU, ByteNet e ConvS2S avevano già proposto l'eliminazione della parte ricorrente nel modelli seq2seq, parallelizzando le operazioni attraverso l'uso di CNN : ma in questi modelli il numero di operazioni necessarie per stabilire una relazione fra due punti arbitrari della sequenza di input e di ouput cresce con la distanza fra le loro posizioni: linearmente per ConvS2S e in maniera logaritmica in ByteNet, e questo rende più difficile imparare le dipendenze fra posizioni distanti. Nel Transformer, questo numero viene reso costante: questo implica una diminuzione della risoluzione a causa dell'operazione di media aritmetica sulle posizioni, un effetto che viene però alleviato con l'utilizzo del meccanismo della Multi-headed attention.

Links

The Annotated Transformer

Implementazione del Transformer in tensor2tensor