Implémentation d'un Neurone Unique
Un neurone est l'unité de calcul fondamentale d'un réseau de neurones. Il traite plusieurs entrées et génère une sortie unique, permettant au réseau d'apprendre et de réaliser des prédictions.
Dans cet exemple, un réseau de neurones avec un seul neurone est construit pour une tâche de classification binaire (par exemple, détection de spam). Le neurone reçoit des caractéristiques numériques et produit une valeur comprise entre 0 et 1, représentant la probabilité qu'un e-mail soit du spam (1) ou non (0).
Étapes :
- Multiplier chaque entrée par son poids ;
- Additionner toutes les entrées pondérées ;
- Ajouter un biais pour décaler la sortie ;
- Appliquer la fonction d'activation sigmoïde, qui convertit le résultat dans l'intervalle ((0,1)) pour obtenir une sortie de probabilité.
Le biais du neurone est également un paramètre ajustable.
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.
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: valeurs initialisées aléatoirement (une par entrée) ;bias: une seule valeur aléatoire. Les deux sont tirés d'une distribution uniforme dans ([-1, 1]) à l'aide denp.random.uniform()pour briser la symétrie.
Propagation avant
La méthode activate() du neurone calcule la somme pondérée et applique la fonction sigmoïde.
La somme pondérée utilise le produit scalaire des poids et des entrées :
input_sum_with_bias = np.dot(self.weights, inputs) + self.bias
Ensuite, l'activation est appliquée pour obtenir la sortie finale du neurone.
L'utilisation de np.dot() évite les boucles et calcule toute la somme pondérée en une seule ligne.
La fonction sigmoïde transforme ensuite cette valeur brute en une probabilité :
def activate(self, inputs):
input_sum_with_bias = ...
output = ...
return output
Activation Sigmoïde
Étant donné une sortie brute (z), la sigmoïde est :
σ(z)=1+e−z1Elle transforme n'importe quel nombre en une valeur comprise entre ((0,1)), ce qui la rend idéale pour la classification binaire, où la sortie du neurone doit représenter une probabilité.
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 simplement à la sortie la valeur z si elle est positive et 0 sinon :
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 ?
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
Awesome!
Completion rate improved to 4
Implémentation d'un Neurone Unique
Glissez pour afficher le menu
Un neurone est l'unité de calcul fondamentale d'un réseau de neurones. Il traite plusieurs entrées et génère une sortie unique, permettant au réseau d'apprendre et de réaliser des prédictions.
Dans cet exemple, un réseau de neurones avec un seul neurone est construit pour une tâche de classification binaire (par exemple, détection de spam). Le neurone reçoit des caractéristiques numériques et produit une valeur comprise entre 0 et 1, représentant la probabilité qu'un e-mail soit du spam (1) ou non (0).
Étapes :
- Multiplier chaque entrée par son poids ;
- Additionner toutes les entrées pondérées ;
- Ajouter un biais pour décaler la sortie ;
- Appliquer la fonction d'activation sigmoïde, qui convertit le résultat dans l'intervalle ((0,1)) pour obtenir une sortie de probabilité.
Le biais du neurone est également un paramètre ajustable.
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.
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: valeurs initialisées aléatoirement (une par entrée) ;bias: une seule valeur aléatoire. Les deux sont tirés d'une distribution uniforme dans ([-1, 1]) à l'aide denp.random.uniform()pour briser la symétrie.
Propagation avant
La méthode activate() du neurone calcule la somme pondérée et applique la fonction sigmoïde.
La somme pondérée utilise le produit scalaire des poids et des entrées :
input_sum_with_bias = np.dot(self.weights, inputs) + self.bias
Ensuite, l'activation est appliquée pour obtenir la sortie finale du neurone.
L'utilisation de np.dot() évite les boucles et calcule toute la somme pondérée en une seule ligne.
La fonction sigmoïde transforme ensuite cette valeur brute en une probabilité :
def activate(self, inputs):
input_sum_with_bias = ...
output = ...
return output
Activation Sigmoïde
Étant donné une sortie brute (z), la sigmoïde est :
σ(z)=1+e−z1Elle transforme n'importe quel nombre en une valeur comprise entre ((0,1)), ce qui la rend idéale pour la classification binaire, où la sortie du neurone doit représenter une probabilité.
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 simplement à la sortie la valeur z si elle est positive et 0 sinon :
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 ?
Merci pour vos commentaires !