Procesarea limbajului natural devine din ce în ce mai importantă în viața noastră. Companiile folosesc NLP pentru a procesa toate datele text pe care le producem - când dăm comenzi lui Siri sau Google Assistant, când căutăm ceva, când scriem un comentariu pe rețelele de socializare sau chiar când scriem cod. Am văzut în primul articol din această serie cum modelele lingvistice mari permit oricui să creeze mai ușor modele mai puternice. În cel de-al doilea articol am văzut cum colectarea datelor necesare este mult mai ușoară în zilele noastre. În acest articol ne vom uita la cercetările de ultimă oră și voi încerca să fac câteva preziceri despre cum va arăta acest domeniu în următorii ani.
OpenAI a publicat GPT, un verișor de-al lui BERT, în 2018. GPT este, de asemenea, un model bazat pe Transformers, antrenat pe cantități mari de date de text, colectate de pe internet pe un task simplu de modelare a limbajului. Dar s-a descoperit că modelele antrenate în acest mod pot fi apoi antrenate simplu pentru a îndeplini multe sarcini diferite.
În timpul antrenamentului, GPT primește propoziții, token cu token (un cuvânt sau o parte de cuvânt în cazul cuvintelor mai rare) și trebuie să prezică următorul token. De exemplu, pentru propoziția "Alice învață despre inteligența artificială", GPT ar primi mai întâi doar "Alice" și ar trebui să prezică "învață ", apoi ar vedea "Alice învață" și ar trebui să prezică "despre" și așa mai departe, până când, la ultimul pas, ar primi ca intrare "Alice învață despre inteligența" și GPT ar trebui să prezică "artificială".
Aceasta este o sarcină destul de simplă, dar se pare că, pentru ca un Transformer să poată face acest lucru bine, trebuie să învețe o mulțime de lucruri despre structura și semnificația limbajului.
Și cu cât faci aceste modele Transformer mai mari, cu atât mai bune devin. Modelul GPT din 2018 are aproximativ 150 de milioane de parametri. GPT2 a ieșit în 2019 și avea 1,5 miliarde de parametri. GPT3 a ieșit în 2020 și a avut 175 de miliarde de parametri. PaLM, un model foarte asemănător, antrenat de Google, a ieșit în aprilie în 2022, cu 540 de miliarde de parametri. În afară de dimensiunea modelului și a setului de date de instruire, diferențele dintre aceste modele sunt foarte mici.
Dar GPT2 putea face lucruri noi, cum ar fi rezumarea unui textl, răspunsul la întrebări sau traducerea, în ciuda faptului că nu a fost antrenat în mod explicit pentru a face acest lucru. Dacă îi dați un document și apoi îi adăugați "tl;dr" (prescurtare de la "too long; didn't read", un slang des întâlnit pe internet), textul pe care ar continua să îl genereze ar fi un rezumat al documentului. Dacă îi dați un document, apoi "Q: " și o întrebare și apoi "A:", ar genera un răspuns la acea întrebare, pe baza documentului. În mod similar, i s-ar putea cere să traducă propoziții în alte limbi.
GPT3, fiind și mai mare, știe și mai multe despre lume. Poate face lucruri de genul "Un articol de Gwern Branwen" și ar genera un articol în stilul autorului respectiv. Poate scrie eseuri filosofice despre propria conștiință. GPT3 poate fi folosit chiar și pentru a scrie cod, pornind de la o simplă descriere a funcționalității dorite.
PaLM, cel mai recent model de limbaj de mari dimensiuni, poate realiza chiar și lucruri precum explicarea glumelor. De exemplu, atunci când i se solicită:
Input: I was supposed to start writing the paper at 5:00 PM.
But then I started playing with this cool new language model
for 10 minutes. 10 minutes later, it's suddenly 9:30 PM!
Modelul va continua:
This joke is about how time flies when you're having fun.
The person was supposed to start writing a paper at 5:00 PM,
but they started playing with a language model instead.
They thought they were only playing with it for 10 minutes,
but it was actually 4.5 hours.
De asemenea, poate face inferențe logice. Când i s-a pus următoarea întrebare:
- Shelley is from Virginia, but is visiting that city
with that famous market where they throw the fish.
Going home next Tuesday!
- Question: Is it likely that Shelley will be near
the Pacific Ocean this weekend?
PaLM va răspunde:
The city with the famous market where they throw the fish is Seattle,
Washington. Seattle is on the Pacific Ocean.
Shelley is visiting Seattle, so she will be near the Pacific Ocean
this weekend. The answer is "yes", it is likely that Shelley
will be near the Pacific Ocean this weekend.
Din păcate, aceste modele, spre deosebire de BERT, nu sunt disponibile pentru descărcare. Chiar dacă le-am putea descărca, majoritatea oamenilor nu ar avea resursele necesare pentru a le rula, deoarece necesită un cluster de mai multe GPU-uri pentru a genera o propoziție. Dar GPT3 este disponibil ca API de la OpenAI, așa că putem începe să explorăm modul în care funcționează.
GPT3 este un model lingvistic, astfel încât primește sarcini prin instrucțiuni text, care se numesc prompts. Nu toate prompturile sunt la fel de bune, iar alegerea celui potrivit pentru sarcina respectivă poate face o diferență uriașă în ceea ce privește performanța modelului.
De exemplu, dacă îi spuneți lui GPT3 să inverseze un șir de caractere (abcd -> dcba), nu va reuși să îndeplinească această sarcină, din cauza modului în care primește intrările. GPT3 nu primește nici cuvinte, nici caractere, ci tokenuri cu mai multe caractere dintr-un vocabular de 50257 token-uri. Cele mai frecvente cuvinte formează un token de unul singur, în timp ce cuvintele mai rare sunt formate din mai multe tokenuri mai scurte. De exemplu, cuvântul "encyclopedia" este format din 4 tokenuri: "ency", "cl", "op" și "edia". Prin urmare, atunci când GPT3 citește "encyclopedia", nu vede un singur cuvânt și nici litere individuale, ci vede 4 simboluri. Acest lucru înseamnă că GPT3 nu știe cum se scrie de fapt "encyclopedia".
Așadar, pentru a-l face să inverseze un cuvânt, trebuie să îi dați următoarele comenzi:
Adăugă spații între litere: e n c y c l o p e d i a
Adăugă numere: 1:e 2:n 3:c 4:y 5:c 6:l 7:o 8:p 9:e 10:d 11:i 12:a
Inversează numerele și literele: 12:a 11:i 10:d 9:e 8:p 7:o 6:l 5:c 4:y 3:c 2:n 1:e
Elimină numerele: a i d e p o l c y c n e
Unește literele în grupuri de câte două: ai de po lc yc ne, aide polc, ycne, aidepolcycne
aidepolcycne
Cu această secvență de 6 comenzi, GPT3 este capabil să inverseze corect șirurile de caractere. Găsirea celui mai bun prompt sau a celei mai bune secvențe de comenzi, pentru a îndeplini o anumită sarcină este încă un proiect de cercetare.
De exemplu, pe setul de date MultiArith, care conține întrebări de matematică de bază, cum ar fi "Luke was trying to expand his game collection. He bought 2 games from a friend and bought 2 more at a garage sale. If 2 of the games didn't work, how many good games did he end up with?", în mod implicit GPT3 reușește să răspundă corect la 17% din întrebări.
Cu toate acestea, dacă adăugați "The answer is after the proof" la întrebare, va răspunde corect în 45% din cazuri. Dacă îi spuneți "Let's think", GPT3 va calcula răspunsul corect în 55% din cazuri. Cele mai bune rezultate de până acum au fost obținute cu "Let's think step by step", când GPT3 produce, de fapt, o listă de calcule pas cu pas care duce la răspunsul final.
Pe lângă scrierea de texte în limba engleză, GPT3 a surprins prin faptul că poate scrie cod în diverse limbaje de programare. Atunci când i s-a cerut să scrie "un buton care arată ca un pepene verde", Sharif Shameem a descoperit că acesta va produce următoarele:
GPT3 știe că pepenii verzi sunt verzi la exterior și roz la interior, așa că redă un buton rotund cu o margine verde și un fundal roz.
GPT3 nu a fost antrenat să genereze cod, dar faptul că a văzut că poate face acest lucru i-a determinat pe cercetători să încerce să creeze un model care să se ocupe în mod explicit de scrierea de cod. În 2021, OpenAI, în colaborare cu Microsoft, a lansat GitHub Copilot, un plugin pentru IDE-urile VSCode și JetBrains care putea scrie cod.
Copilot analizează ce ai scris și încearcă să genereze cod în continuare. Dacă ați scris un nume de funcție, ar încerca să genereze codul pentru funcția respectivă. Dacă scriați câteva rânduri de comentarii, scria codul care făcea ceea ce spuneau comentariile. Un loc în care Copilot se descurcă excelent a fost scrierea de cod boilerplate.
Copilot a fost antrenat pe codul open source disponibil pe Github, așa că a văzut o mulțime de cod. Acest lucru ridică mai multe întrebări etice și morale. Oamenii au reușit să îl facă să reproducă exact codul din repository-uri cu licență GPL, inclusiv comentariile originale care conțineau înjurături.
Inițial, am fost sceptic în privința lui Copilot, întrebându-mă cum poate un computer să mă ajute să scriu cod. Dar după ce l-am folosit timp de câteva luni, pot spune că este foarte util și că îmi lipsește atunci când mă aflu în contexte în care nu-l pot folosi, cum ar fi în Jupyter Notebooks.
Până acum am vorbit despre modele lingvistice care procesează textul. Însă în ultimii doi ani, aceste modele au fost extinse, astfel încât să poată fi utilizate și pentru a lucra cu imagini.
Un mare succes este DALL-E2, tot de la OpenAI. Acest model ia o propoziție și generează o imagine din ea. Acesta a fost antrenat pe milioane de perechi de imagini și texte de pe internet și a învățat despre diferiți artiști, diferite stiluri pe care poate să le imite.
DALL-E2 dă dovadă de o mare "creativitate". Mai jos sunt două exemple de ceea ce poate reda, preluate de pe site-ul de lansare.
"An astronaut lounging in a tropical resort in space in vaporwave style"
"A bowl of soup that is a portal to another dimension drawn on a cave wall"
Calitatea acestor imagini este destul de bună. Cred că acest lucru va schimba modul în care este creată arta. Cu siguranță, site-urile de stock images vor trebui să își regândească modelele de afaceri. De ce s-ar duce cineva să caute o fotografie existentă pentru a o utiliza, când poți cere computerului să facă o imagine pentru tine, exact așa cum vrei tu să arate?
Din păcate, DALL-E2 este încă în versiune beta închisă, dar există o variantă open source, care este mai mică și nu are aceeași calitate, dar care poate fi folosită de oricine.
Textul este un mecanism de control foarte versatil. Există un motiv pentru care avem acea zicală care spune că "The pen is mightier than the sword". Prin cuvinte, oamenii au făcut lucruri mărețe în trecut și se pare că vor continua să facă acest lucru și în viitor, cu ajutorul computerelor. Poate că interfețele de text pentru modelele de control vor fi ascunse în spatele unor UI-uri frumoase, dar tot mai multe probleme par să poată fi rezolvate de modele lingvistice mari.
Nu trebuie să ne lăsăm înșelați de ele: nu sunt conștiente de ele însele, nu au planuri și voință proprie și nu am obținut încă Inteligența Generală Artificială. Dar aceste modele lingvistice sunt instrumente foarte puternice care pot fi valorificate pentru a obține rezultate prețioase.
de Ovidiu Mățan
de Ovidiu Mățan
de Ovidiu Mățan