Réseaux de neurones: structure

Si vous vous souvenez de l'unité Croisements de caractéristiques, le problème de classification suivant est non linéaire:

Intrigue cartésienne. L'axe des abscisses traditionnel est intitulé "'x1'". L'axe des ordonnées traditionnel est intitulé '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 que vous ne pouvez pas prédire avec précision une étiquette avec un modèle de la forme \(b + w_1x_1 + w_2x_2\) En d'autres termes, la surface de décision n'est pas une ligne. Nous avons précédemment vu les croisements de caractéristiques comme une approche possible de la modélisation des problèmes non linéaires.

Prenons maintenant l'ensemble de données suivant:

L'ensemble de données contient de nombreux points orange et bleus. Il est difficile de déterminer 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 à l'aide d'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 sous forme de graphe:

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

Figure 3. Modèle linéaire sous forme de graphique.

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 pour améliorer sa capacité à gérer 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 du nœud d'entrée bleu. La sortie est une somme pondérée des nœuds jaunes.

Trois cercles bleus consécutifs

Figure 4. Graphique d'un modèle à deux couches.

Ce modèle est-il linéaire ? Oui. Son résultat est toujours une combinaison linéaire de ses 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 consécutifs

Figure 5. Graphique représentant un modèle à trois couches.

Ce modèle est-il toujours linéaire ? Oui. Lorsque vous exprimez la sortie en tant que fonction d'entrée et simplifiez-la, vous obtenez simplement une autre somme pondérée des entrées. Cette somme ne modélise 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 traiter chaque nœud de la couche cachée via une fonction non 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 transmise 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, à l'exception qu'une ligne de cercles roses étiquetés "Couche de transformation non linéaire" a été ajoutée entre les deux couches cachées.

Figure 6. Graphique d'un modèle à trois couches avec fonction d'activation.

Maintenant que nous avons ajouté une fonction d'activation, l'ajout de couches a plus d'impact. L'empilement des non-linéarités nous permet de modéliser les relations très complexes entre les entrées et les sorties prédites. En résumé, chaque couche apprend une fonction plus complexe, de niveau supérieur, des entrées brutes. Si vous souhaitez en savoir plus sur ce fonctionnement, consultez l'excellent article de blog de Chris Olah.

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 un 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 beaucoup plus facile à calculer.

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

La supériorité de la fonction ReLU est basée sur des résultats empiriques, probablement causés par une plage de réactivité plus utile. La réactivité d'une sigmoïde diminue rapidement des deux côtés.

Fonction d'activation ReLU

Figure 8. Fonction d'activation ReLU.

En fait, toute fonction mathématique peut servir de fonction d'activation. Supposons que \(\sigma\) représente notre fonction d'activation (Relu, Sigmoid ou autre). Par conséquent, la valeur d'un nœud du réseau est donnée par la formule suivante:

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

TensorFlow offre une compatibilité directe avec de nombreuses fonctions d'activation. Vous trouverez ces fonctions d'activation dans la liste des wrappers pour les opérations de réseau de neurones primitifs de TensorFlow. Toutefois, nous vous recommandons tout de même de commencer par la fonction ReLU.

Synthèse

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

  • Ensemble de nœuds, semblables à des neurones, organisés en couches.
  • Ensemble de pondérations représentant les connexions entre chaque couche du réseau de neurones et la couche située en dessous. La couche située en dessous peut être une autre couche de réseau de neurones ou une autre couche.
  • Ensemble de biais, un pour chaque nœud.
  • 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 les réseaux de neurones offrent une alternative flexible qui fonctionne bien dans de nombreux cas.