Documente Academic
Documente Profesional
Documente Cultură
Obiectivele lecției:
1. Vei afla cum exact sunt aplicați algoritmii de învățare aprofundată pentru a
face ca calculatoarele să înțeleagă limbajul uman
2. Vei cunoaște cum să utilizezi învățarea prin transfer pentru a crea rețele
neuronale specializate anume pe problema ta
3. Vei afla în profunzime ce algoritmi și metode stau la baza procesării
limbajului natural, și ce a stat la baza acestui domeniu
Definirea problemei
La fel ca și cu vederea artificială, înțelegerea scrisului, colocvial sau nu,
necesită o definire clară a problemei, de altfel ne-am pierde în dezbateri despre
progresul pe care îl facem și în general în ce direcție trebuie să o luăm în
domeniul dat. Și iarăși, ca în cazul vederii artificiale, avem câteva probleme, de
complexitate diferită, ce în ansamblu sumarizează capacitățile pe care le dorim de
la algoritmi.
Cea mai simplă problemă este clasificarea. Cred că nu e nevoie să explic
ce este asta. Totuși există câteva aspecte specifice pentru problema de
clasificare în cazul procesării limbajului natural, apropo, așa se numește
subdomeniul inteligenței artificiale preocupate de a face mașinile să înțeleagă
textul și vorbirea scrisă. În primul rând, clasificarea poate fi a propozițiilor, sau
poate a unor texte întregi, de obicei asta se numește clasificarea secvențelor. Un
exemplu clasic de clasificare a secvențelor este un filtru de spam în email, sau
determinarea sentimentului textului (pozitiv sau negativ).
Mai există și posibilitatea de a clasifica fiecare cuvânt în parte.
Imaginează-ți că există algoritmi care sunt capabili de a face analiza morfologică,
sau chiar sintactică a unei fraze. Din păcate pentru tine, și din fericire pentru
profesorii de limbă română, asemenea algoritmi nu prea lucrează cu limba
română, deși e doar o chestie de date. Deci, ca exemple de clasificare ce
lucrează la nivel de cuvinte în parte, pe lângă analiza sintactică și morfologică,
mai avem și recunoașterea entităților, mai exact, a numelor proprii, și specificarea
ce sunt ele. Un astfel de algoritm ar fi capabil de a ne spune că în propoziția
“Marin lucrează de ceva timp la Facebook în Menlo Park, San Francisco” Marin
este persoană, Facebook - nume de companie sau organizație, Menlo Park și
San Francisco - locații geografice. Extragerea acestor entități este deseori
crucială pentru companii ce de exemplu, lucrează cu documente legale, sau
prestează servicii de reclamă, sau motoare de căutare.
După clasificare, o altă problemă des întâlnită este generarea de text, sau
modelarea limbajului. Cel mai simplu exemplu - autocorecția din telefonul tău,
sau dacă ai scris vreodată un email via Gmail, poate ai observat că acesta uneori
îți poate sugera ce să scrii mai departe.
Încă o problemă de importanță majoră este traducerea. Dacă nu știai până
acum, Google utilizează o rețea neuronală imensă pentru Google Translate. Mai
mult de atât, ei utilizează o singură rețea pentru toate limbile! Fascinant, tu ce
spui? Și ca să menținem acest vibe, mai departe în cadrul lecției date o să-ți
explic mai detaliat care este algoritmul utilizat.
Dacă crezi că traducerea este o problemă complicată, ce spui despre
capacitatea unui algoritm de a răspunde la întrebări, nu chiar ca la “Ce? Unde?
Când?”, mai mult ca la grădiniță, dar oricum. De fapt, la moment mulți cercetători
se focuseaza anume pe această problemă ca să identifice capacitatea algoritmilor
de a înțelege cu adevărat limbajul natural, nu doar de a găsi legități statistice.
Mai există și alte probleme, la fel foarte complicate, dar care țin deja de
lingvistică. Spre exemplu așa numita rezolvare a referințelor. ‘Maria a lăsat pe
masă cana. Ea era murdară.“ La cine se referă “ea”? Sperăm că nu la Maria, așa
că mult probabil cana era murdară. Un asemenea exemplu e complicat pentru o
persoană cu inteligență naturală, imaginează-ți cât de greu le vine calculatoarelor.
Algoritmi și reprezentări
Acum că înțelegi spectrul de probleme care sunt utilizate pentru a evalua
capacitățile algoritmilor moderni, e timpul să ne aprofundăm în cum funcționează
și care sunt acești algoritmi.
În primul rând, trebuie să înțelegi că marea majoritate a algoritmilor de
învățare automată sau aprofundată nu pot lucra cu textul în mod direct. Aceștia
necesită cifre, din motiv că în interior au loc adunări, înmulțiri, și tot felul de alte
operații. Cum ai putea să înmulțești “Crăciun” cu “fericit”? Pe cât de straniu nu ar
suna, dar răspunsul nu este “nicicum”, ci mai degrabă “dar care este
reprezentarea numerică a acestor cuvinte”.
Pe parcursul deceniilor au fost propuse mai multe scheme de codare a
cuvintelor în formă numerică, astfel spre exemplu pot fi utilizați vectori rari (cu
multe zerouri) sub formă de numere de repetări per cuvânt per document.
Spre exemplu, pentru documentele:
1. Hai la mare
2. Vasile e băiat mare
3. Hai și-om sărbători ziua lui Vasile
O să avem tabelul:
Hai la mare Vasile e băiat și-om sărbători ziua lui
D1 1 1 1 0 0 0 0 0 0 0
D2 0 0 1 1 1 1 0 0 0 0
D3 1 0 0 1 0 0 1 1 1 1
Probleme curente
Printre principalele probleme în domeniul procesării limbajului natural
putem menționa faptul că toate soluțiile bazate pe învățare automată, începând
cu tehnici precum Naive Bayes și până la mastodonți de genul arhitecturilor
Transformer, este faptul că aceste modele nu înțeleg ce învață, acestea doar
încearcă să memoreze și să generalizeze șabloane observate în volume mari de
text, din acest motiv nu putem spune ca acești algoritmi “înțeleg” limbajul natural,
chiar dacă pentru unele probleme se pare că ar înțelege ceva. Această problemă
este ușor observabilă în problemele de tip Q&A mai complicate și când vine vorba
despre decodarea referințelor în text (vezi exemplul cu Maria de mai sus).
O problema corelată cu aceasta este lipsa unor seturi de date ce ar
permite evaluarea adecvată a algoritmilor de învățare automată pe probleme de
text. Pe deoparte aceasta este din cauza că dezvoltarea unor astfel de seturi de
date este un proces extrem de complicat, fiind necesar de luat în considerație
diferite aspecte ale unui set de date, precum minimizarea discrepanțelor dintre
clasele majoritare și minoritare, prezenta unui număr mare de clase, minimizarea
similaritatilor dintre clase, reprezentarea egală a diferitor clase minoritare din
lumea reala in setul de date, dar și multe alte probleme. Printre care și o
problema trivială de volum mare de date calitative. În condițiile curente avem
seturi de date și respectiv probleme relativ complicate, dar cu mici deficiențe,
cazuri speciale, pe care algoritmii noștri foarte capabili învață să le exploateze,
astfel având rezultate impunătoare ce nu mereu se mapează pe rezultate
superioare în lumea reală.
Epilog
Acum că ai făcut cunoștința cu cele mai recente realizări, dar și probleme,
din domeniul inteligenței artificiale în asemenea domenii importante ca vederea
computațională și procesarea limbajului natural, e timpul să ne aprofundăm în
mecanismele și principiile ce stau la baza tuturor algoritmilor descriși până acum.
Exerciții
Test