Introduction aux réseaux de neurones : anatomie

Nous avons vu dans l'unité Croisements de caractéristiques que le problème de classification suivant était non linéaire :

Graphique cartésien.L'axe traditionnel des x est étiqueté "x1".L'axe traditionnel des y est étiqueté "x2".Les points bleus occupent les quadrants nord-ouest et sud-est ; les points jaunes occupent les quadrants sud-ouest et nord-est.

Figure 1 : Problème de classification non linéaire.

"Non linéaire" signifie qu'il n'est pas possible de prédire avec exactitude une étiquette avec un modèle de la forme $$b + w_1x_1 + w_2x_2$$. Autrement dit, la "surface de décision" n'est pas une droite. Nous avons précédemment vu que les croisements de caractéristiques pouvaient permettre de modéliser les problèmes non linéaires.

Voyons à présent l'ensemble de données suivant :

L'ensemble de données contient de nombreux points orange et bleus. Il est difficile de dégager un motif cohérent, mais les points orange forment vaguement une spirale, et les points bleus forment peut-être une spirale différente.

Figure 2 : Problème de classification non linéaire plus complexe.

L'ensemble de données illustré à la figure 2 ne peut pas être résolu avec un modèle linéaire.

Pour voir comment les réseaux de neurones peuvent aider à résoudre les problèmes non linéaires, commençons par représenter un modèle linéaire à l'aide d'un graphique :

Trois cercles bleus d'affilée alignés connectés par des flèches à un cercle vert au-dessus d'eux

Figure 3 : Représentation graphique d'un modèle linéaire.

Chaque cercle bleu représente une caractéristique d'entrée, et le cercle vert représente la somme pondérée des entrées.

Comment pouvons-nous modifier ce modèle afin d'améliorer sa capacité à traiter les problèmes non linéaires ?

Couches cachées

Dans le modèle représenté par le graphique suivant, nous avons ajouté une "couche cachée" de valeurs intermédiaires. Chaque nœud jaune de la couche cachée est une somme pondérée des valeurs des nœuds d'entrée bleus. La sortie est la somme pondérée des nœuds jaunes.

Trois cercles bleus sur une ligne libellée "Entrée", connectés par des flèches à une ligne de cercles jaunes libellée "Couche cachée" au-dessus d'eux, qui sont eux-mêmes connectés à un cercle vert libellé "Sortie" au sommet

Figure 4 : Représentation graphique d'un modèle à deux couches.

Ce modèle est-il linéaire ? Oui. La sortie est une combinaison linéaire des entrées.

Dans le modèle représenté par le graphique suivant, nous avons ajouté une deuxième couche cachée de sommes pondérées.

Trois cercles bleus sur une ligne libellée "Entrée", connectés par des flèches à une ligne de cercles jaunes libellée "Couche cachée 1" au-dessus d'eux, qui sont connectés eux-mêmes à une autre ligne de cercles jaunes au-dessus d'eux libellée "Couche cachée 2", lesquels sont à leur tour connectés à un cercle vert au sommet

Figure 5 : Représentation graphique d'un modèle à trois couches.

Ce modèle est-il toujours linéaire ? Oui. Lorsque la sortie est exprimée comme une fonction de l'entrée, puis simplifiée, vous obtenez simplement une autre somme pondérée des entrées. Cette somme ne modélisera pas efficacement le problème non linéaire de la figure 2.

Fonctions d'activation

Pour modéliser un problème non linéaire, nous pouvons introduire directement une non-linéarité. Nous pouvons appliquer à chaque nœud de la couche cachée une fonction linéaire.

Dans le modèle représenté par le graphique suivant, la valeur de chaque nœud de la couche cachée 1 est transformée par une fonction non linéaire avant d'être transférée aux sommes pondérées de la couche suivante. Cette fonction non linéaire est appelée "fonction d'activation".

Identique à la figure précédente, si ce n'est qu'une ligne de cercles roses libellée "Couche de transformation non linéaire" a été ajoutée entre les deux couches cachées.

Figure 6 : Représentation graphique d'un modèle à trois couches avec fonction d'activation.

Maintenant que nous avons ajouté une fonction d'activation, l'impact de l'ajout de couches est plus important. En empilant des non-linéarités, nous pouvons modéliser des relations très complexes entre les entrées et les sorties prévues. Pour résumer, chaque couche apprend une fonction plus complexe, d'un niveau supérieur, des entrées brutes. Pour en savoir plus sur ce fonctionnement, consultez l'excellent article de blog de Chris Olah (en anglais).

Fonctions d'activation courantes

La fonction d'activation sigmoïde suivante convertit la somme pondérée en une valeur comprise entre 0 et 1.

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

Voici sa représentation graphique :

Fonction sigmoïde

Figure 7 : Fonction d'activation sigmoïde.

La fonction d'activation d'unité de rectification linéaire (ou ReLU) est souvent un peu plus efficace qu'une fonction lisse de type sigmoïde, tout en étant bien plus simple à calculer.

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

La supériorité de la fonction ReLU repose sur des conclusions empiriques, sans doute du fait que la fonction ReLU présente une plage de réponse plus utile. La réponse de la fonction sigmoïde est rapidement défaillante de chaque côté.

Fonction d'activation ReLU

Figure 8 : Fonction d'activation ReLU.

En fait, toute fonction mathématique peut être utilisée comme fonction d'activation. Supposons que \(\sigma\) représente notre fonction d'activation (ReLU, sigmoïde ou autre). La valeur d'un nœud dans le réseau est alors donnée par la formule suivante :

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

TensorFlow fournit une aide prête à l'emploi pour une large gamme de fonctions d'activation. Cela étant dit, nous recommandons quand même de commencer par la fonction ReLU.

Résumé

Notre modèle possède à présent tous les composants standards de ce que l'on appelle généralement un "réseau de neurones" :

  • Un ensemble de nœuds, semblables à des neurones, organisés en couche.
  • Un ensemble de pondérations, représentant les connexions entre chaque couche du réseau de neurones et la couche inférieure. Cette couche inférieure peut être une autre couche de réseau de neurones ou un autre type de couche.
  • Un ensemble de biais, un par nœud.
  • Une fonction d'activation qui transforme la sortie de chaque nœud d'une couche. Différentes couches peuvent avoir différentes fonctions d'activation.

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

Envoyer des commentaires concernant…

Cours d'initiation au machine learning