La fonction d’activation est un élément essentiel de la conception d’un réseau neuronal. Le choix de la fonction d’activation vous permet de contrôler entièrement le processus de formation du modèle de réseau. Après avoir ajouté ces fonctions dans les couches cachées, le modèle apprendra efficacement. Le type de prédictions dépend du choix de la fonction d’activation. Par conséquent, vous devez choisir soigneusement la fonction d’activation pour chaque réseau d’apprentissage profond.
Fonctions d’activation
Une fonction d’activation signifie la transformation de l’entrée à l’aide d’une somme pondérée vers la sortie. Elle utilise un seul nœud ou plus pour que le réseau génère la prédiction. Vous pouvez également désigner la fonction d’activation comme une fonction de transfert. Ou encore, vous pouvez l’appeler fonction d’écrasement lorsque la plage de sortie est limitée. Les fonctions d’activation peuvent également être non linéaires et on parle alors de non-linéarité de la conception du réseau. Quelle que soit la fonction d’activation que vous choisissez, elle aura un impact significatif sur les performances et les capacités des différentes parties du modèle d’apprentissage automatique.
Il est préférable d’utiliser la fonction d’activation dans et après l’utilisation du traitement interne pour chaque nœud du réseau. Cependant, la conception du modèle encourage l’utilisation de fonctions d’activation identiques dans une couche. Voici les trois couches que comprend un réseau :
– Couches d’entrée
Les couches d’entrée collectent l’entrée brute et l’utilisent dans le processus de calcul.
– Couches cachées
Les couches cachées rassemblent les entrées de l’autre couche et génèrent des sorties pour l’autre couche.
– Couches de sortie
Les couches de sortie prédisent le résultat.
Chaque couche cachée repose sur la même fonction d’activation. La couche de sortie comprend diverses fonctions d’activation. Elle collecte les informations des couches cachées. Cette couche dépend de la génération de différents types de prédictions dont le modèle a besoin.
Les réseaux neuronaux apprennent à partir de l’algorithme de rétropropagation de l’erreur. Pour mettre à jour les poids de la couche cachée, le modèle a besoin des dérivés de l’erreur de prédiction. Vous pouvez facilement différencier les fonctions d’activation pour calculer la dérivée de premier ordre pour une valeur d’entrée donnée. Les réseaux neuronaux comprennent de nombreux types de fonctions d’activation. Mais pour améliorer les performances des couches cachées et de sortie, vous ne devez utiliser que quelques fonctions.
Avantages de la fonction d’activation linéaire rectifiée
Tout en développant différents types de réseaux neuronaux, la fonction d’activation linéaire rectifiée devient un choix par défaut des data scientists. Les principaux avantages de la fonction d’activation linéaire rectifiée sont les suivants :
1. Simplicité de calcul
Il n’est pas important de mettre en œuvre la fonction de redressement lorsque vous avez besoin d’une fonction max(). Ceci est différent des fonctions d’activation sigmoïde et tanh, pour lesquelles vous avez besoin du calcul exponentiel.
2. Sparsité représentationnelle
Un autre avantage de la fonction de redressement est sa capacité à générer une sortie avec une vraie valeur zéro. Elle indique que les entrées négatives produiront une sortie de valeur zéro vraie. Ainsi, les réseaux neuronaux peuvent activer des couches cachées et inclure une ou plusieurs valeurs zéro vraies. On peut parler de représentation clairsemée, car elle simplifie le modèle et accélère le processus d’apprentissage. Cela rend la fonction souhaitable pour l’apprentissage représentationnel.
3. Comportement linéaire
La fonction de redressement est similaire à la fonction d’activation linéaire. Elle présente les mêmes performances et actions. En général, vous pouvez facilement optimiser le comportement des réseaux neuronaux lorsque le comportement est proche de la linéarité.
Comment coder la fonction de redressement ?
Nous allons utiliser Python pour la mise en œuvre de la fonction linéaire rectifiée avec une méthode simple et directe. L’application la plus simple de l’utilisation de cette fonction serait la fonction max(). Voici l’exemple d’une utilisation correcte de la fonction :
# Fonction linéaire rectifiée
def rectifié(x) :
return max(0.0,x)
Conformément à l’attente, la valeur positive reviendra inchangée. Cependant, la valeur négative ou la valeur d’entrée de 0,0 reviendra à 0,0. Vous trouverez ici quelques exemples d’entrées et de sorties de la fonction d’activation Relu :
# démonstration de la fonction linéaire rectifiée
# Fonction linéaire rectifiée
def rectifié(x) :
returnmax(0.0,x)
# Démonstration avec une entrée positive
x=1.0
print(‘rectifié(%.1f) est %.1f’%(x,rectifié(x)))
x=1000.0
print(‘rectifié(%.1f) est %.1f’%(x,rectifié(x)))
# Démonstration avec une entrée nulle
x=0.0
print(‘rectifié(%.1f) est %.1f’%(x,rectifié(x)))
# Démonstration avec une entrée négative
x=-1.0
print(‘rectifié(%.1f) est %.1f’%(x,rectifié(x)))
x=-1000.0
print(‘rectifié(%.1f) est %.1f’%(x,rectifié(x)))
En exécutant les exemples ci-dessus, nous pouvons identifier le retour des valeurs positives indépendamment de leur taille. Par contre, les valeurs négatives se figent à la valeur 0.0.
1 rectifié(1.0) est 1.0
2 rectifié(1000.0) est 1000.0
3 rectifié(0.0) est 0.0
4 rectifié(-1.0) est 0.0
5 rectifié(-1000.0) est 0.0
Après avoir tracé les séries d’entrée et les sorties calculées, nous comprendrons la relation entre les entrées et les sorties. Voici quelques exemples de génération d’une série d’entiers allant de -10 à 10. Cela aide au calcul de la réactivation pour chaque entrée. Ensuite, le modèle va tracer les résultats.
# Tracer les entrées et les sorties
from matplotlib import pyplot
# Fonction linéaire rectifiée
def rectifié(x) :
returnmax(0.0,x)
# définir une série d’entrées
series_in=[xforxinrange(-10,11)]
# calculer les sorties pour nos entrées
series_out=[rectified(x)forxinseries_in]
# Tracé linéaire des entrées brutes vers les sorties rectifiées
pyplot.plot(série_in,série_out)
pyplot.show()
Conclusion
La fonction de réactivation aide les réseaux neuronaux à former des modèles d’apprentissage profond. En raison des problèmes de gradient évanescent dans différentes couches, vous ne pouvez pas utiliser l’activation par tangente hyperbolique et sigmoïde. Vous pouvez surmonter les problèmes de gradient grâce à la fonction d’activation Relu. Cela permet au modèle d’être plus performant et d’apprendre plus rapidement. Lorsque vous développez le Perceptron convolutif et multicouche, la fonction d’activation linéaire rectifiée des réseaux neuronaux sera l’option par défaut.