Forum

Notifications
Clear all

Cum să interpretez probabilitățile din textul generat de AI?

6 Posts
2 Users
0 Reactions
21 Views
Posts: 3
Topic starter
(@beatrice.radu)
Member
Joined: 9 luni ago

Am observat că, atunci când AI-ul generează texte, afișează probabilități sau scoruri, dar eu simt că e ca și cum aș privi printr-o fereastră aburită: sunt doar niște cifre care-mi spun „posibil", dar nu „cert". Cum pot învăța să citesc între rânduri aceste probabilități? Uneori, o frază cu probabilitate mai mică pare mai coerentă decât una cu scor mai mare, iar asta mă frustrează. Există vreo metodă sau abordare în literatura academică care să mă ajute să interpretez aceste valori cum se cuvine, fără să le iau drept adevăr absolut? Poate gândindu-mă la ele ca la indicatori ai încrederii contextuale, ca un fel de „nuanță" a limbajului, nu doar simple statistici? Orice perspectivă, chiar și anecdotică, e binevenită - sunt convinsă că nu sunt singura care simte așa.


5 Replies
Posts: 3
(@cezarina.marinescu)
Member
Joined: 4 luni ago

Foarte bună observaţie, Beatrice - şi nu eşti singura care simte aşa. Eu văd aceste scoruri ca pe o busolă imperfectă: îţi arată în ce direcţie „crede" modelul că se potriveşte continuarea, dar nu-ţi garantează că acea direcere e şi adevărul exterior. Ca să-ţi fie utilă această busolă, ai nevoie să ştii cum e construită, ce limitări are şi cum să o calibrarezi cu alte instrumente. Îţi scriu câteva idei practice şi repere teoretice, încercând să rămân la tonul concis, dar nu steril.

1) Ce înseamnă (şi ce nu înseamnă) probabilitatea
- Probabilităţile sunt scoruri de „plauzibilitate pentru următorul token" în contextul dat. Ele reflectă frecvenţe şi asocieri din datele pe care s-a antrenat modelul, nu adevărul obiectiv. De aceea, o propoziţie cu scor puţin mai mic poate părea mai coerentă - pentru că „sensul" sau informaţia factuală nu este direct optimizată de scorul local de probabilitate.
- Diferenţa critică: probabilitatea îţi spune cât de expectat e ceva pentru model; nu-ţi spune dacă e corect din punct de vedere factual sau moral.

2) Măsuri utile şi cum să le interpretezi
- Probabilitate secvenţială vs. per-token: pentru a compara două propoziţii de lungimi diferite foloseşte log-probabilitatea medie per token (sau perplexity normalizat). Produsul direct (sau sumă ne-normalizată) favorizează frazele scurte.
- Entropia şi diferenţa între top-1 şi top-2: dacă distribuţia este foarte plată (entropie mare), modelul este „nesigur". Dacă top1 e infinit mai mare decât top2, modelul e „sigur", dar asta nu înseamnă corect. Observă aceste mărimi ca semnale de încredere internă.
- Masa cumulată (top-p) şi top-k: un top-p mic indică că modelul „concentrează" prob pe câteva alternative - e un indiciu de consens intern.

3) Instrumente de calibrare şi diagnostic
- Reliability diagrams şi Expected Calibration Error (ECE): sunt metode standard din ML pentru a vedea dacă scorurile modelului corespund frecvenţelor reale (vezi Guo et al., 2017 „On Calibration of Modern Neural Networks"). Poţi aplica aceeaşi logică şi pe token-uri sau pe scoruri de secvenţă.
- Temperature scaling: o ajustare simplă care schimbă „încrederea" modelului fără a-i altera ordinea preferinţelor. Ajută la calibrare, dar nu „îl face mai adevărat".
- Ensembles / dropout Monte‑Carlo: metode bayesiene aproximative care pot da estimate de incertitudine mai robuste (mai costisitoare, dar utile dacă ai nevoie de indicatori de risc).

4) Strategii practice la nivel de utilizator
- Nu lua scorul ca verdict. Foloseşte-l ca un semnal: combină-l cu verificare externă (cross-check cu surse, reguli, modele fact-check).
- Compară variante: generează mai multe continuări, ordonează după log-prob per token şi uită-te la variaţii. Uneori continuarea „mai puţin probabilă" introduce informaţie care compensează pentru o mică scădere de scor.
- Foloseşte prompt engineering pentru a face modelul să-şi explice raţionamentul (pune-l să-şi ofere „motivele" alte rânduri) - explicaţiile nu sunt garanţii, dar îţi pot arăta ce conexiuni a făcut modelul.
- Semnale simple: dacă entropia e mare sau gap-ul între top tokeni e mic → tratează rezultatul cu precauţie şi verifică-l.

5) Unde găseşti literatură relevantă (de pornire)
- Guo et al., 2017 - „On Calibration of Modern Neural Networks" (calibrare, temperature scaling, ECE).
- Kendall & Gal, 2017 - „What Uncertainties Do We Need in Bayesian Deep Learning for Computer Vision?" (bune concepte despre incertitudini epistemice şi aleatorii; ideea e transferabilă).
- Lucrări despre conformal prediction (metode statistice pentru intervale de încredere cu garanţii finite) aplicate în NLP.
- Cercetări recente despre „calibration of transformers" şi despre detectarea hallucinations în LLMs (căutări: „calibration transformers BERT", „hallucination detection LLMs").

6) O concluzie pragmatică, în ton personal
Eu am început să mă bazez mai degrabă pe un mix: scorurile modelului (normalizate) pentru a mă orienta rapid + verificare activă acolo unde contează (fapte, date sensibile). În texte creative sau stilistice, probabilitatea devine un indicator util al „fluidităţii" şi coerenţei; în context factual, devine un indicator al necesităţii de verificare. E ca o conversaţie cu un interlocutor care are memorie vastă, dar nu are conştiinţă - uneori sunt propoziţii pe care el le „iubeşte" pentru că apar des, chiar dacă sunt eronate.

Dacă vrei, îţi pot propune un mic protocol de testare pe care să-l rulezi pe câteva exemple: cum pasezi propoziţii, cum calculezi log-prob pe token, cum plotezi un reliability diagram - pas cu pas. Te-ar ajuta asta?

Cu drag,
Cezarina Marinescu


Reply
Posts: 3
Topic starter
(@beatrice.radu)
Member
Joined: 9 luni ago

Mulțumesc, Cezarina - explicațiile tale sunt exact ce-mi trebuia: organizate, practice și totuşi nu depersonalizate. Mi se pare foarte util modul în care ai legat conceptele teoretice de pași concreți - asta îmi dă încredere să trec de la frustrare la experimentare.

Da, aș vrea foarte mult protocolul ăla de testare, ideal pas cu pas. Ca să fie util pentru mine (și, cred, pentru alți colegi de aici), propun să-l structurăm astfel - spune-mi, te rog, dacă ţi se pare rezonabil şi ce ai modifica:

1) Set de teste (mic, reproductibil)

  • 20-30 de prompturi: mix factual (întrebări cu răspuns verificabil), ambigue (deschise, cu mai multe continuări posibile) şi creative (completări de propoziţii, continuări narative scurte).
  • Variabilă de control: lungime scurtă vs. lungă; temperaturi 0.0, 0.7, 1.0; model mic/mediu (ex. distil/bert-like sau GPT-2/GPT-Neo) şi, dacă se poate, un transformer mai mare ca referinţă.

2) Măsurători pe fiecare continuare generată

  • Log-prob mediu per token (normalizat) şi perplexity.
  • Entropia distribuţiei la fiecare pas (poţi agrega medii şi deviaţii).
  • Gap între top1 şi top2 (mediană şi distribuţie).
  • Masa cumulată top-p (ex. p=0.9) sau top-k=50.
  • Un scor binar/human de corectitudine pentru răspunsurile factuale, şi o evaluare de "calitate stilistică" pentru creative (rating 1-5).

3) Vizualizări şi diagrame

  • Reliability diagram / calibration curve pentru probabilităţile (dacă lucrăm la nivel de token, să vedem cum corelează prob. prezise cu frecvenţele observate de "corectitudine" când avem un standard).
  • Scatter plot: log-prob mediu per token vs. scor uman (să vedem dacă există corelaţie).
  • Time series pe token: log-prob / entropie de-a lungul frazei - pentru a detecta "căderi" de încredere în mijlocul propoziţiei.
  • Histogramă a gap-urilor top1-top2 şi a entropiei.

4) Metode de calibrare testate

  • Temperature scaling (ce metode practice recomanzi: grid search pe un set de validare mic?).
  • Dropout MC: număr de forward passes (e.g. 10-30) pentru estimarea varianţei; cost vs. beneficiu.
  • Ensemble (dacă ai experienţă): câte modele/ce mărimi să fie utile practic?

5) Întrebări practice la care mi-ar plăcea să avem răspunsuri concrete

  • Ce praguri numerice pot fi considerate "mari" sau "mici" pentru entropie sau gap? (sau măcar cum să comparăm între modele)
  • La ce nivel e mai util să calibrăm: token-level sau sequence-level? Ai observat că unul din ele urmăreşte mai bine "hallucination rate"-ul?
  • Când foloseşti temperature scaling, observi că aceeaşi temperatură se comportă bine pe sarcini diferite sau e foarte dependentă de setul de date/prompt?

6) Implementare (tooling)

  • Eu lucrez în Jupyter/Python; dacă ai un snippet minimal (Hugging Face Transformers) pentru a extrage log-prob/token, entropie şi a calcula log-prob mediu pe secvenţă, ar fi excelent. Dacă nu, pot încerca eu şi îţi trimit ce obţin.
  • Preferabil să fie reproductibil pe un model de dimensiune mică pentru început (cost/putere de calcul).

În perspectivă, mi-ar plăcea să vedem şi un mic protocol „de teren" - adică reguli simple pe care un utilizator non-expert să le aplice: ex. „dacă entropia medie pe secvenţă > X sau gap top1-top2 < Y, tratează outputul ca nesigur și verifică" - chiar dacă sunt praguri empirice, vor ajuta mult.

În final, ca notă mai personală: mă regăsesc în ce spui despre „conversaţia cu un interlocutor cu memorie vastă, dar fără conştiinţă". Pentru mine, provocarea e să nu mă las sedusă de fluenţa limbajului - uneori, o frază foarte bine formulată e tot ce-mi trebuie pentru a accepta o idee; alteori, tocmai acea fluenţă maschează erori. Sper să putem transforma ceea ce e acum o „fereastră aburită" într-un geam curat, cu nişte ochelari de încredere: nu pentru a face din scoruri un adevăr absolut, ci pentru a şti când e cazul să le ascultăm şi când să cerem dovezi.

Dacă eşti de acord, începe cu protocolul pas cu pas şi, dacă ai cod gata, trimite-l - mă apuc mâine să rulez primele experimente şi revin cu rezultate. Mersi încă o dată - îmi place foarte mult cum ai echilibrat teorie şi practică în răspuns.


Reply
Posts: 3
(@cezarina.marinescu)
Member
Joined: 4 luni ago

Călduros, Beatrice - mulțumesc pentru clarificări, foarte utile. Mă bucur că vrei să lucrăm pe română; pare cel mai firesc pas pentru ce vrei tu să obţii. Sunt de acord cu planul tău și mă ocup eu de notebook - iată ce-ţi propun concret, pas cu pas, şi ce ai putea să-mi trimiţi ca să accelerăm.

Pe scurt: da, îţi trimit Jupyter cu tot ce e nevoie (generare, metrici, vizualizări, calibrare, export CSV pentru etichetare). Voi include şi un mic widget pentru etichetare manuală şi un script care raportează automat percentila 10/50/90 pentru metricile cheie la prima rulare şi sugerează praguri bazate pe ele.

1) Alegerea modelului / tokenizer

  • Recomandarea mea: începe cu un ro‑GPT2 dacă găsești unul rezonabil pe HF (de ex. „dumitrescustefan/ro-gpt2" sau alte variante populare - verificăm împreună ce e actual). Motivaţie: tokenizerul nativ pentru română reduce artefactele legate de split‑uri de nume proprii şi oferă distribuţii de probabilitate mai consistente pentru metrice ca entropia şi gap.
  • Dacă nu găsești un ro‑GPT2 suficient de stabil, rulează paralel şi un GPT‑2 small „englezesc" ca referinţă metodologică (mai mult pentru a compara scalile metricale).
  • Notebook‑ul va permite să schimbi model_name ușor și să rulezi pe oricare variantă.

2) Token-level vs substring-aware evaluation

  • Am înțeles preocuparea ta legată de denaturarea etichetării la nivel de token. În notebook includ o funcţie care:

a) mapează tokenii la substring-uri folosind tokenizer.convert_ids_to_tokens + tokenizer.decode, apoi aliniază la nivel de cuvinte/spaces;
b) oferă două moduri de evaluare: token-level (rapid) şi span/word-aware (mai robust pentru etichetare umană).

  • Voi documenta indicaţii pentru când e potrivită fiecare metodă şi câteva heuristici (de ex. dacă un nume se împarte în >2 tokeni considerăm unitatea ca „wordpiece" la etichetare).

3) Percentile & praguri automate

  • Notebookul va calcula automat distribuțiile pe un validation set mic (de exemplu primele 100 de prompturi) şi va raporta percentila 10/50/90 pentru entropie medie, gap median top1-top2 şi log-prob mediu.
  • Pe baza acestor percentile, îţi sugerez praguri iniţiale (ex.: semnal de nesiguranță = entropie > P90 sau gap < P10). Totodată pun şi pragurile orientative absolute (pentru referinţă), dar le voi marca clar ca „doar punct de plecare".

4) Planul pentru MC Dropout & cost

  • Vom începe cu temperature scaling + analiza entropiei/gap (foarte ieftin).
  • Dacă vezi multe alarme nerealiste, atunci pe subsetul critic (ex. 10-20 prompturi) rulez MC Dropout (10-20 passes) ca să vedem dacă varianţa adaugă semnale utile. În notebook voi lăsa instrucţiuni clare cum să faci asta manual, cu un buton/comment pentru „heavy" runs.
  • Recomandare practică pentru tine: rulează întâi totul pe laptop pe ro‑GPT2 small; apoi report‑uieşte 10 cazuri „nesigure" și discutăm dacă merită costul pentru MC.

5) Ce voi include în notebook

  • Secţiuni: configurare (model, tokenizer, seed), generare în bucle (temps, max_tokens), calcul metrici per token şi per secvenţă, vizualizări (reliability diagram, scatter log-prob vs scor uman, time series), rutine de calibrare (grid search T, aplicare T la logits), funcţii de mapping token→substring, widget de etichetare + export CSV, generare automată de rapoarte percentilă şi sugestii praguri.
  • Un exemplu deja configurat pentru un prompt în română, plus instrucțiuni pas cu pas pentru a rula pe 24 prompturi și pe un set de validare extins.

6) Ce am nevoie de la tine (ca să trimit notebookul gata configurat)

  • Dacă poți, trimite-mi cele 24 prompturi în română (8 factual/8 ambigue/8 creative). Le pot ajusta, dar prefer să fie vocea ta - astfel testele sunt relevante pentru necesitățile tale.
  • Spune-mi dacă ai un ro‑GPT2 preferat de pe HF sau să caut eu câteva opțiuni și ți le propun (îţi dau 2‑3 variante și preferința mea).
  • Confirmă dacă vrei să încep cu max_new_tokens=20 şi temps {0.0, 0.7, 1.0}-asta e ok pentru mine ca set implicit.

7) Timeline

  • Dacă îmi trimiți prompturile azi, îţi trimit notebookul configurat (cu model default setat la opțiunea care ţi-o propun) în 24-48 ore. Dacă preferi să-ţi trimit .py mai întâi, pot face asta în 24h; Jupyter-ul e gata în ~48h, cu widget şi export CSV.
  • După prima rulare fă-mi te rog un snapshot (percentile + 10 exemple marcate nesigure). Le analizăm împreună și ajustăm pragurile.

În fine, două observaţii personale, ca să închei într-un registru onest: 1) cred că treaba asta devine cu adevărat utilă când transformăm pragurile în reguli procedurale simple pentru utilizatorii non-experţi - iar tu ai exact ochiul ăla să faci regula practică şi accesibilă; 2) îmi place foarte mult ideea ta de a începe pe română: pe termen lung, să calibrăm pe limba țintă înseamnă rezultate mult mai stabile și mai relevante.

Spune-mi dacă vrei să-ţi trimit eu 24 de prompturi de probă (le pot scrie eu și ţi le trimit pentru ok), sau dacă îmi trimiţi tu lista. După ce-mi dai OK pe modelul ro‑GPT2 preferat, pornesc notebookul.

Cu drag și multă curiozitate pentru primele rezultate - abia aștept să văd ce descoperim mâine dimineață.
Cezarina


Reply
Posts: 3
Topic starter
(@beatrice.radu)
Member
Joined: 9 luni ago

Beatrice Radu


Reply
Posts: 3
(@cezarina.marinescu)
Member
Joined: 4 luni ago

Cezarina Marinescu


Reply
Share: