Durante gli esperimenti con modelli in stile ColPali, uno dei nostri ingegneri ha creato una visualizzazione utilizzando il nostro modello jina-clip-v2 recentemente rilasciato. Ha mappato la similarità tra gli embedding dei token e gli embedding delle patch per determinate coppie immagine-testo, creando sovrapposizioni di heatmap che hanno prodotto alcuni spunti visivi interessanti.


Sfortunatamente, questa è solo una visualizzazione euristica - non un meccanismo esplicito o garantito. Mentre l'allineamento contrastivo globale in stile CLIP può (e spesso lo fa) creare incidentalmente allineamenti locali approssimativi tra patch e token, questo è un effetto collaterale non intenzionale piuttosto che un obiettivo deliberato del modello. Lasciami spiegare perché.
tagComprendere il Codice

Analizziamo cosa fa il codice ad alto livello. Nota che jina-clip-v2 in realtà non espone alcuna API per accedere agli embedding a livello di token o patch di default - questa visualizzazione ha richiesto alcune modifiche post-hoc per funzionare.
Calcolare gli embedding a livello di parola
Impostando model.text_model.output_tokens = True, chiamando text_model(x=...,)[1] restituirà un secondo elemento (batch_size, seq_len, embed_dim) per gli embedding dei token. Quindi prende una frase in input, la tokenizza con il tokenizer Jina CLIP, e poi raggruppa i token delle sottoparole in "parole" facendo la media degli embedding dei token corrispondenti. Rileva l'inizio di una nuova parola controllando se la stringa del token inizia con il carattere _ (tipico nei tokenizer basati su SentencePiece). Produce una lista di embedding a livello di parola e una lista di parole (così che "Cane" sia un embedding, "e" sia un embedding, ecc.).
Calcolare gli embedding a livello di patch
Per la torre dell'immagine, vision_model(..., return_all_features=True) restituirà (batch_size, n_patches+1, embed_dim), dove il primo token è il token [CLS]. Da questo, il codice estrae gli embedding per ogni patch (cioè, i token patch del vision transformer). Quindi ridimensiona questi embedding delle patch in una griglia 2D, patch_side × patch_side, che viene poi upsamplata per corrispondere alla risoluzione dell'immagine originale.
Visualizzare la similarità parola-patch
Il calcolo della similarità e la successiva generazione della heatmap sono tecniche di interpretabilità "post-hoc" standard: si seleziona un embedding del testo, si calcola la similarità del coseno con ogni embedding della patch e poi si genera una heatmap che mostra quali patch hanno la più alta similarità con quello specifico embedding del token. Infine, scorre ciascun token nella frase, evidenzia quel token in grassetto a sinistra e sovrappone la heatmap basata sulla similarità sull'immagine originale a destra. Tutti i frame vengono compilati in una GIF animata.
tagÈ una Spiegabilità Significativa?
Da un punto di vista di puro codice, sì, la logica è coerente e produrrà una heatmap per ogni token. Otterrai una serie di frame che evidenziano le similarità delle patch, quindi lo script "fa quello che promette".


Guardando gli esempi sopra, vediamo che parole come moon e branches sembrano allinearsi bene con le loro patch visive corrispondenti nell'immagine originale. Ma ecco la domanda chiave: è un allineamento significativo o stiamo solo vedendo una coincidenza fortunata?
Questa è una domanda più profonda. Per comprendere le avvertenze, ricorda come viene addestrato CLIP:
- CLIP usa un allineamento contrastivo globale tra un'intera immagine e un intero pezzo di testo. Durante l'addestramento, l'encoder dell'immagine produce un singolo vettore (rappresentazione aggregata), e l'encoder del testo produce un altro singolo vettore; CLIP viene addestrato in modo che questi corrispondano per coppie testo-immagine corrispondenti e non corrispondano in caso contrario.
- Non c'è supervisione esplicita a livello di 'la patch X corrisponde al token Y'. Il modello non è direttamente addestrato a evidenziare "questa regione dell'immagine è il cane, quella regione è il gatto," ecc. Invece, viene insegnato che l'intera rappresentazione dell'immagine dovrebbe corrispondere all'intera rappresentazione del testo.
- Poiché l'architettura di CLIP è un Vision Transformer sul lato immagine e un transformer del testo sul lato testo—entrambi formano encoder separati—non c'è un modulo di cross-attention che allinei nativamente le patch ai token. Invece, si ottiene una self-attention puramente in ciascuna torre, più una proiezione finale per gli embedding globali dell'immagine o del testo.
In breve, questa è una visualizzazione euristica. Il fatto che un dato embedding di patch possa essere vicino o lontano da un particolare embedding di token è in qualche modo emergente. È più un trucco di interpretabilità post-hoc che un'"attenzione" robusta o ufficiale del modello.
tagPerché Potrebbe Emergere l'Allineamento Locale?
Quindi perché potremmo a volte notare allineamenti locali a livello parola-patch? Ecco il punto: anche se CLIP è addestrato su un obiettivo contrastivo globale immagine-testo, usa comunque self-attention (negli encoder di immagini basati su ViT) e layer transformer (per il testo). All'interno di questi layer di self-attention, diverse parti delle rappresentazioni dell'immagine possono interagire tra loro, proprio come fanno le parole nelle rappresentazioni del testo. Attraverso l'addestramento su enormi dataset di immagini-testo, il modello sviluppa naturalmente strutture latenti interne che lo aiutano a far corrispondere le immagini complessive alle loro descrizioni testuali corrispondenti.



L'allineamento locale può apparire in queste rappresentazioni latenti per almeno due ragioni:
- Modelli di co-occorrenza: Se un modello vede molte immagini di "cani" accanto a molte immagini di "gatti" (spesso etichettate o descritte con queste parole), può imparare caratteristiche latenti che corrispondono approssimativamente a questi concetti. Quindi l'embedding per "cane" potrebbe diventare vicino a patch locali che rappresentano una forma o una texture simile a quella di un cane. Questo non è supervisionato esplicitamente a livello di patch, ma emerge dall'associazione ripetuta tra coppie di immagini/testo di cani.
- Self-attention: Nei Vision Transformers, i patch prestano attenzione l'uno all'altro. I patch distintivi (come il muso di un cane) possono finire per avere una "firma" latente coerente, poiché il modello sta cercando di produrre una singola rappresentazione globalmente accurata dell'intera scena. Se questo aiuta a minimizzare la perdita contrastiva complessiva, verrà rafforzato.
tagAnalisi Teorica
L'obiettivo di apprendimento contrastivo di CLIP mira a massimizzare la similarità del coseno tra coppie immagine-testo corrispondenti mentre la minimizza per le coppie non corrispondenti. Assumiamo che gli encoder di testo e immagine producano rispettivamente embedding di token e patch:
La similarità globale può essere rappresentata come un aggregato di similarità locali:
Quando specifiche coppie token-patch si verificano frequentemente nei dati di training, il modello rafforza la loro similarità attraverso aggiornamenti graduali del gradiente:
, dove è il numero di co-occorrenze. Questo porta a un aumento significativo di , promuovendo un allineamento locale più forte per queste coppie. Tuttavia, la perdita contrastiva distribuisce gli aggiornamenti del gradiente tra tutte le coppie token-patch, limitando la forza degli aggiornamenti per qualsiasi coppia specifica:
Questo impedisce un significativo rafforzamento delle similarità individuali token-patch.
tagConclusione
Le visualizzazioni token-patch di CLIP sfruttano un allineamento incidentale ed emergente tra le rappresentazioni di testo e immagine. Questo allineamento, sebbene intrigante, deriva dall'addestramento contrastivo globale di CLIP e manca della robustezza strutturale necessaria per una spiegabilità precisa e affidabile. Le visualizzazioni risultanti mostrano spesso rumore e inconsistenza, limitando la loro utilità per applicazioni interpretative approfondite.

I modelli a interazione tardiva come ColBERT e ColPali affrontano queste limitazioni incorporando architetturalmente allineamenti espliciti e dettagliati tra token di testo e patch di immagini. Elaborando le modalità in modo indipendente ed eseguendo calcoli di similarità mirati in una fase successiva, questi modelli garantiscono che ogni token di testo sia significativamente associato alle regioni dell'immagine pertinenti.







