Aller au contenu
Apprendre.
  • M1 · toutes les matières15 matières : Préparation de données, API & sécurité, CI/CD, Docker, Merise, Dataviz, KNIME, ML appliqué : projet LoL, SQL & UML, SQL avancé, Machine Learning, Git, IA frugale & responsable, Qualité des données, MathématiquesAnnée
  • M2 · toutes les matières4 matières : Deep Learning, AI Act, Comex & Fundraising, Gouvernance & DataMeshAnnée
  • Deep LearningM2 · 4 modules · Réseaux de neurones, CNN, texte, modèles génératifs.Matière
  • Préparation de donnéesM1 · 3 modules · Nettoyer, transformer et fusionner des données avec Python.Matière
  • API & sécuritéM1 · 2 modules · Consommer, concevoir et sécuriser des API.Matière
  • CI/CDM1 · 1 module · Intégration et livraison continues.Matière
  • DockerM1 · 3 modules · Conteneurs, images, volumes, réseaux, Compose.Matière
  • MeriseM1 · 2 modules · Modéliser une base : MCD, MLD, MPD.Matière
  • DatavizM1 · 2 modules · Visualiser pour comprendre et décider.Matière
  • KNIMEM1 · 1 module · Explorer et nettoyer des données en workflow.Matière
  • ML appliqué : projet LoLM1 · 2 modules · Du besoin métier au POC de vision par ordinateur.Matière
  • SQL & UMLM1 · 3 modules · Modèles UML et requêtes SQL.Matière
  • SQL avancéM1 · 3 modules · Jointures, fenêtres, CTE, optimisation.Matière
  • Machine LearningM1 · 3 modules · Régression, classification, segmentation, projet.Matière

↑↓ naviguer↵ ouvre le résultat en surbrillanceesc fermer

Partie 1 · Apprendre

Le neurone

Un neurone est une petite machine à décider : il lit des nombres, les pèse, les additionne, puis rend une réponse. Notre fil rouge est un patient dont on a mesuré quatre choses : la température, la fréquence respiratoire, la saturation et l'âge. Ces mesures forment un tenseur (un tableau de nombres) : x = [1,5 ; 2,0 ; −1,8 ; 0,3], de forme 4.

Chaque mesure est multipliée par un poids : un poids positif dit « plus cette mesure est haute, plus je pense à la pneumonie », un poids négatif dit l'inverse. On additionne les produits, puis on ajoute un biais (le point de départ du neurone) : c'est la somme pondérée z.

Bouge les mesures, les poids et le biais : la somme pondérée z et les trois activations se recalculent. Valeurs de départ = le premier neurone du cours (poids 0,8 ; 0,5 ; −0,9 ; 0,1, biais −1,0).

Le premier neurone du cours a pour poids 0,8 ; 0,5 ; −0,9 ; 0,1 et pour biais −1,0. Pour notre patient :

  • 0,8 × 1,5 = 1,2
  • 0,5 × 2,0 = 1,0
  • −0,9 × (−1,8) = 1,62
  • 0,1 × 0,3 = 0,03

Somme : 3,85, moins 1 de biais : z = 2,85. C'est exactement ce que fait (w * x).sum() + b dans PyTorch, sans écrire de boucle. À toi de le faire avec des listes.

À toi de coder

La somme pondérée du patient

Avant de brancher des neurones les uns aux autres, il faut maîtriser le calcul d'un seul : multiplier case par case, additionner, puis ajouter le biais. Si tu oublies le biais, tous tes neurones auront le même point de départ (zéro) et ils décideront moins bien ; c'est l'erreur la plus fréquente.

Écris somme_ponderee(x, w, b) qui renvoie z. Le patient est x, le neurone du cours est w et b : tu dois retrouver z = 2,85.

Ctrl/⌘+Entrée

La somme pondérée peut valoir n'importe quoi. Une activation la transforme en réponse :

  • seuil : 1 si z > 0, sinon 0 (le premier code du cours : z = 2,85 donne 1, z = −0,6 donne 0) ;
  • ReLU : remplace un nombre négatif par 0 et laisse passer un nombre positif ;
  • sigmoïde : écrase z en un nombre entre 0 et 1, lisible comme une probabilité.

Le deuxième neurone a pour poids −0,3 ; 0,2 ; 0,4 ; −1,1 et pour biais 0,5. Pour le patient : z = −0,45 + 0,4 − 0,72 − 0,33 + 0,5 = −0,6, et la ReLU rend 0 : ce neurone « reste muet » pour ce patient.

Les trois activations sur une même entrée z. La ReLU est divisée par 5 pour tenir dans le cadre (affichage, pas de la ReLU réelle).

Une couche de 3 neurones, ce sont trois sommes pondérées sur les mêmes 4 mesures. On range les poids dans un tableau à 3 lignes (un neurone par ligne) et 4 colonnes (une mesure par colonne) : le produit matriciel W @ x calcule les trois d'un coup. Avec le troisième neurone (poids 0,6 ; −0,4 ; −0,5 ; 0,9, biais −0,2), les trois sorties sont, après ReLU, [2,85 ; 0 ; 1,07].

Un neurone de sortie lit ces trois valeurs (poids 0,9 ; 0,7 ; 0,6, biais −1,5), puis applique la sigmoïde : la probabilité de pneumonie du réseau vaut 0,8464.

À toi de coder

De la couche à la probabilité

Un réseau, c'est la même opération répétée : la sortie d'une couche devient l'entrée de la suivante. Tu vas coder ces deux étages en listes. Le piège est de sauter la ReLU entre les deux : sans elle, le 2e neurone (z = −0,6) enverrait −0,6 à la sortie au lieu de 0, et la probabilité serait fausse.

Complète relu(z), sigmoide(z) et couche(x, W, b) (un neurone par ligne de W, ReLU incluse). Le réseau enchaîne ensuite la couche et le neurone de sortie : proba doit valoir 0,8464.

Ctrl/⌘+Entrée

PyTorch emballe tout cela dans nn.Linear(4, 3) (une couche de 3 neurones qui lisent 4 nombres : elle calcule W @ x + b) et nn.Sequential, qui enchaîne les couches. Le réseau du patient s'écrit : Linear(4, 3), ReLU, Linear(3, 1), Sigmoid. Au départ, PyTorch tire les poids au hasard ; le but des parties suivantes est de les apprendre.

Chaque neurone a un poids par entrée plus un biais : la première couche en compte 3 × 4 + 3 = 15, la seconde 3 × 1 + 1 = 4. Au total : 19 paramètres.

À toi de coder

Compter les paramètres d'un réseau

Le nombre de paramètres mesure ce que le réseau peut apprendre (et ce que l'entraînement devra régler). Il se calcule couche par couche : un poids par paire (entrée, neurone) et un biais par neurone. Oublier les biais est l'erreur classique.

Complète parametres(entrees, neurones), puis total pour le réseau 4 → 3 → 1 : tu dois trouver 19.

Ctrl/⌘+Entrée