Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Implémentation d'un Neurone Unique | Réseau de Neurones à Partir de Zéro
Introduction aux Réseaux de Neurones

bookImplémentation d'un Neurone Unique

Note
Définition

Un neurone est l’unité de calcul fondamentale d’un réseau de neurones. Il traite plusieurs entrées et génère une seule sortie, permettant ainsi au réseau d’apprendre et de faire des prédictions.

Dans cet exemple, l’objectif est de construire un réseau de neurones avec un seul neurone. Il sera utilisé pour une tâche de classification binaire, telle que la détection de spam, où 0 correspond à un email légitime (non-spam) et 1 correspond à un email spam.

Le neurone recevra en entrée des caractéristiques numériques extraites des emails et produira une sortie comprise entre 0 et 1, représentant la probabilité qu’un email donné soit un spam.

Voici ce qui se passe étape par étape :

  1. Chaque entrée est multipliée par un poids correspondant ; les poids sont des paramètres ajustables qui déterminent l’importance de chaque entrée ;
  2. Toutes les entrées pondérées sont additionnées ;
  3. Un terme de biais est ajouté à la somme des entrées, permettant au neurone de décaler sa sortie et d’apporter une flexibilité supplémentaire au modèle ;
  4. La somme est transmise à une fonction d’activation. Comme un seul neurone produit directement la sortie finale (une probabilité), la fonction sigmoïde est utilisée pour comprimer les valeurs dans l’intervalle (0,1)(0, 1).
Note
Remarque

Le biais du neurone est également un paramètre entraînable.

Classe Neurone

Un neurone doit stocker ses poids et son biais, ce qui fait d'une classe un moyen naturel de regrouper ces propriétés associées.

Note
Remarque

Bien que cette classe ne fasse pas partie de l’implémentation finale du réseau de neurones, elle illustre efficacement des principes clés.

class Neuron:
    def __init__(self, n_inputs):  
        self.weights = ...
        self.bias = ...
  • weights : une liste de valeurs initialisées aléatoirement qui déterminent l'importance de chaque entrée (n_inputs correspond au nombre d'entrées) pour le neurone ;
  • bias : une valeur initialisée aléatoirement qui permet au neurone de prendre des décisions plus flexibles.

Les poids et le biais doivent être initialisés aléatoirement avec de petites valeurs comprises entre -1 et 1, tirées d'une distribution uniforme, afin de briser la symétrie et de garantir que différents neurones apprennent des caractéristiques différentes.

Pour récapituler, NumPy fournit la fonction random.uniform() pour générer un nombre aléatoire ou un tableau (en spécifiant l'argument size) de nombres aléatoires issus d'une distribution uniforme dans l'intervalle [low, high).

import numpy as np

np.random.uniform(low, high, size=...)

Propagation avant

La classe Neuron doit inclure une méthode activate() qui calcule la somme pondérée des entrées puis applique la fonction d'activation (la fonction sigmoïde dans ce cas).

Lorsque deux vecteurs de même longueur — weights et inputs — sont disponibles, la somme pondérée peut être calculée efficacement à l'aide du produit scalaire de ces vecteurs.

Cela permet de calculer la somme pondérée en une seule ligne de code grâce à la fonction numpy.dot(), ce qui évite l'utilisation d'une boucle. Le biais peut ensuite être ajouté directement au résultat pour obtenir input_sum_with_bias. La sortie est ensuite calculée en appliquant la fonction d'activation sigmoïde :

def activate(self, inputs):
    input_sum_with_bias = ...
    output = ...

    return output

Fonctions d'activation

La formule de la fonction sigmoïde est la suivante, où zz représente la somme pondérée des entrées avec le biais ajouté (valeur de sortie brute) pour ce neurone particulier :

σ(z)=11+ez\sigma(z) = \frac1{1 + e^{-z}}

En utilisant cette formule, la sigmoïde peut être implémentée comme une fonction simple en Python :

def sigmoid(z):
    return 1 / (1 + np.exp(-z))

La formule de la fonction ReLU est la suivante, qui attribue essentiellement à la sortie la valeur zz si elle est positive et 0 sinon :

ReLU(z)=max(0,z)ReLU(z) = max(0, z)
def relu(z):
    return np.maximum(0, z)

1. Quel est le rôle du terme de biais dans un neurone unique ?

2. Pourquoi initialise-t-on les poids avec de petites valeurs aléatoires plutôt qu'avec des zéros ?

question mark

Quel est le rôle du terme de biais dans un neurone unique ?

Select the correct answer

question mark

Pourquoi initialise-t-on les poids avec de petites valeurs aléatoires plutôt qu'avec des zéros ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 1

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Awesome!

Completion rate improved to 4

bookImplémentation d'un Neurone Unique

Glissez pour afficher le menu

Note
Définition

Un neurone est l’unité de calcul fondamentale d’un réseau de neurones. Il traite plusieurs entrées et génère une seule sortie, permettant ainsi au réseau d’apprendre et de faire des prédictions.

Dans cet exemple, l’objectif est de construire un réseau de neurones avec un seul neurone. Il sera utilisé pour une tâche de classification binaire, telle que la détection de spam, où 0 correspond à un email légitime (non-spam) et 1 correspond à un email spam.

Le neurone recevra en entrée des caractéristiques numériques extraites des emails et produira une sortie comprise entre 0 et 1, représentant la probabilité qu’un email donné soit un spam.

Voici ce qui se passe étape par étape :

  1. Chaque entrée est multipliée par un poids correspondant ; les poids sont des paramètres ajustables qui déterminent l’importance de chaque entrée ;
  2. Toutes les entrées pondérées sont additionnées ;
  3. Un terme de biais est ajouté à la somme des entrées, permettant au neurone de décaler sa sortie et d’apporter une flexibilité supplémentaire au modèle ;
  4. La somme est transmise à une fonction d’activation. Comme un seul neurone produit directement la sortie finale (une probabilité), la fonction sigmoïde est utilisée pour comprimer les valeurs dans l’intervalle (0,1)(0, 1).
Note
Remarque

Le biais du neurone est également un paramètre entraînable.

Classe Neurone

Un neurone doit stocker ses poids et son biais, ce qui fait d'une classe un moyen naturel de regrouper ces propriétés associées.

Note
Remarque

Bien que cette classe ne fasse pas partie de l’implémentation finale du réseau de neurones, elle illustre efficacement des principes clés.

class Neuron:
    def __init__(self, n_inputs):  
        self.weights = ...
        self.bias = ...
  • weights : une liste de valeurs initialisées aléatoirement qui déterminent l'importance de chaque entrée (n_inputs correspond au nombre d'entrées) pour le neurone ;
  • bias : une valeur initialisée aléatoirement qui permet au neurone de prendre des décisions plus flexibles.

Les poids et le biais doivent être initialisés aléatoirement avec de petites valeurs comprises entre -1 et 1, tirées d'une distribution uniforme, afin de briser la symétrie et de garantir que différents neurones apprennent des caractéristiques différentes.

Pour récapituler, NumPy fournit la fonction random.uniform() pour générer un nombre aléatoire ou un tableau (en spécifiant l'argument size) de nombres aléatoires issus d'une distribution uniforme dans l'intervalle [low, high).

import numpy as np

np.random.uniform(low, high, size=...)

Propagation avant

La classe Neuron doit inclure une méthode activate() qui calcule la somme pondérée des entrées puis applique la fonction d'activation (la fonction sigmoïde dans ce cas).

Lorsque deux vecteurs de même longueur — weights et inputs — sont disponibles, la somme pondérée peut être calculée efficacement à l'aide du produit scalaire de ces vecteurs.

Cela permet de calculer la somme pondérée en une seule ligne de code grâce à la fonction numpy.dot(), ce qui évite l'utilisation d'une boucle. Le biais peut ensuite être ajouté directement au résultat pour obtenir input_sum_with_bias. La sortie est ensuite calculée en appliquant la fonction d'activation sigmoïde :

def activate(self, inputs):
    input_sum_with_bias = ...
    output = ...

    return output

Fonctions d'activation

La formule de la fonction sigmoïde est la suivante, où zz représente la somme pondérée des entrées avec le biais ajouté (valeur de sortie brute) pour ce neurone particulier :

σ(z)=11+ez\sigma(z) = \frac1{1 + e^{-z}}

En utilisant cette formule, la sigmoïde peut être implémentée comme une fonction simple en Python :

def sigmoid(z):
    return 1 / (1 + np.exp(-z))

La formule de la fonction ReLU est la suivante, qui attribue essentiellement à la sortie la valeur zz si elle est positive et 0 sinon :

ReLU(z)=max(0,z)ReLU(z) = max(0, z)
def relu(z):
    return np.maximum(0, z)

1. Quel est le rôle du terme de biais dans un neurone unique ?

2. Pourquoi initialise-t-on les poids avec de petites valeurs aléatoires plutôt qu'avec des zéros ?

question mark

Quel est le rôle du terme de biais dans un neurone unique ?

Select the correct answer

question mark

Pourquoi initialise-t-on les poids avec de petites valeurs aléatoires plutôt qu'avec des zéros ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 1
some-alt