course
Etichetarea datelor este costisitoare, lentă, specifică domeniului și majoritatea echipelor nu au suficientă.
Aveți întotdeauna nevoie de date etichetate pentru a antrena un model, dar etichetarea corectă necesită timp și adesea un expert în domeniu. De exemplu, imaginile medicale au nevoie de radiologi, iar documentele juridice de avocați. Chiar și sarcini simple precum analiza sentimentelor necesită pe cineva care să stea și să eticheteze manual fiecare exemplu. Drept urmare, majoritatea echipelor de ML ajung cu un set de date etichetate foarte mic și o cantitate uriașă de date neetichetate pe care nu le pot folosi.
Învățarea semi-supervizată rezolvă asta prin antrenarea pe ambele. Ia micul dumneavoastră set de date etichetate, îl combină cu cel mare, neetichetat, și lasă modelul să învețe tiparele.
În acest articol, voi explica cum funcționează învățarea semi-supervizată, voi acoperi cele mai frecvente tehnici și vă voi arăta când are sens să o folosiți.
Dar ce este exact învățarea automată supervizată? Citiți articolul nostru de blog pentru a afla cum funcționează algoritmii esențiali de învățare supervizată.
Ce este învățarea semi-supervizată?
Învățarea semi-supervizată este o abordare de învățare automată care antrenează pe un mix de date etichetate și neetichetate.
Așa cum sugerează numele, se află între învățarea supervizată și cea nesupervizată. Învățarea supervizată are nevoie ca fiecare eșantion să fie etichetat. Învățarea nesupervizată funcționează fără etichete. Învățarea semi-supervizată folosește un set mic de exemple etichetate alături de o colecție mai mare de exemple neetichetate.
Datele etichetate îi spun modelului ce să caute. Datele neetichetate îi arată modelului cum este structurată informația. Combinate, îi oferă modelului mai mult material decât ar putea oferi fiecare tip separat.
Cum funcționează învățarea semi-supervizată
Procesul începe cu un mic set de date etichetate — poate câteva sute de exemple pentru care cunoașteți rezultatul corect.
Apoi adăugați un set de date neetichetate mult mai mare. Acesta poate conține mii sau chiar milioane de eșantioane fără etichete. Modelul folosește aceste date neetichetate pentru a învăța tiparele de bază și relațiile dintre punctele de date.
Exemplele etichetate ghidează apoi acea structură către răspunsurile corecte. Modelul știe deja cum sunt organizate datele din eșantioanele neetichetate. Etichetele îi spun care regiuni ale acelei structuri corespund căror ieșiri.
Iată un exemplu rapid.
Să zicem că clasificați e-mailuri ca spam sau non-spam. Aveți 100 de e-mailuri etichetate și 10.000 neetichetate. Modelul învață mai întâi cum se grupează e-mailurile pe baza tiparelor de cuvinte și a structurii. Apoi folosește cele 100 de exemple etichetate ca să afle care grupuri sunt spam și care nu. Rezultatul este un model care performează mai bine decât dacă l-ați fi antrenat doar pe cele 100 de e-mailuri etichetate.
Învățare semi-supervizată vs. supervizată vs. nesupervizată
Să parcurgem fiecare abordare pentru a vedea unde se plasează învățarea semi-supervizată în raport cu celelalte două.
Învățarea supervizată
Învățarea supervizată se antrenează pe date complet etichetate. Fiecare eșantion din setul de date are o intrare și o ieșire cunoscută. Modelul învață corespondența dintre ele.
Funcționează bine când aveți suficiente exemple etichetate. Dar „suficient” poate însemna mii sau chiar milioane de eșantioane, în funcție de sarcină. Asta e costisitor de produs și uneori pur și simplu imposibil.
Învățarea nesupervizată
Învățarea nesupervizată nu folosește deloc etichete. Modelul se uită la date brute și găsește singur structuri. Exemple clasice sunt gruparea (clustering) și reducerea dimensionalității.
Partea bună e că nu aveți nevoie de date etichetate. Partea proastă e că modelul nu știe ce vă interesează de fapt. Găsește tipare, desigur, dar acele tipare s-ar putea să nu corespundă problemei pe care încercați să o rezolvați.
Învățarea semi-supervizată
Învățarea semi-supervizată combină ce e mai bun din ambele. Îi oferiți modelului un mic set de date etichetate pentru a defini sarcina și un set mare de date neetichetate pentru a învăța structura datelor.
Datele etichetate indică modelului direcția corectă. Datele neetichetate îi arată cum se leagă între ele diferitele eșantioane. Această combinație depășește adesea învățarea supervizată pe același set mic etichetat, deoarece modelul detectează tipare pe care le-ar fi ratat fără datele neetichetate.
Iată o scurtă comparație între aceste trei abordări:

Tabel de comparație al abordărilor de învățare automată
Rezumând, dacă etichetarea durează prea mult și aveți multe date neetichetate, merită să luați în considerare semi-supervizarea. În continuare vă arăt câteva tehnici comune.
Tehnici comune de învățare semi-supervizată
Există câteva modalități de a implementa învățarea semi-supervizată. Fiecare tehnică gestionează diferit împărțirea etichetat–neetichetat, așa că să trecem prin cele mai des întâlnite.
Auto-antrenarea (Self-training)
Aceasta este cea mai simplă abordare. Antrenați un model pe datele etichetate, apoi îl folosiți pentru a prezice etichete pentru eșantioanele neetichetate. Predicțiile cu cel mai mare grad de încredere sunt adăugate la setul etichetat ca pseudo-etichete, iar modelul este reantrenat pe setul extins.
Repetați procesul până când modelul nu se mai îmbunătățește sau rămâneți fără date neetichetate. Este ușor de implementat, dar dacă modelul face o predicție greșită devreme, acea eroare ajunge în setul de date.
Co-antrenarea (Co-training)
Co-antrenarea folosește două modele în loc de unul. Fiecare model este antrenat pe o „viziune” diferită a datelor. Gândiți-vă la asta ca la un subset diferit de caracteristici.
De exemplu, să zicem că clasificați pagini web. Un model ar putea analiza textul de pe pagină, în timp ce celălalt se uită la textele-ancoră ale linkurilor care duc către ea. Fiecare model etichetează eșantioane neetichetate pentru celălalt și se învață reciproc în mai multe runde.
Ideea este că punctele forte ale unui model acoperă punctele slabe ale celuilalt. Dacă ambele viziuni au suficiente informații pe cont propriu, co-antrenarea poate depăși auto-antrenarea, deoarece erorile unui model sunt corectate de celălalt.
Propagarea etichetelor
Această abordare construiește un graf în care fiecare punct de date este un nod, iar muchiile conectează puncte similare. Etichetele apoi „se răspândesc” de la nodurile etichetate către vecinii lor.
Presupunerea este că puncte de date similare ar trebui să aibă aceeași etichetă. Dacă un eșantion etichetat se află aproape de un grup de eșantioane neetichetate, acelea probabil aparțin aceleiași clase. Etichetele se propagă prin graf până când fiecare nod are una.
Funcționează bine când datele au o structură de clustere clară, dar poate eșua când granițele dintre clase sunt neclare.
Rețele neuronale semi-supervizate
Învățarea profundă are propriul set de tehnici semi-supervizate. Iată câteva dintre cele mai comune:
- Regularizarea consistenței: Împinge modelul să producă aceeași ieșire pentru o intrare chiar și după mici perturbări precum zgomotul sau augmentarea. Ideea este că un model bun nu ar trebui să-și schimbe predicția doar pentru că ați modificat ușor intrarea
- Pseudo-etichetarea în rețele neuronale: Funcționează ca auto-antrenarea, dar la nivel de batch. Modelul generează etichete pentru eșantioanele neetichetate în timpul antrenării și le folosește alături de etichetele reale în funcția de pierdere.
Metode precum FixMatch și MixMatch combină aceste idei și au arătat rezultate bune pe benchmarkuri cu foarte puține exemple etichetate.
De ce contează învățarea semi-supervizată
Ar trebui să vă pese de învățarea semi-supervizată dintr-un motiv: costul.
Etichetarea datelor necesită date, experți în domeniu, timp și bani. Învățarea semi-supervizată reduce costurile obținând mai mult din mai puține etichete.
Apoi, este vorba de performanță. Un model antrenat pe 500 de eșantioane etichetate și 50.000 neetichetate îl va depăși adesea pe același model antrenat doar pe cele 500 etichetate. Datele neetichetate oferă modelului o imagine mai completă a distribuției datelor, ceea ce duce la predicții mai bune.
Și apoi e realitatea majorității seturilor de date. Datele neetichetate sunt peste tot. Fiecare companie are jurnale, imagini, documente și înregistrări pe care nimeni nu are timp să le eticheteze. Învățarea semi-supervizată vă permite să faceți ceva util din acele date.
Aplicații ale învățării semi-supervizate
Învățarea semi-supervizată apare în domenii în care etichetele sunt greu de obținut.
Clasificarea imaginilor este unul dintre cele mai comune cazuri de utilizare. Etichetarea a mii de imagini este anevoioasă, dar colectarea de imagini neetichetate este ușoară. Metodele semi-supervizate vă permit să antrenați clasificatori preciși cu doar câteva sute de imagini etichetate.
Clasificarea textelor este la fel. Este posibil să aveți milioane de recenzii ale clienților sau tichete de suport, dar doar un lot mic cu etichete manuale. Învățarea semi-supervizată vă poate ajuta să construiți clasificatori care generalizează pe întregul set de date.
Recunoașterea vorbirii este un alt domeniu interesant. Transcrierea audio manual necesită mult efort, dar datele audio brute sunt din abundență. Înregistrările neetichetate ajută modelul să învețe tipare acustice, în timp ce mostrele transcrise îl învață corelațiile corecte.
Analiza datelor medicale este o sarcină excelentă specifică domeniului. Obținerea etichetării de la un medic pentru imagini sau dosare de pacienți este costisitoare și lentă, deoarece au alte priorități. Însă spitalele au cantități uriașe de date clinice neetichetate. Metodele semi-supervizate ajută la construirea de modele de diagnostic fără a avea nevoie de un set de date complet etichetat.
Avantajele învățării semi-supervizate
Iată ce face ca învățarea semi-supervizată să fie potrivită pentru multe proiecte:
- Necesită mai puține date etichetate: Puteți obține rezultate bune cu o fracțiune din etichetele pe care le-ar necesita o abordare complet supervizată
- Îmbunătățește generalizarea: Datele neetichetate expun modelul la o gamă mai largă de exemple, ceea ce îl ajută să performeze mai bine pe date nevăzute
- Este eficientă din punct de vedere al costurilor: Când etichetarea este costisitoare sau consumă timp — ceea ce de obicei se întâmplă — învățarea semi-supervizată economisește timp și buget valorificând la maximum ceea ce aveți deja
Așadar, dacă aveți mai multe date decât etichete, este momentul să luați în calcul învățarea semi-supervizată.
Limitările învățării semi-supervizate
Învățarea semi-supervizată are câteva compromisuri de care ar trebui să știți.
- Calitatea datelor neetichetate contează: Dacă datele neetichetate nu provin din aceeași distribuție ca datele etichetate, modelul învață tipare greșite
- Pseudo-etichete greșite: În metode precum auto-antrenarea, o predicție încrezătoare dar incorectă este tratată ca adevăr de bază. Modelul se antrenează pe acea etichetă proastă, ceea ce întărește greșeala și înrăutățește predicțiile viitoare
- Este mai complexă decât învățarea supervizată: Aveți mai mulți hiperparametri de ajustat, mai multe decizii de proiectare și mai multe lucruri care pot da greș. Un model supervizat este mai simplu de construit și explicat. Metodele semi-supervizate adaugă complexitate care nu merită întotdeauna — mai ales dacă setul de date etichetate este deja suficient de mare
Niciuna dintre acestea nu este un blocaj, doar ceva de știut înainte de a începe.
Învățarea semi-supervizată în practică (exemplu Python)
Să vedem învățarea semi-supervizată în acțiune cu un exemplu simplu în Python folosind algoritmul LabelSpreading din scikit-learn.
Voi crea un set de date, voi eticheta doar o mică parte din el și voi lăsa modelul să deducă restul.
Configurarea datelor
Mai întâi, voi genera un set de date și voi masca majoritatea etichetelor pentru a simula un scenariu semi-supervizat:
import numpy as np
from sklearn.datasets import make_moons
from sklearn.semi_supervised import LabelSpreading
from sklearn.metrics import accuracy_score
# Generate a dataset with 500 samples
X, y_true = make_moons(n_samples=500, noise=0.2, random_state=42)
# Keep only 10%, mask the rest as -1
rng = np.random.RandomState(42)
labeled_idx = rng.choice(500, size=50, replace=False)
y_train = np.full(500, -1) # -1 means unlabeled in scikit-learn
y_train[labeled_idx] = y_true[labeled_idx]
print(f"Labeled samples: {np.sum(y_train != -1)}")
print(f"Unlabeled samples: {np.sum(y_train == -1)}")

Numărul de eșantioane de date etichetate și neetichetate
În scikit-learn, -1 marchează un eșantion ca neetichetat. Din 500 de eșantioane, doar 50 au etichete. Modelul trebuie să deducă celelalte 450.
Antrenare și predicție
Acum voi antrena un model LabelSpreading și voi vedea cât de bine etichetează datele neetichetate:
model = LabelSpreading(kernel="knn", n_neighbors=7)
model.fit(X, y_train)
y_pred = model.transduction_
# Check accuracy on the originally unlabeled samples
unlabeled_mask = y_train == -1
accuracy = accuracy_score(y_true[unlabeled_mask], y_pred[unlabeled_mask])
print(f"Accuracy on unlabeled samples: {accuracy:.2%}")

Acuratețea pe eșantioanele neetichetate
Modelul a etichetat corect majoritatea eșantioanelor neetichetate folosind doar 10% din date ca exemple etichetate. Aceasta este ideea de bază.
Vizualizarea rezultatelor
Acuratețea este ridicată — aproape 96% — dar să inspectăm vizual care eșantioane au fost clasificate greșit:

Etichete reale și prezise
Etichetele prezise se potrivesc aproape perfect cu cele reale, chiar dacă modelul a văzut doar 50 de exemple etichetate din 500. Le puteți vedea pe cele clasificate greșit colorate cu roșu în graficul din dreapta.
Greșeli frecvente în învățarea semi-supervizată
Ați văzut cât de puternică poate fi învățarea semi-supervizată, dar nu este perfectă pentru orice scenariu. Iată cele mai frecvente greșeli și cum să le evitați.
- Presupunerea că datele neetichetate ajută întotdeauna: Nu ajută. Dacă datele neetichetate provin dintr-o distribuție diferită față de datele etichetate, modelul învață tipare care nu se aplică sarcinii reale. Verificați întotdeauna că datele etichetate și cele neetichetate provin din aceeași sursă și reprezintă aceeași problemă
- Inițializare slabă a modelului: Metodele semi-supervizate se bazează pe un model supervizat inițial. Dacă acel prim model este slab — antrenat pe prea puține eșantioane sau cu hiperparametri nepotriviți — fiecare pas ulterior moștenește acele probleme. Porniți de la cel mai bun reper supervizat pe care îl puteți obține înainte de a adăuga date neetichetate
- Supraîncredere în pseudo-etichete: Pseudo-etichetele sunt doar atât de bune pe cât este modelul care le-a generat. Dacă aveți încredere în fiecare pseudo-etichetă, erorile se pot cumula de-a lungul rundelor de antrenare. Stabiliți un prag ridicat de încredere și folosiți doar pseudo-etichetele de care modelul este sigur. Aruncați restul
- Ignorarea distribuției datelor: Metodele semi-supervizate presupun că structura datelor neetichetate vă spune ceva util despre etichete. Dacă datele nu au clustere clare sau frontiere de decizie netede, acea presupunere nu va ține
Pentru a evita aceste patru greșeli, începeți cu un reper supervizat solid, adăugați treptat date neetichetate și verificați că performanța chiar se îmbunătățește la fiecare pas.
Când să folosiți învățarea semi-supervizată
Învățarea semi-supervizată are sens în aceste trei scenarii:
- Când datele etichetate sunt limitate: Dacă aveți doar un mic set de date etichetate și obținerea mai multor etichete este costisitoare sau lentă, învățarea semi-supervizată vă ajută să stoarceți încă puțin din acuratețe
- Când datele neetichetate sunt din abundență: Aveți nevoie de o cantitate mare de date neetichetate pentru ca acest lucru să funcționeze. Dacă aveți doar un set mic neetichetat, modelul nu va învăța suficientă structură pentru a face diferența. Cu cât este mai mare decalajul între dimensiunea seturilor etichetat și neetichetat, cu atât metodele semi-supervizate pot ajuta mai mult
- Când datele au o structură clară: Învățarea semi-supervizată funcționează cel mai bine când punctele de date similare împărtășesc aceeași etichetă. Dacă datele formează clustere sau au frontiere netede între clase, datele neetichetate vor evidenția și mai mult acele tipare. Dacă clasele sunt amestecate fără separare clară, datele neetichetate nu vor adăuga mare lucru.
Dacă toate cele trei condiții se aplică, merită încercată învățarea semi-supervizată.
Concluzie
Pe înțelesul tuturor, învățarea semi-supervizată vă oferă o modalitate de a antrena modele mai bune fără a eticheta totul. Luați un mic set de date etichetate, îl combinați cu unul mare neetichetat și lăsați modelul să învețe din ambele.
Beneficiile sunt clare: mai puțin timp pentru etichetare, timp mai scurt până la lansare, costuri mai mici și performanțe mai bune decât antrenarea doar pe puține etichete. Iar în domenii precum medicina, juridic și NLP — unde etichetarea necesită experți — acest lucru contează mult.
Dacă aveți o cantitate uriașă de date neetichetate, încercați învățarea semi-supervizată. Începeți cu un reper supervizat bun, alegeți o tehnică ce se potrivește structurii datelor și măsurați dacă datele neetichetate chiar ajută. LabelSpreading din scikit-learn este un prim experiment bun, dar testați și metode precum FixMatch și MixMatch.
Dacă doriți să fiți pregătit pentru un job în 2026, urmați parcursul Machine Learning Engineer. Acoperă totul, de la fundamente la MLOps.
Întrebări frecvente
Ce este învățarea semi-supervizată?
Învățarea semi-supervizată este o abordare de învățare automată care antrenează modele pe un set mic de date etichetate și un set mare de date neetichetate. Datele etichetate îi spun modelului ce să caute, în timp ce datele neetichetate îl ajută să înțeleagă structura generală a datelor. Astfel, obțineți rezultate mai bune decât antrenarea doar pe datele etichetate.
În ce este diferită învățarea semi-supervizată de cea supervizată și nesupervizată?
Învățarea supervizată folosește doar date etichetate, unde fiecare eșantion are o ieșire cunoscută. Învățarea nesupervizată folosește doar date neetichetate și găsește singură tipare. Învățarea semi-supervizată folosește un mic set de date etichetate pentru a defini sarcina și un set mare de date neetichetate pentru a învăța structura datelor.
Când ar trebui să folosesc învățarea semi-supervizată?
Folosiți-o când aveți o cantitate mică de date etichetate, o cantitate mare de date neetichetate și datele au o structură clară, precum clustere naturale sau frontiere netede între clase. Dacă etichetarea este costisitoare sau necesită experți în domeniu — ca în imagistica medicală sau analiza de texte juridice — învățarea semi-supervizată vă ajută să construiți modele precise fără a eticheta totul.
Ce este auto-antrenarea în învățarea semi-supervizată?
Auto-antrenarea este o tehnică în care modelul se antrenează mai întâi pe datele etichetate, apoi prezice etichete pentru eșantioanele neetichetate. Predicțiile cu încredere ridicată sunt adăugate la setul etichetat ca pseudo-etichete, iar modelul se reantrenează pe setul extins. Riscul este ca predicțiile greșite de la început să fie întărite în rundele ulterioare, deci ar trebui să setați un prag de încredere ridicat.