Une introduction douce au défi de la formation de modèles de réseaux neuronaux d'apprentissage profond
Les réseaux neuronaux d'apprentissage profond apprennent une fonction de cartographie des entrées aux sorties.
Ceci est réalisé en mettant à jour les poids du réseau en réponse aux erreurs commises par le modèle sur l'ensemble de données de formation. Des mises à jour sont effectuées pour réduire continuellement cette erreur jusqu'à ce qu'un modèle suffisamment bon soit trouvé ou que le processus d'apprentissage reste bloqué et s'arrête.
Le processus de formation des réseaux de neurones est la partie la plus difficile de l’utilisation de la technique en général et est de loin la plus longue, à la fois en termes d’efforts requis pour configurer le processus et de complexité informatique requise pour exécuter le processus.
Dans cet article, vous découvrirez le défi de trouver des paramètres de modèle pour les réseaux de neurones d'apprentissage profond.
Après avoir lu cet article, vous saurez :
- Les réseaux de neurones apprennent une fonction de cartographie des entrées aux sorties qui peut être résumée comme résolvant le problème de l'approximation des fonctions.
- Contrairement à d'autres algorithmes d'apprentissage automatique, les paramètres d'un réseau neuronal doivent être trouvés en résolvant un problème d'optimisation non convexe avec de nombreuses bonnes solutions et de nombreuses solutions faussement bonnes.
- L'algorithme de descente de gradient stochastique est utilisé pour résoudre le problème d'optimisation dans lequel les paramètres du modèle sont mis à jour à chaque itération à l'aide de l'algorithme de rétropropagation.
Démarrez votre projet avec mon nouveau livre Better Deep Learning, comprenant des tutoriels étape par étape et les fichiers code source Python pour tous les exemples .
Commençons.
Aperçu
Ce didacticiel est divisé en quatre parties ; ils sont:
- Les réseaux neuronaux apprennent une fonction de cartographie
- L’apprentissage des poids du réseau est difficile
- Navigation dans la surface d'erreur
- Composantes de l'algorithme d'apprentissage
Les réseaux neuronaux apprennent une fonction de cartographie
Les réseaux neuronaux d’apprentissage profond apprennent une fonction de cartographie.
Le développement d'un modèle nécessite des données historiques du domaine utilisées comme données de formation. Ces données sont composées d'observations ou d'exemples du domaine avec des éléments d'entrée qui décrivent les conditions et un élément de sortie qui capture la signification de l'observation.
Par exemple, un problème où le résultat est une quantité serait généralement décrit comme un problème de modélisation prédictive de régression. Alors qu’un problème dont le résultat est une étiquette serait généralement décrit comme un problème de modélisation prédictive de classification.
Un modèle de réseau neuronal utilise les exemples pour apprendre à mapper des ensembles spécifiques de variables d'entrée à la variable de sortie. Il doit le faire de telle manière que ce mappage fonctionne bien pour l'ensemble de données de formation, mais fonctionne également bien sur de nouveaux exemples non vus par le modèle pendant la formation. Cette capacité à bien travailler sur des exemples spécifiques et sur de nouveaux exemples est appelée capacité du modèle à généraliser.
Un perceptron multicouche n'est qu'une fonction mathématique mappant un ensemble de valeurs d'entrée à des valeurs de sortie.
— Page 5, Apprentissage profond, 2016.
Nous pouvons décrire la relation entre les variables d'entrée et les variables de sortie comme une fonction mathématique complexe. Pour un problème de modèle donné, nous devons croire qu'une véritable fonction de mappage existe pour mapper au mieux les variables d'entrée aux variables de sortie et qu'un modèle de réseau neuronal peut faire un travail raisonnable pour se rapprocher de la véritable fonction de mappage sous-jacente inconnue.
Un réseau feedforward définit un mappage et apprend la valeur des paramètres qui aboutissent à la meilleure approximation de la fonction.
— Page 168, Apprentissage profond, 2016.
En tant que tel, nous pouvons décrire le problème plus large que les réseaux de neurones résolvent comme « approximation de fonctions ». Ils apprennent à se rapprocher d’une fonction de cartographie sous-jacente inconnue à partir d’un ensemble de données d’entraînement. Pour ce faire, ils apprennent les poids et les paramètres du modèle, compte tenu d'une structure de réseau spécifique que nous concevons.
Il est préférable de considérer les réseaux de rétroaction comme des machines d’approximation de fonctions conçues pour réaliser une généralisation statistique, tirant parfois quelques enseignements de ce que nous savons sur le cerveau, plutôt que comme des modèles de fonctions cérébrales.
— Page 169, Apprentissage profond, 2016.
L’apprentissage des poids du réseau est difficile
Trouver les paramètres des réseaux de neurones en général est difficile.
Pour de nombreux algorithmes d'apprentissage automatique plus simples, nous pouvons calculer un modèle optimal en fonction de l'ensemble de données d'entraînement.
Par exemple, nous pouvons utiliser l'algèbre linéaire pour calculer les coefficients spécifiques d'un modèle de régression linéaire et d'un ensemble de données d'entraînement qui minimise au mieux l'erreur quadratique.
De même, nous pouvons utiliser des algorithmes d'optimisation qui offrent des garanties de convergence lors de la recherche d'un ensemble optimal de paramètres de modèle pour des algorithmes non linéaires tels que la régression logistique ou les machines à vecteurs de support.
Trouver des paramètres pour de nombreux algorithmes d'apprentissage automatique implique de résoudre un problème d'optimisation convexe : il s'agit d'une surface d'erreur en forme de bol avec une seule meilleure solution.
Ce n’est pas le cas des réseaux de neurones d’apprentissage profond.
Nous ne pouvons ni calculer directement l’ensemble optimal de poids pour un modèle, ni obtenir des garanties de convergence globale pour trouver un ensemble optimal de poids.
La descente de gradient stochastique appliquée aux fonctions de perte non convexes n'a pas de garantie de convergence et est sensible aux valeurs des paramètres initiaux.
— Page 177, Apprentissage profond, 2016.
En fait, la formation d’un réseau neuronal est la partie la plus difficile de l’utilisation de la technique.
Il est assez courant d’investir des jours, voire des mois, sur des centaines de machines afin de résoudre ne serait-ce qu’une seule instance du problème de formation du réseau neuronal.
— Page 274, Apprentissage profond, 2016.
L'utilisation de fonctions d'activation non linéaires dans le réseau neuronal signifie que le problème d'optimisation que nous devons résoudre pour trouver les paramètres du modèle n'est pas convexe.
Il ne s’agit pas d’une simple forme de bol avec un seul ensemble de poids que nous sommes assurés de trouver. Au lieu de cela, il existe un paysage de pics et de vallées avec de nombreux ensembles de paramètres bons et trompeurs que nous pouvons découvrir.
La résolution de cette optimisation est un défi, notamment parce que la surface d’erreur contient de nombreux optima locaux, des points plats et des falaises.
Un processus itératif doit être utilisé pour naviguer dans la surface d'erreur non convexe du modèle. Un algorithme naïf qui surmonte l’erreur est susceptible d’être induit en erreur, perdu et finalement bloqué, ce qui aboutira à un modèle peu performant.
Navigation dans la surface d'erreur non convexe
On peut penser que les modèles de réseaux neuronaux apprennent en naviguant sur une surface d’erreur non convexe.
Un modèle avec un ensemble spécifique de poids peut être évalué sur l'ensemble de données d'entraînement et l'erreur moyenne sur tous les ensembles de données d'entraînement peut être considérée comme l'erreur du modèle. Une modification des poids du modèle entraînera une modification de l’erreur du modèle. Par conséquent, nous recherchons un ensemble de poids qui aboutissent à un modèle avec une petite erreur.
Cela implique de répéter les étapes d'évaluation du modèle et de mise à jour des paramètres du modèle afin de réduire la surface d'erreur. Ce processus est répété jusqu'à ce qu'un ensemble de paramètres suffisamment bons soit trouvé ou que le processus de recherche reste bloqué.
Il s'agit d'un processus de recherche ou d'optimisation et nous faisons référence aux algorithmes d'optimisation qui fonctionnent de cette manière comme des algorithmes d'optimisation de gradient, car ils suivent naïvement le gradient d'erreur. Ils sont coûteux en termes de calcul, lents et leur comportement empirique signifie que leur utilisation pratique relève plus de l’art que de la science.
L'algorithme le plus couramment utilisé pour naviguer dans la surface d'erreur est appelé descente de gradient stochastique, ou SGD en abrégé.
Presque tout l’apprentissage profond repose sur un algorithme très important : la descente de gradient stochastique ou SGD.
— Page 151, Apprentissage profond, 2016.
D'autres algorithmes d'optimisation globale conçus pour des problèmes d'optimisation non convexes pourraient être utilisés, comme un algorithme génétique, mais la descente de gradient stochastique est plus efficace car elle utilise les informations de gradient spécifiquement pour mettre à jour les poids du modèle via un algorithme appelé rétropropagation.
[Backpropagation] décrit une méthode pour calculer les dérivées de l'erreur de formation du réseau par rapport aux poids par une application intelligente de la règle de la chaîne dérivée.
— Page 49, Neural Smithing : apprentissage supervisé dans les réseaux de neurones artificiels à action directe, 1999.
La rétropropagation fait référence à une technique issue du calcul pour calculer la dérivée (par exemple la pente ou le gradient) de l'erreur du modèle pour des paramètres de modèle spécifiques, permettant de mettre à jour les poids du modèle pour descendre le gradient. En tant que tel, l’algorithme utilisé pour entraîner les réseaux de neurones est aussi souvent appelé simplement rétropropagation.
En fait, la rétro-propagation fait uniquement référence à la méthode de calcul du gradient, tandis qu'un autre algorithme, tel que la descente de gradient stochastique, est utilisé pour effectuer l'apprentissage à l'aide de ce gradient.
— Page 204, Apprentissage profond, 2016.
La descente de gradient stochastique peut être utilisée pour trouver les paramètres d'autres algorithmes d'apprentissage automatique, tels que la régression linéaire, et elle est utilisée lorsque vous travaillez avec de très grands ensembles de données, bien que si les ressources sont suffisantes, les algorithmes d'optimisation basés sur la convexité sont nettement plus efficaces.
Composantes de l'algorithme d'apprentissage
La formation d'un modèle de réseau neuronal d'apprentissage profond utilisant la descente de gradient stochastique avec rétropropagation implique le choix d'un certain nombre de composants et d'hyperparamètres. Dans cette section, nous les examinerons tour à tour.
Une fonction d’erreur doit être choisie, souvent appelée fonction objectif, fonction de coût ou fonction de perte. En règle générale, un cadre probabiliste spécifique pour l'inférence est choisi, appelé Maximum de Vraisemblance. Dans ce cadre, les fonctions de perte couramment choisies sont l'entropie croisée pour les problèmes de classification et l'erreur quadratique moyenne pour les problèmes de régression.
- Fonction de perte. Fonction utilisée pour estimer les performances d'un modèle avec un ensemble spécifique de pondérations sur des exemples de l'ensemble de données d'entraînement.
Le processus de recherche ou d'optimisation nécessite un point de départ à partir duquel commencer les mises à jour du modèle. Le point de départ est défini par les paramètres ou poids initiaux du modèle. La surface d’erreur n’étant pas convexe, l’algorithme d’optimisation est sensible au point de départ initial. Ainsi, de petites valeurs aléatoires sont choisies comme pondérations initiales du modèle, bien que différentes techniques puissent être utilisées pour sélectionner l’échelle et la distribution de ces valeurs. Ces techniques sont appelées méthodes d'« initialisation du poids ».
- Initialisation du poids. Procédure par laquelle les petites valeurs aléatoires initiales sont attribuées aux poids du modèle au début du processus de formation.
Lors de la mise à jour du modèle, un certain nombre d'exemples de l'ensemble de données d'entraînement doivent être utilisés pour calculer l'erreur du modèle, souvent appelée simplement « perte ». Tous les exemples de l'ensemble de données de formation peuvent être utilisés, ce qui peut être approprié pour des ensembles de données plus petits. Alternativement, un seul exemple peut être utilisé, ce qui peut être approprié pour les problèmes où les exemples sont diffusés en continu ou où les données changent souvent. Une approche hybride peut être utilisée dans laquelle le nombre d'exemples de l'ensemble de données de formation peut être choisi et utilisé pour estimer le gradient d'erreur. Le choix du nombre d’exemples est appelé taille du lot.
- Taille du lot. Nombre d'exemples utilisés pour estimer le gradient d'erreur avant de mettre à jour les paramètres du modèle.
Une fois qu'un gradient d'erreur a été estimé, la dérivée de l'erreur peut être calculée et utilisée pour mettre à jour chaque paramètre. Il peut y avoir du bruit statistique dans l'ensemble de données d'entraînement et dans l'estimation du gradient d'erreur. De plus, la profondeur du modèle (nombre de couches) et le fait que les paramètres du modèle sont mis à jour séparément signifient qu'il est difficile de calculer exactement dans quelle mesure il faut modifier chaque paramètre du modèle pour faire descendre au mieux l'ensemble du modèle vers le bas du gradient d'erreur.
Au lieu de cela, une petite partie de la mise à jour des poids est effectuée à chaque itération. Un hyperparamètre appelé « taux d'apprentissage » contrôle la quantité de mise à jour des pondérations du modèle et, à son tour, contrôle la vitesse à laquelle un modèle apprend sur l'ensemble de données d'entraînement.
- Taux d'apprentissage : quantité de mise à jour de chaque paramètre du modèle par cycle de l'algorithme d'apprentissage.
Le processus de formation doit être répété plusieurs fois jusqu'à ce qu'un ensemble de paramètres de modèle bon ou suffisamment bon soit découvert. Le nombre total d'itérations du processus est limité par le nombre de passages complets dans l'ensemble de données de formation après quoi le processus de formation est terminé. C'est ce qu'on appelle le nombre d'« époques » d'entraînement.
- Époques. Nombre de passages complets dans l'ensemble de données de formation avant la fin du processus de formation.
Il existe de nombreuses extensions de l'algorithme d'apprentissage, bien que ces cinq hyperparamètres contrôlent généralement l'algorithme d'apprentissage des réseaux neuronaux d'apprentissage profond.
Lectures complémentaires
Cette section fournit plus de ressources sur le sujet si vous souhaitez approfondir.
- Apprentissage profond, 2016.
- Neural Smithing : apprentissage supervisé dans les réseaux de neurones artificiels Feedforward, 1999.
- Réseaux de neurones pour la reconnaissance de formes, 1995.
Résumé
Dans cet article, vous avez découvert le défi consistant à trouver des paramètres de modèle pour les réseaux de neurones d'apprentissage profond.
Concrètement, vous avez appris :
- Les réseaux de neurones apprennent une fonction de cartographie des entrées aux sorties qui peut être résumée comme résolvant le problème de l'approximation des fonctions.
- Contrairement à d'autres algorithmes d'apprentissage automatique, les paramètres d'un réseau neuronal doivent être trouvés en résolvant un problème d'optimisation non convexe avec de nombreuses bonnes solutions et de nombreuses solutions faussement bonnes.
- L'algorithme de descente de gradient stochastique est utilisé pour résoudre le problème d'optimisation dans lequel les paramètres du modèle sont mis à jour à chaque itération à l'aide de l'algorithme de rétropropagation.
Avez-vous des questions ?
Posez vos questions dans les commentaires ci-dessous et je ferai de mon mieux pour y répondre.