Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Deep Learning, les fonctions d'activation

Par Florent SIMON Publié le 04/10/2018 à 00:39:12 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Définition

Cet article est destiné aux personnes déjà initiées au Deep Learning et explique l'intérêt de la fonction d'activation. De plus, il montre l'importance du choix de la fonction d'activation utilisée pour entraîner un réseau de neurones.

                  

Tout d'abord, avant de définir précisement ce qu'est une fonction d'activation, parlons de son origine afin de mieux comprendre son rôle. La fonction d'activation a été inspirée du "potentiel d'action", un phénomène éléctrique entre deux neurones biologiques.

                  

Commençons par un petit rappel du cours d'SVT sur la composition d'un neurone biologique: Un neurone est doté d'un corps cellulaire, d'un axone lui permettant d'émettre des messages à d'autres neurones et possède des dendrites qui lui permettent de recevoir des signaux provenant d'autres neurones.

                  

Maintenant que vous êtes à jour, expliquons ce qu'est le potentiel d'action:

                  

Dans l'image ci-dessous, le rectangle orange indique la région où les deux neurones communiquent. Le neurone reçoit des signaux d'autres neurones à travers les dendrites. Le poids associé à une dendrite, appelé poids synaptique, est multiplié par le signal entrant. Les signaux des dendrites sont accumulés dans le corps cellulaire et si la force du signal résultant dépasse un certain seuil, le neurone transmet le message à l'axone. Sinon, le signal est tué par le neurone et ne se propage pas davantage. Le potentiel d'action est donc la variation de la force du signal indiquant si la communication doit se faire ou non.

La fonction d'activation prend la décision de transmettre ou non le signal. Dans ce cas, il s’agit d’une fonction simple avec un seul paramètre: le seuil. Maintenant, lorsque nous apprenons quelque chose de nouveau, le seuil et la probabilité de connexion (appelée poids synaptique) de certains neurones changent. Cela crée de nouvelles connexions entre les neurones, ce qui permet au cerveau d'apprendre de nouvelles choses.

                  

Voyons maintenant comment tout cela fonctionne avec un réseau de neurones artificiels: Les valeurs entrantes dans un neurones (x1, x2, x3, ..., xn) sont multipliées avec leur poids (référence au poids synaptique) qui leur sont associés (w1, w2, w3, ..., wn). On fait ensuite la somme de ces multiplications et on ajoute enfin le biais (référence au seuil). L'image ci-dessous montre la formule de calcul.

La fonction Z(x) correspond à la pre-activation, c'est à dire l'étape qui précéde l'activation. Ensuite, la fonction d'activation intervient. Le résultat z de la fonction de pre-activation Z(x) est intérprété par une fonction d'activation A(z) produisant en sortie un résultat y.

L'activation à pour but de transformer le signal de manière à obtenir une valeur de sortie à partir de transformations complexes entre les entrées. Pour ce faire la fonction d'activation doit être non linéaire. C'est cette non-linéarité qui permet de créer de telles transformations. Nous allons voir pourquoi...

La non-linéarité

Commençons par voir briévement la différence entre une fonction d'activation linéaire et non linéaire:

                  

Fonction d'activation linéaire

                  

C'est une fonction simple de la forme: f(x) = ax ou f(x) = x. En gros, l'entrée passe à la sortie sans une très grande modification ou alors sans aucune modification. On reste ici dans une situation de proportionnalité.

               

Fonction d'activation non linéaire

                  

Les situations de proportionnalité sont géneralement des cas particuliers. Les fonctions non linéaires permettent de séparer les données non linéairement séparables. Elles constituent les fonctions d'activation les plus utilisées. Une équation non linéaire régit la correspondance entre les entrées et la sortie.

               

L'utilisation de fonctions d'activation non lineaires est tout simplement indispensable pour la simple et bonne raison que les fonctions linéaires ne fonctionnent qu'avec une seule couche de neurone. Car au delà d'une couche de neurones, l'application récurrente d'une même fonction d'activation linéaire n'aura plus aucun impact sur le résultat. Autrement dit, afin de résoudre des problèmes complexes, l'utilisation de fonctions non lineaires est obligatoire.

                  

Voyons cela avec des exemples:

Observons l'image ci-dessous, nous avons deux types de données représentées en bleu et en orange. Le but étant de les séparer, l'utilisation d'une fonction d'activation linéaire suffit. La ligne rouge représente la frontière de décision résultant de la fonction d'activation. La frontière de décision résulte de la régression logistique effectuée par la fonction, c'est à dire la classification des données. Dans ce cas, les données sont bien séparées et on atteint donc un taux de réussite de 100% à partir d'une simple fonction linéaire.

Poursuivons avec une autre situation, on a toujours deux types de données mais cette fois ci classées differement. La régression logistique étant lineaire, il est impossible de placer la frontière de décision de manière à séparer parfaitement les données réprésentées en bleu de celles en orange. Le taux de réussite lors de la classification des données n'est que d'environ 50% (image ci-dessous). On est ici dans un cas pourtant très simple, les deux types de données se distinguent facilement mais une fonction d'activation linéaire ne peut suffir.

Ainsi, pour séparer correctement ces données, on aura besoin d'une fonction d'activation non linéaire exercant une régression logistique plus poussée. L'image ci-dessous représente la même situation que la précédente mais on a utilisé cette fois-ci une fonction d'activation non linéaire. Nos deux types de données sont maintenant parfaitement séparées (image ci-dessous).

Autre point très important, les données traitées par les neurones peuvent atteindre des valeurs étonnament grandes. L'utilisation d'une fonction linéaire, ne modifiant pas la sortie, les valeurs des données transmises de neurones en neurones peuvent devenir de plus en plus grandes et rendant les calculs beaucoup plus complexes. Afin d'y remedier, les fonctions d'activation non linéaires réduisent la valeur de sortie d'un neurone le plus souvent sous forme d'une simple probabilité. Etudions maintenant les fonctions d'activation les plus utilisées...

Types de fonctions d'activation non linéaires

Sigmoïde

                  

Le but premier de la fonction est de réduire la valeur d'entrée pour la réduire entre 0 et 1. En plus d'exprimer la valeur sous forme de probabilité, si la valeur en entrée est un très grand nombre positif, la fonction convertira cette valeur en une probabilité de 1. A l'inverse, si la valeur en entrée est un très grand nombre négatif, la fonction convertira cette valeur en une probabilité de 0. D'autre part, l'équation de la courbe est telle que, seules les petites valeurs influent réellement sur la variation des valeurs en sortie.

                  

L'image ci-dessous représente la fonction Sigmoïde:

La fonction Sigmoïde a plusieurs défaults:

  • Elle n'est pas centrée sur zéro, c'est à dire que des entrées négatives peuvent engendrer des sorties positives.

  • Etant assez plate, elle influe assez faiblement sur les neurones par rapport à d'autres fonctions d'activations. Le résultat est souvent très proche de 0 ou de 1 causant la saturation de certains neurones.

  • Elle est couteuse en terme de calcul car elle comprend la fonction exponentielle.

                  

                  

Tanh

                  

La fonction Tanh est également appellée "tangente hyperbolique".

Cette fonction ressemble à la fonction Sigmoïde. La différence avec la fonction Sigmoïde est que la fonction Tanh produit un résultat compris entre -1 et 1. La fonction Tanh est en terme général préférable à la fonction Sigmoïde car elle est centrée sur zéro. Les grandes entrées négatives tendent vers -1 et les grandes entrées positives tendent vers 1.

                  

Mis à part cet avantage, la fonction Tanh possède les mêmes autres inconvénients que la fonction Sigmoïde.

                  

                  

ReLU

                  

Pour résoudre le problème de saturation des deux fonctions précédentes (Sigmoïde et Tanh) il existe la fonction ReLU (Unité de Rectification Linéaire). Cette fonction est la plus utilisée.

La fonction ReLU est inteprétée par la formule: f(x) = max(0, x). Si l'entrée est négative la sortie est 0 et si elle est négative alors la sortie est x. Cette fonction d'activation augmente considérablement la convergence du réseau et ne sature pas.

                  

Mais la fonction ReLU n'est pas parfaite. Si la valeur d'entrée est négative, le neurone reste inactif, ainsi les poids ne sont pas mis à jour et le réseau n’apprend pas.

                  

                  

Leaky ReLU

La fonction Leaky ReLU est inteprétée par la formule: f(x) = max(0.1x, x). La fonction Leaky Relu essaye de corriger la fonction ReLU lorsque l'entrée est négative. Le concept de Leaky ReLU est lorsque l'entrée est négative, il aura une petite pente positive de 0,1. Cette fonction élimine quelque peu le problème d'inactivité de la fonction reLU pour les valeurs négatives, mais les résultats obtenus avec elle ne sont pas cohérents. Elle conserve tout de même les caractéristiques d’une fonction d’activation ReLU, c’est-à-dire efficace sur le plan des calculs, elle converge beaucoup plus rapidement et ne sature pas dans les régions positives.

                  

                  

ReLU paramétrique

                 

L'idée de la fonction Leaky ReLU peut être encore élargie. Au lieu de multiplier x par un terme constant, nous pouvons le multiplier par un hyperparamètre qui semble mieux fonctionner que la fonction Leaky ReLU. Cette extension à la fonction Leaky ReLU est connue sous le nom de ReLU paramétrique.

                 

La fonction ReLU paramétrique est inteprétée par la formule: f(x) = max(ax, x) où "a" est un hyperparamètre. Cela donne aux neurones la possibilité de choisir quelle pente est la meilleure dans la région négative. Avec cette capacité, la fonction ReLU paramétrique à la possibilité de devenir une fonction ReLU classique ou une fonction Leaky ReLU.

Conclusion

Il sera le plus souvent préférable d'utiliser la fonction ReLU, ses deux autres versions (Leaky ReLU et ReLU paramétrique) sont des experimentations sans réelle plus value.

                

Au fil des ans, diverses fonctions ont été utilisées. Dans cet article seules les principales ont été citées. A l'heure actuelle il reste encore beaucoup de recherche à effectuer pour trouver une fonction d'activation appropriée permettant au réseau neuronal d'apprendre plus efficacement et plus rapidement.

                

Sources:

                

https://www.geeksforgeeks.org/activation-functions-neural-networks/

https://arxiv.org/pdf/1710.05941.pdf

https://www.analyticsvidhya.com/blog/2017/10/fundamentals-deep-learning-activation-functions-when-to-use-them/

https://www.analyticsindiamag.com/most-common-activation-functions-in-neural-networks-and-rationale-behind-it/

https://www.quora.com/What-is-the-role-of-the-activation-function-in-a-neural-network-How-does-this-function-in-a-human-neural-network-system

https://rocketbootstrapper.com/fr/reseaux-de-neurones-fonction-activation-sigmoide/

https://www.learnopencv.com/understanding-activation-functions-in-deep-learning/

https://fr.wikipedia.org/wiki/Fonction_d%27activation

https://medium.com/the-theory-of-everything/understanding-activation-functions-in-neural-networks-9491262884e0

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels