🇧🇯

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.

Nom :
GitHub :
École / Université :
Année :
Sommaire

📋 Sommaire — Niveau 5

Chapitre Titre Page
39Transformers from scratch : coder l'attention multi-têtes3
40Reinforcement Learning : apprendre par récompenses5
41GANs : réseaux génératifs adversariaux6
42MLOps : mettre l'IA en production comme un pro7
43IA fédérée : entraîner sans centraliser les données8
44Sécurité et attaques adversariales9
45Lire et comprendre un article de recherche IA10
46Construire son portfolio GitHub pour l'IA11
47Capstone : système RAG pour les étudiants béninois12
48Vers l'université : préparer ta candidature IA15
Révisions et corrigés17

🎯 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.
Page 6

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 ?

Page 7

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 versioningDVC, Git LFSTracer l'historique des datasets
ExpérimentationMLflow, Weights & BiasesLogger métriques, hyperparamètres
CI/CD modèleGitHub Actions, JenkinsTester et déployer automatiquement
ServingFastAPI, TorchServe, BentoMLExposer le modèle en API robuste
MonitoringPrometheus, GrafanaDétecter dérives de données / perf
RetrainingApache Airflow, PrefectRé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)

Page 8

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

  1. Chaque hôpital béninois garde ses données de patients localement.
  2. Chaque hôpital entraîne une copie locale du modèle sur ses propres données.
  3. Seuls les POIDS du modèle (pas les données) sont envoyés au serveur central.
  4. Le serveur central agrège tous les poids (Federated Averaging).
  5. 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 :

Page 9

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 adversariauxPerturber légèrement une image pour tromper le modèleIA médicale reconnaît un parasite comme sain
Empoisonnement (Poisoning)Injecter de mauvaises données d'entraînementIA agricole donne de mauvais conseils aux paysans
Extraction de modèleVoler un modèle par requêtes multiplesCopier ton IA de détection paludisme
Inversion de modèleReconstruire les données d'entraînementExtraire des données médicales privées
Prompt Injection (LLM)Manipulation d'instructions dans le texteFaire 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 ?

Page 10

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é
AbstractRésumé en 150-250 mots — START ICI2 min
IntroductionProblème, motivation, contributions5 min
Related WorkTravaux existants — souvent survolable2 min
MéthodeL'architecture et les équations clés10 min
ExpériencesDatasets, métriques, comparaisons5 min
RésultatsTableaux et figures — PRIORITÉ5 min
ConclusionLimites et perspectives — utile2 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 ?

Page 11

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 :

Page 12

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 :

  1. RETRIEVAL : chercher les documents pertinents dans une base vectorielle.
  2. AUGMENTATION : ajouter ces documents au contexte du LLM.
  3. 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)

Page 15

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-CalaviLicence Informatique / MIAGEBac + dossierMESRS Bénin
IMSP DangboMaster Maths appliquées + IALicence Maths/InfoBourse CAMES
AIMS Bénin (futur)MSc Data Science AfricaLicence + anglaisMastercard Foundation
École Polytechnique FranceMSc AITrès bon dossierBourse Excellence
Carnegie Mellon AfricaMS Machine LearningLicence + TOEFLCMU Africa Fellowship
Deep Learning IndabaSummer SchoolLettre motivationEntiè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
MaintenantCréer compte GitHub + mettre les projets Niveaux 1-5Portfolio public
Mois 1-3Finir un cours Kaggle + participer à 1 compétitionBadge + rang Kaggle
Mois 3-6Construire le système RAG béninois completRepo GitHub complet
Mois 6-9Soumettre un poster à Deep Learning IndabaAccepted poster
Mois 9-12Préparer TOEFL/DELF + candidaturesScore + dossiers
Mois 12-18Stage dans une startup IA béninoise ou africaineLettre 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

📚 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

✅ 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é. 🤖