Public cible
Débutants, étudiants et professionnels qui souhaitent acquérir une pratique structurée dans ce domaine.
Concevoir, évaluer et mettre en service un modèle : le raisonnement derrière les métriques, la discipline du pipeline, les limites des grands modèles, la surveillance en production — et ce que le règlement européen sur l'IA impose réellement, calendrier à jour.
Débutants, étudiants et professionnels qui souhaitent acquérir une pratique structurée dans ce domaine.
Comprendre les notions essentielles et les appliquer dans un projet vérifiable.
Aucune connaissance préalable n’est strictement obligatoire ; les prérequis détaillés sont précisés dans les ateliers.
Tous niveaux
La validation repose sur les évaluations actives et les livrables pratiques du cours.
Un ordinateur, un navigateur et les outils indiqués dans le premier atelier sont suffisants pour commencer.
Construire un pipeline reproductible et interpréter sa matrice de confusion.
Obligatoire ConsulterÉvaluer un modèle et vérifier sa conformité au règlement européen sur l'IA.
Obligatoire ConsulterConstruire un pipeline reproductible et interpréter sa matrice de confusion.
Obligatoire ConsulterÉvaluer un modèle et vérifier sa conformité au règlement européen sur l'IA.
Obligatoire ConsulterConstruire un pipeline reproductible et interpréter sa matrice de confusion.
Obligatoire ConsulterÉvaluer un modèle et vérifier sa conformité au règlement européen sur l'IA.
Obligatoire ConsulterConstruire un pipeline reproductible et interpréter sa matrice de confusion.
Obligatoire ConsulterÉvaluer un modèle et vérifier sa conformité au règlement européen sur l'IA.
Obligatoire ConsulterConstruire un pipeline reproductible et interpréter sa matrice de confusion.
Obligatoire ConsulterÉvaluer un modèle et vérifier sa conformité au règlement européen sur l'IA.
Obligatoire ConsulterUn modèle n'apprend que ce qu'on lui montre. Toute la difficulté tient en une phrase : construire un jeu de données qui reflète le problème réel.
Une caractéristique (feature, variable explicative) est une colonne mesurable. Une étiquette (label, target, variable expliquée) est ce qu'on cherche à prédire. Un modèle n'apprend que des corrélations : il ne comprend ni le métier, ni le contexte, ni les causes.
Trois jeux de données, trois rôles, et l'ordre compte :
Réutiliser le jeu de test pour ajuster un modèle, c'est l'annuler. À force de regarder ses résultats, on l'a fait devenir un jeu de validation sous un autre nom : le score affiché est alors optimiste et ne reflète plus rien de la production.
Une fuite, c'est quand une caractéristique du test apparaît dans les données d'entraînement. Exemple : prédire si un client résilie et utiliser la variable « a résilié le mois dernier ». Le modèle obtient un score parfait et ne sert à rien, parce que l'information n'existait pas au moment de la prédiction.
C'est l'erreur la plus coûteuse du domaine : elle produit un score flatteur et un modèle inutilisable. On la détecte en se demandant, pour chaque variable : étais-ce réellement disponible au moment de la décision ?
Une métrique mal choisie est un objectif mal placé. L'exactitude (accuracy) est le premier réflexe, et c'est presque toujours le mauvais.
VP / (VP + FP). À
privilégier quand un faux positif coûte cher.VP / (VP + FN). À privilégier
quand un faux négatif coûte cher.(VP + VN) / total.
Trompeuse sur classes déséquilibrées : un détecteur de
panne qui répond toujours « rien » obtient 99 %
d'exactitude sur une base sans panne.Aucune métrique n'est universelle : le bon choix dépend du coût réel de chaque erreur, qui est une décision métier et jamais une décision technique.
Le pipeline n'est pas une question de style : c'est ce qui garantit que le prétraitement appris sur les données d'entraînement s'applique ensuite exactement de la même façon à la production.
Un scaler standardization doit calculer sa moyenne et son écart-type sur le jeu d'entraînement seulement. S'il voit aussi le test, il a laissé une information du test s'infiltrer dans l'apprentissage, et le score_final est faux. Enpipeline, chaque transformation est ajustée puis gelée : impossible d'oublier une étape.
Le geste à prendre :
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
pipeline = Pipeline([
("scaler", StandardScaler()),
("model", LogisticRegression(max_iter=1000)),
])
pipeline.fit(X_train, y_train)
On n'appelle fit_transform que dans
fit. En validation croisée,
cross_val_score réajuste le scaler sur chaque
pli : c'est exactement le comportement voulu.
Un vrai jeu de données mélange des colonnes numériques et
des colonnes textuelles. ColumnTransformer
applique une branche de traitement à chaque type et les
recolle :
from sklearn.compose import ColumnTransformer
pre = ColumnTransformer([
("num", StandardScaler(), ["age", "revenu"]),
("cat", OneHotEncoder(handle_unknown="ignore"), ["ville"]),
])
handle_unknown="ignore" n'est pas
facultatif : sans lui, une ville inconnue vue à la
production provoque une erreur, alors qu'elle ne peut pas
faire échouer la production.
Couper un jeu de données en deux en gaspille une ressource
Précieuse : l'échantillon ne sera pas repris. La validation croisée en k plis
répète l'entraînement k fois : chaque pli
sert une fois de test, les autres d'entraînement. On obtient
une estimation plus stable qu'un découpage unique.
from sklearn.model_selection import cross_val_score, StratifiedKFold
from sklearn.model_selection import GridSearchCV
cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
scores = cross_val_score(pipeline, X, y, cv=cv, scoring="f1")
StratifiedKFold plutôt que KFold en
classification : il conserve la proportion de classes dans
chaque pli, ce qui évite un pli sans aucun positif.
random_state fixe le hasard : sans lui, deux
exécutions ne donnent pas le même score et l'expérimentation
devient ininterprétable.
Les hyperparamètres ne sont pas appris : ils sont choisis. On les nomme avec une double barre pour que la grille s'écrive dans l'espace des étapes du pipeline :
grille = {
"model__C": [0.01, 0.1, 1, 10],
"model__class_weight": [None, "balanced"],
}
rech = GridSearchCV(pipeline, grille, cv=cv, scoring="f1", n_jobs=-1)
rech.fit(X_train, y_train)
print(rech.best_params_, rech.best_score_)
best_score_ et
le prendre pour une performance :
best_score_ est déjà optimiste, car il
retient le maximum d'une série d'essais. Il faut
évaluer le modèle choisi sur un jeu test qui n'a jamais
servi.Un jeu d'entraînement hérité d'un historique discriminatoire produit un modèle qui reproduit cette discrimination, avec un score excellent. La performance mesurée ne dit rien de l'équité.
On ne « corrige » pas un biais en changeant d'algorithme. On agit en amont et à l'aval :
Baisser le seuil de décision détecte plus de vrais positifs et produit plus de faux positifs. Ce n'est ni un bug ni un réglage technique : c'est une décision sur le coût relative de chaque erreur, à prendre avec le métier, et à écrire.
Un modèle à 94 % d'exactitude peut coûter plus cher qu'un modèle à 88 % : inférence coûteuse, maintenance, explication obligatoire, reprise d'une mauvaise décision. Un projet se juge sur un ensemble de critères, dont le score n'est qu'un.
La vraie question n'est pas « le modèle est-il exact ? » mais « quand il se trompe, a-t-il tort avec confiance ? ». On mesure cela par la calibration : des prédictions annoncées à 80 % doivent être correctes environ 80 % du temps. Un modèle non calibré inspire une confiance injustifiée, et c'est ainsi que naissent les mauvaises décisions automatiques.
Un réseau de neurones est une composition de fonctions simples. Chaque couche transforme sa sortie, et l'ensemble compose une fonction plus riche.
Une couche calcule une somme pondérée puis lui applique une activation non linéaire. C'est tout. L'astuce est là : sans fonction d'activation non linéaire, empiler des couches ne donnerait qu'une seule transformation linéaire, donc l'équivalent d'une seule couche.
max(0, x) — simple, efficace,
la valeur par défaut en vision.Le gradient est la pente locale de la perte : il indique dans quelle direction augmenter ou réduire un poids. La descente de gradient suit cette pente, par petits pas, jusqu'à un minimum.
En profondeur, le gradient peut s'annuler en remontant les couches (gradient qui disparaît) ou devenir gigantesque (gradient qui explose). Quatre réponses :
Un réseau profond a beaucoup plus de paramètres que de données. Sans contrainte, il apprend le bruit.
Une convolution applique un petit filtre glissant sur l'image et détecte un motif local, quelles que soit sa position. Empiler des couches compose des motifs simples (bords) en motifs complexes (textures, parties, objets). Deux propriétés expliquent son succès : la réutilisation des poids — un même filtre sert partout, donc bien moins de paramètres — et l'invariance par translation.
Entraîner un grand réseau de zéro exige beaucoup de données. On part plutôt d'un modèle préentraîné sur un grand jeu (ImageNet, un corpus de textes) et on l'adapte :
Quand on n'a que quelques centaines d'exemples, cette démarche est la différence entre un modèle qui fonctionne et un modèle qui surapprend.
Un modèle ne manipule pas du texte : il manipule des nombres. Tout commence donc par une conversion.
Le tokenizer découpe le texte en unités, appelées jetons. Un mot peut être un jeton, une partie de mot, ou plusieurs mots réunis selon la ponctuation et la langue.
Les jetons. Chaque identifiant de jeton est associé à un vecteur de nombres que le réseau apprend l'est. Un mot n'a pas de sens isolé : « bank » désigne une banque ou une rive selon la phrase, et seul le contexte permet de le trancher.
La distance entre vecteurs reflète une similarité de sens, et c'est ce qui permet des usages comme le rapprochement automatique d'une question avec un document.
Les réseaux récurrents lisaient le texte mot à mot, ce qui rendait l'entraînement lent et la mémorisation longue difficile. Le transformer change la donne : il lit toute la séquence en une fois, en parallèle, grâce à l'attention.
L'attention répond à une question simple : quels mots de la phrase doivent regarder quels autres mots ? En « l'animal n'a pas croisé le rue parce qu'il était fatigué », « il » doit se rattacher à « l'animal », et non à « rue ».
Pour chaque mot, le mécanisme calcule trois vecteurs :
Le mécanisme compare chaque requête à toutes les clés pour obtenir des poids d'attention, puis fait une moyenne pondérée des valeurs. C'est ce qui permet à « il » de récupérer l'information de « l'animal » quelle que soit la distance entre les deux mots.
Un modèle de langage prédit le jeton suivant à partir des précédents. C'est tout. Cette unique idée suffit à produire de la traduction, du résumé, du code et des réponses.
Chaque jeton compare sa requête à tous les autres : le coût est quadratique en longueur de séquence. D'où les fenêtres d'attention tronquées, les versions à contexte long, et le fait qu'un contexte gigantesque n'est pas gratuit, ni en calcul, ni en mémoire, ni en latence.
Un grand modèle de langage est un prédicteur de texte. Il n'accède pas à une base de connaissances vérifiée, il ne raisonne pas sur des faits, et il ne « sait » pas ce qu'il ne sait pas.
Le modèle produit la suite la plus plausible, pas la suite vraie. Une citation d'article, une API ou un résumé inexistants sont donc parfaitement idiomatiques — et totalement faux. Il est essentiel d'écrire du contenu génératif dans l'ordre, de garder cette limite à l'esprit : sur un sujet qu'on ne maîtrise pas, la phrase produite est un indice, pas une preuve.
L'affinage consiste à réentraîner un modèle déjà entraîné sur vos données. Le RAG, lui, ne change aucune requête : il enrichit la requête avec des documents trouvés au moment de l'appel. En pratique, on commence par le RAG, car il est réversible : on retire les documents et le système revient à son état précédent, alors qu'un affinage est difficile à défaire.
On n'évalue pas un grand modèle à l'œil. Trois niveaux :
Un point de vigilance : fuite de données par la requête. Un modèle qui reçoit une question contenant une donnée personnelle peut la mémoriser. Aucune donnée personnelle ne part dans un modèle tiers sans base légale et information de la personne.
Un modèle non reproductible est un modèle qu'on ne peut ni corriger, ni auditer, ni migrer. La reproductibilité n'est pas pas une élégance technique : c'est la condition d'exploitation.
Une version non épinglée est une source d'irreproductibilité silencieuse. On verrouille les versions dans un fichier dédié et on s'appuie dessus.
Le résultat obtenu par un tiers ne dépend plus du jour où il a tourné, mais de la version déclarée. C'est aussi ce qui permet de diagnostiquer : sans trace figée, un score qui change n'a aucune explication possible.
Un modèle en production n'est pas fini. Il dérive, parce que le monde dérive.
La distribution des données d'entrée change : nouvelle campagne, nouveau matériel, nouvelle saisonnalité, changement d'habitude de consommation. Le modèle reçoit alors des entrées qu'il n'a jamais vues, et son exactitude réelle baisse sans qu'aucune alerte ne se déclenche, parce que tout continue de fonctionner techniquement.
La dérive de la performance est plus grave : elle vient du lien entre les entrées et la cible, qui se dégrade.
Une surveillance sans procédure n'est pas une surveillance. Le dispositif se résume à trois questions auxquelles il faut pouvoir répondre :
Sans réponse à la troisième question, la reprise d'activité peut prendre des jours. Le retour arrière doit être aussi immédiat que le déploiement.
Avant de publier, on statue sur ce qui doit rester vrai et donc être testé : un niveau de performance minimal, un comportement correct sur des cas limites, une latence maximale, un coût par requête, un seuil de disponibilité. Ces critères deviennent des tests automatiques : c'est la seule manière de les tenir dans la durée.
Le modèle n'est qu'une ligne :
Le premier projet qui réussit n'est pas le plus ambitieux, c'est celui qui répond à une question précise, avec une donnée disponible et un coût d'erreur connu. Trois critères de choix :
Et la question la plus rentable du début : une règle explicite suffit-elle ? Si un expert sait formuler la règle, un modèle est rarement nécessaire — il sera plus coûteux, moins lisible et moins maintenable qu'un tableau.
Le règlement européen sur l'intelligence artificielle est entré en vigueur le 1er août 2024. Il ne s'applique pas uniformément : il entre en vigueur par étapes, et un même système peut relever de plusieurs régimes à la fois.
| Date | Ce qui s'applique |
|---|---|
| 2 février 2025 | pratiques interdites et obligation de compétence IA |
| 2 août 2025 | modèles à usage général, gouvernance, sanctions |
| 2 août 2026 | application générale |
| 2 décembre 2026 | transparence : contenu de synthèse |
| 2 décembre 2027 | systèmes à haut risque de l'annexe III |
| 2 août 2028 | systèmes à haut risque intégrés à des produits réglementés |
Les deux dernières lignes ne figuraient pas dans le calendrier d'origine : elles ont été reculées par le « AI Omnibus », adopté à l'été 2026. Un cours, un article des études antérieures à cette adoption annoncent encore l'échéance d'août 2026 pour les systèmes à haut risque : cette information est périmée. C'est le meilleur exemple du risque que représente une formation non mise à jour.
Le règlement vise le fournisseur, qui commercialise un système ou un modèle sous son nom, et le déployeur, qui l'utilise dans son activité professionnelle. Un même acteur peut être l'un ou l'autre, selon la chaîne : l'éditeur d'un modèle de vision médicale est fournisseur, l'hôpital qui s'en sert est déployeur. La question à poser en premier n'est donc jamais « est-ce que je fais de l'IA ? » mais « à quel titre ? ».
Le règlement classe les systèmes en trois grandes catégories. Cette classification précède toute question technique : elle détermine ce qu'on devra prouver.
Applicables depuis le 2 février 2025, elles constituent le socle le plus ancien et le plus fermement établi. On y trouve notamment les systèmes qui manipulent des personnes de manière à altérer leur comportement, comme la notation d'un visage, et ceux qui exploitent des vulnérabilités connues pour dégrader un système d'information.
Ils sont définis, pour l'essentiel, par l'usage qu'on en fait et non par la technique. L'annexe III vise notamment :
Pour ces systèmes, les obligations sont lourdes : gestion des risques sur tout le cycle de vie, qualité des données, documentation technique, traçabilité, transparence envers l'utilisateur, et surveillance après mise sur le marché.
Depuis août 2026, une interface d'interaction avec une IA doit être signalée comme telle, et les contenus synthétiques doivent être identifiables comme tels. L'obligation spécifique visant les systèmes qui génèrent un contenu de synthèse s'applique à compter de décembre 2026.
L'obligation de compétence est applicable depuis février 2025. Prise dans le cours d'un projet, elle signifie concrètement : les personnes qui manipulent un système doivent en comprendre le fonctionnement et les limites. C'est le contenu de ce cours.
Un règlement qui entre en vigueur par étapes, et dont le calendrier a déjà été modifié, ne peut pas être appris une fois pour toutes. Il se surveille.
Trois conséquences très concrètes, indépendantes du secteur :
Retenez ceci : sur un système à haut risque, ce qui compte n'est pas la qualité du modèle, mais la capacité à démontrer la qualité du modèle. Une exigence de preuve ne se rattrape pas après coup.
Construire un modele de bout en bout et savoir dire s’il est exploitable ou s’il est un leurre.
Publié le 29/09/2026