🏳️🌈♿️👩🎨🌱 En février, je remets 3% de mes ventes à des organismes qui favorisent la diversité, les arts et l'environnement 🏳️🌈♿️👩🎨🌱
Le grimoire informatique
On démonte le robot #1 - les réseaux de neurones
Je te présente une série d'articles basés sur la présentation On démonte le robot que j'ai fait en janvier
- Dans cette présentation, j'ai d'abord présenté quelques concepts théoriques
sur les réseaux de neurones. /
J'ai ensuite expliquer plus précisément comment fonctionne les réseaux de neurones profonds utilisés par les algorithmes génératifs.
Enfin, j'ai présenté un exemple pratique d'entraînement et d'utilisation d'un algorithme génératif à partir d'un ensemble de documents.
Dans ce premier article, je te présente le fonctionnement des réseaux de neurones
Quelle est la différence entre un neurone biologique et un neurone artificiel ?
Le système nerveux envoie des signaux chimiques au neurone biologique qui les convertit en signal électrique. Celui-ci permet de relier plusieurs parties du cerveau qui ont chacune leurs spécialités.
Le neurone comprend des récepteurs. situés sur les dendrites, qui servent à recevoir des signaux chimiques transmis à l'aide de neurotransmetteurs, des molécules conçues pour s'imbriquer sur des récepteurs spécifiques.
Le neurone transmet un signal via l'axone vers les synapses s'il y a suffisamment d'interaction. Les synapses génèrent alors des neurotransmetteurs pour poursuivre la communication vers d'autres neurones.
Le neurone artificiel est un modèle mathématique qui réplique les dendrites, l'axone et les synapses en utilisant une fonction d'activation et un produit scalaire. Nous verrons plus en détail le fonctionnement de ces deux composantes ci-dessous.
Qu'est ce que l'activation ?
Lorsqu'un signal positif est suffisamment fort pour déclencher une action, on parle d'activation. Les 0 et les 1 représentent l'activation de transistors qui, à leur tour, représentent l'information dans un système informatique. C'est le système binaire.
Dans les systèmes biologiques, le signal est une distribution continue entre 0 et 1. On parle aussi de fonction de répartition, une fonction strictement croissante dont la valeur se situe sur l'intervalle entre 0 et 1. Pour faire le pont entre les deux, on va utiliser une fonction d'activation qui va traduire un signal continu vers une sortie binaire.
Attention Maths !
Pour représenter cette continuité en informatique, on utilise une fonction d'activation. C'est une fonction qui retourne une valeur entre 0 et 1, ou entre -1 et 1, selon les cas.
Il y a plusieurs fonctions d'activation. Voici les plus courantes dans les réseaux de neurones utilisés dans les algorithmes d'intelligence artificielle
-
Sigmoïde
-
Tangente hyperbolique (oui, une de ces fameuses fonctions "inutiles" que tu as vu au Cégep dans ton cours d'intégrales)
-
ReLU: Rectified Linear Unit
En retrouve souvent la constante d'Euler e dans les équations des algorithmes d'apprentissage automatique (et un peu partout en maths).
Comment fonctionne un neurone artificiel ?
Deux éléments composent le neurone artificiel : une somme (produit scalaire) et une fonction d'activation. La fonction d'activation multivariée est appelée softmax (par exemple, pour prédire une lettre de l'alphabet, il y a 26 sorties).
On retrouve d'abord les paramètres d'entrée, qui sont des valeurs numériques provenant d'un neurone précédent ou de données fournies en entrée. Ces paramètres sont ensuite multipliés par des poids.
L'entraînement d'une algorithme cherche à trouver les valeurs optimales de ces poids pour prédire la meilleur valeur de sortie possible. La somme des produits entre les poids et les paramètres en entrée se nomme un produit scalaire. C'est un nombre.
On insère ensuite ce nombre dans une fonction d'activation, ce qui va nous retourner une valeur entre -1 et 1, ou entre 0 et 1, selon la fonction choisie. Cette valeur va ensuite être fournie comme paramètre de sortie du neurone. Si l'on a plusieurs sorties possibles, nous allons utiliser la fonction softmax qui va normaliser toutes les valeurs de sortie pour que leur somme soit de 1, c'est à dire une distribution des probabilités que chacune des valeurs possibles soient la bonne.
Lorsque la sortie est une lettre de l'alphabet, chaque lettre se verra attribuer une probabilité et celle avec la probabilité la plus élevée sera retournée. On pourrait appliquer le même raisonnement pour des chaînes de plusieurs caractères, appelées jetons. Entre autres, le modèle GPT-3 fonctionne à l'aide de jetons.
Qu'est-ce qu'un réseau de neurones ?
Un réseau de neurones est un assemblage de neurones sous la forme de parcours de décision. Ils relient chaque valeur en entrée à toutes les réponses possibles en sortie en passant par plusieurs neurones différents, dans un chemin linéaire (sans retour en arrière).
Ils servent à prédire une catégorie ou une valeur numérique, à partir de toutes les valeurs en entrées. Ces valeurs ont initialement un poids égal (en théorie) ou déterminé aléatoirement (en pratique).
Un réseau de neurones est composé de couches successives de neurones identiques entre eux. À la base, toutes les sorties d'une couche sont reliées à toutes les entrées de la couche suivante. On parle alors de couches pleinement connectées.
Comme nous le verrons plus tard, il existe aussi plusieurs autres types de couches, dont les couches récurrentes. Dans le traitement d'images, on a aussi des étapes de convolution, qui ont un comportement similaires aux filtres photo dans Photoshop.
Dans cette architecture, la fonction d'activation la plus fréquente est la ReLU.
On appelle souvent la couche la plus centrale d'un réseau de neurones profond "Embedding" ou plongement, en français. C'est une sorte de dictionnaire des synonymes de concepts représentés à l'aide de vecteurs de très grande dimensions. Pour déterminer quels concepts sont similaires, la mesure la plus fréquence et le cosinus entre les vecteurs. On parle alors de similarité cosinus.
Pour produire du contenu, on n'utilisera pas des réseaux avec des couches pleinement connectées, mais plutôt des réseaux récurrents, où les valeurs en entrée ont un ordre précis.
Les réseaux récurrents permettent de préserver l'ordre des lettres et des mots
Dans un texte, l'ordre des lettres ou des mots a une importance, parce qu'elle apporte le contexte. On doit donc utiliser une forme différente de réseaux pour reproduire la création d'une phrase ou d'un texte.
Les réseaux récurrents permettent de tenir compte du résultat de la fonction d'activation des neurones précédents au lieu de prendre toutes les valeurs en entrée comme égales.
Chaque valeur en entrée est associée à un seul neurone dans la première couche et non à chacun d'entre eux. Ce qui est vraiment différent ici, c'est que les neurones sont reliés à tous les autres neurones de la même couche qui leur succèdent. C'est ici qu'on a une récurrence, ou une propagation de l'information qui suit toujours le même motif dans la même direction.
Le reste de la structure du réseau est similaire: on retrouve plusieurs couches successives, donc une qui sert de plongement, et une fonction softmax en sortie.
Les neurones utilisés dans ces couches sont différents de ceux qu'on a vus précédemment, ils sont plus complexes, parce qu'ils doivent tenir compte de plusieurs sources d'information et produire plusieurs sorties. On les appelle LSTM, pour Long and Short Term Memory.
Le neurone LSTM permet de préserver le contexte des mots précédents
Le neurone Long and Short Term Memory (Mémoire à long et à court terme) est le plus fréquent dans les réseaux récurrents en langage naturel. Il permet de transporter l'état précédent des neurones en plus d'un paramètre de contexte. C'est une façon mathématique de préserver le sens des mots qu'il a lus précédemment pour améliorer le choix du mot suivant.
Il compte 5 fonctions d'activation: 3 sigmoïdes et deux tangentes hyperboliques.
Ce neurone est celui qui permet d'utiliser un champ lexical cohérent dans la génération de textes. Si tu as déjà énoncé un des synonymes d'un concept, il y a plus de chance que ça soit celui-là qui soit réutilisé plus tard.
Dans les prochains articles, je vais te partager comment fonctionne l'entraînement, puis nous allons faire une démonstration ensemble en utilisant un processeur graphique
Si tu ne veux pas manquer mes prochaines publications, assures-toi de t'abonner à la Cyberlettre maintenant !/