Idée
Un perceptron prend en entrée un vecteur de mesures, fait la somme pondérée de ses coordonnées, ajoute un décalage constant, puis écrase le tout dans l'intervalle $[0,1]$ via une courbe en S.
Outil
Régression affine $z = \langle w, x\rangle + b$ de spé MPSI post-composée avec une saturation ; coefficients $w$, $b$ déterminés par minimisation d'une erreur empirique.
Formule
La fonction d'activation utilisee dans le perceptron de la partie 2 et la couche cachée de la partie 3 est la sigmoide $\sigma : \mathbb{R} \to (0,1)$ definie par $\sigma(z) = \dfrac{1}{1 + e^{-z}}$. Elle est strictement croissante, $C^\infty$, satisfait $\sigma(0) = 1/2$, $\lim_{z \to -\infty} \sigma(z) = 0$ et $\lim_{z \to +\infty} \sigma(z) = 1$. Sa dérivée verifie $\sigma'(z) = \sigma(z)(1-\sigma(z))$. C'est, a translation et homothetie pres, la tangente hyperbolique normalisee : $\sigma(z) = \tfrac{1}{2}(1 + \tanh(z/2))$.
Piège
Tentation naïve : 'pas de biais initial' ⇒ initialiser $W$ à zéro. Désastre dans un réseau multi-neurones : par symétrie, tous les neurones de la même couche reçoivent les mêmes gradients à chaque étape et restent identiques pour toujours. Le réseau a effectivement un seul neurone par couche indépendamment de sa largeur. C'est pour cela que le notebook utilise np.random.randn (gaussienne centrée) avec une graine, jamais np.zeros.