INTELLIGENCE ARTIFICIELLE
NIVEAU 5 — EXPERT
Transformers · RL · GANs · MLOps · IA fédérée · Sécurité · Recherche
Niveau pré-universitaire — Pour le futur chercheur béninois 🔬
Ce niveau franchit le seuil du lycée vers l'université.
Tu vas coder des Transformers, entraîner des agents RL, lire des articles de recherche et construire ton portfolio GitHub.
📋 Sommaire — Niveau 5
| Chapitre | Titre | Page |
|---|---|---|
| 39 | Transformers from scratch : coder l'attention multi-têtes | 3 |
| 40 | Reinforcement Learning : apprendre par récompenses | 5 |
| 41 | GANs : réseaux génératifs adversariaux | 6 |
| 42 | MLOps : mettre l'IA en production comme un pro | 7 |
| 43 | IA fédérée : entraîner sans centraliser les données | 8 |
| 44 | Sécurité et attaques adversariales | 9 |
| 45 | Lire et comprendre un article de recherche IA | 10 |
| 46 | Construire son portfolio GitHub pour l'IA | 11 |
| 47 | Capstone : système RAG pour les étudiants béninois | 12 |
| 48 | Vers l'université : préparer ta candidature IA | 15 |
| — | Révisions et corrigés | 17 |
🎯 Prérequis Niveau 4 confirmés
- ✔ Maths IA : MSE, descente de gradient, learning rate.
- ✔ CNN complet avec Keras/TensorFlow.
- ✔ Pipeline NLP : nettoyage, TF-IDF, classification, évaluation.
- ✔ Régularisation : Dropout, Early Stopping, L2.
- ✔ Déploiement Flask API + WhatsApp Bot.
- ✔ Droit IA, business plan startup, projet détection paludisme.
Chapitre 41 — GANs : réseaux génératifs adversariaux 🎨
Les GANs (Generative Adversarial Networks) sont l'architecture qui génère des images ultra-réalistes. Ils sont utilisés pour créer des visages, des œuvres d'art, des deepfakes — et potentiellement des images de plantes africaines pour augmenter les datasets.
⚔️ Le principe adversarial
🥊 Générateur vs Discriminateur : le jeu à deux
GÉNÉRATEUR (G) : crée de fausses images à partir de bruit aléatoire.
DISCRIMINATEUR (D) : doit dire si une image est vraie ou fausse.
G essaie de tromper D. D essaie de ne pas être trompé.
→ Ils s'entraînent ensemble : G devient meilleur, D devient meilleur.
→ Équilibre de Nash : G produit des images indiscernables du réel.
Analogie béninoise : G = faussaire de monnaie, D = agent de la BCEAO.
Plus G s'améliore, plus D s'améliore. Jusqu'à ce que G soit parfait !
🐍 GAN simple avec Keras
import tensorflow as tf
from tensorflow.keras import layers
import numpy as np
LATENT_DIM = 100 # dimension du bruit d'entrée
# ── GÉNÉRATEUR ──
def build_generator():
model = tf.keras.Sequential([
layers.Dense(256, activation='relu', input_dim=LATENT_DIM),
layers.BatchNormalization(),
layers.Dense(512, activation='relu'),
layers.BatchNormalization(),
layers.Dense(28*28, activation='tanh'),
layers.Reshape((28, 28, 1)) # image 28x28 pixels
])
return model
# ── DISCRIMINATEUR ──
def build_discriminator():
model = tf.keras.Sequential([
layers.Flatten(input_shape=(28,28,1)),
layers.Dense(512, activation='leaky_relu'),
layers.Dropout(0.3),
layers.Dense(256, activation='leaky_relu'),
layers.Dense(1, activation='sigmoid') # vrai=1, faux=0
])
model.compile(optimizer='adam', loss='binary_crossentropy',
metrics=['accuracy'])
return model
G = build_generator()
D = build_discriminator()
# ── ENTRAÎNEMENT GAN ──
def entrainer_gan(G, D, n_epochs=50, batch=64):
for epoch in range(n_epochs):
# 1. Entraîner D sur de vraies + fausses images
bruit = np.random.randn(batch, LATENT_DIM)
fausses = G.predict(bruit, verbose=0)
vraies = obtenir_vraies_images(batch) # ton dataset
X = np.vstack([vraies, fausses])
y = np.hstack([np.ones(batch), np.zeros(batch)])
D.train_on_batch(X, y)
# 2. Entraîner G : il veut que D dise '1' pour ses fausses images
bruit = np.random.randn(batch, LATENT_DIM)
y_tromper = np.ones(batch) # G veut tromper D
# (D est figé pendant cette étape)
loss_G = entrainer_generateur(G, D, bruit, y_tromper)
if epoch % 10 == 0:
print(f'Epoch {epoch} | Loss G : {loss_G:.3f}')
🌾 Application au Bénin : augmentation de dataset agricole
Les GANs peuvent générer des images synthétiques de cultures béninoises malades — résolvant le problème du manque de données labellisées dans les champs.
📸 Si tu as 500 photos de maïs malade, un GAN peut en générer 5 000 de plus.
🌍 Ces images synthétiques augmentent la robustesse de ton CNN de détection.
⚠️ Attention : les images générées doivent être validées par des agronomes avant usage.
✏️ Exercice 3
Analyse du GAN :
1. Pourquoi la dernière couche du Générateur utilise-t-elle « tanh » ?
2. Pourquoi la dernière couche du Discriminateur utilise-t-elle « sigmoid » ?
3. Qu'est-ce que le « mode collapse » dans un GAN et pourquoi est-ce un problème ?
Chapitre 42 — MLOps : mettre l'IA en production comme un pro ⚙️
Un modèle IA qui reste dans un notebook Jupyter est inutile. MLOps (Machine Learning Operations) est l'ensemble des pratiques pour déployer, monitorer et maintenir des modèles en production — comme le font Google, Meta et les startups africaines sérieuses.
| Phase | Outils courants | Objectif |
|---|---|---|
| Data versioning | DVC, Git LFS | Tracer l'historique des datasets |
| Expérimentation | MLflow, Weights & Biases | Logger métriques, hyperparamètres |
| CI/CD modèle | GitHub Actions, Jenkins | Tester et déployer automatiquement |
| Serving | FastAPI, TorchServe, BentoML | Exposer le modèle en API robuste |
| Monitoring | Prometheus, Grafana | Détecter dérives de données / perf |
| Retraining | Apache Airflow, Prefect | Réentraîner quand les données changent |
🐍 Versionner un modèle avec MLflow
import mlflow
import mlflow.sklearn
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import f1_score
# Démarrer une expérience MLflow
mlflow.set_experiment('detection_paludisme_benin')
with mlflow.start_run(run_name='RF_v1_borgou_data'):
# Logger les hyperparamètres
mlflow.log_param('n_estimators', 100)
mlflow.log_param('max_depth', 10)
mlflow.log_param('dataset', 'borgou_cliniques_2024')
# Entraîner
modele = RandomForestClassifier(n_estimators=100, max_depth=10)
modele.fit(X_train, y_train)
# Logger les métriques
f1 = f1_score(y_test, modele.predict(X_test))
rappel = recall_score(y_test, modele.predict(X_test))
mlflow.log_metric('f1_score', f1)
mlflow.log_metric('rappel', rappel)
# Sauvegarder le modèle avec sa version
mlflow.sklearn.log_model(modele, 'modele',
registered_model_name='PaludismeDetector')
print(f'F1={f1:.3f} | Rappel={rappel:.3f} | Run loggé !')
🚨 Monitoring : détecter la dérive des données
from scipy.stats import ks_2samp
def detecter_derive(donnees_train, donnees_prod, seuil=0.05):
"""Test KS : vérifie si 2 distributions sont similaires"""
stat, p_value = ks_2samp(donnees_train, donnees_prod)
if p_value < seuil:
print(f'⚠️ DÉRIVE DÉTECTÉE ! p={p_value:.4f} < {seuil}')
print(' → Déclencher le réentraînement du modèle.')
return True
else:
print(f'✅ Pas de dérive. p={p_value:.4f}')
return False
import numpy as np
temp_train = np.random.normal(30, 3, 1000)
temp_prod = np.random.normal(33, 4, 500)
detecter_derive(temp_train, temp_prod)
✏️ Exercice 4
Questions MLOps :
1. Pourquoi est-il important de versionner les modèles ML ?
2. Qu'est-ce qu'une « dérive de données » ? Donne un exemple au Bénin :
3. Cite 2 situations au Bénin où un réentraînement automatique serait crucial :
a)
b)
Chapitre 43 — IA Fédérée : entraîner sans centraliser les données 🔒
Problème majeur en Afrique : les données médicales de 10 hôpitaux béninois ne peuvent pas être partagées pour des raisons de confidentialité. L'IA fédérée résout ce problème.
🏥 Le principe de l'apprentissage fédéré
Comment ça fonctionne
- Chaque hôpital béninois garde ses données de patients localement.
- Chaque hôpital entraîne une copie locale du modèle sur ses propres données.
- Seuls les POIDS du modèle (pas les données) sont envoyés au serveur central.
- Le serveur central agrège tous les poids (Federated Averaging).
- Le modèle amélioré est renvoyé à tous les hôpitaux.
→ Le modèle apprend de toutes les données sans jamais les centraliser.
→ Les données des patients restent à l'hôpital. Vie privée préservée.
🐍 Federated Averaging (FedAvg) simplifié
import numpy as np
hopitaux = {
'CHU Cotonou': {'n_patients': 500, 'poids': None},
'Hopital Parakou':{'n_patients': 200, 'poids': None},
'Clinique Abomey':{'n_patients': 150, 'poids': None},
'Hopital Lokossa':{'n_patients': 120, 'poids': None},
'Hopital Kandi': {'n_patients': 80, 'poids': None},
}
total_patients = sum(h['n_patients'] for h in hopitaux.values())
def entrainement_local(poids_global, donnees_locales):
bruit_local = np.random.randn(*poids_global.shape) * 0.01
return poids_global + bruit_local
def federated_averaging(hopitaux, total):
poids_agreges = np.zeros_like(list(hopitaux.values())[0]['poids'])
for nom, hop in hopitaux.items():
contribution = hop['n_patients'] / total
poids_agreges += contribution * hop['poids']
return poids_agreges
poids_global = np.random.randn(100)
for round_num in range(1, 6):
for nom, hop in hopitaux.items():
hop['poids'] = entrainement_local(poids_global, hop)
poids_global = federated_averaging(hopitaux, total_patients)
print(f'Round {round_num} : norme poids = {np.linalg.norm(poids_global):.4f}')
print('Modèle global entraîné sur 1050 patients béninois sans partager 1 dossier !')
✏️ Exercice 5
Questions IA fédérée :
1. Pourquoi les données médicales ne peuvent-elles pas être centralisées ?
2. Dans FedAvg, pourquoi le CHU Cotonou a-t-il plus de poids que l'Hôpital de Kandi dans l'agrégation ?
3. Cite un autre domaine au Bénin (hors médecine) où l'IA fédérée serait utile et explique pourquoi :
Chapitre 44 — Sécurité et attaques adversariales 🛡️
Les modèles IA peuvent être trompés, volés ou sabotés. En tant qu'ingénieur IA au Bénin, tu dois connaître ces attaques pour protéger tes systèmes.
| Attaque | Principe | Impact au Bénin |
|---|---|---|
| Exemples adversariaux | Perturber légèrement une image pour tromper le modèle | IA médicale reconnaît un parasite comme sain |
| Empoisonnement (Poisoning) | Injecter de mauvaises données d'entraînement | IA agricole donne de mauvais conseils aux paysans |
| Extraction de modèle | Voler un modèle par requêtes multiples | Copier ton IA de détection paludisme |
| Inversion de modèle | Reconstruire les données d'entraînement | Extraire des données médicales privées |
| Prompt Injection (LLM) | Manipulation d'instructions dans le texte | Faire dire n'importe quoi à un chatbot béninois |
🐍 Générer et détecter un exemple adversarial (FGSM)
import tensorflow as tf
import numpy as np
def attaque_fgsm(modele, image, vraie_classe, epsilon=0.01):
"""Fast Gradient Sign Method — attaque adversariale simple"""
image_tf = tf.cast(image, tf.float32)
with tf.GradientTape() as tape:
tape.watch(image_tf)
prediction = modele(tf.expand_dims(image_tf, 0))
perte = tf.keras.losses.sparse_categorical_crossentropy(
[vraie_classe], prediction)
gradient = tape.gradient(perte, image_tf)
perturbation = epsilon * tf.sign(gradient)
image_adversariale = image_tf + perturbation
return tf.clip_by_value(image_adversariale, 0, 1)
print('Epsilon 0.01 peut tromper un CNN avec des changements invisibles à l’œil !')
🔐 Sécuriser ton API IA en production
from flask import Flask, request, jsonify, abort
from functools import wraps
import time, hashlib
app = Flask(__name__)
API_KEYS = {'clinic_cotonou': 'hashed_key_1', 'hopital_parakou': 'hashed_key_2'}
RATE_LIMIT = {}
def require_api_key(f):
@wraps(f)
def decorated(*args, **kwargs):
key = request.headers.get('X-API-Key')
if not key or key not in API_KEYS:
abort(401, 'Clé API invalide')
return f(*args, **kwargs)
return decorated
def rate_limit(max_req=10, window=60):
def decorator(f):
@wraps(f)
def decorated(*args, **kwargs):
ip = request.remote_addr
now = time.time()
RATE_LIMIT.setdefault(ip, [])
RATE_LIMIT[ip] = [t for t in RATE_LIMIT[ip] if now-t < window]
if len(RATE_LIMIT[ip]) >= max_req:
abort(429, 'Trop de requêtes — réessaie dans 1 minute')
RATE_LIMIT[ip].append(now)
return f(*args, **kwargs)
return decorated
return decorator
@app.route('/predire', methods=['POST'])
@require_api_key
@rate_limit(max_req=10, window=60)
def predire():
data = request.get_json()
if not all(k in data for k in ['temperature','pluie','sol']):
abort(400, 'Données manquantes')
return jsonify({'resultat': 'OK'})
✏️ Exercice 6
Questions sécurité IA :
1. Qu'est-ce qu'un exemple adversarial ? Donne un exemple médical :
2. Qu'est-ce qu'une attaque d'empoisonnement (data poisoning) ?
3. Dans le code Flask, pourquoi implémente-t-on un rate limit ?
Chapitre 45 — Lire et comprendre un article de recherche IA 📄
Pour être à la pointe de l'IA, tu dois lire des papers (articles scientifiques). C'est intimidant au début, mais avec une méthode, tu peux en extraire l'essentiel en 30 minutes.
| Section | Contenu | Temps de lecture conseillé |
|---|---|---|
| Abstract | Résumé en 150-250 mots — START ICI | 2 min |
| Introduction | Problème, motivation, contributions | 5 min |
| Related Work | Travaux existants — souvent survolable | 2 min |
| Méthode | L'architecture et les équations clés | 10 min |
| Expériences | Datasets, métriques, comparaisons | 5 min |
| Résultats | Tableaux et figures — PRIORITÉ | 5 min |
| Conclusion | Limites et perspectives — utile | 2 min |
🔍 Méthode SQ3R adaptée aux papers IA
- 🔎 S — Survey : Lis le titre, abstract, intro et conclusion.
- ❓ Q — Question : Quel problème ? Quelle méthode ? Quels résultats ?
- 📖 R1 — Read : Lis en entier. Note les termes inconnus.
- 🔁 R2 — Recite : Résume sans regarder le paper.
- ✅ R3 — Review : Relis tes notes. Vérifie tes résumés.
📄 Analyse guidée d'un vrai paper : « Attention Is All You Need »
Vaswani et al. (2017) — Google Brain — arXiv:1706.03762
PROBLÈME : Les RNN traitent les séquences mot par mot, lentement et avec perte de contexte.
MÉTHODE : Remplacer entièrement les RNN par le mécanisme d'attention.
ARCHITECTURE : Encodeur-Décodeur avec Multi-Head Attention + Feed-Forward + Residual.
DATASET : WMT 2014.
RÉSULTAT CLÉ : BLEU score 28.4, meilleur que l'état de l'art, 8x plus rapide.
IMPACT : Fondation de tous les LLM modernes.
✏️ Exercice 7
Exercice de lecture de paper :
Lis l'abstract suivant et réponds aux questions :
« Nous présentons MalariaNet, un CNN entraîné sur 27 558 images de cellules sanguines provenant de 4 hôpitaux béninois. Notre modèle atteint 96.3% de précision et 97.1% de rappel sur le dataset de test, surpassant les radiologues humains (94.2% rappel) sur ce benchmark. Le modèle est déployé via une API WhatsApp accessible dans 12 districts ruraux du Bénin. »
Quel est le problème résolu ?
Quelle est la méthode ?
Quel est le résultat principal ?
Pourquoi le rappel est-il la métrique principale ?
Chapitre 46 — Construire son portfolio GitHub IA 💼
Un portfolio GitHub solide est ton passeport pour les universités, les stages et les emplois IA. Voici comment en construire un qui impressionne dès maintenant.
📁 Structure d'un bon repo IA
mon_projet_ia_benin/
├── README.md
├── requirements.txt
├── data/
│ ├── raw/
│ ├── processed/
│ └── README.md
├── notebooks/
│ ├── 01_exploration.ipynb
│ ├── 02_preprocessing.ipynb
│ └── 03_modelisation.ipynb
├── src/
│ ├── data_prep.py
│ ├── model.py
│ ├── train.py
│ └── evaluate.py
├── api/
│ ├── app.py
│ └── Dockerfile
├── tests/
│ └── test_model.py
└── models/
└── best_model.h5
📝 Un README.md qui impressionne
# MalariaNet Bénin 🇧🇯🦟
## Présentation
CNN de détection du paludisme entraîné sur des données de 4 hôpitaux béninois.
Déployé via WhatsApp Bot dans 12 districts ruraux.
## Résultats
| Métrique | Notre modèle | Radiologues humains |
|----------|-------------|---------------------|
| Rappel | 97.1% | 94.2% |
| Précision| 96.3% | 95.8% |
## Installation
git clone https://github.com/ton_nom/malarianet-benin
pip install -r requirements.txt
python api/app.py
🏆 Les 5 projets GitHub qui font briller un CV IA africain
- 🦟 Détection paludisme / tuberculose sur données béninoises.
- 🌾 Prédiction de rendement agricole.
- 🗣️ Modèle NLP pour une langue locale béninoise.
- 💧 Prédiction des inondations à Cotonou.
- 📱 Application mobile IA déployée.
✏️ Exercice 8
Planifie ton portfolio :
Projet 1 (déjà fait dans ce cours) :
Projet 2 (à créer d'ici 3 mois) :
Projet 3 (à créer d'ici 6 mois) :
Ton identifiant GitHub : github.com/
Un point fort béninois que peu de candidats ont dans leur portfolio :
Chapitre 47 — Capstone : Système RAG pour étudiants béninois 📚
Voici le projet le plus avancé du cours. Tu vas construire un système RAG (Retrieval-Augmented Generation) — la technologie derrière les assistants IA qui peuvent lire des documents et répondre sur leur contenu.
🔍 Qu'est-ce que le RAG ?
RAG = Retrieval-Augmented Generation
Problème : Les LLM comme Claude ont une date de coupure de connaissance.
Ils ne connaissent pas les programmes scolaires béninois récents.
Solution RAG :
- RETRIEVAL : chercher les documents pertinents dans une base vectorielle.
- AUGMENTATION : ajouter ces documents au contexte du LLM.
- GENERATION : le LLM génère une réponse basée sur les documents récupérés.
🐍 Implémenter un RAG complet
from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import FAISS
from langchain.chains import RetrievalQA
from langchain.llms import Anthropic
loader = PyPDFLoader('manuel_maths_terminale_benin.pdf')
docs = loader.load()
splitter = RecursiveCharacterTextSplitter(
chunk_size=500,
chunk_overlap=50)
chunks = splitter.split_documents(docs)
embedding_model = HuggingFaceEmbeddings(
model_name='sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2')
vectorstore = FAISS.from_documents(chunks, embedding_model)
vectorstore.save_local('index_manuels_benin')
retriever = vectorstore.as_retriever(search_kwargs={'k': 4})
llm = Anthropic(model='claude-sonnet-4-20250514')
rag_chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=retriever,
return_source_documents=True)
🏗️ Architecture finale du système
🌐 Interface Web (Flask + HTML/CSS)
↓ Question de l'étudiant béninois
🔍 Moteur de recherche vectorielle (FAISS)
↓ Top 4 chunks les plus pertinents
🤖 LLM (Claude) avec contexte augmenté
↓ Réponse précise basée sur les manuels béninois
📱 Accessible via WhatsApp, Web, SMS
✏️ Exercice 9
Questions sur le système RAG :
1. Quelle est la différence entre un LLM seul et un système RAG ?
2. Pourquoi le chunk_overlap=50 est-il important ?
3. Comment ce système RAG pourrait-il aider les élèves béninois en zones rurales sans accès aux bibliothèques ?
4. Cite 3 types de documents béninois qu'on pourrait indexer :
a) b) c)
Chapitre 48 — Vers l'université : préparer ta candidature IA 🎓
Tu as maintenant un niveau pré-universitaire solide en IA. Voici comment transformer ce bagage en une candidature universitaire qui ouvre les meilleures portes.
| Institution | Programme | Condition d'accès | Bourse disponible |
|---|---|---|---|
| UAC Abomey-Calavi | Licence Informatique / MIAGE | Bac + dossier | MESRS Bénin |
| IMSP Dangbo | Master Maths appliquées + IA | Licence Maths/Info | Bourse CAMES |
| AIMS Bénin (futur) | MSc Data Science Africa | Licence + anglais | Mastercard Foundation |
| École Polytechnique France | MSc AI | Très bon dossier | Bourse Excellence |
| Carnegie Mellon Africa | MS Machine Learning | Licence + TOEFL | CMU Africa Fellowship |
| Deep Learning Indaba | Summer School | Lettre motivation | Entièrement financé |
📝 Les 5 éléments d'une candidature IA gagnante
- 💻 GitHub portfolio : 3+ projets avec README soigné.
- 📄 Statement of Purpose.
- 🏆 Compétitions Kaggle.
- 📜 Certifications.
- 🌍 Engagement communautaire.
✍️ Extrait de Statement of Purpose
« Je suis né à Cotonou dans un pays où 30% des récoltes sont perdues chaque année faute de détection précoce des maladies. À 16 ans, j'ai créé MalariaNet, un CNN déployé dans 12 dispensaires ruraux via WhatsApp, réduisant le temps de diagnostic de 30 minutes à 8 secondes. Cette expérience m'a convaincu que l'IA appliquée au contexte africain peut sauver des vies. »
| Période | Action concrète | Livrable |
|---|---|---|
| Maintenant | Créer compte GitHub + mettre les projets Niveaux 1-5 | Portfolio public |
| Mois 1-3 | Finir un cours Kaggle + participer à 1 compétition | Badge + rang Kaggle |
| Mois 3-6 | Construire le système RAG béninois complet | Repo GitHub complet |
| Mois 6-9 | Soumettre un poster à Deep Learning Indaba | Accepted poster |
| Mois 9-12 | Préparer TOEFL/DELF + candidatures | Score + dossiers |
| Mois 12-18 | Stage dans une startup IA béninoise ou africaine | Lettre de recommandation |
✏️ Exercice 10
Prépare ta candidature :
Mon projet IA le plus impressionnant :
Mes 3 compétences IA principales : / /
Le problème béninois que je veux résoudre avec l'IA :
L'université ou programme que je vise dans 3 ans :
Première action que je fais cette semaine :
📚 Révisions — Niveau 5
✏️ Exercice 11
Dans la formule d'attention Attention(Q,K,V) = softmax(QKᵀ/√d_k)V :
a) Pourquoi divise-t-on par √d_k ?
b) Que se passe-t-il si tous les scores QKᵀ sont très grands ?
✏️ Exercice 12
Explique le principe du Q-Learning en 3 phrases. Quelle est l'équation de Bellman ?
✏️ Exercice 13
Décris le rôle du Générateur et du Discriminateur dans un GAN. Qu'est-ce que l'équilibre de Nash dans ce contexte ?
✏️ Exercice 14
Qu'est-ce que MLOps ? Cite 3 phases du cycle MLOps et un outil pour chacune :
1. → outil :
2. → outil :
3. → outil :
✏️ Exercice 15
Explique l'IA fédérée. Pourquoi est-elle particulièrement pertinente pour la santé en Afrique ?
✏️ Exercice 16
Qu'est-ce qu'une attaque adversariale (exemple adversarial) ? Comment se défend-on ?
✏️ Exercice 17
Décris les 3 étapes du RAG (Retrieval-Augmented Generation) et explique pourquoi c'est utile pour les étudiants béninois :
1. Retrieval :
2. Augmentation :
3. Generation :
Utilité pour le Bénin :
✅ Corrigés — Niveau 5
✏️ Exercice 3
GANs — réponses :
✅ 1. « tanh » produit des valeurs entre -1 et 1, alignées avec la normalisation des pixels des images réelles.
2. « sigmoid » produit une valeur entre 0 et 1, interprétée comme la probabilité que l'image soit réelle.
3. Mode collapse : le Générateur ne produit qu'un seul type d'image. Problème : il ne capture plus la diversité réelle du dataset.
✏️ Exercice 4
MLOps — réponses :
✅ 1. Versionner les modèles permet de revenir à une version précédente, de tracer qui a entraîné quoi et avec quelles données, et de gérer plusieurs versions en production.
2. Dérive de données : changement de distribution des données entre l'entraînement et la production.
3. a) IA médicale : nouveau variant du paludisme. b) IA agricole : nouvelles variétés ou maladies.
✏️ Exercice 5
IA fédérée — réponses :
✅ 1. Protection des données médicales, confidentialité des patients, réglementation.
2. FedAvg pondère par le nombre de patients : un plus grand hôpital influence davantage l'agrégation.
3. Banque / Mobile Money : détection de fraude sans partager toutes les données financières.
✏️ Exercice 6
Sécurité IA — réponses :
✅ 1. Exemple adversarial : image modifiée par un bruit imperceptible qui trompe le modèle.
2. Data poisoning : injecter volontairement de mauvaises données dans l'entraînement.
3. Rate limit : éviter extraction de modèle, surcharge serveur et abus.
✏️ Exercice 7
Analyse du paper MalariaNet :
✅ Problème : détection du paludisme sur images de cellules sanguines.
Méthode : CNN entraîné sur 27 558 images de 4 hôpitaux béninois.
Résultat principal : 97.1% de rappel, meilleur que les radiologues humains.
Rappel prioritaire : un faux négatif peut être fatal.
✏️ Exercice 8
Portfolio GitHub :
✅ Toutes les réponses montrant 3 projets progressifs, un identifiant GitHub réaliste et un point fort spécifiquement béninois sont acceptées.
✏️ Exercice 9
Système RAG :
✅ 1. LLM seul : répond depuis sa mémoire. RAG : récupère des documents pertinents avant de répondre.
2. chunk_overlap=50 évite de couper un concept en deux.
3. Un étudiant en zone rurale pourrait interroger des manuels scolaires via SMS/WhatsApp.
4. Documents : manuels scolaires béninois, cours UAC, lois béninoises, données météo locales.
✏️ Exercice 10
Candidature :
✅ Toutes les réponses sincères et concrètes sont acceptées.
✏️ Exercice 11
Formule d'attention :
✅ a) Diviser par √d_k évite que les scores soient trop grands, ce qui ferait saturer le softmax.
b) Si tous les scores sont très grands, le softmax donne une distribution très pointue.
✏️ Exercice 12
Q-Learning :
✅ Un agent apprend par essais/erreurs. La table Q stocke la valeur à long terme de chaque couple (état, action). Équation de Bellman : Q(s,a) ← Q(s,a) + α[r + γ·max Q(s',a') - Q(s,a)]
✏️ Exercice 13
GANs :
✅ Générateur : crée de fausses images à partir de bruit. Discriminateur : distingue vraies et fausses images. Équilibre de Nash : D ne fait plus mieux que le hasard.
✏️ Exercice 14
MLOps :
✅ MLOps = ensemble de pratiques pour industrialiser le ML.
1. Expérimentation → MLflow
2. Déploiement/Serving → FastAPI / BentoML
3. Monitoring → Prometheus / Grafana
✏️ Exercice 15
IA fédérée :
✅ L'IA fédérée entraîne un modèle sur des données distribuées sans les centraliser. Elle est particulièrement pertinente pour la santé car les données médicales sont sensibles et protégées.
✏️ Exercice 16
Attaques adversariales :
✅ Perturbation légère et imperceptible d'une image qui trompe un modèle. Défenses : adversarial training, prétraitement des entrées, détection d'anomalies.
✏️ Exercice 17
RAG :
✅ 1. Retrieval : chercher les documents les plus pertinents dans une base vectorielle.
2. Augmentation : ajouter ces documents dans le prompt.
3. Generation : le LLM génère une réponse précise ancrée dans ces documents.
Utilité Bénin : interroger les manuels scolaires, lois, données agricoles locales.
🇧🇯🤖🔬🧮🌍 NIVEAU 5 — EXPERT
Tu es prêt pour l'université.
✔ GANs pour augmenter les datasets agricoles africains
✔ MLOps : MLflow, monitoring, détection de dérive
✔ IA fédérée pour les hôpitaux béninois sans partage de données
✔ Sécurité : FGSM, data poisoning, API Flask sécurisée
✔ Lire des papers de recherche
✔ Portfolio GitHub professionnel
✔ Système RAG complet pour les étudiants béninois
✔ Plan de candidature universitaire
Ce que tu fais maintenant détermine ce que le Bénin sera demain.
Code. Publie. Candidate. Construis. 🌍
— Claude, ton premier professeur IA — Niveau 5 terminé. 🤖