Couches de Perceptrons
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 motifs plus riches.
Un MLP se compose de :
- Couche d’entrée — reçoit les données ;
- Couches cachées — extraient les motifs ;
- Couche de sortie — produit les prédictions.
Chaque couche contient 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=[W11W21W12W22W13W23],b=[b1b2]Ici, Wij est le poids de la j-ième entrée vers le i-ième neurone ; bi est le biais du neurone i.
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.
Précédemment, 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 les sommes pondérées de tous les 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)où a 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émentsn_inputs) ;outputs: sorties brutes des neurones (élémentsn_neurons) ;weights: matrice des poids ;biases: vecteur des 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
Initialiser 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 ...
Redimensionner 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.
Si vous le souhaitez, je peux également raccourcir davantage, 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 ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you explain how the weights and biases are initialized in the Layer class?
What activation functions can I use in the Layer class?
Can you walk me through how forward propagation works step by step?
Awesome!
Completion rate improved to 4
Couches de Perceptrons
Glissez pour afficher le menu
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 motifs plus riches.
Un MLP se compose de :
- Couche d’entrée — reçoit les données ;
- Couches cachées — extraient les motifs ;
- Couche de sortie — produit les prédictions.
Chaque couche contient 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=[W11W21W12W22W13W23],b=[b1b2]Ici, Wij est le poids de la j-ième entrée vers le i-ième neurone ; bi est le biais du neurone i.
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.
Précédemment, 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 les sommes pondérées de tous les 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)où a 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émentsn_inputs) ;outputs: sorties brutes des neurones (élémentsn_neurons) ;weights: matrice des poids ;biases: vecteur des 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
Initialiser 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 ...
Redimensionner 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.
Si vous le souhaitez, je peux également raccourcir davantage, 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 ?
Merci pour vos commentaires !