Qu’est-ce qu’un réseau de neurones ?
Un réseau de neurones artificiels est une suite de couches, et chaque couche est faite de petits calculs appelés neurones. Savoir ce que fait chaque couche permet de lire un réseau comme une chaîne d’étapes simples, et non comme une boîte magique.
Un service de vélos en libre-service veut prévoir si une station sera pleine samedi. Il donne la température, la pluie et le jour à un réseau. Le réseau répond par un nombre.
À la fin de cette leçon
Remarque
Je peux décrire ce que font les couches d’un réseau de neurones.
Mots clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Neurone | un petit calcul qui reçoit des nombres et rend un nombre | |
| Poids | un nombre qui dit combien une entrée compte | |
| Biais | un nombre ajouté qui décale le total | |
| Fonction d’activation | la règle qui transforme le total en sortie | ReLU |
| Couche | une rangée de neurones qui calculent ensemble | |
| Couche cachée | une couche placée entre l’entrée et la sortie |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un neurone fait une somme pondérée
Un neurone reçoit plusieurs nombres, les entrées. Il multiplie chaque entrée par son poids, puis il additionne tous les produits.
Il ajoute enfin le biais, un nombre qui décale le total. Un grand poids positif donne beaucoup d’importance à l’entrée. Un poids négatif joue en sens inverse.
Exemple travaillé : un neurone à trois entrées
| Entrée | Valeur | Poids | Valeur × poids |
|---|---|---|---|
| Température, en dizaines de degrés | 2 | 3 | 6 |
| Pluie, en centimètres | 1 | -2 | -2 |
| Week-end, 1 si oui | 1 | 1 | 1 |
| Somme des produits | 5 | ||
| Biais | -4 | ||
| Total | 1 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
La fonction d’activation décide de la sortie
Le total n’est pas encore la sortie. Une fonction d’activation le transforme. La plus courante s’appelle ReLU : elle rend le total s’il est positif, et 0 sinon.
La marche rend 1 si le total est positif, sinon 0. La sigmoïde rend un nombre lisse entre 0 et 1. Les deux boutons ci-dessous affichent ReLU puis la sigmoïde de cinq totaux.
ReLU de cinq totaux
docker exec jupyter python3 -c "for x in [-2, -1, 0, 1, 3]: print(x, max(0, x))"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
La sigmoïde de cinq totaux
docker exec jupyter python3 -c "import math; print([round(1 / (1 + math.exp(-x)), 3) for x in [-4, -2, 0, 2, 4]])"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Une erreur fréquente
Attention
Beaucoup pensent que chaque couche de plus rend le réseau plus puissant. Ce n’est vrai qu’avec une fonction d’activation. Sans elle, deux couches se réduisent à une seule somme pondérée, donc à une droite.
Trois sortes de couches
Les neurones sont rangés en couches. La couche d’entrée reçoit les nombres de départ et ne calcule rien. Les couches cachées sont entre les deux. La couche de sortie rend la réponse.
Chaque neurone d’une couche reçoit les sorties de toute la couche d’avant. L’apprentissage profond (en anglais deep learning) entraîne des réseaux à plusieurs couches cachées.
Dans votre carnet : les poids du réseau
import pandas as pd
from sklearn.neural_network import MLPClassifier
jours = pd.read_csv("hires.csv")
entrees = jours[["temp_c", "rain_mm"]]
chargees = jours["hires"] >= 300
# Une couche cachée de 4 neurones.
reseau = MLPClassifier(hidden_layer_sizes=(4,), max_iter=2000, random_state=0)
reseau.fit(entrees, chargees)
for poids in reseau.coefs_:
print(poids.shape)
# Combien de poids le réseau a-t-il à régler en tout ?