Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Couches de Perceptrons | Section
Practice
Projects
Quizzes & Challenges
Quiz
Challenges
/
Fondamentaux des Réseaux de Neurones

bookCouches de Perceptrons

Glissez pour afficher le menu

Le perceptron est le réseau de neurones le plus simple—il ne comporte qu’un seul neurone. Pour des tâches plus complexes, on utilise un perceptron multicouche (MLP), qui contient une ou plusieurs couches cachées permettant au réseau d’apprendre des schémas plus riches.

Un MLP se compose de :

  1. Couche d’entrée — reçoit les données ;
  2. Couches cachées — extraient les schémas ;
  3. Couche de sortie — produit les prédictions.

Chaque couche comporte plusieurs neurones ; la sortie d’une couche devient l’entrée de la suivante.

Poids et biais des couches

Précédemment, un neurone stockait ses poids sous forme de vecteur et son biais sous forme de scalaire. Une couche, cependant, contient plusieurs neurones, donc ses poids deviennent une matrice, où chaque ligne stocke les poids d’un neurone. Les biais de tous les neurones forment un vecteur.

Pour une couche avec 3 entrées et 2 neurones :

W=[W11W12W13W21W22W23],b=[b1b2]W=\begin{bmatrix} W_{11} & W_{12} & W_{13} \\ W_{21} & W_{22} & W_{23} \end{bmatrix}, \qquad b=\begin{bmatrix} b_1 \\ b_2 \end{bmatrix}

Ici, WijW_{ij} est le poids de la jj-ième entrée vers le ii-ième neurone ; bib_i est le biais du neurone ii.

Propagation avant

La propagation avant active chaque neurone en calculant une somme pondérée, en ajoutant le biais, puis en appliquant la fonction d’activation.

Auparavant, un seul neurone utilisait :

[ z = W \cdot x + b ]

Désormais, puisque chaque ligne de (W) est le vecteur de poids d’un neurone, effectuer une multiplication matricielle entre la matrice de poids et le vecteur d’entrée permet de calculer automatiquement toutes les sommes pondérées des neurones en une seule opération.

Pour ajouter les biais aux sorties des neurones respectifs, il convient également d'ajouter un vecteur de biais :

Enfin, la fonction d'activation est appliquée au résultat — sigmoïde ou ReLU, dans notre cas. La formule résultante pour la propagation avant dans la couche est la suivante :

a=activation(Wx+b)a = activation(Wx + b)

aa est le vecteur des activations (sorties) des neurones.

Classe Layer

Puisque les MLP sont constitués de couches, nous définissons une classe dédiée Layer. Ses attributs :

  • inputs : vecteur d'entrée (éléments n_inputs) ;
  • outputs : sorties brutes des neurones (éléments n_neurons) ;
  • weights : matrice de poids ;
  • biases : vecteur de biais ;
  • activation_function : fonction d'activation utilisée dans la couche.

Les poids et les biais sont initialisés avec des valeurs aléatoires issues d'une distribution uniforme dans ([-1, 1]). inputs et outputs sont initialisés comme des tableaux NumPy remplis de zéros afin de garantir des formes cohérentes pour la rétropropagation ultérieure.

class Layer:
    def __init__(self, n_inputs, n_neurons, activation_function):
        self.inputs = np.zeros((n_inputs, 1))
        self.outputs = np.zeros((n_neurons, 1))
        self.weights = ...
        self.biases = ...
        self.activation = activation_function
Note
Remarque

L'initialisation de inputs et outputs avec des zéros prévient les erreurs de forme et garantit la cohérence des couches lors des passes avant et arrière.

Méthode Forward

La propagation avant pour une couche calcule les sorties brutes et applique l'activation :

def forward(self, inputs):
    self.inputs = np.array(inputs).reshape(-1, 1)
    # Raw outputs: weighted sum + bias
    self.outputs = ...
    # Apply activation
    return ...

Le remodelage de l'entrée en vecteur colonne garantit une multiplication correcte avec la matrice de poids et assure la correspondance des dimensions attendues dans tout le réseau.

Note
Remarque

Si vous le souhaitez, je peux également raccourcir davantage ce contenu, produire un schéma de la structure de la couche ou générer le code complet fonctionnel pour la classe Layer.

1. Qu'est-ce qui rend un perceptron multicouche (MLP) plus puissant qu'un perceptron simple ?

2. Pourquoi est-il nécessaire d'appliquer ce code avant de multiplier inputs par la matrice de poids ?

question mark

Qu'est-ce qui rend un perceptron multicouche (MLP) plus puissant qu'un perceptron simple ?

Select the correct answer

question mark

Pourquoi est-il nécessaire d'appliquer ce code avant de multiplier inputs par la matrice de poids ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 10

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

Section 1. Chapitre 10
some-alt