IA Carnet de préparation
Quiz : 0 / 0

ifage · Développeur·euse d'IA appliquée · 15 semaines

Comprendre l'IA
avant d'écrire
la première ligne.

Tu connais déjà Python. Ce carnet ne t'apprend pas la syntaxe : il t'apprend à penser en matrices, en modèles et en gradients. La Partie 1 pose les fondations. La Partie 2 t'accompagne semaine après semaine, avec du code pour chaque concept.

Partie 1 · fondations Python pour l'IA Partie 2 · concepts + code, semaine par semaine quiz à valider · exercices · exemples
Partie 1 — Se préparer

Les fondations Python pour l'IA

Pas de for, pas de classes : tu maîtrises tout ça. Ce qui change en IA, c'est l'objet manipulé. On ne pousse plus des lignes de base de données : on pousse des tableaux de nombres à travers des opérations mathématiques.

1.1 La bascule mentale : de la boucle au tableau

En Django, additionner deux listes appelle une boucle. En IA, ce réflexe devient un piège de performance. Tout repose sur NumPy et son ndarray, qui applique une opération à des millions de nombres d'un coup : la vectorisation.

# Réflexe "dev classique" — lent
c = []
for i in range(len(a)):
    c.append(a[i] + b[i])

# Réflexe "IA" — vectorisé, ~100× plus rapide
import numpy as np
c = np.array(a) + np.array(b)   # une seule opération
Intuition

Un réseau de neurones, c'est des milliards d'additions et de multiplications. En boucle Python, l'entraînement prendrait des jours. NumPy délègue à du code compilé et au GPU. La vectorisation n'est pas une optimisation, c'est le paradigme.

1.2 Scalaire, vecteur, matrice, tenseur

Tous les objets de l'IA sont un tableau de nombres, avec plus ou moins de dimensions. L'échelle la plus importante à intérioriser :

0 dimension
Scalaire
()
Un nombre. Ex : un taux d'apprentissage 0.001.
1 dimension
Vecteur
(n,)
Une liste. Ex : les 3 valeurs RVB d'un pixel.
2 dimensions
Matrice
(lignes, colonnes)
Un tableau. Ex : une image en niveaux de gris.
3+ dimensions
Tenseur
(…, …, …)
Ex : 32 images couleur = (32, 128, 128, 3).
À retenir

Le mot « tenseur » t'accompagnera toute la formation (le « Tensor » de TensorFlow). Rien de mystérieux : un tableau de nombres à N dimensions. Scalaire, vecteur et matrice sont des tenseurs de dimension 0, 1 et 2.

1.3 La forme (shape) : l'obsession n°1

La majorité des bugs en IA sont des erreurs de forme. Réflexe avant chaque opération : quelle est la forme de mon tableau, et laquelle l'opération attend-elle ? Les axes sont numérotés à partir de 0.

x = np.zeros((32, 128, 128, 3))
x.shape        # (32, 128, 128, 3)
x.ndim         # 4  → nombre de dimensions
x.size         # 1 572 864  → total d'éléments
# axe 0 = le lot (32 images) · axe 3 = les canaux couleur (R,V,B)

1.4 Les trois « multiplications » à ne pas confondre

Le point qui fait trébucher tout le monde : plusieurs façons de « multiplier » des tableaux, aux effets radicalement différents.

a) Élément par élément (*)

a * b          # [1,2,3] * [4,5,6] → [4,10,18]

b) Produit matriciel (@ ou np.dot)

L'opération reine. Combine lignes et colonnes. Règle d'or : (m, k) @ (k, n) → (m, n) — les dimensions intérieures doivent être égales.

A = np.array([[1,2],[3,4]])   # (2,2)
x = np.array([1,0])           # (2,)
A @ x          # [1, 3]

c) La transposée (.T)

A.T            # (2,3) devient (3,2)

Le produit matriciel pas à pas

La règle unique : chaque nombre du résultat est le produit scalaire d'une ligne de A avec le vecteur x — on multiplie terme à terme, puis on additionne.

A (2, 2)
1234
x (2,)
10
ligne 0 · x = (1×1) + (2×0) = 1
ligne 1 · x = (3×1) + (4×0) = 3
A @ x = [ 1, 3 ]  shape (2,)
L'intuition qui débloque tout

Ici x = [1, 0] est un sélecteur : le 1 garde la 1ʳᵉ colonne de A, le 0 efface la 2ᵉ. Donc A @ [1,0] = la 1ʳᵉ colonne de A[1, 3], et A @ [0,1] = la 2ᵉ, [2, 4]. Plus largement, A transforme le vecteur x — exactement ce que fait une couche de neurones.

Anime-le toi-même

Le même mouvement, mais interactif : fais avancer les deux pointeurs et regarde la somme se construire, case après case. (Ici A = [[2,1],[0,3]] et y = [1,4].)

A (2×2)
@
y
=
résultat

ligne en cours sous le pointeur résultat

Matrice × matrice : même principe

Le résultat en (i, j) = produit scalaire de la ligne i de la première par la colonne j de la seconde.

A
1234
@
B
1011
(0,0) l0·c0 = 1×1+2×1 = 3  ·  (0,1) l0·c1 = 1×0+2×1 = 2
(1,0) l1·c0 = 3×1+4×1 = 7  ·  (1,1) l1·c1 = 3×0+4×1 = 4
A @ B = [[3, 2], [7, 4]]
Pourquoi les dimensions intérieures doivent être égales
Un produit scalaire n'a de sens qu'entre deux suites de même longueur. La ligne de A a autant d'éléments que A a de colonnes ; la colonne de B en a autant que B a de lignes. Pour les apparier : colonnes de A = lignes de B. D'où (m,k) @ (k,n) → (m,n).
Exercice — calcul à la main

Sans exécuter de code, calcule A @ y puis A @ z :

A = np.array([[2, 1],
              [0, 3]])
y = np.array([1, 1])
z = np.array([0, 2])

Puis : que renvoie A @ [1, 0], et pourquoi ?

Solution

A @ y — l0·y = 2×1+1×1 = 3 ; l1·y = 0×1+3×1 = 3[3, 3]

A @ z — l0·z = 2×0+1×2 = 2 ; l1·z = 0×0+3×2 = 6[2, 6]

A @ [1, 0] sélectionne la 1ʳᵉ colonne → [2, 0].

1.5 Le broadcasting : la magie (et le piège)

NumPy combine des tableaux de formes différentes en « étirant » le plus petit. Pratique — et source de bugs silencieux.

images = np.random.rand(32, 128, 128, 3)  # un lot
moyenne = np.array([0.4, 0.5, 0.6])       # (3,) une moyenne par canal
images - moyenne   # NumPy étire (3,) sur tout le lot ✓
La règle en une phrase
On aligne les formes par la droite. Deux dimensions sont compatibles si elles sont égales, ou si l'une vaut 1. Ex : (32,128,128,3) et (3,) → OK ; (32,3) et (4,) → erreur.
Exercice — prédire la forme

Donne la forme du résultat, ou « erreur » :

a)  np.zeros((8, 3)) + np.ones((3,))
b)  A @ v      # A (10, 4), v (4,)
c)  M.T        # M (2, 5)
d)  np.ones((32, 3)) * np.ones((4,))
Solution

a) (8, 3) — le (3,) est diffusé sur les 8 lignes.

b) (10,)(10,4) @ (4,) → (10,).

c) (5, 2) — la transposée échange les axes.

d) erreur — alignés par la droite, 3 et 4 sont incompatibles.

1.6 Neurones, perte et gradient

La formation demande des « notions de maths appliquées ». Le minimum utile :

Le gradient, en image

Tu es sur une colline dans le brouillard et tu veux descendre. Tu sens la pente et fais un pas vers le bas. Tu répètes. C'est la descente de gradient : le gradient est la pente de la perte, et à chaque pas le modèle ajuste ses poids pour faire baisser l'erreur. La taille du pas = le taux d'apprentissage.

Descente de gradient (le squelette, en pseudo-NumPy)
for etape in range(1000):
    prediction = modele(X)                 # passe avant
    perte      = mse(prediction, y)         # écart aux étiquettes
    gradients  = perte.backward()           # pente pour chaque poids (rétropropagation)
    poids      = poids - 0.01 * gradients   # un pas vers le bas (0.01 = learning rate)

1.7 L'écosystème : qui fait quoi

NumPy
socle numérique
Les tableaux (ndarray) et l'algèbre linéaire. La base de tout.
pandas
données tabulaires
Charger, nettoyer, explorer (CSV, Excel). Le DataFrame = un tableur programmable.
Matplotlib / seaborn
visualisation
Tracer courbes, images, distributions. « Voir » ce que fait un modèle.
scikit-learn
ML classique
Régressions, arbres, clustering, split train/test, métriques.
PyTorch
deep learning
Le framework le plus répandu pour construire des réseaux.
TensorFlow / Keras
deep learning
L'alternative de Google. Keras = la surface haut niveau, lisible.
Hugging Face
modèles pré-entraînés
transformers : réutiliser des modèles déjà entraînés en quelques lignes.
OpenCV / Pillow
images
Lire, redimensionner, transformer des images avant un modèle de vision.
Quiz · Partie 1
Q1. En convention channels-last (NumPy/TensorFlow), un lot de 16 images couleur 64×64 a la forme…
Lot en tête (16), puis hauteur×largeur (64×64), puis 3 canaux → (16, 64, 64, 3). La forme (16, 3, 64, 64) est la convention channels-first de PyTorch (NCHW) : correcte ailleurs, mais pas ici.
Q2. Forme du résultat de (3, 4) @ (4, 2) ?
(3,4) @ (4,2) : le 4 intérieur concorde et disparaît, restent les extérieurs → (3, 2). Les formes sont bien compatibles.
Q3. A et B sont deux matrices (2, 2). Que dire de A * B et A @ B ?
Même sur des matrices carrées, les deux diffèrent. * multiplie case à case ; @ combine lignes et colonnes. C'est le piège n°1.
Q4. Avec A = [[1,2],[3,4]], combien vaut A @ [2, 1] ?
l0·x = 1×2+2×1 = 4 ; l1·x = 3×2+4×1 = 10[4, 10]. La réponse [10, 4] correspondrait à A.T @ x (erreur de transposée).
Q5. Parmi ces paires, laquelle est incompatible pour le broadcasting ?
Alignées par la droite : 3 vs 4 ne sont ni égales ni à 1 → incompatibles. En revanche (8,1)&(8,5) (le 1 s'étire) et (10,3)&(3,) passent.
Q6. Pendant l'entraînement, le gradient d'un poids désigne…
Le gradient est une pente (une dérivée), pas la perte elle-même (option 1) ni l'erreur d'un exemple (option 3). Il indique comment bouger le poids pour faire baisser la perte.
Partie 2 — Suivre le cours

Les concepts, semaine par semaine

Pour chaque bloc du programme ifage : l'objectif, les concepts, un exemple de code, un glossaire, un exercice et un quiz à valider. Reviens ici après chaque séance.

Semaines 1–2

Introduction à l'IA

Objectif : installer le vocabulaire commun et distinguer les familles d'apprentissage.

Les 3 grands types d'apprentissage

Le vocabulaire fondateur

Un modèle reçoit des features (entrées) et produit une prédiction, comparée à l'étiquette attendue. Deux phases : l'entraînement puis l'inférence. On sépare toujours train et test ; un modèle excellent en train mais faible en test a surappris (overfitting).

Un modèle supervisé complet avec scikit-learn
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

# X = features (surface, pièces, ...) · y = label (prix)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.2)

modele = LinearRegression()
modele.fit(X_tr, y_tr)          # entraînement
modele.score(X_te, y_te)        # évaluation sur des données JAMAIS vues
Exemple

Prédire le prix d'un appartement. Features : surface, pièces, quartier. Label : prix de ventes passées. Le modèle apprend le lien, puis estime un bien inédit.

Feature / Label
Variable d'entrée / réponse correcte fournie.
Train / test split
Découpage pour évaluer honnêtement la généralisation.
Overfitting
Le modèle mémorise au lieu de généraliser.
Exercice — cadrer un problème

On veut détecter si un e-mail est un spam. a) deux features plausibles ? b) le label ? c) le type d'apprentissage ?

Solution

a) nombre de liens, présence de mots-clés, expéditeur inconnu, proportion de majuscules.

b) l'étiquette binaire spam/non-spam d'un historique déjà classé.

c) supervisé (classification) — on a des exemples étiquetés.

Quiz · Semaines 1–2
Q1. Ce qui distingue fondamentalement le supervisé du non supervisé :
Le critère est l'étiquette : présente → supervisé, absente → non supervisé. Les deux peuvent utiliser des réseaux et des données de toute taille.
Q2. Un modèle fait 99 % en entraînement et 62 % en test. Diagnostic ?
Le fossé train ≫ test est la signature de l'overfitting. Le sous-apprentissage donnerait des scores faibles partout, y compris en entraînement.
Q3. Pour prédire un prix, la « surface en m² » est…
C'est une entrée → feature. Les paramètres appris sont les poids internes ; l'étiquette ici serait le prix.
Q4. À quoi sert de garder un jeu de test à part ?
Si on entraînait sur le test, le score serait trompeur. Le test mesure la vraie capacité à généraliser.
Semaines 3–4

Vision par ordinateur

Objectif : faire « voir » une machine, et découvrir l'astuce qui rend l'IA accessible : l'apprentissage par transfert.

Une image = un tenseur

Une image couleur est un tenseur (H, L, 3) ; chaque pixel = 3 nombres (R, V, B). Un CNN fait glisser de petits filtres (la convolution) : les premières couches captent bords et textures, les suivantes composent formes puis objets.

L'astuce reine

Entraîner de zéro exige des millions d'images. Le transfert réutilise un modèle pré-entraîné (ex. ResNet) qui « sait déjà voir » et ne réentraîne que la fin : d'excellents résultats avec quelques centaines d'images.

Apprentissage par transfert avec Keras
from tensorflow.keras.applications import ResNet50
from tensorflow.keras import layers, Model

base = ResNet50(weights="imagenet", include_top=False)  # modèle pré-entraîné
base.trainable = False                               # on gèle ce qu'il a appris

x = layers.GlobalAveragePooling2D()(base.output)
sortie = layers.Dense(3, activation="softmax")(x)      # 3 classes = NOTRE problème
modele = Model(base.input, sortie)                    # on ne réentraîne que la fin
Convolution / CNN
Filtre glissant détectant un motif local / réseau spécialisé images.
Modèle pré-entraîné
Réseau déjà entraîné sur d'immenses données, réutilisable.
Fine-tuning
Réajuster finement un modèle pré-entraîné sur ses données.
Exercice — choisir sa stratégie

Tu as 300 photos réparties en 3 catégories de fleurs. En une phrase : quelle stratégie, et quelle partie du modèle modifies-tu ?

Solution

Transfert : partir d'un modèle pré-entraîné, remplacer la dernière couche par une couche à 3 sorties, puis fine-tuner. 300 images seraient trop peu pour partir de zéro, mais suffisent pour réajuster un modèle qui sait déjà voir.

Quiz · Semaines 3–4
Q1. Pourquoi le transfert marche-t-il avec peu d'images ?
On réutilise des couches qui savent déjà voir bords/formes. Il ne « crée » pas d'images (option 1) et reste supervisé : il faut des étiquettes (option 2).
Q2. Dans un CNN, que fait concrètement une convolution ?
Le filtre balaie l'image et réagit à un motif (bord, texture). Redimensionner ou passer en gris sont d'autres opérations, pas la convolution.
Q3. En convention channels-last, une image couleur 256×256 est un tenseur…
H×L×3 canaux. (3,256,256) est la convention channels-first (PyTorch) ; (256,256) serait une image en niveaux de gris.
Semaine 5

Apprentissage par renforcement

Objectif : un paradigme sans « bonne réponse » donnée : un agent apprend par essais, erreurs et récompenses.

La boucle agent ↔ environnement

Un agent observe un état, choisit une action, reçoit une récompense et un nouvel état. Il cherche la politique qui maximise la récompense cumulée. Le Q-learning estime, pour chaque (état, action), la récompense future attendue ; quand les états sont trop nombreux, le DQN remplace la table par un réseau de neurones.

La mise à jour au cœur du Q-learning (équation de Bellman)
ancien = Q[etat, action]
futur  = max(Q[nouvel_etat])                         # meilleure valeur atteignable ensuite
Q[etat, action] = ancien + alpha * (recompense + gamma * futur - ancien)
#                          ^taux            ^gain immédiat  ^escompte du futur
Exemple

Un agent apprend à jouer à Pong. État : positions balle/raquettes. Actions : monter/descendre. Récompense : +1 s'il marque, −1 sinon. Après des milliers de parties, il joue très bien — sans qu'on lui ait dit « comment ».

Agent / Environnement
Le décideur, et le monde avec lequel il interagit.
Politique
La stratégie : quelle action dans quel état.
DQN
Q-learning où un réseau approxime les valeurs Q.
Exercice — modéliser un problème

Un robot aspirateur apprend à nettoyer par renforcement. Définis : a) l'état, b) les actions, c) un schéma de récompense.

Solution (une possibilité)

a) position + carte des zones sales/propres + obstacles.

b) avancer, tourner, aspirer.

c) +1 par zone nettoyée, −1 par collision, −0,01 par pas (pour l'efficacité). Le choix des récompenses façonne tout le comportement.

Quiz · Semaine 5
Q1. Dans le Q-learning, la « valeur Q » d'un couple (état, action) estime…
Q estime le gain futur cumulé. L'agent choisit l'action de plus haute valeur Q. Ce n'est ni un comptage ni une probabilité de légalité.
Q2. Le « Deep » de DQN correspond à…
Quand les états sont trop nombreux pour une table, un réseau approxime les valeurs Q : « Deep Q-Network ».
Q3. Le dilemme « exploration / exploitation » oppose…
Trop exploiter → l'agent stagne ; trop explorer → il n'apprend jamais à gagner. Tout est dans l'équilibre.
Semaines 6–8

Traitement du langage naturel (NLP)

Objectif : traiter du texte et construire un modèle de langue. Le socle direct des LLM.

Du texte aux nombres

Un modèle ne comprend que des nombres. Deux étapes : la tokenisation (découper en tokens numérotés) puis le plongement (embedding : chaque token → un vecteur qui capte le sens, au point que roi − homme + femme ≈ reine).

De la mémoire à l'attention

Les anciens RNN/LSTM lisaient mot à mot et oubliaient le contexte lointain. Le Transformer (2017) résout ça par l'attention : chaque mot pondère l'importance de tous les autres. Un modèle de langue ne fait qu'une chose : prédire le token suivant — répété, cela produit des phrases.

Tokeniser puis générer avec Hugging Face
from transformers import AutoTokenizer, pipeline

tok = AutoTokenizer.from_pretrained("gpt2")
tok("Le chat dort")["input_ids"]     # → [1026, 4758, 8501] (identifiants)

gen = pipeline("text-generation", model="gpt2")
gen("En 2026, l'IA appliquée", max_length=20)  # prédit les tokens suivants
Token / Embedding
Unité de texte numérotée / vecteur représentant son sens.
Attention
Pondère l'importance de chaque mot du contexte.
Transformer
Architecture fondée sur l'attention, base des LLM.
Exercice — du texte aux nombres

Décris les deux étapes pour transformer « Le chat dort » en entrée d'un modèle, et ce que produit chacune.

Solution

1) Tokenisation → une suite d'entiers, ex. [1026, 4758, 8501].

2) Embedding → chaque entier devient un vecteur de sens → une matrice (3, d) que le modèle traite.

Quiz · Semaines 6–8
Q1. Un embedding, c'est…
Attribuer un entier, c'est la tokenisation (étape d'avant). L'embedding transforme cet entier en vecteur de sens.
Q2. L'avantage clé du Transformer sur un RNN classique :
Traiter les mots séquentiellement est justement la limite du RNN. L'attention, elle, met tous les mots en relation d'un coup.
Q3. Fondamentalement, un modèle de langue génératif…
La génération = prédiction répétée du prochain token. Simple en principe, puissant à grande échelle.
Q4. « roi − homme + femme ≈ reine » illustre que…
On additionne des vecteurs de sens, pas des lettres. La régularité géométrique de l'espace d'embedding rend l'analogie possible.
Semaines 9–11

IA générative

Objectif : passer de l'IA qui classe à l'IA qui crée, et adapter de grands modèles.

Deux familles pour générer des images

Diffusion, en image

Une photo peu à peu couverte de « neige » (bruit). Le modèle apprend le chemin inverse : enlever la neige étape par étape. On lui donne du bruit + une description, il reconstruit une image.

Le fine-tuning

Réentraîner un GPT complet coûte des millions. Le fine-tuning reprend un grand modèle et l'ajuste sur un petit jeu de données spécifique : c'est ce qui rend ces modèles exploitables en entreprise.

Génération d'image par diffusion (bibliothèque diffusers)
from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained("stable-diffusion-v1-5")
image = pipe("un chat astronaute, style aquarelle").images[0]  # prompt → image
image.save("chat.png")
Générateur / Discriminateur
Les deux réseaux rivaux d'un GAN.
Diffusion
Génération par débruitage progressif.
Fine-tuning / Prompt
Adapter un grand modèle / la consigne qui guide la génération.
Exercice — décider d'une approche

Une PME veut générer des visuels dans son style propre et dispose de ~500 images de marque. Recommande une approche, puis nomme un risque.

Solution

Approche : fine-tuner un modèle de diffusion pré-entraîné sur les 500 images.

Risque : surapprentissage — avec trop peu d'images/trop d'étapes, le modèle recopie au lieu de généraliser (+ questions de droits sur les données).

Quiz · Semaines 9–11
Q1. Dans un GAN, le rôle du discriminateur est de…
Générer, c'est le rôle du générateur. Le discriminateur juge — et sa critique fait progresser le générateur.
Q2. Un modèle de diffusion produit une image en…
Il ne colle pas de morceaux et ne procède pas pixel par pixel : il débruite par étapes, guidé par le prompt.
Q3. Un piège du fine-tuning à garder en tête :
Le fine-tuning n'immunise pas contre l'overfitting — au contraire, sur un petit jeu il y est plus exposé. Il ne change pas la taille du modèle.
Q4. Qu'est-ce qui distingue GAN et diffusion (tous deux génèrent des images) ?
Deux mécanismes différents pour le même but : rivalité (GAN) vs débruitage (diffusion). Les deux reposent sur des réseaux.
Semaines 12–13

IA agentique

Objectif : dépasser le modèle qui répond pour un agent qui raisonne, utilise des outils et agit en plusieurs étapes. Ta connaissance du dev web y est un atout.

Qu'est-ce qu'un agent ?

Un agent = un LLM dans une boucle, doté d'outils (recherche, API, code, fichiers). Le schéma ReAct alterne Réflexion → Action → Observation jusqu'à l'objectif. Le function calling est le pont : le LLM émet un appel structuré, ton code l'exécute. Le RAG injecte des documents récupérés pour ancrer les réponses.

Boucle agentique (le motif de base)
while not objectif_atteint:
    pensee   = modele.reflechir(contexte)    # que faire ?
    action   = modele.choisir_outil(pensee)   # ex: rechercher(...)
    resultat = executer(action)                # appel réel
    contexte = contexte + resultat             # on mémorise l'observation
Définir un outil pour le function calling
outils = [{
    "name": "meteo",
    "description": "Météo d'une ville pour un jour donné",
    "parameters": {"ville": "str", "jour": "str"}
}]
reponse = modele.chat(messages, tools=outils)
if reponse.appel_outil:                   # le LLM DEMANDE d'appeler l'outil
    obs = meteo(**reponse.arguments)      # TON code l'exécute vraiment
    messages.append(obs)                  # on renvoie l'observation au modèle
Agent / Outil
LLM en boucle avec objectif / fonction externe qu'il peut appeler.
Function calling
Le LLM produit un appel structuré exécuté par ton code.
RAG
Injecter des documents récupérés pour ancrer les réponses.
Exercice — dérouler une boucle

Un agent reçoit : « Quel temps fera-t-il demain à Genève, faut-il un parapluie ? ». Écris la suite réflexion → action → observation, avec l'outil utilisé.

Solution

Réflexion : besoin de la météo. Action : meteo("Genève","demain"). Observation : « pluie 80 % ». Réflexion : 80 % → parapluie. Action : répondre. Un enchaînement raisonnement/outil/observation : c'est ça, un agent.

Quiz · Semaines 12–13
Q1. Ce qui distingue un agent d'un simple appel à un LLM :
Un agent = LLM + outils + boucle. Il agit, il ne se contente pas de répondre. Le LLM reste son moteur.
Q2. Le RAG sert principalement à…
Le RAG ne réentraîne rien : il fournit au modèle des sources pertinentes au moment de répondre, ce qui réduit les erreurs.
Q3. Le « function calling » signifie que…
Le modèle ne « lance » rien lui-même : il demande un appel (du JSON), c'est ton code qui exécute — comme un appel d'API que tu contrôles.
Q4. Dans le schéma ReAct, la boucle enchaîne :
ReAct = Reason + Act. Les autres options mélangent le vocabulaire du ML (workflow) et du renforcement.
Semaines 14–15

Projet appliqué

Objectif : tout mettre en œuvre sur un projet réel, évalué devant un jury (20–30 h, mémoire d'une dizaine de pages).

Une démarche en 6 temps

  1. Cadrer le problème comme une tâche d'IA claire (classer ? prédire ? générer ?).
  2. Réunir et explorer les données — ~60 % du travail (pandas + Matplotlib).
  3. Choisir simple — souvent scikit-learn ou un modèle pré-entraîné suffit.
  4. Établir une baseline puis itérer ; surveiller l'écart train/test.
  5. Évaluer honnêtement sur des données jamais vues ; assumer les limites.
  6. Présenter le raisonnement, pas seulement la performance.
Conseils de survie

Choisis un sujet qui te tient à cœur et dont les données existent déjà. Vise petit mais complet. Une baseline simple qui tourne bat un modèle sophistiqué inachevé la veille de la soutenance.

Exercice — choisir un sujet

(A) « recréer un assistant type ChatGPT »  ou  (B) « classer les tickets de support de mon entreprise en 5 catégories ». Lequel choisir, et pourquoi ?

Solution

(B) : périmètre petit mais complet, données existantes (historique de tickets), tâche claire (classification supervisée), faisable en 20–30 h. (A) est hors de portée (données, calcul, temps).

Quiz · Semaines 14–15
Q1. Par quoi vaut-il mieux commencer un projet d'IA ?
Sans problème clair ni données comprises, aucun modèle n'aide — et le choix du framework est très secondaire.
Q2. Une « baseline », c'est…
La baseline dit si tes améliorations valent la peine. Sans elle, impossible de savoir si un modèle complexe apporte quelque chose.
Q3. Devant le jury, qu'est-ce qui compte le plus ?
Un jury évalue ta maîtrise : pourquoi ces choix, comment tu les as évalués, ce que ça ne fait pas. La performance brute ne suffit pas.
Dernier mot

Tu arrives avec un atout : tu sais déjà construire des systèmes. L'IA appliquée, c'est en grande partie de l'ingénierie logicielle avec un nouveau type de brique. Ce carnet est ta carte ; le reste, c'est la pratique. Bon cours. 🎓