Nouvelles
Modèles
Des produits
keyboard_arrow_down
Lecteur
Lisez les URL et effectuez des recherches sur le Web pour de meilleurs LLM de base.
Intégrations
Intégrations multimodales et multilingues de classe mondiale.
Reclasseur
Récupérateur neuronal de classe mondiale pour maximiser la pertinence de la recherche.
Recherche profonde
Recherchez, lisez et raisonnez jusqu'à trouver la meilleure réponse.
Plus
keyboard_arrow_down
Classificateur
Classification à zéro plan et à quelques plans pour l'image et le texte.
Segmenteur
Coupez un long texte en morceaux et effectuez la tokenisation.

Documentation de l'API
Génération automatique de code pour votre IDE ou LLM copilote
open_in_new


Entreprise
keyboard_arrow_down
À propos de nous
Contacter le service commercial
Programme de stage
Rejoignez-nous
open_in_new
Télécharger le logo
open_in_new
termes et conditions


Se connecter
login
Comprendre le Code
Est-ce une Explicabilité Significative ?
Pourquoi l'Alignement Local Pourrait-il Émerger ?
Analyse théorique
Conclusion
Blog technique
janvier 07, 2025

Alignement global contrastif texte-image et alignement local token-patch

CLIP peut visualiser les similarités entre les tokens et les patches, cependant, il s'agit davantage d'une astuce d'interprétabilité post-hoc que d'une véritable "attention" robuste ou officielle du modèle. Voici pourquoi.
Han Xiao
Han Xiao • 6 minutes lues

Lors d'expérimentations avec des modèles de type ColPali, l'un de nos ingénieurs a créé une visualisation en utilisant notre modèle jina-clip-v2 récemment publié. Il a cartographié la similarité entre les embeddings de tokens et les embeddings de patchs pour des paires image-texte données, créant des superpositions de cartes de chaleur qui ont produit des aperçus visuels intrigants.

Malheureusement, il ne s'agit que d'une visualisation heuristique - pas d'un mécanisme explicite ou garanti. Bien que l'alignement contrastif global de type CLIP puisse (et souvent) créer incidemment des alignements locaux approximatifs entre les patchs et les tokens, il s'agit d'un effet secondaire non intentionnel plutôt que d'un objectif délibéré du modèle. Laissez-moi expliquer pourquoi.

tagComprendre le Code

Google Colab

Examinons ce que fait le code à haut niveau. Notez que jina-clip-v2 n'expose en réalité aucune API pour accéder aux embeddings au niveau des tokens ou des patchs par défaut - cette visualisation a nécessité quelques modifications post-hoc pour fonctionner.

Calcul des embeddings au niveau des mots

En définissant model.text_model.output_tokens = True, l'appel à text_model(x=...,)[1] renverra un deuxième élément (batch_size, seq_len, embed_dim) pour les embeddings des tokens. Il prend donc une phrase en entrée, la tokenise avec le tokenizer Jina CLIP, puis regroupe les tokens de sous-mots en "mots" en faisant la moyenne des embeddings de tokens correspondants. Il détecte le début d'un nouveau mot en vérifiant si la chaîne de token commence par le caractère _ (typique des tokenizers basés sur SentencePiece). Il produit une liste d'embeddings au niveau des mots et une liste de mots (ainsi "Dog" est un embedding, "and" est un embedding, etc.).

Calcul des embeddings au niveau des patchs

Pour la tour d'image, vision_model(..., return_all_features=True) renverra (batch_size, n_patches+1, embed_dim), où le premier token est le token [CLS]. À partir de là, le code extrait les embeddings pour chaque patch (c'est-à-dire les tokens de patch du transformateur de vision). Il redimensionne ensuite ces embeddings de patch en une grille 2D, patch_side × patch_side, qui est ensuite sur-échantillonnée pour correspondre à la résolution de l'image d'origine.

Visualisation de la similarité mot-patch

Le calcul de similarité et la génération ultérieure de carte de chaleur sont des techniques d'interprétabilité "post-hoc" standard : vous sélectionnez un embedding de texte, calculez la similarité cosinus avec chaque embedding de patch, puis générez une carte de chaleur montrant quels patchs ont la plus grande similarité avec cet embedding de token spécifique. Enfin, il parcourt chaque token de la phrase, met ce token en gras à gauche et superpose la carte de chaleur basée sur la similarité sur l'image d'origine à droite. Toutes les images sont compilées en un GIF animé.

tagEst-ce une Explicabilité Significative ?

D'un point de vue purement code, oui, la logique est cohérente et produira une carte de chaleur pour chaque token. Vous obtiendrez une série d'images qui mettent en évidence les similarités des patchs, donc le script "fait ce qu'il dit".

En regardant les exemples ci-dessus, nous voyons que des mots comme moon et branches semblent bien s'aligner avec leurs patchs visuels correspondants dans l'image d'origine. Mais voici la question clé : s'agit-il d'un alignement significatif, ou voyons-nous simplement une coïncidence heureuse ?

C'est une question plus profonde. Pour comprendre les mises en garde, rappelons comment CLIP est entraîné :

Diagram of JINA-CLIP-V2 model showing stages from input to output for English and multilingual text processing.
Jina-CLIP v2 combine un encodeur de texte (Jina XLM-RoBERTa, 561M paramètres) et un encodeur de vision (EVA02-L14, 304M paramètres). Chaque carré coloré à droite représente une phrase complète ou une image dans le batch - pas des tokens ou des patchs individuels.
  • CLIP utilise un alignement contrastif global entre une image entière et un texte entier. Pendant l'entraînement, l'encodeur d'image produit un seul vecteur (représentation groupée), et l'encodeur de texte produit un autre vecteur unique ; CLIP est entraîné pour que ceux-ci correspondent pour les paires texte-image correspondantes et ne correspondent pas dans le cas contraire.
  • Il n'y a aucune supervision explicite au niveau 'le patch X correspond au token Y'. Le modèle n'est pas directement entraîné à mettre en évidence "cette région de l'image est le chien, cette région est le chat", etc. Au lieu de cela, on lui apprend que la représentation de l'image entière doit correspondre à la représentation du texte entier.
  • Comme l'architecture de CLIP est un Vision Transformer côté image et un transformateur de texte côté texte—formant tous deux des encodeurs séparés—il n'y a pas de module d'attention croisée qui aligne naturellement les patchs aux tokens. Au lieu de cela, vous obtenez purement de l'auto-attention dans chaque tour, plus une projection finale pour les embeddings globaux d'image ou de texte.

En bref, c'est une visualisation heuristique. Le fait qu'un embedding de patch donné puisse être proche ou éloigné d'un embedding de token particulier est quelque peu émergent. C'est plus une astuce d'interprétabilité post-hoc qu'une "attention" robuste ou officielle du modèle.

tagPourquoi l'Alignement Local Pourrait-il Émerger ?

Alors pourquoi pourrions-nous parfois repérer des alignements locaux au niveau mot-patch ? Voici la chose : même si CLIP est entraîné sur un objectif contrastif global image-texte, il utilise toujours l'auto-attention (dans les encodeurs d'image basés sur ViT) et les couches transformer (pour le texte). Au sein de ces couches d'auto-attention, différentes parties des représentations d'images peuvent interagir entre elles, tout comme le font les mots dans les représentations de texte. Grâce à l'entraînement sur des ensembles de données massifs image-texte, le modèle développe naturellement des structures latentes internes qui l'aident à faire correspondre les images globales à leurs descriptions textuelles correspondantes.

L'alignement local peut apparaître dans ces représentations latentes pour au moins deux raisons :

  1. Schémas de co-occurrence : Si un modèle voit de nombreuses images de "chiens" à côté de nombreuses images de "chats" (souvent étiquetées ou décrites avec ces mots), il peut apprendre des caractéristiques latentes qui correspondent approximativement à ces concepts. Ainsi, l'embedding pour "chien" pourrait se rapprocher des patchs locaux qui représentent une forme ou une texture de chien. Ce n'est pas explicitement supervisé au niveau du patch, mais émerge de l'association répétée entre les paires image/texte de chiens.
  2. Self-attention : Dans les Vision Transformers, les patches s'attendent mutuellement. Les patches distinctifs (comme le visage d'un chien) peuvent finir par avoir une "signature" latente cohérente, car le modèle essaie de produire une seule représentation globalement précise de toute la scène. Si cela aide à minimiser la perte contrastive globale, cela sera renforcé.

tagAnalyse théorique

L'objectif d'apprentissage contrastif de CLIP vise à maximiser la similarité cosinus entre les paires image-texte correspondantes tout en la minimisant pour les paires non correspondantes. Supposons que les encodeurs de texte et d'image produisent respectivement des embeddings de tokens et de patches :

ui=1M∑m=1Mui,m,vi=1K∑k=1Kvi,k\mathbf{u}_i = \frac{1}{M} \sum_{m=1}^M \mathbf{u}_{i,m}, \quad \mathbf{v}_i = \frac{1}{K} \sum_{k=1}^K \mathbf{v}_{i,k}ui​=M1​m=1∑M​ui,m​,vi​=K1​k=1∑K​vi,k​

La similarité globale peut être représentée comme un agrégat de similarités locales :

sim(ui,vi)=1MK∑m=1M∑k=1Kui,m⊤vi,k\text{sim}(\mathbf{u}_i, \mathbf{v}_i) = \frac{1}{MK} \sum_{m=1}^M \sum_{k=1}^K \mathbf{u}_{i,m}^\top \mathbf{v}_{i,k}sim(ui​,vi​)=MK1​m=1∑M​k=1∑K​ui,m⊤​vi,k​

Lorsque des paires token-patch spécifiques co-occurrent fréquemment dans les données d'entraînement, le modèle renforce leur similarité par des mises à jour graduelles cumulatives :

Δum∗∝∑c=1Cvk∗(c),Δvk∗∝∑c=1Cum∗(c)\Delta \mathbf{u}_{m^*} \propto \sum_{c=1}^C \mathbf{v}_{k^*}^{(c)}, \quad \Delta \mathbf{v}_{k^*} \propto \sum_{c=1}^C \mathbf{u}_{m^*}^{(c)}Δum∗​∝c=1∑C​vk∗(c)​,Δvk∗​∝c=1∑C​um∗(c)​

, où CCC est le nombre de co-occurrences. Cela conduit à une augmentation significative de um∗⊤vk∗\mathbf{u}_{m^*}^\top \mathbf{v}_{k^*}um∗⊤​vk∗​, favorisant un alignement local plus fort pour ces paires. Cependant, la perte contrastive distribue les mises à jour du gradient sur toutes les paires token-patch, limitant la force des mises à jour pour une paire spécifique :

∂L∂um∝−∑k=1Kvk⋅(exp⁡(u⊤v/τ)∑j=1Nexp⁡(u⊤vj/τ))\frac{\partial \mathcal{L}}{\partial \mathbf{u}_{m}} \propto -\sum_{k=1}^K \mathbf{v}_k \cdot \left( \frac{\exp(\mathbf{u}^\top \mathbf{v} / \tau)}{\sum_{j=1}^N \exp(\mathbf{u}^\top \mathbf{v}_j / \tau)} \right)∂um​∂L​∝−k=1∑K​vk​⋅(∑j=1N​exp(u⊤vj​/τ)exp(u⊤v/τ)​)

Cela empêche un renforcement significatif des similarités individuelles token-patch.

tagConclusion

Les visualisations token-patch de CLIP capitalisent sur un alignement fortuit et émergent entre les représentations textuelles et visuelles. Cet alignement, bien qu'intriguant, découle de l'entraînement contrastif global de CLIP et manque de la robustesse structurelle nécessaire pour une explicabilité précise et fiable. Les visualisations qui en résultent présentent souvent du bruit et des incohérences, limitant leur utilité pour des applications interprétatives approfondies.

What is ColBERT and Late Interaction and Why They Matter in Search?
Jina AI's ColBERT on Hugging Face has set Twitter abuzz, bringing a fresh perspective to search with its 8192-token capability. This article unpacks the nuances of ColBERT and ColBERTv2, showcasing their innovative designs and why their late interaction feature is a game-changer for search.
Jina AIHan Xiao

Les modèles d'interaction tardive comme ColBERT et ColPali répondent à ces limitations en intégrant architecturalement des alignements explicites et détaillés entre les tokens de texte et les patches d'image. En traitant les modalités indépendamment et en effectuant des calculs de similarité ciblés à un stade ultérieur, ces modèles garantissent que chaque token de texte est associé de manière significative aux régions d'image pertinentes.

Catégories:
Blog technique
rss_feed
Des bureaux
location_on
Sunnyvale, Californie
710 Lakeway Dr, Ste 200, Sunnyvale, CA 94085, États-Unis
location_on
Berlin, Allemagne (siège social)
Prinzessinnenstraße 19-20, 10969 Berlin, Allemagne
location_on
Pékin, Chine
Niveau 5, bâtiment 6, n° 48, rue Haidian Ouest, Pékin, Chine
location_on
Shenzhen, en Chine
402 étage 4, bâtiment technologique Fu'an, Shenzhen, Chine
Fondation Recherche
Lecteur
Intégrations
Reclasseur
Recherche profonde
Classificateur
Segmenteur
Documentation de l'API
Obtenir la clé API Jina
Limite de taux
Statut de l'API
Entreprise
À propos de nous
Contacter le service commercial
Rédaction
Programme de stage
Rejoignez-nous
open_in_new
Télécharger le logo
open_in_new
Termes
Sécurité
termes et conditions
Confidentialité
Gérer les cookies
email
Jina AI © 2020-2025.