← Comprendre les Réseaux de Neurones
🎛️ Phase 2 · 1 jour

Le neurone - réglage manuel

🎯 Ce que tu retiens : Comprendre l'erreur

Explication

Un neurone artificiel est une fonction mathématique simple :

sortie = sigmoide(x1 * poids1 + x2 * poids2 + biais)

📖 Vocabulaire - français / anglais

  • poids ↔ *weight*
  • biais ↔ *bias*
  • sigmoïde ↔ *sigmoid* (la courbe en S qui rend une sortie entre 0 et 1)
  • entrée / sortie ↔ *input / output*

Code de départ

import math

def sigmoide(x):
    return 1 / (1 + math.exp(-x))

def neurone(x1, x2, poids1, poids2, biais):
    somme = x1 * poids1 + x2 * poids2 + biais
    return sigmoide(somme)

# Test
print(neurone(5.1, 1.8, 0.1, 0.1, 0.0))   # -> environ 0.62

Exercice 2.1 - Premier contact

✍️ À toi de jouer

On veut que le neurone réponde proche de 1 pour une Virginica (pétale long de 5.1, large de 1.8). Avec poids1=0.1, poids2=0.1, biais=0.0, la réponse est ≈ 0.62.

Trouve, en les changeant un par un, des valeurs qui donnent une réponse > 0.90. Observe :

  • augmente poids1 seul - que se passe-t-il ?
  • diminue biais - que se passe-t-il ?
  • rends poids2 négatif - que se passe-t-il ?
Besoin d'un indice ?

Comme x1 (5.1) est grand et x2 (1.8) moyen, c'est poids1 qui a le plus d'impact. Essaie poids1=1.0, poids2=0.5, biais=-2.0.

Voir la réponse
print(neurone(5.1, 1.8, 1.2, 0.3, -3.0))   # environ 0.95

Observation : le biais négatif force le neurone à être « difficile ». Il faut de grandes entrées pour le convaincre. C'est comme dire : « par défaut je réponds non ; prouve-moi que c'est une Virginica ».

Exercice 2.2 - Le jeu du professeur

✍️ À toi de jouer

Voici 4 fleurs. Trouve UN SEUL jeu de 3 nombres (poids1, poids2, biais) qui répond > 0.9 pour les Virginica et < 0.1 pour les Setosa.

Fleurx1 (longueur)x2 (largeur)EspèceAttendu
A1.40.2Setosa0
B1.30.2Setosa0
C5.11.8Virginica1
D5.92.1Virginica1

Commence avec poids1=0.5, poids2=0.0, biais=-1.0. Teste sur les 4 fleurs, ajuste UN SEUL nombre à la fois, re-teste.

  1. Combien d'essais t'a-t-il fallu ?
  2. Quel nombre a eu le plus d'impact ?
  3. poids2 (largeur) est-il utile ici, ou la longueur suffit-elle ?
Voir la réponse
p1, p2, b = 2.0, 0.0, -3.0
for nom, x1, x2, attendu in [("A",1.4,0.2,0), ("B",1.3,0.2,0),
                             ("C",5.1,1.8,1), ("D",5.9,2.1,1)]:
    print(f"{nom}: prediction={neurone(x1, x2, p1, p2, b):.3f}, attendu={attendu}")

Sortie attendue : A et B ≈ 0.05, C et D ≈ 0.95. Ici la longueur suffit presque seule (poids2=0 marche).

La leçon : tu viens de faire à la main ce que la rétropropagation fait automatiquement - ajuster un poids pour réduire l'erreur. C'est EXACTEMENT le principe de l'apprentissage.