L'apprendimento per contrasto () è un paradigma di apprendimento automatico auto-supervisionato in cui un modello impara a rappresentare i dati confrontando campioni/esempi simili (positivi) e diversi (negativi) .
A differenza dei metodi generativi (come le GAN o i modelli diffusivi), che cercano di ricostruire l'input elemento per elemento, l'apprendimento per contrasto mira a mappare gli input in uno spazio di rappresentazione metrico in cui le istanze correlate risultino vicine tra loro, mentre quelle non correlate siano distanti.
Principio di funzionamento
L'apprendimento per contrasto trasforma un problema non supervisionato in un task artificiale (pretext) in cui il modello deve discriminare tra coppie di dati simili e coppie di dati diversi.
Dato un campione di input , vi si applicano trasformazioni stocastiche per generare due viste correlate dello stesso dato, definite viste positive e . Tutti gli altri campioni all'interno dello stesso lotto di dati (batch) vengono considerati campioni negativi.
Il modello è tipicamente composto da tre moduli principali: Rete encoder (funzione ): estrae un vettore di rappresentazione di base dall'input, . Si utilizzano spesso architetture come ResNet per immagini o transformer per il testo; Testa di proiezione (funzione ): piccola rete neurale (spesso un percettrone multistrato con uno strato nascosto) che mappa la rappresentazione nello spazio vettoriale in cui viene applicata la funzione di perdita: ; Funzione di perdita per contrasto (contrastive loss): misura la similarità tra le proiezioni dei vettori. Quando sono disponibili le etichette reali delle classi, è possibile sfruttarle per costruire coppie ancora più efficaci .
SimCLR e la loss InfoNCE
La funzione di perdita maggiormente impiegata nell'apprendimento per contrasto è la InfoNCE (Information Noise-Contrastive Estimation), derivata dalla nozione di informazione mutua .
Data una coppia di vettori di proiezione positivi e un insieme di campioni negativi , la loss InfoNCE normalizzata con temperatura (spesso indicata come NT-Xent, Normalized Temperature-scaled Cross Entropy) è formulata come segue:
dove: rappresenta la similarità coseno tra i vettori e ; è un iperparametro scalare detto temperatura, che regola la rigidità della penalità per campioni negativi vicini; è una funzione indicatrice che restituisce 1 se e solo se ; indica la dimensione del batch originale di dati.
Architetture principali
MoCo (Momentum Contrast): introduce l'uso di una coda di memoria (memory queue) e di un encoder di quantità di moto (momentum encoder) per mantenere un ampio insieme di campioni negativi creati in modo coerente, evitando così di richiedere batch di dimensioni molto grandi . SimCLR: sviluppato da Google Research, dimostra che l'apprendimento per contrasto beneficia fortemente di batch di dimensioni elevate (ad es. 4096 campioni), dell'uso di una testa di proiezione non lineare e di tecniche combinate di data augmentation aggressiva (quali il ritaglio casuale e la distorsione cromatica) . CLIP (Contrastive Language-Image Pre-training): proposto da OpenAI, estende il paradigma a un contesto multimodale in cui vengono confrontate coppie testo-immagine. CLIP impara quali immagini si associano a quali didascalie su un dataset di 400 milioni di coppie estratte da Internet .
Applicazioni
Elaborazione del linguaggio naturale (NLP): Modellazione di frasi e apprendimento di embedding semantici tramite tecniche di contrasto tra frasi simili . Visione artificiale: pre-addestramento di backbone (estrattori di feature) per la segmentazione, la classificazione e il rilevamento di oggetti con scarsa necessità di annotazioni manuali. Sistemi di raccomandazione: apprendimento delle preferenze dell'utente tramite contrasto tra elementi visitati/acquistati ed elementi ignorati.
Note
Voci correlate Apprendimento auto-supervisionato Apprendimento non supervisionato Informazione mutua
Categoria:Apprendimento automatico Categoria:Apprendimento profondo