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.
Une brique déjà connue
Section titled “Une brique déjà connue”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.
Le scénario
Section titled “Le scénario”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.
Entraînement
Section titled “Entraînement”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.0Accuracy test: 1.0Les 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.
Prochaine étape
Section titled “Prochaine étape”👉 Suivre un entraînement : courbes train/test
Junior TSAFACK – 12/09/2026