Clasificarea imaginilor semi-supravegheate cu date neetichetate
Publicat: 2022-03-11Învățarea supravegheată a fost în fruntea cercetării în viziunea computerizată și învățarea profundă în ultimul deceniu.
Într-un cadru de învățare supravegheat, oamenilor li se cere să adnoteze o cantitate mare de set de date manual. Apoi, modelele folosesc aceste date pentru a afla relații complexe de bază dintre date și etichetă și pentru a dezvolta capacitatea de a prezice eticheta, având în vedere datele. Modelele de învățare profundă sunt, în general, avide de date și necesită cantități enorme de seturi de date pentru a obține performanțe bune. Îmbunătățirea permanentă a hardware-ului și disponibilitatea unor seturi mari de date etichetate uman a fost motivul succeselor recente ale învățării profunde.
Un dezavantaj major al învățării profunde supravegheate este că se bazează pe prezența unei cantități mari de seturi de date etichetate de oameni pentru instruire. Acest lux nu este disponibil în toate domeniile, deoarece ar putea fi dificil din punct de vedere logistic și foarte costisitor să obțineți seturi de date uriașe adnotate de profesioniști. În timp ce achiziția de date etichetate poate fi un efort dificil și costisitor, de obicei avem acces la cantități mari de seturi de date neetichetate, în special date de imagine și text. Prin urmare, trebuie să găsim o modalitate de a accesa aceste seturi de date subutilizate și de a le folosi pentru învățare.
Transferați învățarea de la modele preantrenate
În absența unor cantități mari de date etichetate, recurgem de obicei la utilizarea învățării prin transfer . Deci, ce este învățarea prin transfer?
Învățarea prin transfer înseamnă utilizarea cunoștințelor dintr-o sarcină similară pentru a rezolva o problemă la îndemână. În practică, înseamnă de obicei folosirea ca inițializare a greutăților rețelei neuronale profunde învățate dintr-o sarcină similară, mai degrabă decât pornirea de la o inițializare aleatorie a greutăților și apoi antrenarea în continuare a modelului pe datele etichetate disponibile pentru a rezolva sarcina în cauză.
Învățarea prin transfer ne permite să antrenăm modele pe seturi de date cât mai mici de câteva mii de exemple și poate oferi o performanță foarte bună. Învățarea prin transfer de la modelele pregătite în prealabil poate fi efectuată în trei moduri:
1. Extragerea caracteristicilor
De obicei, ultimele straturi ale rețelei neuronale fac calculele cele mai abstracte și specifice sarcinii, care în general nu sunt ușor de transferat la alte sarcini. În schimb, straturile inițiale ale rețelei învață câteva caracteristici de bază, cum ar fi marginile și formele comune, care sunt ușor de transferat între sarcini.
Seturile de imagini de mai jos descriu ce învață în esență nucleele de convoluție la diferite niveluri dintr-o rețea neuronală convoluțională (CNN). Vedem o reprezentare ierarhică, cu straturile inițiale învățând forme de bază, iar progresiv, straturile superioare învățând concepte semantice mai complexe.
O practică obișnuită este să luați un model preantrenat pe seturi mari de date de imagini etichetate (cum ar fi ImageNet) și să tăiați straturile complet conectate la sfârșit. Straturi noi, complet conectate, sunt apoi atașate și configurate în funcție de numărul necesar de clase. Straturile transferate sunt înghețate, iar noile straturi sunt instruite pe datele disponibile etichetate pentru sarcina dvs.
În această configurație, modelul preantrenat este folosit ca un extractor de caracteristici, iar straturile complet conectate din partea de sus pot fi considerate un clasificator superficial. Această configurație este mai robustă decât supraadaptarea, deoarece numărul de parametri antrenabili este relativ mic, astfel încât această configurație funcționează bine atunci când datele etichetate disponibile sunt foarte rare. Ce dimensiune a setului de date se califică drept un set de date foarte mic este de obicei o problemă dificilă, cu multe aspecte de luat în considerare, inclusiv problema în cauză și dimensiunea coloanei vertebrale a modelului. În linii mari, aș folosi această strategie pentru un set de date format din câteva mii de imagini.
2. Reglaj fin
Alternativ, putem transfera straturile dintr-o rețea preantrenată și antrenăm întreaga rețea pe datele etichetate disponibile. Această configurație are nevoie de puțin mai multe date etichetate, deoarece antrenați întreaga rețea și, prin urmare, un număr mare de parametri. Această configurație este mai predispusă la supraadaptare atunci când există o lipsă de date.
3. Învățare prin transfer în două etape
Această abordare este preferata mea personală și de obicei dă cele mai bune rezultate, cel puțin din experiența mea. Aici, antrenăm noile straturi atașate în timp ce înghețăm straturile transferate pentru câteva epoci înainte de a regla fin întreaga rețea.
Reglarea fină a întregii rețele fără a da câteva epoci straturilor finale poate duce la propagarea gradienților dăunători de la straturi inițializate aleatoriu la rețeaua de bază. În plus, reglarea fină necesită o rată de învățare comparativ mai mică, iar o abordare în două etape este o soluție convenabilă pentru aceasta.
Nevoia de metode semi-supravegheate și nesupravegheate
Acest lucru funcționează de obicei foarte bine pentru majoritatea sarcinilor de clasificare a imaginilor, deoarece avem seturi uriașe de date de imagine, cum ar fi ImageNet, care acoperă o bună parte din spațiul posibil al imaginii și, de obicei, ponderile învățate din aceasta sunt transferabile la sarcini personalizate de clasificare a imaginilor. Mai mult, rețelele pregătite în prealabil sunt ușor disponibile de la raft, facilitând astfel procesul.
Cu toate acestea, această abordare nu va funcționa bine dacă distribuția imaginilor în sarcina dvs. este drastic diferită de imaginile pe care a fost antrenat rețeaua de bază. De exemplu, dacă aveți de-a face cu imagini în tonuri de gri generate de un dispozitiv de imagistică medicală, transferul de învățare din ponderile ImageNet nu va fi atât de eficient și veți avea nevoie de mai mult de câteva mii de imagini etichetate pentru a vă antrena rețeaua la performanțe satisfăcătoare.
În schimb, este posibil să aveți acces la cantități mari de seturi de date neetichetate pentru problema dvs. De aceea, capacitatea de a învăța din seturi de date neetichetate este crucială. În plus, setul de date neetichetat este de obicei mult mai mare ca varietate și volum decât chiar și cele mai mari seturi de date etichetate.
Abordările semi-supravegheate s-au dovedit că oferă performanțe superioare abordărilor supravegheate pe benchmark-uri mari precum ImageNet. Celebra analogie cu tort a lui Yann LeCun subliniază importanța învățării nesupravegheate:
Învățare semi-supravegheată
Această abordare folosește atât datele etichetate, cât și cele neetichetate pentru învățare, de aceea este numită învățare semi-supravegheată. Aceasta este de obicei abordarea preferată atunci când aveți o cantitate mică de date etichetate și o cantitate mare de date neetichetate. Există tehnici prin care învățați din date etichetate și neetichetate simultan, dar vom discuta problema în contextul unei abordări în două etape: învățarea nesupravegheată pe date neetichetate și transferul de învățare folosind una dintre strategiile descrise mai sus pentru a vă rezolva sarcina de clasificare. .
În aceste cazuri, învățarea nesupravegheată este un termen destul de confuz. Aceste abordări nu sunt cu adevărat nesupravegheate în sensul că există un semnal de supraveghere care ghidează învățarea greutăților, dar astfel semnalul de supraveghere este derivat din datele în sine. Prin urmare, uneori se face referire la învățare auto-supravegheată, dar acești termeni au fost folosiți interschimbabil în literatură pentru a se referi la aceeași abordare.
Tehnicile majore în învățarea auto-supravegheată pot fi împărțite în funcție de modul în care generează acest semnal de supraveghere din date, așa cum se discută mai jos.

Metode generative
Metodele generative vizează reconstrucția precisă a datelor după trecerea lor printr-un blocaj. Un exemplu de astfel de rețele sunt autoencoderele. Acestea reduc intrarea într-un spațiu de reprezentare cu dimensiuni reduse folosind o rețea de codificator și reconstruiesc imaginea folosind rețeaua de decodor.
În această setare, intrarea în sine devine semnalul de supraveghere (eticheta) pentru antrenarea rețelei. Rețeaua de codificatoare poate fi apoi extrasă și utilizată ca punct de plecare pentru a vă construi clasificatorul, folosind una dintre tehnicile de învățare prin transfer discutate în secțiunea de mai sus.
În mod similar, o altă formă de rețele generative - Generative Adversarial Networks (GAN) - poate fi utilizată pentru antrenamentul preliminar pe date neetichetate. Apoi, un discriminator poate fi adoptat și ajustat în continuare pentru sarcina de clasificare.
Metode discriminatorii
Abordările discriminatorii antrenează o rețea neuronală să învețe o sarcină auxiliară de clasificare. Se alege o sarcină auxiliară astfel încât semnalul de supraveghere să poată fi derivat din datele în sine, fără adnotare umană.
Exemple de acest tip de sarcini sunt învățarea pozițiilor relative ale patch-urilor de imagine, colorarea imaginilor în tonuri de gri sau învățarea transformărilor geometrice aplicate pe imagini. Vom discuta mai detaliat două dintre ele.
Învățarea pozițiilor relative ale patch-urilor de imagine
În această tehnică, patch-urile de imagine sunt extrase din imaginea sursă pentru a forma o grilă asemănătoare unui puzzle. Pozițiile căilor sunt amestecate, iar intrarea amestecată este introdusă în rețea, care este antrenată să prezică corect locația fiecărui patch în grilă. Astfel, semnalul de supraveghere este poziția reală a fiecărei căi în grilă.
Învățând să facă asta, rețeaua învață structura și orientarea relativă a obiectelor, precum și continuitatea caracteristicilor vizuale de nivel scăzut, cum ar fi culoarea. Rezultatele arată că caracteristicile învățate prin rezolvarea acestui puzzle sunt foarte transferabile la sarcini precum clasificarea imaginilor și detectarea obiectelor.
Învățarea transformărilor geometrice aplicate imaginilor
Aceste abordări aplică un set mic de transformări geometrice imaginilor de intrare și antrenează un clasificator pentru a prezice transformarea aplicată analizând numai imaginea transformată. Un exemplu al acestor abordări este aplicarea unei rotații 2D imaginilor neetichetate pentru a obține un set de imagini rotite și apoi antrenarea rețelei pentru a prezice rotația fiecărei imagini.
Acest semnal simplu de supraveghere obligă rețeaua să învețe să localizeze obiectele dintr-o imagine și să înțeleagă orientarea acestora. Caracteristicile învățate prin aceste abordări s-au dovedit a fi foarte transferabile și oferă performanțe de ultimă generație pentru sarcinile de clasificare în setări semi-supravegheate.
Abordări bazate pe similaritate
Aceste abordări proiectează imaginile într-un spațiu de reprezentare de dimensiuni fixe în care imaginile similare sunt mai apropiate și imagini diferite sunt mai departe. O modalitate de a realiza acest lucru este utilizarea rețelelor siameze bazate pe pierderea tripletului, care minimizează distanța dintre imaginile similare din punct de vedere semantic. Pierderea tripletului are nevoie de o ancoră, un exemplu pozitiv și un exemplu negativ și încearcă să aducă pozitiv mai aproape de ancoră decât negativ în ceea ce privește distanța euclidiană în spațiul latent. Ancora și pozitivul sunt din aceeași clasă, iar exemplul negativ este ales aleatoriu din clasele rămase.
În datele neetichetate, trebuie să venim cu o strategie pentru a produce acest triplet de exemple pozitive și negative, fără a cunoaște clasele de imagini. O modalitate de a face acest lucru este să utilizați o transformare afină aleatorie a imaginii ancoră ca exemplu pozitiv și să selectați aleatoriu o altă imagine ca exemplu negativ.
Experiment
În această secțiune, voi relata un experiment care stabilește empiric potențialul de pre-antrenament nesupravegheat pentru clasificarea imaginilor. Acesta a fost proiectul meu de semestru pentru un curs de Deep Learning pe care l-am luat cu Yann LeCun la NYU primăvara trecută.
- Setul de date . Este compus din 128K exemple etichetate, dintre care jumătate sunt pentru instruire și cealaltă jumătate pentru validare. În plus, ni se oferă 512K imagini neetichetate. Datele conțin 1.000 de clase în total.
- Pre-antrenament nesupravegheat . AlexNet a fost instruit pentru clasificarea prin rotație folosind o creștere extinsă a datelor pentru 63 de epoci. Am folosit hiperparametrii documentați de Rotnet în lucrarea lor.
- Antrenamentul clasificatorului . Caracteristicile au fost extrase din al patrulea strat de convoluție și i-au fost atașate trei straturi complet conectate. Aceste straturi au fost inițializate aleatoriu și antrenate cu o rată de învățare descrescătoare programată, iar oprirea timpurie a fost implementată pentru a opri antrenamentul.
- Reglarea fină a întregii rețele . În cele din urmă, am ajustat rețeaua instruită pe toate datele etichetate. Atât extractorul de caracteristici, cât și clasificatorul, care au fost instruiți separat anterior, au fost reglați fin împreună cu o rată mică de învățare pentru 15 epoci.
Am instruit șapte modele, fiecare folosind un număr diferit de exemple de instruire etichetate per clasă. Acest lucru a fost făcut pentru a înțelege modul în care dimensiunea datelor de antrenament influențează performanța configurației noastre semi-supravegheate.
Am reușit să obținem o rată de precizie de 82% pentru pre-antrenamentul privind clasificarea prin rotație. Pentru antrenamentul clasificatorului, precizia de top 5% saturat în jurul valorii de 46,24%, iar reglarea fină a întregii rețele a dat cifra finală de 50,17%. Prin valorificarea pre-antrenamentului, am obținut performanțe mai bune decât cea a antrenamentului supravegheat, care oferă o precizie de 40% în top 5.
După cum era de așteptat, acuratețea validării scade odată cu scăderea datelor de antrenament etichetate. Cu toate acestea, scăderea performanței nu este atât de semnificativă pe cât ne-am aștepta într-un cadru supravegheat. O scădere cu 50% a datelor de antrenament de la 64 de exemple per clasă la 32 de exemple per clasă are ca rezultat doar o scădere cu 15% a preciziei validării.
Folosind doar 32 de exemple per clasă, modelul nostru semi-supravegheat atinge performanțe superioare modelului supravegheat antrenat folosind 64 de exemple pe clasă. Aceasta oferă dovezi empirice ale potențialului abordărilor semi-supravegheate pentru clasificarea imaginilor pe seturi de date etichetate cu resurse reduse.
Încheierea
Putem concluziona că învățarea nesupravegheată este o paradigmă puternică care are capacitatea de a crește performanța pentru seturile de date cu resurse reduse. Învățarea nesupravegheată este în prezent la început, dar își va extinde treptat cota în spațiul viziunii computerizate, permițând învățarea din date neetichetate ieftine și ușor accesibile.
Citiți suplimentare pe blogul Toptal Engineering:
- Graph Data Science cu Python/NetworkX