Apprentissage approfondi
Deep Learningest une forme avancée de Machine Learning qui tente d'imiter la façon dont le cerveau humain apprend. La clé du Deep Learning 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 stimuli électrochimiques. Lors du déclenchement, le signal est transmis aux neurones connectés. | Chaque neurone est une fonction qui opère sur une valeur d’entrée (x) et un poids (w). La fonction est enveloppée dans une fonction d’activation qui détermine si la sortie doit être transmise. |
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 qu’elle produit sont souvent appelés réseaux neuronaux profonds (DNN, deep neural network). Vous pouvez utiliser des réseaux neuronaux profonds pour de nombreux types de problèmes de Machine Learning, notamment 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 décrites dans ce module, le Deep Learning implique l’adaptation des données d’entraînement à une fonction qui peut prédire une étiquette (y) en fonction de la valeur d’une ou plusieurs caractéristiques (x). La fonction (f(x)) est la couche externe d’une fonction imbriquée dans laquelle chaque couche du réseau neuronal encapsule des fonctions qui opèrent sur x et les valeurs de poids (w) qui leur sont associées. L’algorithme utilisé pour entraîner le modèle implique une alimentation itérative des valeurs des caractéristiques (x) dans les données d’entraînement à travers les couches afin de calculer les valeurs de sortie pour ŷ, une validation du modèle pour évaluer la distance entre les valeurs ŷ calculées et les valeurs y connues (ce qui quantifie le niveau d’erreur ou de perte dans le modèle), puis une modification des poids (w) pour réduire la perte. Le modèle entraîné contient les valeurs de poids finales qui aboutissent aux prédictions les plus exactes.
Exemple - Utilisation du Deep Learning pour la classification
Pour mieux comprendre le fonctionnement d’un modèle de réseau neuronal profond, examinons un exemple dans lequel un réseau neuronal est utilisé afin de définir un modèle de classification pour une espèce de manchot.
Les données de caractéristique (x) se composent de certaines mesures d’un manchot. Plus précisément, les mesures sont les suivantes :
- La longueur du bec du manchot.
- La profondeur du bec du manchot.
- La longueur des nageoires du manchot.
- 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, lequel pourrait appartenir à 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 une observation appartient. 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é, une 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 de manchot prédite à l’aide de ce réseau est le suivant :
- Le vecteur de caractéristique d’une observation de manchot est alimenté 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 atteint le seuil pour passer à la couche suivante.
- Chaque neurone d’une couche est connecté à tous les neurones de la couche suivante (architecture parfois appelée réseau entièrement connecté) de sorte que les résultats de chaque couche sont alimentés via le réseau jusqu’à ce qu’ils atteignent la couche de sortie.
- La couche de sortie produit un vecteur de valeurs, dans le cas présent, en utilisant une fonction softmax ou similaire pour calculer la distribution de probabilité pour les trois classes possibles de manchot. 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 étant la plus élevée, le modèle prédit que l’espèce du manchot est 1 (Gentoo).
Comment un réseau neuronal apprend-il ?
Les poids dans un réseau neuronal sont essentiels à la façon dont il calcule les valeurs prédites pour les étiquettes. Pendant le processus d’entraînement, le modèle apprend les poids qui aboutiront aux prédictions les plus exactes. Nous allons explorer le processus d’entraînement un peu plus en détail pour comprendre comment cet apprentissage se déroule.
- Les jeux de données d’entraînement et de validation sont définis, et les caractéristiques d’entraînement sont alimentées dans 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 de manchot 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 (également appelée perte). Par exemple, si la classe connue pour le cas qui a retourné la sortie à l’étape précédente est À jugulaire, la valeur y devrait ê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 sous la forme d’une seule valeur de perte.
- Étant donné que l’ensemble du réseau est principalement une grande fonction imbriquée, une fonction d’optimisation peut utiliser le calcul différentiel pour évaluer l’influence de chaque poids du réseau sur la perte, puis déterminer comment ils peuvent être ajustés (augmentation ou baisse) 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 gradient dans laquelle chaque poids est augmenté ou baissé pour réduire la perte.
- Les modifications apportées aux poids sont rétropropagées dans les couches du réseau et viennent remplacer 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 avec une exactitude acceptable.
Notes
Bien qu’il soit plus facile de penser à chaque cas avec des données d’entraînement qui sont transmises via le réseau une par une, les données sont en réalité regroupées par lots dans des matrices et traitées à l’aide de calculs algébriques linéaires. C’est pourquoi l’entraînement de réseaux neuronaux est optimal sur des ordinateurs dotés de processeurs graphiques (GPU) optimisés pour la manipulation de vecteurs et de matrices.