Une fonction d’activation est simplement une fonction appliquée au résultat d’un neurone. Sans fonction d’activation, les réseaux neuronaux ne peuvent qu’apprendre des relations linéaires.
Il existe tout un tas de fonctions d’activation possibles.
Est la fonction d’activation utilisé dans le perceptron. Elle n’est plus utilisée aujourd’hui car trop abrupte: une légère modification de poids, même 0.001, peut faire basculer le résultat de 0 à 1.
\[\text{Heaviside step function} \\ \begin{aligned} H(x) &= \frac{sign(x) +1}{2} \\ &= \begin{cases} 0 & \text{si } x <= 0 \\ 1 & \text{sinon} \end{cases} \end{aligned}\]La fonction sigmoid, aussi appelé fonction logit, restreint le résultat entre 0 et 1.
Cette fonction a un inconvénient: elle a une pente relativement raide entre -3 et 3 alors que les pentes au-dessus et en-dessous sont presque plates. Ainsi, même si les données changent beaucoup, le résultat de la fonction d’activation ne change que très peu. C’est la raison pour laquelle sigmoid n’est pas utilisée pour les couches cachées (pose problème pour mettre à jour les poids), mais uniquement pour la couche en sortie — dans le cas d’un algorithme de classification du moins, pour un algorithme de régression on n’utilise pas de fonction d’activation en sortie.
La fonction tanh restreint le résultat entre -1 et 1.
Même problème que sigmoid.
La fonction relu nullifie les valeurs inférieures à 0.
Relu est la fonction d’activation la plus couramment utilisé pour les couches cachées.
Leaky relu introduit une pente légèrement réduite (0.01) pour toutes les valeurs de x inférieures à 0.
\[\text{Leaky relu function} \\ lrelu(x) = \begin{cases} 0.01x & \text{si } x < 0 \\ x & \text{sinon} \end{cases}\]Softmax est juste une version généralisée de sigmoid — pour K sorties, la somme de doit être égale à 1. Sigmoid est utilisée en sortie pour les problèmes de classification binaire, Softmax est utilisé pour les problème de classification multi-classe.
\[\text{Softmax function} \\ softmax(x_i) = \frac{e^{x_i}}{\sum^K_{j=1} e^{x_j}}\]L’activation linéaire ne fait que renvoyer l’entrée qu’elle a reçue. Quand on utilise un framework, indiquer une activation linéaire est juste une manière de dire “ne rien faire”. C’est ce qu’on utilise sur la couche en sortie dans le cas d’un problème de régression.
Sigmoid:
fonction d’activation de la couche en sortie pour les problèmes de classification binaire (retourne la probabilité que la classe soit 1)
Softmax:
fonction d’activation de la couche en sortie pour les problème de classification multi-classes (retourne la probabilité associée à chaque classe)
Linear:
fonction d’activation de la couche en sortie pour les problèmes de régression
Tanh:
fonction d’activation de la couche en sortie quand on souhaite un résultat dans l’intervalle [-1, +1]
Relu ou leaky relu:
fonction d’activation pour les couches cachées
Pour aller plus loin:
Tensorflow: activations