Cours 5 sur 7 · AI COURSE

Multimodal

Faire travailler ensemble image, texte, audio et vidéo : fusion, CLIP, modèles vision-langage, parole, génération texte→image, vidéo et modèles unifiés.

7 chapitres8 blocs7 nouveaux
Un chapitre, plusieurs niveauxChaque chapitre empile les blocs du même sujet, du plus accessible au plus rigoureux.
BasesIntuition, calcul détaillé, premier TP.
Orienté LLMLe même sujet vu depuis les grands modèles.
RigueurÉnoncés, preuves, niveau master.
NouveauBlocs écrits pour combler ce cours.
Le Carnet décideLe planning indique, séance par séance, quels blocs lire.

Partie 1

Fondations

Mettre deux modalités dans le même espace.

Chapitre 1

Fusionner des modalités

1 bloc · Nouveau

1.1Nouveaunouveau
1.1

Fusionner des modalités : précoce, tardive, croisée

Prérequis : DL 10.2 (MLP), DL 20.1 (attention), CV 7.1 (ViT), NLP 3.1 (embeddings) · Notions : modalité, encodeur par modalité, espace partagé, fusion précoce, tardive, intermédiaire, attention croisée, produit bilinéaire, alignement contre fusion, modalité manquante, déséquilibre entre modalités

Cours
Ce qu'est une modalité

Une modalité est un type de signal : texte, image, audio, vidéo, mais aussi série temporelle de capteurs, graphe moléculaire, tableau. Chacune a sa structure (séquence de jetons, grille de pixels, onde à 16 kHz) et donc son encodeur naturel : Transformer pour le texte, ViT ou CNN pour l'image (CV 7.1), réseau sur spectrogramme pour l'audio (MM 4.1). Le problème multimodal tient en une question : où et comment faire se rencontrer les représentations.

Deux objectifs différents
  • Aligner : mettre les modalités dans un espace commun où une image et sa légende ont des vecteurs proches. Sert à la recherche cross-modale (texte → image) et à la classification zéro-shot. C'est CLIP (MM 2.2).
  • Fusionner : combiner les informations pour une décision ou une génération qui a besoin des deux à la fois (répondre à une question sur une image, détecter une vidéo truquée où le son ne colle pas aux lèvres). C'est le cas des modèles vision-langage (MM 3.1).
Les trois niveaux de fusion

Fusion précoce (early fusion) : on concatène les caractéristiques (ou les jetons) dès l'entrée et un seul réseau traite le tout, f([xa;xb]). Il peut apprendre n'importe quelle interaction entre modalités. Coût : il faut des données appariées, et une modalité absente au test le perturbe fortement.

Fusion tardive (late fusion) : un modèle complet par modalité, on combine seulement leurs décisions, par exemple en moyennant les probabilités. Robuste, modulaire, chaque modèle s'entraîne sur ses propres données. Mais elle est aveugle aux interactions : si l'étiquette dépend d'une relation entre le son et l'image (le chien aboie-t-il sur cette image ?), aucun modèle unimodal ne peut la voir.

Fusion intermédiaire : chaque modalité est encodée séparément, puis les représentations se rencontrent au milieu du réseau. Trois mécanismes :

  • Concaténation de vecteurs suivie d'un MLP : simple, base de référence.
  • Interaction multiplicative : z=W(ha⊙hb) ou un produit bilinéaire ha⊤Mhb. Une addition ne peut pas exprimer « l'un ET l'autre » ; un produit, si. FiLM (2018) module chaque canal d'une modalité par un gain et un biais calculés depuis l'autre : γ(hb)⊙ha+β(hb).
  • Attention croisée (cross-attention) : les jetons d'une modalité forment les requêtes, ceux de l'autre les clés et valeurs (DL 20.1). Chaque mot de la question « regarde » les patchs de l'image qui le concernent. C'est le mécanisme de Flamingo, de Perceiver et des décodeurs de diffusion texte→image (MM 5.1).

Option la plus récente : tout en jetons. L'image est transformée en jetons (patchs projetés, ou jetons discrets d'un tokeniseur visuel), concaténés aux jetons de texte, et un seul Transformer traite la séquence : une fusion précoce à l'échelle des jetons (MM 7.1).

Les difficultés propres au multimodal
  • Déséquilibre entre modalités : le réseau apprend d'abord la modalité la plus facile et néglige l'autre (modality laziness). Parades : abandonner aléatoirement une modalité à l'entraînement (modality dropout), pertes auxiliaires par modalité.
  • Modalité manquante au test : capteur en panne, vidéo sans son. Il faut l'avoir simulée à l'entraînement.
  • Alignement temporel : la parole et les lèvres, les sous-titres et l'image ne sont pas toujours synchronisés.
  • Données appariées rares : il y a beaucoup d'images et beaucoup de textes, beaucoup moins de paires propres. D'où l'intérêt de partir d'encodeurs unimodaux pré-entraînés et de n'apprendre que le « pont » entre eux.
Schéma du coursOù les modalités se rencontrent : à l'entrée, au milieu, ou seulement à la décision.
précoceintermédiairetardive img son 1 réseau attentioncroisée moyenne interactions possibles : toutes → au milieu → aucune
Mon schémaDeux témoins d'un accident : interrogés séparément puis moyennés (tardive), on perd ce que seul le croisement révèle (« la voiture rouge klaxonnait »). Interrogés ensemble (précoce), ils se complètent ; mais si l'un est absent, l'interrogatoire déraille.
séparément A : « une voiture rouge » B : « un klaxon » qui klaxonnait ? inconnu ensemble « la rouge klaxonnait » interaction visible mais fragile si B manque
Exemple du cours

Pourquoi une somme ne suffit pas. Deux caractéristiques binaires a,b∈{−1,+1} (une par modalité), étiquette y=ab (vrai quand les deux modalités sont « d'accord »). Une fusion tardive cherche y≈g(a)+h(b). Sur les quatre cas (1,1)→1, (1,−1)→−1, (−1,1)→−1, (−1,−1)→1, on aurait g(1)+h(1)=1 et g(−1)+h(−1)=1, donc en sommant g(1)+g(−1)+h(1)+h(−1)=2 ; et g(1)+h(−1)=−1, g(−1)+h(1)=−1, donc la même somme vaut −2. Contradiction : aucune somme de fonctions unimodales ne représente ab. Un produit ha⊙hb ou un réseau qui voit les deux à la fois, si. C'est le XOR du perceptron (DL 9.1), entre modalités.

Exemple inventé

Détecter un doublage raté. Vidéo d'interview, piste audio en français : la voix est-elle synchronisée avec les lèvres ? Un modèle image seule voit des lèvres qui bougent, un modèle audio seul entend de la parole : chacun dit « normal ». Seule une fusion qui met en relation les jetons vidéo et audio au même instant (attention croisée temporelle) peut détecter le décalage. Si on veut aussi que le système marche sur des vidéos sans son, il faut l'entraîner avec de l'audio masqué une fois sur cinq.

TP · Précoce contre tardive, mesuré
  1. Génère deux modalités synthétiques dont l'étiquette dépend d'un signal par modalité et d'une interaction entre elles.
  2. Compare fusion tardive (deux MLP, moyenne des probabilités), fusion précoce (concaténation + MLP) et fusion par produit (termes aibj + régression logistique).
  3. Supprime l'audio au test et compare la robustesse des deux approches.
Solution commentée
import numpy as np, warnings
from sklearn.neural_network import MLPClassifier
from sklearn.linear_model import LogisticRegression
warnings.filterwarnings("ignore")
rng = np.random.default_rng(0)

# Deux modalités synthétiques : « image » (8 dim) et « audio » (8 dim).
# Étiquette = un signal présent dans chaque modalité séparément + une interaction (XOR) entre elles.
def donnees(n):
    a = rng.normal(size=(n, 8)); b = rng.normal(size=(n, 8))
    logit = 1.0 * a[:, 0] + 1.0 * b[:, 0] + 1.5 * np.sign(a[:, 1]) * np.sign(b[:, 1])
    y = (logit + 0.5 * rng.normal(size=n) > 0).astype(int)
    return a, b, y
A, B, y = donnees(4000); At, Bt, yt = donnees(2000)

# fusion tardive : un modèle par modalité, on moyenne les probabilités
ma = MLPClassifier((32,), max_iter=800, random_state=0).fit(A, y)
mb = MLPClassifier((32,), max_iter=800, random_state=0).fit(B, y)
p_tard = (ma.predict_proba(At)[:, 1] + mb.predict_proba(Bt)[:, 1]) / 2
acc_tard = np.mean((p_tard > 0.5) == yt)

# fusion précoce : on concatène les caractéristiques, un seul modèle voit les deux
me = MLPClassifier((32,), max_iter=800, random_state=0).fit(np.hstack([A, B]), y)
acc_prec = me.score(np.hstack([At, Bt]), yt)

# fusion par produit (interaction multiplicative explicite) : a ⊗ b puis linéaire
prod = lambda a, b: np.einsum("ni,nj->nij", a, b).reshape(len(a), -1)
mp = LogisticRegression(max_iter=3000).fit(np.hstack([A, B, np.sign(prod(A, B))]), y)
acc_prod = mp.score(np.hstack([At, Bt, np.sign(prod(At, Bt))]), yt)

print(f"fusion tardive {acc_tard:.3f} | précoce (concat + MLP) {acc_prec:.3f} | produit + linéaire {acc_prod:.3f}")
assert acc_prec > acc_tard + 0.1

# robustesse à une modalité manquante (audio remplacé par des zéros au test)
acc_prec_manq = me.score(np.hstack([At, np.zeros_like(Bt)]), yt)
acc_tard_manq = np.mean((ma.predict_proba(At)[:, 1] > 0.5) == yt)     # la fusion tardive peut simplement ignorer l'audio
print(f"audio manquant : précoce {acc_prec_manq:.3f} | tardive (image seule) {acc_tard_manq:.3f}")
assert acc_tard_manq > acc_prec_manq

Résultats attendus : environ 0,63 pour la fusion tardive, 0,85 pour la précoce et 0,93 pour le produit explicite, qui a « reçu » la bonne forme d'interaction. Quand l'audio disparaît, la fusion précoce chute plus bas que le modèle image seul de la fusion tardive : chaque architecture paie quelque part. Prolongement : entraîne le modèle précoce avec l'audio mis à zéro sur 20 % des exemples (modality dropout) et refais la mesure.

À retenir

  • Aligner (espace commun, CLIP) et fusionner (décision conjointe, VLM) sont deux objectifs distincts.
  • Précoce : toutes les interactions, fragile aux absences ; tardive : robuste, aveugle aux interactions.
  • Au milieu : concaténation, interactions multiplicatives (FiLM), attention croisée.
  • Pièges : modalité paresseuse, modalité manquante, désynchronisation, rareté des paires.

Chapitre 2

ViT et CLIP

2 blocs · Bases → Nouveau

2.1Basesex-DLZ 45
2.1

Multimodalité : Vision Transformer et CLIP

Prérequis : blocs MATH 2.1, DL 5.2, CV 2.1 et DL 23.1 · Notions : découpage en patchs, projection linéaire, jeton de classe, ViT, apprentissage contrastif, espace d'embedding commun, perte InfoNCE symétrique, température apprise, classification zéro-coup, modèles vision-langage, audio (spectrogrammes, Whisper)

Cours
Le Vision Transformer (Dosovitskiy et al., 2020)

Idée : traiter une image comme une phrase. On la découpe en patchs carrés (16×16 pixels), on aplatit chaque patch (16×16×3 = 768 nombres) et on le projette linéairement en un vecteur de dimension D : ce sont les « jetons » de l'image. Une image 224×224 donne (224/16)2=196 jetons. On ajoute des positions apprises et un jeton spécial [CLS] dont l'état final sert de résumé pour la classification. Puis un Transformer encodeur standard (bloc DL 23.1).

Le ViT a beaucoup moins de biais inductifs qu'un CNN (pas de localité imposée, bloc CV 2.1) : il est moins bon avec peu de données, mais meilleur avec beaucoup, et s'intègre naturellement avec le texte. La projection des patchs est exactement une convolution de noyau 16 et de pas 16.

CLIP (Radford et al., OpenAI, 2021)

400 millions de paires (image, légende) collectées sur le web. Deux encodeurs : un pour l'image (ViT), un pour le texte (Transformer). Chacun produit un vecteur, normalisé à norme 1. Objectif : que l'image et sa légende aient des vecteurs proches, et que les paires non correspondantes soient éloignées.

Pour un lot de N paires, on calcule la matrice N×N des similarités cosinus (bloc MATH 2.1), divisées par une température τ apprise :

Sij=ui⋅tjτ,L=12(CE(S,diag)⏟image→texte+CE(S⊤,diag)⏟texte→image)

Chaque ligne est un problème de classification à N classes dont la bonne réponse est sur la diagonale (bloc DL 5.2). C'est la perte InfoNCE (contrastive). Les N−1 autres légendes du lot servent d'exemples négatifs gratuits ; d'où l'intérêt des très grands lots (32 768).

La classification zéro-coup

Pour classer une image parmi des catégories jamais vues à l'entraînement : écrire une phrase par catégorie (« une photo de chien », « une photo de chat »…), encoder ces phrases, et choisir celle dont le vecteur est le plus proche de celui de l'image. Aucun exemple étiqueté nécessaire. CLIP égalait ResNet-50 entraîné sur ImageNet, sans avoir vu une seule de ses étiquettes.

CLIP sert aussi d'encodeur de texte pour la diffusion (bloc DL 27.1), et de base aux recherches d'images par texte.

Les modèles vision-langage et l'audio

Pour qu'un LLM « voie » : un encodeur d'images (souvent un ViT de type CLIP) produit des jetons visuels, une petite projection les amène dans la dimension du LLM, et on les insère dans la séquence au milieu des jetons de texte. Le LLM les traite comme les autres. Même logique pour l'audio : le son est converti en spectrogramme log-mel (une image temps-fréquence), découpé ou convolué en jetons ; Whisper (encodeur-décodeur entraîné sur 680 000 heures) transcrit ainsi la parole. Les modèles les plus récents sont nativement multimodaux : tous les types de jetons dans un même Transformer.

Fin de l'aperçu

Débloquer la suite