Skip to content

Le neurone artificiel

Ce module construit un réseau de neurones entièrement à la main, en NumPy, avant de basculer vers un framework de production (Keras). L’objectif : comprendre chaque rouage — neurone, couche, rétropropagation — avant de les déléguer à une bibliothèque.

Bonne nouvelle : le module 3 a déjà construit cette brique de base sans le nommer ainsi. Un neurone artificiel est exactement une régression logistique : un score linéaire, passé dans une sigmoïde, entraîné par descente de gradient sur un coût de log-loss.

Prédire si une machine industrielle est en fonctionnement normal ou à risque de surchauffe, à partir de deux capteurs (température, vibration).

class LogisticNeuron:
def __init__(self, n_features):
self.W = np.random.randn(n_features, 1)
self.b = np.random.randn(1)
@staticmethod
def _sigmoid(Z):
return 1 / (1 + np.exp(-Z))
def _forward(self, X):
return self._sigmoid(X @ self.W + self.b)
def fit(self, X, y, learning_rate=0.1, n_iterations=1000):
m = len(y)
for i in range(n_iterations):
A = self._forward(X)
dW = (1 / m) * X.T @ (A - y)
db = (1 / m) * np.sum(A - y)
self.W -= learning_rate * dW
self.b -= learning_rate * db
return self
def predict(self, X, threshold=0.5):
return (self._forward(X) >= threshold).astype(int)

Structurer en classe plutôt qu’en fonctions éparses

Section titled “Structurer en classe plutôt qu’en fonctions éparses”

Une différence avec le module 3 : le modèle est ici encapsulé dans une classe, avec ses paramètres (W, b) comme attributs et ses opérations (fit, predict) comme méthodes — la convention utilisée par toutes les bibliothèques de deep learning (PyTorch, Keras), qui facilite la composition de plusieurs couches, comme le fera la leçon 4.

neuron = LogisticNeuron(n_features=2)
neuron.fit(X_train, y_train, learning_rate=0.5, n_iterations=1000)
print("Accuracy train:", np.mean(neuron.predict(X_train) == y_train))
print("Accuracy test:", np.mean(neuron.predict(X_test) == y_test))
Accuracy train: 1.0
Accuracy test: 1.0

Les deux classes de machines sont ici linéairement séparables (un simple neurone suffit) — la leçon 4 montrera où cette approche atteint ses limites.

👉 Suivre un entraînement : courbes train/test


Junior TSAFACK – 12/09/2026