Classificazione delle immagini semi-supervisionata con dati senza etichetta
Pubblicato: 2022-03-11L'apprendimento supervisionato è stato in prima linea nella ricerca sulla visione artificiale e sull'apprendimento profondo negli ultimi dieci anni.
In un ambiente di apprendimento supervisionato, gli esseri umani devono annotare manualmente una grande quantità di set di dati. Quindi, i modelli utilizzano questi dati per apprendere le complesse relazioni sottostanti tra i dati e l'etichetta e sviluppare la capacità di prevedere l'etichetta, dati i dati. I modelli di deep learning sono generalmente affamati di dati e richiedono enormi quantità di set di dati per ottenere buone prestazioni. L'hardware in continuo miglioramento e la disponibilità di grandi set di dati con etichetta umana è stata la ragione dei recenti successi del deep learning.
Uno dei principali svantaggi dell'apprendimento profondo supervisionato è che si basa sulla presenza di un'ampia quantità di set di dati con etichetta umana per l'addestramento. Questo lusso non è disponibile in tutti i domini poiché potrebbe essere logisticamente difficile e molto costoso ottenere enormi set di dati annotati da professionisti. Sebbene l'acquisizione di dati etichettati possa essere un'impresa impegnativa e costosa, di solito abbiamo accesso a grandi quantità di set di dati senza etichetta, in particolare dati di immagini e testo. Pertanto, dobbiamo trovare un modo per attingere a questi set di dati sottoutilizzati e utilizzarli per l'apprendimento.
Trasferisci l'apprendimento da modelli pre-addestrati
In assenza di grandi quantità di dati etichettati, di solito si ricorre all'utilizzo del transfer learning . Allora, cos'è il transfer learning?
Trasferire l'apprendimento significa utilizzare la conoscenza di un compito simile per risolvere un problema a portata di mano. In pratica, di solito significa utilizzare come inizializzazioni i pesi della rete neurale profonda appresi da un'attività simile, piuttosto che iniziare da un'inizializzazione casuale dei pesi, e quindi addestrare ulteriormente il modello sui dati etichettati disponibili per risolvere il compito in questione.
Il transfer learning ci consente di addestrare modelli su set di dati di poche migliaia di esempi e può fornire ottime prestazioni. Il trasferimento dell'apprendimento da modelli preaddestrati può essere eseguito in tre modi:
1. Estrazione di funzionalità
Di solito, gli ultimi strati della rete neurale eseguono i calcoli più astratti e specifici per attività, che generalmente non sono facilmente trasferibili ad altre attività. Al contrario, i livelli iniziali della rete apprendono alcune caratteristiche di base come bordi e forme comuni, che sono facilmente trasferibili tra le attività.
I set di immagini seguenti mostrano ciò che i kernel di convoluzione a diversi livelli in una rete neurale convoluzionale (CNN) stanno essenzialmente imparando. Vediamo una rappresentazione gerarchica, con gli strati iniziali che apprendono le forme di base e, progressivamente, gli strati superiori che apprendono concetti semantici più complessi.
Una pratica comune consiste nel prendere un modello preaddestrato su grandi set di dati di immagini etichettati (come ImageNet) e tagliare i livelli completamente connessi alla fine. I nuovi livelli completamente connessi vengono quindi collegati e configurati in base al numero di classi richiesto. I livelli trasferiti vengono bloccati e i nuovi livelli vengono addestrati sui dati etichettati disponibili per l'attività.
In questa configurazione, il modello preaddestrato viene utilizzato come estrattore di funzionalità e gli strati completamente collegati nella parte superiore possono essere considerati un classificatore superficiale. Questa configurazione è più robusta dell'overfitting poiché il numero di parametri addestrabili è relativamente piccolo, quindi questa configurazione funziona bene quando i dati etichettati disponibili sono molto scarsi. La dimensione di un set di dati che si qualifica come un set di dati molto piccolo è solitamente un problema complicato con molti aspetti da considerare, incluso il problema in questione e la dimensione della spina dorsale del modello. In parole povere, userei questa strategia per un set di dati composto da un paio di migliaia di immagini.
2. Messa a punto
In alternativa, possiamo trasferire i livelli da una rete pre-addestrata e addestrare l'intera rete sui dati etichettati disponibili. Questa configurazione richiede un po' più di dati etichettati perché stai addestrando l'intera rete e quindi un gran numero di parametri. Questa configurazione è più incline all'overfitting quando c'è una scarsità di dati.
3. Apprendimento di trasferimento in due fasi
Questo approccio è il mio preferito e di solito dà i migliori risultati, almeno nella mia esperienza. Qui, formiamo i livelli appena collegati mentre congeliamo i livelli trasferiti per alcune epoche prima di mettere a punto l'intera rete.
La messa a punto dell'intera rete senza assegnare alcune epoche ai livelli finali può comportare la propagazione di gradienti dannosi dai livelli inizializzati casualmente alla rete di base. Inoltre, la messa a punto richiede un tasso di apprendimento relativamente inferiore e un approccio a due fasi è una soluzione conveniente.
La necessità di metodi semi-supervisionati e non supervisionati
Questo di solito funziona molto bene per la maggior parte delle attività di classificazione delle immagini perché disponiamo di enormi set di dati di immagini come ImageNet che coprono una buona parte del possibile spazio dell'immagine e, di solito, i pesi appresi da esso sono trasferibili alle attività di classificazione delle immagini personalizzate. Inoltre, le reti pre-addestrate sono prontamente disponibili immediatamente, facilitando così il processo.
Tuttavia, questo approccio non funzionerà bene se la distribuzione delle immagini nell'attività è drasticamente diversa dalle immagini su cui è stata addestrata la rete di base. Ad esempio, se hai a che fare con immagini in scala di grigi generate da un dispositivo di imaging medico, trasferire l'apprendimento dai pesi ImageNet non sarà così efficace e avrai bisogno di più di un paio di migliaia di immagini etichettate per addestrare la tua rete a prestazioni soddisfacenti.
Al contrario, potresti avere accesso a grandi quantità di set di dati senza etichetta per il tuo problema. Ecco perché la capacità di imparare da set di dati senza etichetta è fondamentale. Inoltre, il set di dati senza etichetta è in genere molto maggiore in termini di varietà e volume rispetto ai set di dati etichettati più grandi.
Gli approcci semi-supervisionati hanno dimostrato di produrre prestazioni superiori rispetto agli approcci supervisionati su benchmark di grandi dimensioni come ImageNet. La famosa analogia della torta di Yann LeCun sottolinea l'importanza dell'apprendimento non supervisionato:
Apprendimento semi-supervisionato
Questo approccio sfrutta sia i dati etichettati che quelli non etichettati per l'apprendimento, quindi è definito apprendimento semi-supervisionato. Questo è in genere l'approccio preferito quando si dispone di una piccola quantità di dati etichettati e di una grande quantità di dati senza etichetta. Esistono tecniche in cui si impara contemporaneamente da dati etichettati e non etichettati, ma discuteremo il problema nel contesto di un approccio a due fasi: apprendimento non supervisionato su dati non etichettati e trasferimento dell'apprendimento utilizzando una delle strategie descritte sopra per risolvere il proprio compito di classificazione .
In questi casi, l'apprendimento non supervisionato è un termine piuttosto confuso. Questi approcci non sono veramente senza supervisione, nel senso che esiste un segnale di supervisione che guida l'apprendimento dei pesi, ma quindi il segnale di supervisione è derivato dai dati stessi. Quindi, a volte viene indicato come apprendimento auto-supervisionato, ma questi termini sono stati usati in modo intercambiabile in letteratura per riferirsi allo stesso approccio.
Le principali tecniche di apprendimento auto-supervisionato possono essere divise in base al modo in cui generano questo segnale di supervisione dai dati, come discusso di seguito.
Metodi generativi

I metodi generativi mirano alla ricostruzione accurata dei dati dopo averli passati attraverso un collo di bottiglia. Un esempio di tali reti sono gli autoencoder. Riducono l'input in uno spazio di rappresentazione a bassa dimensione utilizzando una rete di codificatori e ricostruiscono l'immagine utilizzando la rete di decodificatori.
In questa configurazione, l'ingresso stesso diventa il segnale di supervisione (etichetta) per l'addestramento della rete. La rete dell'encoder può quindi essere estratta e utilizzata come punto di partenza per costruire il proprio classificatore, utilizzando una delle tecniche di transfer learning discusse nella sezione precedente.
Allo stesso modo, un'altra forma di reti generative - Generative Adversarial Networks (GANs) - può essere utilizzata per il pre-addestramento sui dati senza etichetta. Quindi, un discriminatore può essere adottato e ulteriormente perfezionato per l'attività di classificazione.
Metodi discriminatori
Gli approcci discriminatori addestrano una rete neurale ad apprendere un'attività di classificazione ausiliaria. Viene scelto un compito ausiliario in modo tale che il segnale di supervisione possa essere derivato dai dati stessi, senza annotazione umana.
Esempi di questo tipo di attività sono l'apprendimento delle posizioni relative delle patch dell'immagine, la colorazione delle immagini in scala di grigi o l'apprendimento delle trasformazioni geometriche applicate alle immagini. Ne discuteremo due in modo più dettagliato.
Apprendimento delle posizioni relative delle patch di immagini
In questa tecnica, le patch dell'immagine vengono estratte dall'immagine sorgente per formare una griglia simile a un puzzle. Le posizioni del percorso vengono mescolate e l'input mescolato viene immesso nella rete, che viene addestrata per prevedere correttamente la posizione di ciascuna patch nella griglia. Pertanto, il segnale di supervisione è la posizione effettiva di ciascun percorso nella rete.
Imparando a farlo, la rete apprende la struttura relativa e l'orientamento degli oggetti, nonché la continuità di caratteristiche visive di basso livello come il colore. I risultati mostrano che le funzionalità apprese risolvendo questo puzzle sono altamente trasferibili a compiti come la classificazione delle immagini e il rilevamento di oggetti.
Imparare le trasformazioni geometriche applicate alle immagini
Questi approcci applicano un piccolo insieme di trasformazioni geometriche alle immagini di input e addestrano un classificatore per prevedere la trasformazione applicata osservando solo l'immagine trasformata. Un esempio di questi approcci consiste nell'applicare una rotazione 2D alle immagini senza etichetta per ottenere una serie di immagini ruotate e quindi addestrare la rete per prevedere la rotazione di ciascuna immagine.
Questo semplice segnale di supervisione costringe la rete a imparare a localizzare gli oggetti in un'immagine ea comprenderne l'orientamento. Le caratteristiche apprese da questi approcci si sono rivelate altamente trasferibili e forniscono prestazioni all'avanguardia per le attività di classificazione in contesti semi-supervisionati.
Approcci basati sulla somiglianza
Questi approcci proiettano le immagini in uno spazio di rappresentazione di dimensioni fisse in cui immagini simili sono più vicine tra loro e immagini diverse sono più distanti. Un modo per raggiungere questo obiettivo è utilizzare reti siamesi basate sulla perdita di triplette, che riduce al minimo la distanza tra immagini semanticamente simili. La perdita di triplette ha bisogno di un'ancora, un esempio positivo e un esempio negativo e cerca di avvicinare il positivo all'ancora piuttosto che il negativo in termini di distanza euclidea nello spazio latente. Anchor e positivo appartengono alla stessa classe e l'esempio negativo viene scelto casualmente dalle classi rimanenti.
Nei dati non etichettati, dobbiamo elaborare una strategia per produrre questa tripletta di esempi positivi e negativi di ancoraggio senza conoscere le classi di immagini. Un modo per farlo è utilizzare una trasformazione affine casuale dell'immagine di ancoraggio come esempio positivo e selezionare casualmente un'altra immagine come esempio negativo.
Sperimentare
In questa sezione racconterò un esperimento che stabilisce empiricamente il potenziale di un pre-allenamento non supervisionato per la classificazione delle immagini. Questo è stato il mio progetto del semestre per un corso di Deep Learning che ho seguito con Yann LeCun alla New York University la scorsa primavera.
- Set di dati . È composto da 128.000 esempi etichettati, metà dei quali sono per la formazione e l'altra metà per la convalida. Inoltre, ci vengono fornite 512.000 immagini senza etichetta. I dati contengono 1.000 classi in totale.
- Pre-allenamento senza supervisione . AlexNet è stato addestrato per la classificazione della rotazione utilizzando un esteso aumento dei dati per 63 epoche. Abbiamo usato gli iperparametri documentati da Rotnet nel loro articolo.
- Formazione classificatori . Le caratteristiche sono state estratte dal quarto strato di convoluzione e ad esso sono stati aggiunti tre strati completamente collegati. Questi livelli sono stati inizializzati e addestrati in modo casuale con un tasso di apprendimento decrescente programmato ed è stato implementato l'arresto anticipato per interrompere l'addestramento.
- Messa a punto dell'intera rete . Alla fine, abbiamo messo a punto la rete addestrata su tutti i dati etichettati. Sia l'estrattore di funzionalità che il classificatore, che prima erano stati addestrati separatamente, sono stati messi a punto insieme con un basso tasso di apprendimento per 15 epoche.
Abbiamo addestrato sette modelli, ciascuno utilizzando un numero diverso di esempi di formazione etichettati per classe. Questo è stato fatto per capire come la dimensione dei dati di addestramento influenza le prestazioni della nostra configurazione semi-supervisionata.
Siamo stati in grado di ottenere un tasso di precisione dell'82% per il pre-allenamento sulla classificazione della rotazione. Per l'addestramento del classificatore, la precisione del 5% superiore è saturata attorno al valore del 46,24% e la messa a punto dell'intera rete ha prodotto la cifra finale del 50,17%. Sfruttando il pre-allenamento, abbiamo ottenuto prestazioni migliori rispetto a quelle dell'allenamento supervisionato, che fornisce una precisione del 40% nella top 5.
Come previsto, l'accuratezza della convalida diminuisce con la diminuzione dei dati di addestramento etichettati. Tuttavia, il calo delle prestazioni non è così significativo come ci si aspetterebbe in un ambiente supervisionato. Una riduzione del 50% dei dati di addestramento da 64 esempi per classe a 32 esempi per classe si traduce solo in una diminuzione del 15% nell'accuratezza della convalida.
Utilizzando solo 32 esempi per classe, il nostro modello semi-supervisionato raggiunge prestazioni superiori rispetto al modello supervisionato addestrato utilizzando 64 esempi per classe. Ciò fornisce prove empiriche del potenziale degli approcci semi-supervisionati per la classificazione delle immagini su set di dati etichettati con risorse limitate.
Avvolgendo
Possiamo concludere che l'apprendimento non supervisionato è un paradigma potente che ha la capacità di aumentare le prestazioni per set di dati con risorse limitate. L'apprendimento senza supervisione è attualmente agli inizi, ma amplierà gradualmente la sua quota nello spazio della visione artificiale consentendo l'apprendimento da dati non etichettati a basso costo e facilmente accessibili.
Ulteriori letture sul blog di Toptal Engineering:
- Graph Data Science con Python/NetworkX