Bonjour ! Dans la leçon précédente, nous avons disséqué le neurone artificiel et vu comment il combine les entrées avec des poids et un biais pour calculer une valeur intermédiaire, . Cette étape linéaire est essentielle, mais elle n'est que la moitié de l'histoire. Pour que les réseaux de neurones puissent apprendre des motifs complexes, ils ont besoin d'un ingrédient supplémentaire.
Aujourd'hui, nous allons nous pencher sur la deuxième étape du calcul neuronal : la fonction d'activation. L'objectif de cette leçon est de vous permettre de décrire les fonctions d'activation courantes (ReLU, Sigmoid, Softmax) et leurs cas d'utilisation. Nous verrons pourquoi ces fonctions sont indispensables, nous étudierons les plus importantes d'entre elles et, surtout, nous établirons des règles claires pour savoir quand utiliser chacune d'entre elles. C'est une étape cruciale qui vous permettra de concevoir des architectures de réseaux adaptées aux problèmes que vous cherchez à résoudre.
1. Pourquoi avons-nous besoin de fonctions d'activation ?
Dans la dernière leçon, nous avons établi que la première étape d'un neurone est de calculer une fonction linéaire : . Que se passerait-il si nous empilions des couches de neurones qui ne feraient que ce calcul ? Il s'avère qu'une succession de transformations linéaires n'est rien d'autre qu'une seule transformation linéaire. Un réseau de neurones profond sans fonctions d'activation ne serait pas plus puissant qu'un simple modèle de régression linéaire ou logistique.
Pour modéliser les complexités du monde réel (comme la reconnaissance d'images ou la traduction de langues), nous avons besoin d'introduire de la non-linéarité. C'est précisément le rôle de la fonction d'activation. Elle prend la sortie linéaire et la transforme de manière non linéaire.
La vidéo suivante explique de manière très intuitive pourquoi cette non-linéarité est si cruciale.
Activation Functions MADE EASY [3/11]
Cette vidéo commence par une excellente explication visuelle de la nécessité des fonctions d'activation.
Regardez la section Pourquoi la non-linéarité est nécessaire. L'animateur montre la différence entre un problème qui peut être résolu par une ligne droite (linéaire) et un autre qui nécessite une frontière de décision courbe (non-linéaire). C'est le concept fondamental qui justifie l'existence des fonctions d'activation.
Comme l'explique la vidéo, en ajoutant une étape de "flexion" ou de "torsion" non linéaire à chaque neurone, le réseau dans son ensemble devient capable de construire des frontières de décision extraordinairement complexes, lui permettant de s'attaquer à des problèmes beaucoup plus difficiles.
2. Une galerie de fonctions d'activation
Il existe de nombreuses fonctions d'activation, chacune avec ses propres caractéristiques. L'image ci-dessous présente un "aide-mémoire" de certaines des plus courantes. Nous nous concentrerons sur les trois plus importantes : Sigmoid, ReLU et Softmax.

La fonction Sigmoid : l'ancêtre historique
La fonction sigmoïde était autrefois très populaire. Sa formule est . Comme vous pouvez le voir sur le graphique, sa principale caractéristique est de "compresser" n'importe quelle valeur d'entrée dans une plage comprise entre 0 et 1.
Cependant, la fonction sigmoïde est aujourd'hui rarement utilisée dans les couches cachées des réseaux de neurones modernes, principalement en raison d'un problème appelé le vanishing gradient (gradient qui disparaît).
Dans la vidéo suivante, Andrew Ng explique ce problème et présente une alternative, la fonction Tanh, avant d'introduire le standard actuel, ReLU.
Activation Functions (C1W3L06)
Andrew Ng, une figure de référence du machine learning, explique ici les avantages et les inconvénients de différentes fonctions d'activation.
Regardez les passages suivants : Problème du Sigmoid : Notez que lorsque l'entrée z est très grande ou très petite, la courbe du Sigmoid devient plate. Un gradient plat (proche de zéro) signifie que le réseau apprend très lentement, voire plus du tout. La fonction Tanh : Il explique que Tanh (tangente hyperbolique) est presque toujours meilleure que Sigmoid pour les couches cachées car sa sortie est centrée sur zéro (entre -1 et 1), ce qui aide à l'optimisation. La fonction ReLU : Il introduit la fonction Rectified Linear Unit (ReLU) et explique pourquoi elle est devenue si populaire.
ReLU (Rectified Linear Unit) : le standard par défaut
Comme Andrew Ng l'a mentionné, la fonction d'activation la plus utilisée aujourd'hui dans les couches cachées est de loin la ReLU. Sa formule est d'une simplicité déconcertante : .
- Si l'entrée est négative, la sortie est 0.
- Si l'entrée est positive, la sortie est elle-même.
Activation Function in Neural Networks: Sigmoid, Tanh ...
Cet article résume bien les avantages et les inconvénients de la fonction ReLU.
Lisez la section sur la fonction ReLU. Concentrez-vous sur les avantages listés : non-linéarité, efficacité de calcul, et surtout, l'atténuation du problème de "vanishing gradient".
Les principales raisons de la popularité de ReLU sont :
- Efficacité de calcul : Le calcul de
max(0, z)est beaucoup plus rapide que le calcul d'une exponentielle dans les fonctions Sigmoid ou Tanh. - Atténuation du vanishing gradient : Pour toutes les entrées positives, le gradient (la pente) de la fonction ReLU est constant (égal à 1). Cela permet aux gradients de circuler plus facilement à travers le réseau pendant l'entraînement, ce qui accélère considérablement l'apprentissage.
En raison de ces avantages, la règle générale est la suivante : pour les couches cachées de votre réseau de neurones, commencez toujours par utiliser ReLU.
3. Fonctions d'activation pour la couche de sortie : choisir selon la tâche
Si ReLU est le roi des couches cachées, le choix de la fonction d'activation pour la couche de sortie est différent. Il ne dépend pas de l'optimisation mais de la nature de la tâche que vous essayez de résoudre et du format de sortie que vous désirez.
La vidéo d'Andrew Jones explique cela de manière exceptionnellement claire.
Activation Functions MADE EASY [3/11]
Cette section est cruciale. Elle explique comment choisir la fonction d'activation de la couche de sortie en fonction de votre problème.
Regardez attentivement la section qui commence à Activation de la couche de sortie. Elle couvre les trois cas principaux : régression, classification binaire et classification multi-classes.
Résumons et formalisons ces cas d'utilisation essentiels.
Cas 1 : Classification binaire (Binary Classification)
- Problème : Prédire l'une des deux classes possibles. Par exemple, "Cette image est-elle un chat ou un chien ?" ou "Cet email est-il un spam ou non ?".
- Sortie désirée : Une seule probabilité, un nombre entre 0 et 1. Par exemple, la probabilité que l'image soit un chat.
- Fonction d'activation : Sigmoid. Sa capacité à compresser n'importe quelle entrée dans une plage de (0, 1) la rend parfaite pour représenter une probabilité.
L'article de Weights & Biases illustre ce cas avec un exemple de code.
Understanding Logits, Sigmoid, Softmax, and Cross ...
Cet article explique clairement la différence entre Sigmoid et Softmax en fonction du problème de classification.
Lisez la section d'introduction sur les Logits pour comprendre que ce sont les sorties brutes du réseau, puis lisez la section Sigmoid Function. Elle montre comment Sigmoid est utilisé pour un problème de classification binaire ("voiture ou pas voiture").
Cas 2 : Classification multi-classes (Multi-class Classification)
- Problème : Prédire une classe parmi plusieurs options mutuellement exclusives. Par exemple, "Cette image est-elle un chat, un chien, un poisson ou un cheval ?". Un objet ne peut être qu'une seule de ces choses à la fois.
- Sortie désirée : Une distribution de probabilité sur toutes les classes. Chaque sortie doit être une probabilité entre 0 et 1, et la somme de toutes les probabilités doit être égale à 1.
- Fonction d'activation : Softmax.
La fonction Softmax prend le vecteur de logits de la couche de sortie et le transforme. Pour chaque sortie , elle calcule :
où est le nombre total de classes. En pratique, elle fait deux choses :
- Elle utilise l'exponentielle pour rendre toutes les valeurs positives.
- Elle divise par la somme de toutes les valeurs exponentiées pour s'assurer que la somme totale des sorties est égale à 1.
La vidéo suivante détaille le calcul pas à pas.
Activation Functions MADE EASY [3/11]
Cette section démystifie le calcul de la fonction Softmax.
Regardez l'exemple de calcul de Softmax pour une classification multi-classes (chat, chien, vache). Suivez chaque étape : le calcul des exponentielles, la somme, puis la division pour obtenir les probabilités finales. Cela rend la formule beaucoup moins intimidante.
L'article de Weights & Biases souligne également une intuition importante sur Softmax : comme elle utilise une fonction exponentielle, elle a tendance à "vouloir choisir une seule chose". Une petite augmentation dans un logit peut conduire à une probabilité beaucoup plus grande pour cette classe, ce qui est souvent souhaitable dans les problèmes de classification multi-classes.
Understanding Logits, Sigmoid, Softmax, and Cross ...
Cet article fournit un autre excellent exemple de calcul et une intuition précieuse.
Lisez la section Softmax activation function pour comprendre pourquoi Sigmoid ne convient pas ici, puis suivez le calcul pas à pas. Notez particulièrement l'explication sur la façon dont Softmax "wants to pick a single class".
Conclusion : Des règles simples pour un choix crucial
Le choix des fonctions d'activation peut sembler complexe, mais il se résume à quelques règles pratiques et fiables. Comprendre ces règles est fondamental pour construire des modèles de deep learning efficaces.
Points clés à retenir :
- Rôle : Les fonctions d'activation introduisent la non-linéarité, permettant aux réseaux de neurones d'apprendre des relations complexes.
- Pour les couches cachées : La règle d'or est d'utiliser ReLU (). Elle est rapide et aide à prévenir le problème des gradients qui disparaissent (vanishing gradients).
- Pour la couche de sortie : Le choix dépend de votre tâche.
- Classification binaire : Utilisez Sigmoid pour obtenir une probabilité unique entre 0 et 1.
- Classification multi-classes : Utilisez Softmax pour obtenir une distribution de probabilité sur toutes les classes, dont la somme est égale à 1.
- Logits : Ce sont les sorties numériques brutes de la dernière couche linéaire du réseau, avant l'application de la fonction d'activation de sortie (comme Sigmoid ou Softmax).
Maintenant que nous avons assemblé toutes les pièces du puzzle d'un neurone — poids, biais et fonction d'activation — nous sommes prêts à passer à l'étape suivante. Dans la prochaine leçon, nous allons utiliser ces concepts pour construire un réseau de neurones simple et complet en créant une classe qui hérite de torch.nn.Module, la brique de base pour tous les modèles dans PyTorch.