Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Propagation avant : calculer la sortie du réseau

Après cette leçon: Je peux calculer à la main la sortie d’un petit réseau de neurones.

Leçon de 55 min1 commandeLab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Du nombre d’entrée à la réponse du réseau

La propagation avant (forward pass en anglais) est le calcul qui mène des entrées d’un réseau de neurones à sa réponse, couche après couche. La refaire à la main montre ce que le réseau répond et pourquoi.

Une station de vélos veut savoir si samedi sera chargé. Elle donne trois nombres au réseau, et la réponse sort de l’autre côté.

À la fin de cette leçon

Remarque

Je peux calculer à la main la sortie d’un petit réseau de neurones.

Mots clés

MotCe que ça veut direExemple
Propagation avantle calcul des sorties, couche après couche
Entréeun nombre donné au réseau
Sortiele nombre que rend un neurone ou le réseau
Couche denseune couche dont chaque neurone reçoit toutes les sorties d’avant
Paramètreun poids ou un biais que l’entraînement règle
ReLUrend le total s’il est positif, sinon 0ReLU(-2) = 0

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Chaque neurone d’une couche reçoit les mêmes entrées

Dans une couche, chaque neurone a ses propres poids et son propre biais. Tous reçoivent les mêmes entrées. Chacun rend une sortie.

Les sorties de la couche forment une liste. Cette liste devient l’entrée de la couche suivante. Le tableau ci-dessous calcule une couche cachée de trois neurones.

Exemple travaillé : une couche cachée

NeuronePoidsBiaisTotal pour les entrées 2, 1, 1Sortie ReLU
N11, -1, 202 - 1 + 2 = 33
N2-1, 2, 01-2 + 2 + 0 + 1 = 11
N3-2, 0, 11-4 + 0 + 1 + 1 = -20

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

La couche suivante lit les sorties d’avant

La couche de sortie ne voit pas les entrées de départ. Elle reçoit seulement les trois sorties de la couche cachée : 3, 1 et 0.

Son neurone a pour poids 2, 1 et 5, et pour biais -4. Le total vaut 2 × 3 + 1 × 1 + 5 × 0 - 4, soit 3. ReLU laisse 3. La réponse du réseau est donc 3.

Le même calcul en Python

Code: python
def relu(x):
    if x > 0:
        return x
    return 0

def neurone(poids, biais, entrees):
    total = biais
    for n in range(len(poids)):
        total = total + poids[n] * entrees[n]
    return relu(total)

entrees = [2, 1, 1]
cachee = [neurone([1, -1, 2], 0, entrees),
          neurone([-1, 2, 0], 1, entrees),
          neurone([-2, 0, 1], 1, entrees)]
print("couche cachée :", cachee)
print("sortie :", neurone([2, 1, 5], -4, cachee))
# Remplacez entrees par [0, 3, 0] puis relancez.
# Notez les deux lignes affichées.

Le calcul entier sur une ligne

Commande
docker exec jupyter python3 -c "e = [2, 1, 1]; a = max(0, e[0] - e[1] + 2 * e[2]); b = max(0, -e[0] + 2 * e[1] + 1); c = max(0, -2 * e[0] + e[2] + 1); print(a, b, c, max(0, 2 * a + b + 5 * c - 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 passent le total brut à la couche suivante, même négatif. Le réseau donne alors une autre réponse. Appliquez la fonction d’activation à chaque neurone, puis transmettez la sortie : un total de -2 transmet 0.

Un réseau se décrit par ses paramètres

Un réseau 3, 3, 1 a trois entrées, trois neurones cachés et un neurone de sortie. Chaque neurone a un poids par entrée qu’il reçoit, plus un biais.

On compte donc 3 × 3 + 3 × 1 poids, soit 12, et 3 + 1 biais, soit 4. Cela fait 16 paramètres. Les grands réseaux en ont des millions.

Exemple travaillé : compter les paramètres

CoucheNeuronesPoids par neuronePoidsBiais
Cachée3393
Sortie1331
Total4124

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

À propos de ce labo et de sa source: Lab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.