Blog

Part 5 : Les réseaux de neurones : la fonction d’activation sigmoide

Cet article fait partie d’une série d’articles qui vous permettra de comprendre étape par étape comment fonctionne l’intelligence artificielle et plus particulièrement les réseaux de neurones.

Je vous invite à lire, si vous ne l’avez pas déjà fait, les articles précédents :

Part 1 : Les réseaux de neurones artificielles

Part 2 : Comment fonctionne le Perceptron

Part 3 : Comment les réseaux de neurones prennent des décisions

Part 4 : Qu’appelle t-on apprentissage automatique


Dans l’article précédent, nous avons parlé de la phase d’apprentissage d’un réseau de neurones artificiel. En effet, les réseaux de neurones sont capable d’apprendre en effectuant des petits changements de l’état de leurs neurones influant positivement sur leurs valeurs de sortie et permettant ainsi au modèle intelligent d’effectuer, entrainement après entrainement de meilleures prédictions (À reconnaître la différence dans une image entre des chiens des chats par exemple).

Pour l’instant, nous n’avons étudié que le perceptron. Le problème est qu’il n’est pas possible de faire des petits changements avec un réseau de neurone de type “perceptron”. Découvrez la raison ci-dessous :

En fait, un changement de poids (weights) même d’un seul perceptron du réseau peut parfois provoquer un changement radical de la sortie du perceptron (output) et la faire basculer de 0 à 1 par exemple. (Pour rappel les perceptrons sont binaires, leurs 2 valeurs possibles sont 0 ou 1).

Et ce changement radical peut ainsi causer un changement de comportement du réseau de neurones de façon irréversible.
Ainsi, si l’on prend l’exemple d’un réseau de neurones qui catégorise des animaux :même si par exemple votre réseau saura très bien reconnaître un chien sur l’image que vous lui présentez, il peut très bien être incapable de distinguer un cheval d’un chat.

Ce manque de flexibilité du à la binarité du perceptron rend donc quasiment impossible d’utiliser des modifications légères et graduelles des weights (poids) et des biases (seuils) afin que le réseau se rapproche du comportement désiré.

Ainsi vous l’avez compris, le modèle perceptron que nous avons étudié précédemment possède des limites.

Mais ne vous inquiétez pas, nous pouvons contourner ces limites grâce à un nouveau type de neurone artificiel appelé un neuronesigmoide” (sigmoid en anglais).

Les neurones sigmoïdes sont similaires aux perceptrons, mais modifiés afin justement que de petits changements de leurs poids (weigths) et seuils (biases) propagent de petits changements également dans leurs valeurs de sorties (output). C’est ce fameux comportement crucial que nous cherchions à résoudre afin de permettre à nos réseaux de neurones d’apprendre efficacement par eux-mêmes.

Ok, laissez moi vous présenter plus en détail ce neurone sigmoïde, et je vous propose d’ailleurs utiliser la même démarche que précédemment lors de la présentation du neurone perceptron.

Tout comme le perceptron, le neurone sigmoïde utilise des variables d’entrées (inputs), x1, x2, … etc mais au lieu d’être uniquement composées de 0 ou 1, ces variables peuvent être n’importe quelle valeur entre 0 et 1. Par exemple, 0,638 est une valeur d’entrée possible pour un neurone sigmoïde.

neurone-perceptron

De plus, tout comme le perceptron, le neurone sigmoïde utilise des poids (weights) pour chaque variable d’entrée ainsi qu’un seuil (bias) par neurone.

Par contre, la sortie (output) du neurone sigmoïde n’est pas 0 ou 1 mais plutôt, σ(w⋅x+b) avec σ appelée la fonction sigmoïde.
D’un point de vue algébrique, la fonction est représentée de la façon suivante :

sigmoide-equation

De façon plus explicite, lorsque l’on remplace la variable z  avec la somme des variables d’entrées x1, x2, x3, etc.. en ajoutant le seuil (bias) b, on se retrouve avec l’équation suivante :

sigmoide-equation-2

A première vue, les neurones sigmoïdes peuvent sembler très différents des perceptrons. La formule mathématique de la fonction sigmoïde peut sembler opaque si vous n’êtes pas encore familier avec elle.

En fait, gardez à l’esprit qu’il y a énormément de similarités entre les neurones perceptrons et les neurones sigmoïdes et ne vous inquiétez pas si vous n’arrivez pas à comprendre l’intégralité de la formule.

D’ailleurs, vous pouvez comprendre le fonctionnement des réseaux de neurones sans forcément être un expert en algèbre.

Pour mieux comprendre les similarités avec un modèle perceptron, supposez que z≡w⋅x+b est un grand nombre positif. Dans ce cas, si z est un grand nombre positif e-z≈0 (exponentiel de -z est proche de 0) et donc σ(z)≈1 le résultat de la fonction sigmoïde sera proche de 1. En d’autres termes, quand z≡w⋅x+b est un grand nombre positif, la sortie (output) du neurone sigmoïde est approximativement égale à 1, tout comme cela l’aurait été pour un neurone perceptron.

Supposez maintenant à l’inverse que z≡w⋅x+b est vraiment négatif. Alors, e-z→∞ (exponentiel de -z tend vers l’infini) et donc σ(z)≈0. Donc si z≡w⋅x+b est négatif, le comportement du neurone sigmoïde est encore une fois très proche de celui du neurone perceptron.

C’est uniquement quand w⋅x+b est de taille moyenne qu’il y a davantage de déviation et de différence avec le modèle perceptron.

Qu’en est-il de la forme algébrique de σ ?

Voici la forme :

sigmoid-fonction

Comme vous pouvez le constater, la fonction permet d’avoir comme valeur de sortie (output) n’importe quel nombre réel entre 0 et 1. Ainsi, les valeurs 0,457 et 0,833 sont des valeurs possibles.

Cette forme est donc en réalité une version lissée d’une fonction “palier” (« step » fonction en anglais) :

fonction-step

Si σ était une fonction étape (step function), alors le neurone sigmoïde serait un perceptron. Vu que la sortie ne pourrait être que 1 ou 0 en fonction de la valeur positive ou négative de w⋅x+b.

En vérité, quand w⋅x+b=0 la sortie (output) du perceptron est 0, tandis que la fonction étape (step) = 1. Ainsi, si l’on souhaite être rigoureux, nous devrions modifier la fonction étape (step) pour qu’elle ait le même comportement que le perceptron. Mais vous comprenez le principe.

 

Pourquoi la fonction d’activation sigmoïde permet-elle l’apprentissage possible?

En utilisant la fonction sigmoïde σ nous obtenons, comme présenté implicitement ci-dessus, un perceptron lissé. En effet, c’est le lissage progressif de la fonction σ sigmoïde qui est crucial (et non le détail de sa fonction mathématique).

Que se passe t-il lors l’apprentissage d’un réseau de neurones?

Lorsque l’on présente à un réseau de neurone une série d’images en entrée (par exemple des images représentants des animaux). Les animaux représentés sont ainsi appelé le « bon résultat », le réseau de neurone va analyser la première image et tenter de deviner quel animal est représenté, on appellera cela le « résultat prédit » (qui est en réalité la valeur de sortie (output) du dernier neurone).

En comparant le bon résultat avec le résultat prédit par le neurone on peut déterminer le delta (Δoutput) correspondant à la différence entre le bon résultat et celui deviné par le neurone. Connaissant ce delta, reste à déterminer comment modifier les poids (weights) et les seuils (biases) des neurones du réseau afin de prédire un meilleur résultat la prochaine fois (c’est à dire lorsque le réseau analysera une autre image.

Comme nous l’avons vu, le lissage de la fonction σ permet qu’un petit changement des poids (weight) appelée delta Δwj et des seuils (bias) Δb produise un petit changement de la sortie (output) Δoutput du neurone. En fait, les mathématiques nous permettent de comprendre comment le delta en sortie peut être approximé :

delta

Le symbole ∂ représente une dérivée partielle, Ne paniquez pas si vous n’êtes pas à l’aise avec les dérivées partielles! Même si l’expression ci-dessus peut vous paraître compliquée, avec les dérivées, l’équation exprime un concept très simple. En fait, Δoutput est une fonction linéaire (c’est à dire une droite) représentant les changements des poids (Δwj) et les changements de seuils (Δb).

Cette linéarité permet de facilement calculer quel est le changement nécessaire (Δoutput) entre la sortie obtenue et celle désirée et donc d’en déduire les nouvelles valeurs des poids (weights) et des seuils (biases) en soustrayant les deltas respectifs (Δwj et Δb).

Une fois les poids (weights) et les seuils (biases) mis à jour, vous pouvez conclure que votre réseau est en train d’apprendre. Si cette étape est répété sur des milliers voire des millions de jeux de données (en l’occurence d’images pour notre exemple) alors le réseau se perfectionnera encore et encore.

Conclusion

La fonction sigmoïde σ est très souvent utilisée dans les réseaux de neurones (neural networks) et est une fonction d’activation que j’utiliserai souvent dans les prochains articles. Nous en étudierons d’autres au fur et à mesure de votre progression.

Cet article fait partie d’une série d’articles qui vous permettra de comprendre étape par étape comment fonctionne l’intelligence artificielle et plus particulièrement les réseaux de neurones.

Je vous invite à lire, si vous ne l’avez pas déjà fait, les articles précédents :

Part 1 : Les réseaux de neurones artificielles

Part 2 : Comment fonctionne le Perceptron

Part 3 : Comment les réseaux de neurones prennent des décisions

Part 4 : Qu’appelle t-on apprentissage automatique

Comments are closed, but <a href="https://rocketbootstrapper.com/fr/reseaux-de-neurones-fonction-activation-sigmoide/trackback/" title="Trackback URL for this post">trackbacks</a> and pingbacks are open.