Paper · Foundational research
CLIP — Come OpenAI ha Insegnato alle Macchine a Collegare Immagini e Parole
Original source: Radford et al. · OpenAI 2021 · arxiv.org/abs/2103.00020 — summary and rework in own words.
Cos'è: CLIP (Contrastive Language–Image Pre-training) è un paper OpenAI del febbraio 2021 firmato da Alec Radford e colleghi. Addestrato su 400 milioni di coppie immagine-testo raccolte dal web, CLIP ha imparato uno spazio di embedding condiviso in cui testo e immagine con lo stesso significato producono rappresentazioni vicine. Il risultato: classificazione zero-shot competitiva con modelli specializzati, senza aver mai visto le categorie target durante il training.
Il problema del supervised learning per le immagini
Prima di CLIP, il paradigma dominante nella computer vision era il supervised learning su dataset etichettati. Il processo era costoso e rigido: si raccoglievano decine di migliaia di immagini, si assumevano annotatori umani per etichettarle manualmente, si addestrava il modello su queste etichette. Il risultato era un classificatore capace di riconoscere esattamente le categorie viste in training — e praticamente inutile su categorie nuove.
ImageNet, il dataset di riferimento del campo, contiene 1.000 categorie meticolosamente definite e oltre un milione di immagini etichettate. Costruirlo ha richiesto anni di lavoro di crowd-sourcing. Ogni volta che si voleva estendere il modello a nuove categorie — poniamo, distinguere tra 200 varietà di uccelli invece che tra "uccello" e "non uccello" — occorreva ricominciare daccapo con un nuovo dataset etichettato.
Il problema non era solo economico. Era concettuale: il modello imparava a riconoscere le categorie che gli venivano mostrate, non a "capire" cosa rappresenta un'immagine in senso più generale. Un modello addestrato su ImageNet non sapeva cosa fosse una "Polaroid" o un "Maserati Birdcage" perché queste categorie non erano nel training set — indipendentemente da quante immagini di macchine e fotocamere avesse visto.
L'idea: 400 milioni di coppie dal web e contrastive learning
CLIP parte da un'osservazione semplice ma potente: il web è pieno di immagini accompagnate da testo. Foto con didascalie, prodotti con descrizioni, articoli con illustrazioni. Queste coppie immagine-testo non sono etichette pulite nel senso tradizionale — sono rumorose, imprecise, a volte fuorvianti — ma sono disponibili in quantità astronomiche.
OpenAI ha costruito un dataset chiamato WIT (WebImageText) raccogliendo 400 milioni di queste coppie da Internet. Nessuna annotazione manuale: solo lo scraping sistematico di immagini e il testo associato trovato in rete. La qualità media era inferiore a ImageNet, ma la quantità era ordini di grandezza superiore.
L'architettura di CLIP consiste di due encoder separati: un image encoder (una rete ResNet o ViT) e un text encoder (un transformer). Entrambi proiettano i rispettivi input in uno spazio vettoriale comune a 512 o 1024 dimensioni. L'obiettivo di training è il contrastive loss: dato un batch di N coppie (immagine, testo), il modello deve imparare che le N coppie reali hanno embedding vicini, mentre le N²−N coppie false (immagine da una coppia + testo da un'altra) hanno embedding lontani.
Su un batch di 32.768 coppie, il modello impara a distinguere la coppia corretta da 32.767 coppie false. Ripetuto su 400 milioni di esempi, questo processo forza il modello a costruire rappresentazioni genuinamente semantiche — non scorciatoie statistiche superficiali.
Zero-shot classification: nessun training per categoria nuova
La capacità più spettacolare di CLIP è la classificazione zero-shot. Per classificare un'immagine in una categoria mai vista, si costruisce un prompt testuale come "una foto di un [nome categoria]" per ogni categoria possibile. Si calcola l'embedding di ogni prompt con il text encoder, si calcola l'embedding dell'immagine con l'image encoder, e si assegna l'immagine alla categoria il cui embedding testuale è più vicino nell'embedding spazio.
Risultato: CLIP in modalità zero-shot supera ResNet-50 addestrato con supervisione piena su ImageNet. Un modello che non ha mai visto le categorie durante il training batte un modello specializzato su di esse. Il gap si riduce rispetto ai migliori modelli, ma l'implicazione è radicale: per classificare immagini in nuove categorie non serve più raccogliere dati e riaddestrare. Basta scrivere il nome della categoria.
Su dataset specializzati come EuroSAT (immagini satellitari) o DTD (texture) le performance zero-shot sono più basse — CLIP non è onnisciente — ma su categorie visive comuni la generalizzazione è sorprendentemente robusta.
Perché CLIP è la fondazione di DALL-E, Stable Diffusion e la ricerca per immagini
Lo spazio di embedding condiviso testo-immagine creato da CLIP ha aperto la strada a un'intera generazione di tecnologie. La connessione più diretta è con i modelli di generazione di immagini da testo.
DALL-E (OpenAI, 2021) e DALL-E 2 (2022) usano CLIP in modo diretto: l'embedding testuale del prompt viene usato come condizionamento per il modello generativo. Stable Diffusion e gli altri modelli di diffusione usano CLIP (o derivati come OpenCLIP) come text encoder: l'intero processo di denoising iterativo è guidato dall'embedding del testo prodotto da CLIP. Quando si scrive un prompt per Midjourney o Stable Diffusion, la prima cosa che succede è che il testo viene passato attraverso un encoder CLIP-like per produrre il vettore che guida la generazione.
Nella ricerca visiva, la logica è analoga: dati N milioni di immagini con embedding pre-calcolati, trovare le immagini semanticamente simili a una query testuale diventa una ricerca nearest-neighbor nello spazio vettoriale. Google, Pinterest e i principali motori di ricerca visiva usano varianti di questa architettura.
I modelli multimodali moderni come GPT-4V, Claude 3 e Gemini estendono l'idea di CLIP: non solo un'operazione di matching, ma un'integrazione profonda tra comprensione visiva e linguistica che permette di rispondere a domande su immagini, descrivere scene, leggere testo nelle foto. CLIP è l'avo diretto di tutto questo.
La scelta del contrastive loss vs. classificazione tradizionale
La scelta del contrastive loss invece della classica cross-entropy su classi fisse non era ovvia nel 2021 e merita una spiegazione. Con la cross-entropy tradizionale, il modello impara a mappare input a categorie discrete e fisse: il numero di output è il numero di classi del dataset, e aggiungere una classe nuova richiede di modificare l'architettura e riaddestrare. Con il contrastive loss, il modello impara invece la struttura dello spazio semantico — le relazioni di similarità e distanza tra concetti — senza essere vincolato a un insieme fisso di etichette.
Il contrastive loss aveva già una storia nel campo: SimCLR e MoCo erano approcci self-supervised per immagini basati sulla stessa idea. La novità di CLIP è applicarla in modo cross-modale: le coppie contrastive non sono versioni augmentate della stessa immagine (come in SimCLR), ma immagine e testo corrispondente. Il segnale di supervisione viene dal linguaggio, non da augmentazioni artificiali.
Questo è anche il motivo per cui CLIP generalizza meglio: il linguaggio naturale è il supervisore più ricco che esista. Le descrizioni testuali codificano concetti, attributi, relazioni, contesto — molto più di una singola etichetta di categoria.
Limitazioni: bias, conteggio, composizione
CLIP eredita i bias presenti nel testo e nelle immagini del web, e li amplifica. I ricercatori OpenAI hanno documentato bias razziali e di genere significativi: in alcuni esperimenti il modello associava immagini di donne con professioni stereotipate, o mostrava performance molto diverse su volti di diversa etnia. Il dataset WIT riflette la distribuzione del web, che non è una distribuzione neutrale della realtà.
CLIP fatica sistematicamente con compiti che richiedono comprensione compositiva e conteggio. "Un cane rosso insegue un gatto blu" e "un cane blu insegue un gatto rosso" producono embedding molto simili — il modello cattura le parole chiave ma non la struttura relazionale. Contare oggetti ("ci sono tre mele nell'immagine?") è notoriamente debole. Queste non sono limitazioni contingenti ma riflettono qualcosa di fondamentale sull'architettura: imparare matching semantico globale non è la stessa cosa che imparare struttura compositiva.
CLIP è anche sensibile al prompt engineering: formulazioni diverse dello stesso concetto ("una foto di un cane" vs. "cane") producono risultati diversi. Questo ha stimolato un'intera sottodisciplina di ricerca su come formulare al meglio i template testuali per il zero-shot prompting.
Link alla fonte originale
Paper originale EN, Radford et al. OpenAI, febbraio 2021. Codice e pesi pubblici su GitHub OpenAI.