Connect with us

Ce Sunt Rețelele Neuronale Transformer?

IA 101

Ce Sunt Rețelele Neuronale Transformer?

mm

Rețelele Neuronale Transformer Descrise

Transformatorii sunt un tip de model de învățare automată care se specializează în prelucrarea și interpretarea datelor secvențiale, făcându-le optime pentru sarcinile de procesare a limbajului natural. Pentru a înțelege mai bine ce este un transformator de învățare automată și cum funcționează, să aruncăm o privire mai atentă asupra modelului transformator și a mecanismelor care le conduc.

Acest articol va acoperi:

  • Modele Secvență-la-Secvență
  • Arhitectura Rețelei Neuronale Transformer
  • Mecanismul de Atenție
  • Diferențe Între Transformatori și RNN-urile/LSTM-urile

Modele Secvență-la-Secvență

Modelele secvență-la-secvență sunt un tip de model NLP care sunt utilizate pentru a converti secvențe de un anumit tip într-o secvență de alt tip. Există diverse tipuri de modele secvență-la-secvență, cum ar fi modelele de rețele neuronale recurente și modelele de memorie pe termen lung și scurt (LSTM).

Modelele tradiționale secvență-la-secvență, cum ar fi RNN-urile și LSTM-urile, nu sunt subiectul acestui articol, dar o înțelegere a lor este necesară pentru a aprecia modul în care funcționează modelele transformator și de ce sunt superioare modelelor secvență-la-secvență tradiționale.

În rezumat, modelele RNN și LSTM constau în rețele de codificare și decodificare care analizează datele de intrare la diverse pași de timp. Modelul de codificare este responsabil pentru formarea unei reprezentări codificate a cuvintelor din datele de intrare. La fiecare pas de timp, rețeaua de codificare primește o secvență de intrare și un stare ascunsă din pasul de timp precedent din serie. Valorile stărilor ascunse sunt actualizate pe măsură ce datele trec prin rețea, până la ultimul pas de timp, unde se generează un “vector de context”. Vectorul de context este apoi transmis rețelei de decodificare, care este utilizat pentru a genera o secvență țintă, prin prezicerea cuvântului cel mai probabil care se potrivește cu cuvântul de intrare pentru pașii de timp respectivi.

Aceste modele pot fi îmbunătățite prin utilizarea unui “mecanism de atenție”. Un mecanism de atenție definește care porțiuni ale vectorului de intrare ar trebui să fie luate în considerare de rețea pentru a genera ieșirea corespunzătoare. Pentru a spune altfel, un mecanism de atenție permite modelului transformator să prelucreze un cuvânt de intrare și să acorde atenție informațiilor relevante conținute de alte cuvinte de intrare. Mecanismele de atenție maschează, de asemenea, cuvintele care nu conțin informații relevante.

Arhitectura Rețelei Neuronale Transformer

Vom detalia mecanismul de atenție mai târziu, dar pentru moment, să aruncăm o privire asupra arhitecturii rețelei neuronale transformator la un nivel mai înalt.

În general, o rețea neuronală transformator arată aproximativ astfel:

Deși această structură generală poate varia între rețele, piesele de bază vor rămâne aceleași: codificări poziționale, vectori de cuvinte, mecanism de atenție, rețea neuronală feed-forward.

Codificări Poziționale și Vectori de Cuvinte

O rețea neuronală transformator funcționează prin preluarea unei secvențe de intrări și convertirea acestor intrări în două alte secvențe. Transformatorul produce o secvență de vectori de cuvinte încorporați și codificări poziționale.

Vectorii de cuvinte încorporați sunt doar reprezentarea textului într-un format numeric pe care rețeaua neuronală îl poate prelucra. În timp ce codificările poziționale sunt reprezentări vectorizate care conțin informații despre poziția cuvântului curent în propoziția de intrare, în raport cu alte cuvinte.

Alte modele de rețele neuronale bazate pe text, cum ar fi RNN-urile și LSTM-urile, utilizează vectori pentru a reprezenta cuvintele din datele de intrare. Acești vectori de cuvinte mapă cuvintele la valori constante, dar acest lucru este limitativ, deoarece cuvintele pot fi utilizate în contexte diferite. O rețea transformator rezolvă această problemă, făcând valorile cuvintelor mai flexibile, utilizând funcții sinusoidale pentru a permite vectorilor de cuvinte să ia valori diferite, în funcție de poziția cuvântului în propoziție.

Acest lucru permite modelului de rețea neuronală să păstreze informații cu privire la poziția relativă a cuvintelor de intrare, chiar și după ce vectorii trec prin straturile rețelei transformator.

Codificările poziționale și vectorii de cuvinte încorporați sunt sumați, apoi introduși în ambele rețele de codificare și decodificare. Deși rețelele neuronale transformator utilizează scheme de codificare/decodificare, la fel ca RNN-urile și LSTM-urile, o diferență majoră între ele este că toate datele de intrare sunt introduse în rețea în același timp, în timp ce în RNN-urile și LSTM-urile, datele sunt introduse secvențial.

Rețelele de codificare sunt responsabile pentru convertirea intrărilor în reprezentări pe care rețeaua le poate învăța, în timp ce rețelele de decodificare fac invers, convertind codificările într-o distribuție de probabilitate utilizată pentru a genera cuvintele cele mai probabile în propoziția de ieșire. În mod crucial, atât rețelele de codificare, cât și cele de decodificare au un mecanism de atenție.

Deoarece GPU-urile sunt capabile de prelucrare paralelă, multiple mecanisme de atenție sunt utilizate în paralel, calculând informațiile relevante pentru toate cuvintele de intrare. Această capacitate de a acorda atenție mai multor cuvinte, denumită “atenție multi-cap”, la un moment dat, ajută rețeaua neuronală să învețe contextul unui cuvânt într-o propoziție și este una dintre principalele avantaje pe care rețelele transformator le au față de RNN-urile și LSTM-urile.

Mecanismul de Atenție

Mecanismul de atenție este partea cea mai importantă a unei rețele transformator. Mecanismul de atenție este ceea ce permite modelelor transformator să depășească limita de atenție a unui model RNN sau LSTM obișnuit. Modelele secvență-la-secvență tradiționale aruncă toate stările intermediare și utilizează doar starea finală/vectorul de context atunci când inițializează rețeaua de decodificare pentru a genera predicții despre o secvență de intrare.

Arunca toate, cu excepția vectorului de context final, funcționează ok atunci când secvențele de intrare sunt destul de mici. Cu toate acestea, pe măsură ce lungimea unei secvențe de intrare crește, performanța modelului se degradează atunci când se utilizează această metodă. Acest lucru se datorează faptului că devine destul de dificil să rezumi o secvență de intrare lungă ca un singur vector. Soluția constă în creșterea “atenției” modelului și utilizarea stărilor intermediare ale codificatorului pentru a construi vectori de context pentru decodificator.

Mecanismul de atenție definește cât de importante sunt alte tokenuri de intrare pentru model atunci când se creează codificări pentru un anumit token. De exemplu, “el” este un pronume general, adesea utilizat pentru a se referi la animale atunci când sexul lor nu este cunoscut. Un mecanism de atenție ar permite unui model transformator să determine că, în contextul curent, “el” se referă la un șoarece, deoarece poate examina toate cuvintele relevante din propoziția de intrare.

Un mecanism de atenție poate fi utilizat în trei moduri diferite: de la codificator la decodificator, doar codificator, doar decodificator.

Atenția de la codificator la decodificator permite decodificatorului să ia în considerare secvențele de intrare atunci când generează o ieșire, în timp ce mecanismele de atenție doar codificator și doar decodificator permit rețelelor să ia în considerare toate părțile secvențelor anterioare și actuale, respectiv.

Construcția unui mecanism de atenție poate fi împărțită în cinci pași:

  1. Calcularea unui scor pentru toate stările codificatorului.
  2. Calcularea ponderilor de atenție
  3. Calcularea vectorilor de context
  4. Actualizarea vectorului de context cu ieșirea din pasul de timp precedent
  5. Generarea ieșirii cu decodificatorul

Primul pas este să facă decodificatorul să calculeze un scor pentru toate stările codificatorului. Acest lucru se face prin antrenarea rețelei decodificator, care este o rețea neuronală feed-forward de bază. Atunci când decodificatorul este antrenat pe primul cuvânt din secvența de intrare, nu a fost creată încă nicio stare internă/ascunsă, astfel încât starea finală a codificatorului este de obicei utilizată ca stare precedentă a decodificatorului.

Pentru a calcula ponderile de atenție, se utilizează o funcție softmax pentru a genera o distribuție probabilistică pentru ponderile de atenție.

Odată calculate ponderile de atenție, vectorul de context trebuie calculat. Acest lucru se face prin multiplicarea ponderilor de atenție și a stării ascunse împreună pentru fiecare pas de timp.

După ce vectorul de context este calculat, acesta este utilizat împreună cu cuvântul generat în pasul de timp precedent pentru a genera următorul cuvânt din secvența de ieșire. Deoarece decodificatorul nu are nicio ieșire anterioară la care să se refere în primul pas de timp, se utilizează adesea un token special “de start”.

Diferențe Între Transformatori și RNN-urile/LSTM-urile

Să acoperim rapid unele dintre diferențele dintre RNN-urile și LSTM-urile.

RNN-urile prelucrează intrările secvențial, în timp ce un vector de stare ascunsă este menținut și modificat de cuvintele de intrare pe măsură ce trec prin rețea. Stările ascunse ale unui RNN de obicei conțin foarte puține informații relevante cu privire la intrările anterioare. Noile intrări adesea șterg starea curentă, ceea ce duce la pierderea de informații și la degradarea performanței în timp.

În contrast, modelele transformator prelucrează întreaga secvență de intrare deodată. Mecanismul de atenție permite fiecărui cuvânt de ieșire să fie informat de fiecare cuvânt de intrare și stare ascunsă, făcând rețeaua mai fiabilă pentru bucăți lungi de text.

LSTM-urile sunt versiuni modificate ale RNN-urilor, ajustate pentru a gestiona secvențe de intrare mai lungi. Arhitectura LSTM utilizează o structură numită “porți”, cu “porți de intrare”, “porți de ieșire” și “porți de uitare”. Proiectarea porților gestionează pierderea de informații comună modelelor RNN. Datele sunt prelucrate în continuare secvențial, iar proiectarea recurentă a arhitecturii face ca modelele LSTM să fie dificil de antrenat utilizând calculul paralel, ceea ce face timpul de antrenare mai lung în general.

Inginerii LSTM adăugau adesea mecanisme de atenție la rețea, ceea ce se știa că îmbunătățește performanța modelului. Cu toate acestea, s-a descoperit în cele din urmă că mecanismul de atenție singur a îmbunătățit precizia. Această descoperire a condus la crearea rețelelor transformator care utilizează mecanisme de atenție și calcul paralel, mulțumită GPU-urilor.

Blogger și programator cu specializări în Machine Learning și Deep Learning subiecte. Daniel speră să ajute pe alții să folosească puterea inteligenței artificiale pentru binele social.