Apprentissage approfondi
Remarque
Pour plus d’informations, consultez l’onglet Texte et images !
Le Deep Learning est une forme avancée de Machine Learning qui tente d’émuler la façon dont le cerveau humain apprend. La clé de l’apprentissage profond est la création d’un réseau neuronal artificiel qui simule l’activité électrochimique dans les neurones biologiques à l’aide de fonctions mathématiques, comme illustré ici.
| Réseau neuronal biologique | Réseau neuronal artificiel |
|---|---|
|
|
| Les neurones se déclenchent en réponse à des stimulations électrochimiques. Lorsqu’il est déclenché, le signal est transmis aux neurones connectés. | Chaque neurone est une fonction qui fonctionne sur une valeur d’entrée (x) et un poids (w). La fonction est encapsulée dans une fonction d’activation qui détermine s’il faut transmettre la sortie. |
Les réseaux neuronaux artificiels sont constitués de plusieurs couches de neurones , définissant essentiellement une fonction profondément imbriquée. Cette architecture est la raison pour laquelle la technique est appelée deep learning et les modèles produits par celui-ci sont souvent appelés réseaux neuronaux profonds (DNN). Vous pouvez utiliser des réseaux neuronaux profonds pour de nombreux types de problèmes de Machine Learning, y compris la régression et la classification, ainsi que des modèles plus spécialisés pour le traitement du langage naturel et la vision par ordinateur.
Tout comme d’autres techniques de Machine Learning abordées dans ce module, le Deep Learning implique l’ajustement des données d’apprentissage à une fonction qui peut prédire une étiquette (y) en fonction de la valeur d’une ou plusieurs fonctionnalités (x). La fonction (f(x)) est la couche externe d’une fonction imbriquée dans laquelle chaque couche du réseau neuronal encapsule les fonctions qui fonctionnent sur x et les valeurs de poids (w) associées. L’algorithme utilisé pour entraîner le modèle implique d’alimenter de manière itérative les valeurs de caractéristique (x) dans les données d’apprentissage à travers les couches pour calculer les valeurs de sortie pour ŷ, en validant le modèle pour évaluer la distance entre les valeurs calculées ŷ et les valeurs y connues (qui quantifie le niveau d’erreur ou de perte, dans le modèle), puis en modifiant les poids (w) pour réduire la perte. Le modèle entraîné inclut les valeurs de poids finales qui entraînent les prédictions les plus précises.
Exemple : utilisation du Deep Learning pour la classification
Pour mieux comprendre le fonctionnement d’un modèle de réseau neuronal profond, nous allons explorer un exemple dans lequel un réseau neuronal est utilisé pour définir un modèle de classification pour les espèces de pingouins.
Les données de caractéristique (x) se composent de mesures d’un pingouin. Plus précisément, les mesures sont les suivantes :
- Längden på pingvinens näbb.
- Djupet av pingvinens näbb.
- Longueur des flippers du pingouin.
- Le poids du manchot.
Dans ce cas, x est un vecteur de quatre valeurs, ou mathématiquement, x=[x1,x2,x3,x4].
L’étiquette que nous essayons de prédire (y) est l’espèce du manchot, et il existe trois espèces possibles :
- Adélie
- Manchot papou
- Manchot à jugulaire
Il s’agit d’un exemple de problème de classification, dans lequel le modèle Machine Learning doit prédire la classe la plus probable à laquelle appartient une observation. Un modèle de classification effectue cela en prédisant une étiquette qui se compose de la probabilité pour chaque classe. En d’autres termes, y est un vecteur de trois valeurs de probabilité ; un pour chacune des classes possibles : [P(y=0|x), P(y=1|x), P(y=2|x)].
Le processus d’inférence d’une classe pingouin prédite à l’aide de ce réseau est le suivant :
- Le vecteur de caractéristiques d’une observation de manchot est introduit dans la couche d’entrée du réseau neuronal, qui se compose d’un neurone pour chaque valeur x. Dans cet exemple, le vecteur x suivant est utilisé comme entrée : [37.3, 16.8, 19.2, 30.0]
- Les fonctions de la première couche de neurones calculent chacune une somme pondérée en combinant la valeur x et le poids w , et la transmettent à une fonction d’activation qui détermine si elle répond au seuil à passer à la couche suivante.
- Chaque neurone d’une couche est connecté à tous les neurones de la couche suivante (une architecture parfois appelée réseau entièrement connecté) afin que les résultats de chaque couche soient acheminés vers l’avant via le réseau jusqu’à ce qu’ils atteignent la couche de sortie.
- La couche de sortie produit un vecteur de valeurs ; dans ce cas, en utilisant une fonction softmax ou similaire pour calculer la distribution de probabilité pour les trois classes possibles de pingouin. Dans cet exemple, le vecteur de sortie est : [0.2, 0.7, 0.1]
- Les éléments du vecteur représentent les probabilités pour les classes 0, 1 et 2. La deuxième valeur est la plus élevée, de sorte que le modèle prédit que l’espèce du pingouin est 1 (Gentoo).
Comment un réseau neuronal apprend-il ?
Les pondérations d’un réseau neuronal sont essentielles à la façon dont elle calcule les valeurs prédites pour les étiquettes. Pendant le processus d’entraînement, le modèle apprend les pondérations qui entraînent les prédictions les plus précises. Examinons le processus de formation en détail pour comprendre comment cet apprentissage a lieu.
- Les jeux de données d’entraînement et de validation sont définis et les fonctionnalités d’entraînement sont transmises à la couche d’entrée.
- Les neurones de chaque couche du réseau appliquent leurs poids (qui sont initialement attribués de manière aléatoire) et alimentent les données via le réseau.
- La couche de sortie produit un vecteur contenant les valeurs calculées pour ŷ. Par exemple, une sortie pour une prédiction de classe pingouin peut être [0.3. 0.1. 0.6].
- Une fonction de perte est utilisée pour comparer les valeurs prédites ŷ aux valeurs y connues et agréger la différence (appelée perte). Par exemple, si la classe connue pour le cas qui a retourné la sortie à l’étape précédente est Chinstrap, la valeur y doit être [0.0, 0.0, 1.0]. La différence absolue entre ce vecteur et le vecteur ŷ est [0.3, 0.1, 0.4]. En réalité, la fonction de perte calcule la variance agrégée pour plusieurs cas et la résume en tant que valeur de perte unique.
- Étant donné que l’ensemble du réseau est essentiellement une fonction imbriquée volumineuse, une fonction d’optimisation peut utiliser le calcul différentiel pour évaluer l’influence de chaque poids dans le réseau sur la perte et déterminer comment elles peuvent être ajustées (haut ou bas) pour réduire la quantité de perte globale. La technique d’optimisation spécifique peut varier, mais implique généralement une approche de descente de dégradé dans laquelle chaque poids est augmenté ou diminué pour réduire la perte.
- Les modifications apportées aux pondérations sont rétropropagées aux couches du réseau, en remplaçant les valeurs précédemment utilisées.
- Le processus est répété sur plusieurs itérations ( appelées époques) jusqu’à ce que la perte soit réduite et que le modèle prédit de façon acceptable.
Remarque
Bien qu’il soit plus facile de considérer chaque cas dans les données d’apprentissage transmises via le réseau un par un, en réalité, les données sont traitées par lot en matrices et traitées à l’aide de calculs algébriques linéaires. Pour cette raison, l’apprentissage du réseau neuronal est le mieux effectué sur les ordinateurs avec des unités de traitement graphique (GPU) optimisées pour la manipulation de vecteurs et de matrices.