Encoder (Transformer) (RO)

From Systems analysis Wiki
Jump to navigation Jump to search

Codificatorul (engl. Encoder) — în Machine Learning și învățarea profundă, este o componentă a rețelei neuronale a cărei sarcină principală este transformarea unei secvențe de date de intrare (de exemplu, text sau imagine) într-o reprezentare numerică bogată, denumită de obicei stare latentă, vector contextual sau embedding. Această reprezentare captează caracteristicile cheie și semantica datelor de intrare într-o formă convenabilă pentru prelucrarea ulterioară.

Într-un sens mai larg, în teoria informației, un codificator este orice dispozitiv sau algoritm care transformă informațiile dintr-un format în altul, adesea cu scopul comprimării sau transmiterii.

Concept și scop

Scopul principal al codificatorului în rețelele neuronale este de a extrage caracteristici utile din datele de intrare și de a le \"codifica\" într-un vector dens de lungime fixă. Acest proces poate fi privit ca o formă de reducere neliniară a dimensionalității, în care datele de intrare de dimensiuni mari și rare (de exemplu, text reprezentat prin vectori one-hot) sunt transformate într-un spațiu vectorial de dimensiuni reduse, dar bogat în informații (spațiu latent).

Acest vector codificat poate fi utilizat ulterior:

  • De decodificator pentru a genera o nouă secvență (de exemplu, în traducerea automată).
  • De un clasificator pentru a rezolva sarcini de analiză (de exemplu, determinarea tonalității unui text).
  • Pentru sarcini care necesită înțelegerea întregului context de intrare.

Codificatorul în diverse arhitecturi

Codificatorul în autoencoder

Unul dintre exemplele clasice este arhitectura autoencoderului. Acesta este compus din două părți:

  1. Codificatorul: Comprimă datele de intrare într-o reprezentare latentă de dimensiuni mai mici (cod latent).
  2. Decodificatorul: Încearcă să reconstituie datele originale din această reprezentare comprimată.

Prin antrenarea acestei rețele pentru a minimiza eroarea de reconstituire, codificatorul învață să extragă cele mai importante caracteristici din date.

Codificatorul în rețelele neuronale recurente (RNN/LSTM)

Înainte de apariția arhitecturii Transformer, codificatoarele pentru sarcinile de procesare a secvențelor (seq2seq) erau construite pe baza rețelelor neuronale recurente (RNN) sau a variantei lor îmbunătățite LSTM.

  • Principiul de funcționare: Codificatorul RNN procesează secvența de intrare token cu token. La fiecare pas, acesta își actualizează starea latentă, incorporând informații despre token-ul curent și starea anterioară. Starea latentă finală, obținută după procesarea întregii secvențe, este considerată vectorul care codifică sensul întregii secvențe de intrare. Acest vector este adesea denumit vector contextual sau „vector de gândire" (thought vector).

Codificatorul în arhitectura Transformer

Revoluția în procesarea limbajului natural este legată de apariția codificatorului bazat pe arhitectura Transformer. Spre deosebire de RNN, acesta procesează toți token-ii secvenței în paralel.

Codificatorul Transformer este compus dintr-un stac (N) de straturi identice. Fiecare strat are două substraturi principale:

  1. Multi-Head Self-Attention (Atenție multiplă față de sine): Acest mecanism permite fiecărui token din secvența de intrare să „acorde atenție" tuturor celorlalți token-i și să le pondereze importanța pentru formarea propriei reprezentări contextuale. Aceasta permite modelului să surprindă dependențe complexe între cuvinte, indiferent de poziția lor.
  2. Feed-Forward Network (Rețea neuronală complet conectată): Se aplică reprezentării fiecărui token separat pentru transformări neliniare suplimentare.

Diferența esențială dintre codificatorul Transformer și codificatorul RNN constă în faptul că acesta nu produce un singur vector contextual la ieșire, ci o secvență de vectori contextualizați — câte unul pentru fiecare token de intrare. Fiecare astfel de vector conține informații despre token-ul său în contextul întregii secvențe.

Tipuri de modele bazate pe codificator

Modele encoder-decoder

Aceasta este arhitectura clasică pentru sarcinile de transformare a secvențelor (seq2seq), cum ar fi traducerea automată sau sumarizarea.

  • Principiul de funcționare: Codificatorul procesează întreaga secvență de intrare (de exemplu, o propoziție în limba sursă). Reprezentările sale de ieșire sunt apoi transmise decodificatorului, care, utilizându-le, generează autoregresiv secvența de ieșire (propoziția în limba țintă). Decodificatorul „privește" ieșirea codificatorului cu ajutorul unui mecanism special de atenție încrucișată (cross-attention).
  • Exemple: Transformer-ul original, T5, BART.

Modele exclusiv codificator (Encoder-Only)

Aceste modele utilizează exclusiv un stac de codificatoare Transformer.

  • Principiul de funcționare: Sunt destinate sarcinilor care necesită o înțelegere profundă a contextului întregului text de intrare. Datorită naturii bidirecționale a mecanismului de self-attention, acestea creează reprezentări contextuale bogate pentru fiecare token.
  • Aplicare: Ideale pentru sarcinile de analiză și înțelegere a limbajului (NLU), cum ar fi:
    • Clasificarea textului (de exemplu, analiza tonalității).
    • Recunoașterea entităților numite (NER).
    • Răspunsuri la întrebări (Question Answering), în care răspunsul este un fragment din text.
  • Exemplu: BERT și derivatele sale (RoBERTa, ALBERT).

Relația cu decodificatorul

În arhitectura encoder-decoder, codificatorul și decodificatorul îndeplinesc roluri complementare:

  • Codificatorul este responsabil de înțelegerea secvenței de intrare.
  • Decodificatorul este responsabil de generarea secvenței de ieșire.

Elementul de legătură esențial dintre ele este mecanismul de atenție încrucișată (cross-attention) din interiorul decodificatorului. La fiecare pas al generării, decodificatorul formulează o interogare (Query) pe baza părții deja generate din secvența de ieșire și o utilizează pentru a „acorda atenție" reprezentărilor de ieșire ale codificatorului (care servesc drept chei și valori — Key și Value). Aceasta permite decodificatorului să se concentreze pe cele mai relevante părți ale secvenței de intrare pentru a genera următorul token.

Literatură

  • Hinton, G. E.; Salakhutdinov, R. R. (2006). Reducing the Dimensionality of Data with Neural Networks. Science. DOI:10.1126/science.1127647.
  • Cho, K. et al. (2014). Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation. arXiv:1406.1078.
  • Sutskever, I.; Vinyals, O.; Le, Q. V. (2014). Sequence to Sequence Learning with Neural Networks. arXiv:1409.3215.
  • Bahdanau, D.; Cho, K.; Bengio, Y. (2015). Neural Machine Translation by Jointly Learning to Align and Translate. arXiv:1409.0473.
  • Kingma, D. P.; Welling, M. (2014). Auto-Encoding Variational Bayes. arXiv:1312.6114.
  • Vaswani, A. et al. (2017). Attention Is All You Need. arXiv:1706.03762.
  • Devlin, J. et al. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv:1810.04805.
  • Dai, Z. et al. (2019). Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context. arXiv:1901.02860.
  • Raffel, C. et al. (2020). Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. arXiv:1910.10683.
  • Brown, T. B. et al. (2020). Language Models Are Few-Shot Learners. arXiv:2005.14165.
  • Dosovitskiy, A. et al. (2020). An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale. arXiv:2010.11929.

Vezi și

  • BERT