Réseaux neuronaux

menu icon

Réseaux neuronaux

Les réseaux neuronaux imitent le fonctionnement du cerveau humain. Ils permettent aux programmes de reconnaître des modèles et de résoudre des problèmes courants dans les domaines de l'IA, de l'apprentissage automatique et de l'apprentissage profond.

Que sont les réseaux neuronaux ?

Les réseaux neuronaux, également connus sous le nom de réseaux de neurones artificiels (ANN) ou de réseaux de neurones à impulsions (SNN) constituent un sous-ensemble de l'apprentissage machine et sont au cœur des algorithmes de l'apprentissage en profondeur. Leur nom et leur structure sont inspirés par le cerveau humain. En effet, ces réseaux imitent la façon dont les neurones biologiques s'envoient mutuellement des signaux.

Les réseaux de neurones artificiels (ANN) sont constitués de différentes couches de nœud (ou neurone artificiel), contenant une couche en entrée, une ou plusieurs couches cachées et une couche en sortie. Chaque nœud, ou neurone artificiel, se connecte à un autre et possède un poids et un seuil associés. Si la sortie d'un nœud est supérieure à la valeur de seuil spécifiée, ce nœud est activé et envoie des données à la couche suivante du réseau. Sinon, aucune donnée n'est transmise à la couche suivante du réseau.

Diagramme visuel représentant une couche en entrée, les couches cachées et une couche en sortie d'un réseau neuronal à propagation avant (feedforward)

Les réseaux neuronaux utilisent des données de formation pour apprendre et améliorer leur précision au fil du temps. Cependant, une fois ces algorithmes d'apprentissage suffisamment affinés, ils constituent de puissants outils pour l'informatique et l'intelligence artificielle, permettant de classer et de regrouper très rapidement les données. Les tâches de reconnaissance de la parole ou de l'image peuvent s'exécuter en quelques minutes seulement, alors qu'une identification manuelle par des experts humains nécessite plusieurs heures. L'un des réseaux neuronaux les plus connus est l'algorithme de recherche de Google.

Comment fonctionnent les réseaux neuronaux ?

Chaque nœud individuel peut être considéré comme étant son propre modèle de régression linéaire, composé de données d'entrée, de poids, d'un biais (ou d'un seuil) et d'une sortie. La formule peut se présenter comme suit :

Formule mathématique utilisée pour déterminer la totalisation

∑wixi + biais = w1x1 + w2x2 + w3x3 + biais

Formule mathématique utilisée pour déterminer la sortie

output = f(x) = 1 if ∑w1x1 + b> = 0; 0 if ∑w1x1 + b < 0

Lorsqu'une couche en entrée est déterminée, des poids sont affectés. Ces poids permettent de déterminer l'importance d'une variable donnée, les poids les plus importants contribuant de façon plus significative à la sortie par rapport aux autres entrées. Toutes les entrées sont ensuite multipliées par leurs poids respectifs, puis additionnées. Par la suite, la sortie est transmise via une fonction d'activation qui détermine la sortie. Si cette sortie dépasse un seuil donné, elle "déclenche" (ou active) le nœud, et transmet les données à la couche suivante du réseau. La sortie d'un nœud devient alors l'entrée du nœud suivant. Ce processus, qui consiste à transmettre les données d'une couche à la couche suivante, définit ce réseau neuronal comme un réseau à propagation avant, en anglais feedforward.

À l'aide de valeurs binaires, analysons la façon dont se présente un nœud unique. Nous pouvons appliquer ce concept à un exemple plus concret : par exemple, vous devez décider si vous allez faire du surf (Oui : 1, Non : 0). La décision d'aller surfer ou non est notre résultat prévu, ou valeur y-hat. Supposons qu'il y a trois facteurs qui influencent votre prise de décision :

  1. Y a-t-il de grosses vagues ? (Oui : 1, Non : 0)
  2. Le spot est-il tranquille ? (Oui : 1, Non : 0)
  3. Y a-t-il eu une attaque récente de requins ? (Oui : 1, Non : 0)

Ensuite, prenons l'hypothèse ci-dessous, ce qui nous donne les entrées suivantes :

  • X1 = 1, parce que les vagues sont grosses
  • X2 = 0, parce qu'il y a peu de monde sur place
  • X3 = 1, parce qu'il n'y a pas eu d'attaque récente de requin

Nous devons maintenant affecter des poids pour déterminer l'importance. Les poids plus élevés signifient que certaines variables sont plus importantes pour la décision ou le résultat.

  • W1 = 5, parce que les grosses houles sont rares
  • W2 = 2, parce que vous êtes habitué à la foule
  • W3 = 4, parce que vous avez peur des requins

Enfin, nous prenons aussi comme hypothèse une valeur de seuil de 3, ce qui se traduit par une valeur de biais de -3. Maintenant que nous disposons de toutes les entrées, nous pouvons commencer à inclure les valeurs dans la formule pour obtenir le résultat en sortie souhaité.

Y-hat = (1*5) + (0*2) + (1*4) – 3 = 6

Si nous utilisons la fonction d'activation depuis le début de cette section, nous pouvons déterminer que la sortie de ce nœud sera 1, car 6 est supérieur à 0. Dans ce cas, vous iriez surfer, mais si nous ajustons les poids ou le seuil, nous pouvons obtenir des résultats différents à partir du modèle. Lorsque nous observons une décision, comme dans l'exemple ci-dessus, nous pouvons voir comment un réseau neuronal peut prendre des décisions de plus en plus complexes en fonction du résultat en sortie des décisions ou des couches précédentes.

Dans l'exemple ci-dessus, nous avons utilisé des perceptrons pour illustrer certaines des formules mathématiques en jeu ici, mais les réseaux neuronaux utilisent des neurones sigmoïdes, qui se distinguent par des valeurs comprises entre 0 et 1. Étant donné que les réseaux neuronaux se comportent de la même façon que les arbres de décision, en transmettant en cascade les données d'un nœud à un autre, le fait d'avoir x valeurs comprises entre 0 et 1 atténue l'impact de tout changement d'une variable unique sur la sortie de tout nœud, et par conséquent, sur la sortie du réseau neuronal.

Alors que nous commençons à réfléchir davantage à des cas d'utilisation pratiques des réseaux neuronaux, comme la reconnaissance ou la classification d'images, nous allons tirer parti de l'apprentissage supervisé, ou des ensembles de données étiquetés pour former l'algorithme. Au fur et à mesure que nous formons le modèle, nous aurons besoin d'évaluer son exactitude à l'aide d'une fonction de coût (ou de perte). C'est ce que l'on appelle généralement l'erreur quadratique moyenne (MSE). Dans l'équation ci-dessous,

  • i représente l'index de l'échantillon,
  • y-hat est le résultat prévu,
  • y est la valeur réelle, et
  • m est le nombre d'échantillons.
Formule mathématique utilisée pour déterminer la fonction de coût

Fonction de coût = 𝑀𝑆𝐸 =1/2𝑚 ∑129_(𝑖 =1)^𝑚▒(𝑦 ̂^((𝑖) )−𝑦^((𝑖) ) )^2

En définitive, l'objectif est de minimiser notre fonction de coût afin d'assurer l'exactitude de l'ajustement pour toute observation donnée. À mesure que le modèle ajuste ses poids et ses biais, il utilise la fonction de coût et l'apprentissage par renforcement pour atteindre le point de convergence, ou le minimum local. Le méthode utilisée par l'algorithme pour ajuster ses poids est celle de la descente de gradient. Elle permet au modèle de déterminer la direction à prendre pour réduire les erreurs (ou minimiser la fonction de coût). Avec chaque exemple de formation, les paramètres du modèle s'ajustent afin de converger progressivement au minimum.

Graphique linéaire illustrant le point de convergence

Consultez cet article d'IBM Developer, qui propose une explication plus approfondie des concepts quantitatifs impliqués dans les réseaux neuronaux.

La plupart des réseaux neuronaux profonds sont des réseaux à propagation avant (feedforward), ce qui signifie qu'ils fonctionnent dans une seule direction, de l'entrée vers la sortie. Cependant, vous pouvez aussi former votre modèle par rétropropagation, c'est-à-dire en le faisant fonctionner dans la direction opposée, de la sortie vers l'entrée. La rétropropagation nous permet de calculer et d'attribuer l'erreur associée à chaque neurone. Nous pouvons ainsi ajuster et adapter correctement les paramètres d'un ou de plusieurs modèles.

Types de réseaux neuronaux

Les réseaux neuronaux peuvent être classés en plusieurs types qui sont utilisés à des fins différentes. Bien qu'il ne s'agisse pas d'une liste exhaustive de ces types, les éléments ci-dessous sont représentatifs des types de réseaux neuronaux les plus courants que vous allez rencontrer dans les cas d'utilisation fréquents :

Le perceptron est le plus ancien réseau neuronal, créé par Frank Rosenblatt en 1958. Il possède un seul neurone et constitue la forme la plus simple d'un réseau neuronal :

Diagramme simple d'un perceptron utilisant des lignes et un cercle bleu

Les réseaux neuronaux à propagation avant, ou feedforward, ou les perceptrons multicouches (MLP) sont ceux auxquels nous nous sommes principalement intéressés dans cet article. Ils sont constitués d'une couche en entrée, d'une ou de plusieurs couches cachées et d'une couche en sortie. Bien que ces réseaux neuronaux soient aussi communément appelés des MLP, il est important de noter qu'ils sont en fait constitués de neurones sigmoïdes, et non de perceptrons, car la plupart des problèmes du monde réel sont non-linéaires. Les données sont généralement introduites dans ces modèles pour les entraîner. Ces modèles constituent la base de la vision par ordinateur, du traitement du langage naturel et d'autres réseaux neuronaux.

Les réseau neuronaux convolutifs (CNN) sont semblables aux réseaux à propagation avant, mais ils sont en général utilisés pour la reconnaissance de l'image, la reconnaissance de modèles et/ou la vision par ordinateur. Ces réseaux exploitent les principes de l'algèbre linéaire, en particulier la multiplication matricielle, pour identifier les modèles contenus dans une image.

Les réseaux de neurones récurrents (RNN) se caractérisent par leurs boucles de retour d'informations. Ces algorithmes d'apprentissage sont principalement utilisés lors de l'utilisation de données de séries temporelles pour prévoir les résultats futurs, par exemple les prévisions des transactions boursières ou des ventes.

Comparatif : les réseaux neuronaux et l'apprentissage profond

L'apprentissage profond et les réseaux neuronaux ont tendance à être utilisés de façon interchangeable dans les échanges courants, ce qui peut prêter à confusion. Il est bon de savoir que le terme "profond" dans l'apprentissage profond fait simplement référence à la profondeur des couches d'un réseau neuronal. Un réseau neuronal constitué de plus de trois couches - comprenant les entrées et la sortie - peut être considéré comme un algorithme d'apprentissage profond. Un réseau de neurones qui ne comporte que deux ou trois couches est simplement un réseau de neurones de base.

Pour en savoir plus sur les différences entre les réseaux neuronaux et les autres formes d'intelligence artificielle, telles que l'apprentissage automatique, consultez l'article de blog intitulé "AI vs. Machine Learning vs. Deep Learning vs. Neural Networks: What’s the Difference?

Histoire des réseaux neuronaux

L'histoire des réseaux neuronaux remonte à plus loin que la plupart d'entre nous ne le pense. L'idée d'une "machine qui pense" se retrouve chez les Grecs de l'Antiquité, mais nous nous concentrerons sur les principaux événements qui ont conduit à l'évolution de la réflexion sur les réseaux neuronaux, avec une popularité variable au fil des ans :

1943 : Warren S. McCulloch et Walter Pitts publient "A logical calculus of the ideas immanent in nervous activity (PDF, 1 Mo) (lien externe au site d'IBM). Leurs travaux visent à comprendre comment le cerveau humain peut produire des modèles complexes à l'aide de cellules cérébrales interconnectées, ou neurones. Une des idées principales de leurs travaux est la comparaison des neurones à seuil binaire avec la logique booléenne (c'est-à-dire 0/1 ou vrai/faux).

1958 : Frank Rosenblatt se voit attribuer la paternité du perceptron, documenté dans son travail de recherche intitulé "The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain" (PDF, 1,6 Mo) (lien externe au site d'IBM). Rosenblatt va un peu plus loin que McCulloch et Pitt, en ajoutant la notion de poids à l'équation. Rosenblatt a réussi à faire apprendre à un ordinateur, un IBM 704, à distinguer des cartes portant des inscriptions sur la gauche par rapport à des cartes portant des inscriptions sur la droite.

1974 : Alors que de nombreux chercheurs contribuent à l'idée de rétropropagation, Paul Werbos est le premier aux États-Unis à observer son application au sein des réseaux neuronaux dans sa thèse de doctorat (PDF, 8,1 Mo) (lien externe au site d'IBM).

1989 : Yann LeCun publie un article (PDF, 5,7 Mo) (lien externe au site d'IBM) montrant comment l'utilisation de contraintes dans la rétropropagation et son intégration à l'architecture du réseau neuronal peuvent être utilisées pour entraîner des algorithmes. Ces travaux de recherche ont permis de réussir à utiliser un réseau neuronal pour reconnaître des codes postaux écrits à la main fournis par la poste américaine.

Réseaux neuronaux et IBM Cloud

Depuis maintenant plusieurs dizaines d'années, IBM est un pionnier du développement des technologies d'IA et des réseaux neuronaux, comme l'ont illustré le développement et l'évolution d'IBM Watson. Watson est désormais une solution de confiance pour les entreprises cherchant à mettre en œuvre des techniques avancées du traitement automatique du langage naturel et de l'apprentissage en profondeur, grâce à une approche reconnue de l'adoption et de l'implémentation de l'IA.

Watson utilise Apache UIMA (Unstructured Information Management Architecture) et le logiciel DeepQA d'IBM pour faire bénéficier les applications de puissantes capacités d'apprentissage en profondeur. Grâce à des outils tels qu'IBM Watson Studio, votre entreprise peut lancer en production des projets open source d'IA avec une parfaite souplesse, tout en déployant et en exécutant des modèles sur n'importe quel cloud.

Pour faire vos premiers avec la technologie d'apprentissage en profondeur, consultez IBM Watson Studio et le service d'apprentissage profond.

Inscrivez-vous pour obtenir un IBMid et créer votre compte IBM Cloud.