Réseaux de neurones: fonctions d'activation

Comme vous l'avez constaté dans l' exercice précédent , l'ajout de couches cachées à notre réseau ne suffit pas à représenter les non-linéarités. Les opérations linéaires effectuées sur des opérations linéaires restent linéaires.

Comment configurer un réseau neuronal pour qu'il apprenne les relations non linéaires entre les valeurs ? Il nous faut un moyen d'intégrer des opérations mathématiques non linéaires dans un modèle.

Si cela vous semble familier, c'est parce que nous avons déjà appliqué des opérations mathématiques non linéaires à la sortie d'un modèle linéaire plus tôt dans ce cours. Dans le module de régression logistique , nous avons adapté un modèle de régression linéaire pour qu'il produise une valeur continue comprise entre 0 et 1 (représentant une probabilité) en appliquant une fonction sigmoïde à la sortie du modèle.

Nous pouvons appliquer le même principe à notre réseau de neurones. Reprenons le modèle de l'exercice 2 , mais cette fois, avant d'afficher la valeur de chaque nœud, nous appliquerons d'abord la fonction sigmoïde :

Essayez de parcourir les calculs de chaque nœud en cliquant sur le bouton >| (à droite du bouton de lecture). Examinez les opérations mathématiques effectuées pour calculer la valeur de chaque nœud dans le panneau Calculs situé sous le graphique. Notez que la sortie de chaque nœud est désormais une transformée sigmoïde de la combinaison linéaire des nœuds de la couche précédente, et que les valeurs de sortie sont toutes comprises entre 0 et 1.

Ici, la fonction sigmoïde sert de fonction d'activation pour le réseau neuronal, une transformation non linéaire de la valeur de sortie d'un neurone avant que cette valeur ne soit transmise comme entrée aux calculs de la couche suivante du réseau neuronal.

Maintenant que nous avons ajouté une fonction d'activation, l'ajout de couches a un impact plus important. La superposition de non-linéarités nous permet de modéliser des relations très complexes entre les entrées et les sorties prédites. En bref, chaque couche apprend en réalité une fonction plus complexe et de plus haut niveau à partir des entrées brutes. Pour mieux comprendre ce fonctionnement, consultez l'excellent article de blog de Chris Olah .

fonctions d'activation communes

Trois fonctions mathématiques couramment utilisées comme fonctions d'activation sont la sigmoïde, la tangente hyperbolique et la ReLU.

La fonction sigmoïde (décrite ci-dessus) effectue la transformation suivante sur l'entrée $x$, produisant une valeur de sortie comprise entre 0 et 1 :

\[F(x)=\frac{1} {1+e^{-x}}\]

Voici le graphique de cette fonction :

Figure 4. Représentation graphique de la fonction sigmoïde : une courbe en forme de S qui  s'approche asymptotiquement de l'axe des x lorsque x tend vers moins  l'infini et de 1 lorsque x tend vers l'infini.
Figure 4. Graphique de la fonction sigmoïde.

La fonction tanh (abréviation de « tangente hyperbolique ») transforme l'entrée $x$ pour produire une valeur de sortie comprise entre –1 et 1 :

\[F(x)=tanh(x)\]

Voici le graphique de cette fonction :

Figure 5. Représentation graphique de la fonction tanh : une courbe en forme de S légèrement plus abrupte que la fonction sigmoïde, qui tend asymptotiquement  vers –1 lorsque x tend vers moins l’infini et vers 1 lorsque x tend vers l’infini.
Figure 5. Graphique de la fonction tanh.

La fonction d'activation de l'unité linéaire rectifiée (ou ReLU , en abrégé) transforme la sortie à l'aide de l'algorithme suivant :

  • Si la valeur d'entrée $x$ est inférieure à 0, renvoyez 0.
  • Si la valeur d'entrée $x$ est supérieure ou égale à 0, renvoyez la valeur d'entrée.

La fonction ReLU peut être représentée mathématiquement à l'aide de la fonction max() :

$$F(x)=max(0,x)$$

Voici le graphique de cette fonction :

Figure 6. Représentation graphique de la fonction ReLU : une ligne horizontale  le long de l’axe des x de moins l’infini à 0, qui devient une ligne diagonale  montant vers la droite avec une pente de 1 (y=x) de 0 à l’infini.
Figure 6. Graphique de la fonction ReLU.

La fonction ReLU est souvent plus performante comme fonction d'activation qu'une fonction lisse comme la sigmoïde ou la tangente hyperbolique, car elle est moins sensible au problème de disparition du gradient lors de l'apprentissage des réseaux de neurones . De plus, son calcul est nettement plus simple.

Autres fonctions d'activation

En pratique, toute fonction mathématique peut servir de fonction d'activation. Supposons que \(\sigma\) représente notre fonction d'activation. La valeur d'un nœud du réseau est donnée par la formule suivante :

$$\sigma(\boldsymbol w \cdot \boldsymbol x+b)$$

Keras prend en charge nativement de nombreuses fonctions d'activation . Cela dit, nous recommandons tout de même de commencer par ReLU.

Résumé

La vidéo suivante récapitule tout ce que vous avez appris jusqu'à présent sur la construction des réseaux neuronaux :

Notre modèle possède désormais tous les composants standard que les gens entendent généralement par réseau neuronal :

  • Un ensemble de nœuds, analogues à des neurones, organisés en couches.
  • Un ensemble de poids et de biais appris représentant les connexions entre chaque couche du réseau de neurones et la couche sous-jacente. Cette dernière peut être une autre couche du réseau de neurones, ou une couche d'un autre type.
  • Une fonction d'activation qui transforme la sortie de chaque nœud d'une couche. Différentes couches peuvent avoir des fonctions d'activation différentes.

Attention : les réseaux neuronaux ne sont pas nécessairement toujours meilleurs que les croisements de caractéristiques, mais ils offrent une alternative flexible qui fonctionne bien dans de nombreux cas.