Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Tutoriel sur la science des données - Cours complet sur la science des données [2020] (1-3)
Tutoriel sur la science des données - Cours complet sur la science des données [2020]
Partie 1
Partie 2
Partie 3
Tutoriel sur la science des données - Cours complet sur la science des données [2020] (4-6)
Tutoriel sur la science des données - Cours complet sur la science des données [2020]
Partie 4
Partie 5
Partie 6
Convolutions dans l'apprentissage en profondeur - Application de démonstration interactive
Convolutions dans l'apprentissage en profondeur - Application de démonstration interactive
Bienvenue dans la démo de Steeplezer avec Mandy. Dans cet épisode, nous explorerons l'application de démonstration de convolution interactive sur deeplister.com pour améliorer notre compréhension des opérations de convolution utilisées dans les réseaux de neurones.
Les opérations de convolution sont des composants cruciaux dans les réseaux de neurones convolutifs pour mapper les entrées aux sorties à l'aide de filtres et d'une fenêtre glissante. Nous avons un épisode dédié qui explique l'opération de convolution et son rôle dans les réseaux de neurones pour une compréhension plus fondamentale. Maintenant, concentrons-nous sur la façon dont nous pouvons utiliser l'application de démonstration de convolution interactive sur deeplister.com pour approfondir notre compréhension de cette opération. Sur la page d'application, nous voyons initialement la partie supérieure, puis nous ferons défiler vers le bas pour afficher la partie inférieure. L'application de démonstration nous permet d'assister à l'opération de convolution en action sur une entrée donnée et d'observer comment la sortie est dérivée. Nous avons plusieurs options avec lesquelles travailler dans la démo. Tout d'abord, nous pouvons basculer entre le mode plein écran. Deuxièmement, nous pouvons sélectionner l'ensemble de données et choisir le chiffre avec lequel nous voulons travailler, allant de 0 à 9, puisque nous utilisons MNIST.
Dans les couches convolutives des réseaux de neurones, les valeurs de filtre sont apprises au cours du processus de formation pour détecter divers modèles tels que des bords, des formes ou des textures. Dans cette démo, nous pouvons choisir parmi différents ensembles de filtres, tels que des filtres de bord, pour observer des exemples de convolutions. Pour notre premier exemple, nous allons sélectionner le filtre de bord gauche pour l'appliquer à une image d'un chiffre 9 du jeu de données MNIST. En configurant ces options, nous sommes prêts à procéder à la démo. L'image d'entrée du chiffre 9 est affichée, chaque petit carré représentant un pixel et sa valeur. Nous nous concentrons sur un bloc de pixels 3x3 et le filtre de bord gauche sélectionné. L'opération de convolution implique une multiplication élément par élément des valeurs d'entrée et de filtre, suivie d'une sommation pour obtenir la sortie finale.
En survolant chaque pixel, nous pouvons observer la multiplication qui se produit entre les valeurs d'entrée et de filtre. Après avoir additionné tous les produits, nous stockons la sortie résultante en bas, représentant l'image entière après convolution. En cliquant sur le bouton d'étape, nous déplaçons le bloc d'entrée d'un pixel vers la droite (pas de 1) et effectuons à nouveau l'opération de convolution. Ce processus se poursuit jusqu'à ce que nous atteignions la sortie finale. Nous pouvons également jouer à la démo pour automatiser ces opérations et la mettre en pause pour inspecter des pixels spécifiques.
La sortie représente les activations positives sous forme de pixels orange ou rouges, indiquant les bords gauches détectés par le filtre. Les activations négatives sont affichées sous forme de pixels bleus, représentant les bords droits. Une fonction d'activation de valeur est généralement appliquée à la sortie de convolution, conservant les valeurs positives et définissant les valeurs négatives sur zéro. En survolant les valeurs de sortie, nous pouvons les corréler avec les valeurs d'entrée et de filtre correspondantes. La sortie résultante est une collection d'activations positives représentant les bords gauches. Nous pouvons jouer le reste de la démo pour voir la sortie finale. Pour démontrer l'effet inverse, nous passons à un filtre de bord droit, ce qui donne la même sortie avec les pixels positifs et négatifs interchangés.
Comme autre exemple, nous passons au jeu de données Fashion MNIST et sélectionnons une image de t-shirt. En appliquant un filtre de bord "haut", nous pouvons observer la détection des bords haut et bas.
N'hésitez pas à explorer les différents exemples de la démo sur deeplister.com pour approfondir votre compréhension des opérations de convolution. Merci d'avoir regardé et pensez à consulter notre deuxième chaîne, "The Blizzard Vlog", sur YouTube pour plus de contenu. N'oubliez pas de visiter beeplezer.com pour le billet de blog correspondant et envisagez de rejoindre Deep Blizzard Hive Mind pour des avantages et des récompenses exclusifs.
Qu'est-ce que l'apprentissage en profondeur ? (DL 01)
Qu'est-ce que l'apprentissage en profondeur ? (DL 01)
Bienvenue dans l'apprentissage en profondeur ! Je m'appelle Bryce et je suis ravi de vous aider à en savoir plus sur ce sujet brûlant en informatique. L'apprentissage en profondeur est omniprésent dans notre vie quotidienne. Les algorithmes qui reconnaissent votre visage, comprennent votre discours et recommandent du contenu sur votre plateforme préférée sont tous basés sur un apprentissage en profondeur.
Mais qu'est-ce que le deep learning exactement ? Cela implique l'utilisation de réseaux de neurones et de programmation différentiable pour l'apprentissage automatique. Les réseaux de neurones sont des modèles informatiques inspirés du comportement des neurones dans le cerveau. Ils sont constitués de nœuds représentant les neurones et d'arêtes dirigées représentant les connexions entre eux, chaque arête ayant un poids indiquant sa force. Les neurones peuvent additionner les entrées pondérées de leurs voisins pour déterminer s'ils s'activent.
L'apprentissage automatique, qui se situe à l'intersection de l'intelligence artificielle et de la science des données, consiste à faire automatiquement des inférences intelligentes à partir des données. Contrairement à l'informatique traditionnelle, où les algorithmes sont conçus pour résoudre directement les problèmes, l'apprentissage automatique laisse les exemples de données définir les entrées et les sorties du problème. Nous implémentons ensuite des algorithmes qui déduisent la solution à partir de l'ensemble de données.
Les problèmes d'apprentissage automatique peuvent être classés en tant que régression ou classification. La régression consiste à déduire une fonction qui mappe les entrées continues aux sorties continues, comme la régression linéaire. La classification, d'autre part, attribue des étiquettes discrètes aux points d'entrée, telles que l'inférence des limites de décision.
L'apprentissage en profondeur nous permet de résoudre des problèmes complexes qui combinent des aspects de régression et de classification. Par exemple, la reconnaissance d'objets implique l'apprentissage d'une fonction qui prend une image en entrée et génère des cadres de délimitation et des étiquettes pour les objets de l'image.
Pour former un réseau de neurones, nous utilisons la descente de gradient, une technique qui minimise une fonction en suivant son gradient. Cela nécessite de différencier les activations du réseau de neurones. Les fonctions d'activation comme les fonctions en escalier ne conviennent pas à la différenciation, nous utilisons donc des approximations douces comme la fonction sigmoïde.
Les principes de formation des réseaux de neurones et de la programmation différentiable vont au-delà de l'apprentissage en profondeur. Nous pouvons considérer les neurones comme des programmes informatiques simples qui effectuent des sommes pondérées et appliquent des fonctions d'activation. Cela conduit au concept de programmation différentiable, où des fonctions qui peuvent être mathématiquement exploitées et différenciées peuvent être incorporées dans des modèles d'apprentissage en profondeur.
Dans ce cours, nous commencerons par des réseaux de neurones simples pour comprendre les bases de l'apprentissage automatique et de la descente de gradient stochastique. Nous ajouterons progressivement de la complexité, en explorant les réseaux de neurones profonds et la programmation générale différentiable. En cours de route, nous nous exercerons à utiliser des bibliothèques d'apprentissage en profondeur, discuterons des limites et des inconvénients, et vous préparerons à concevoir, appliquer, évaluer et critiquer des modèles d'apprentissage en profondeur pour des problèmes du monde réel.
À la fin du semestre, vous serez équipé pour relever des défis passionnants grâce à l'apprentissage en profondeur et aurez une compréhension globale de ses applications et de ses implications.
Prérequis d'apprentissage en profondeur (DL 02)
Prérequis d'apprentissage en profondeur (DL 02)
Pour réussir un cours sur le deep learning, il faut une formation en informatique et en mathématiques. Plus précisément, vous devriez avoir suivi des cours sur les structures de données, l'algèbre linéaire et le calcul multivariable. Examinons plus en détail l'importance de chacune de ces conditions préalables.
Avoir une formation en programmation est crucial pour ce cours d'informatique de premier cycle de niveau supérieur. Les structures de données servent de condition préalable pour s'assurer que vous avez une expérience de programmation suffisante. Comprendre les concepts liés à l'efficacité algorithmique rencontrés dans les structures de données sera également utile.
Dans ce cours, mes vidéos utilisent principalement du pseudocode ou expriment mathématiquement des calculs. Cependant, les devoirs nécessiteront une programmation à la fois en Python et en Julia. Python est largement utilisé pour les bibliothèques d'apprentissage en profondeur telles que TensorFlow et PyTorch, vous apprendrez donc à utiliser ces outils. Julia, d'autre part, est excellente pour combler le fossé entre les mathématiques et le calcul, ce qui facilite la compréhension du fonctionnement interne des réseaux de neurones.
D'un point de vue mathématique, nous utiliserons des concepts d'algèbre linéaire et de calcul multivariable. Cependant, les concepts spécifiques sur lesquels nous nous concentrerons ne représentent qu'une fraction de ce qui est généralement enseigné dans ces cours. Si vous n'avez suivi qu'un seul de ces cours, vous devriez pouvoir rattraper assez rapidement les concepts nécessaires de l'autre.
En algèbre linéaire, il est essentiel d'être à l'aise avec la notation matricielle. L'apprentissage en profondeur implique des opérations sur des vecteurs, des matrices et des tableaux de plus grande dimension (tenseurs). Il sera nécessaire de maîtriser les produits matrice-vecteur, d'appliquer des fonctions aux matrices et aux vecteurs et d'effectuer des opérations telles que les produits scalaires et les normes.
Le calcul multivariable est crucial pour comprendre les gradients, un concept clé utilisé tout au long du cours. Vous devez être à l'aise pour évaluer les gradients et prendre des dérivées partielles en utilisant des règles apprises en calcul de base, telles que la règle du produit et la règle du quotient.
Si vous n'êtes pas sûr de vos connaissances en algèbre linéaire ou en calcul multivariable, je fournirai une liste de lecture de vidéos de Grant Sanderson pour vous aider à approfondir ces sujets. Les vidéos en surbrillance dans la liste de lecture couvrent les concepts spécifiques que nous utiliserons dans le cours.
En vous assurant d'avoir une solide formation dans ces matières préalables, vous serez bien préparé pour aborder les activités et les devoirs de la première semaine du cours et réussir un apprentissage en profondeur.
Que peut calculer un seul neurone ? (DL 03)
Que peut calculer un seul neurone ? (DL 03)
Les réseaux de neurones sont constitués de nombreux nœuds avec un grand nombre de connexions. Pour mieux les comprendre, concentrons-nous sur un neurone individuel et explorons ses capacités, les types de modèles qu'il peut représenter et comment ces modèles peuvent être entraînés.
Un nœud dans un réseau neuronal reçoit des entrées et effectue un calcul simple pour générer une sortie numérique. Ce calcul comporte deux étapes : premièrement, les entrées sont multipliées par les poids correspondants et additionnées ; ensuite, la somme des entrées pondérées passe par une fonction d'activation pour produire la sortie.
Mathématiquement, la sortie est obtenue en appliquant une fonction d'activation (notée f) à la somme des entrées pondérées. Par conséquent, la sortie est le résultat de l'application de la fonction d'activation à la somme de chaque poids multipliée par son entrée correspondante, plus un terme de biais.
Le biais permet à la somme d'être non nulle même si toutes les entrées sont nulles. Nous pouvons considérer le biais comme un autre poids et le représenter avec une flèche supplémentaire entrant dans le nœud. Chaque neurone effectue une somme pondérée sur ses entrées, mais différents neurones peuvent avoir différentes fonctions d'activation.
Pour un modèle de neurone unique, deux fonctions d'activation remarquables sont les fonctions linéaires et échelonnées. La fonction d'activation linéaire permet au neurone d'effectuer une régression, tandis que la fonction d'étape lui permet d'effectuer une classification.
Dans le cas d'un neurone avec une seule entrée, la somme pondérée des entrées est calculée en multipliant l'entrée par le poids et en ajoutant le biais. La fonction d'activation linéaire choisie, y = x, nous permet d'exprimer n'importe quelle fonction linéaire de x1 en utilisant les paramètres de poids (w1) et de biais (b). Ainsi, ce neurone peut calculer n'importe quelle fonction linéaire avec une entrée unidimensionnelle (x1) et une sortie unidimensionnelle (y).
Si le neurone a plus d'entrées, la cartographie s'étend aux entrées multidimensionnelles mais reste une fonction linéaire adaptée à la régression. Cependant, la visualisation de la fonction devient difficile à mesure que la dimension d'entrée augmente.
Dans le cas d'un neurone à deux entrées, la fonction échelon est utilisée comme activation. La somme pondérée des entrées est toujours calculée et l'activation passe de zéro à un lorsque la somme devient positive. L'activation peut être décrite à l'aide d'une fonction par morceaux, et la limite de décision entre les entrées résultant en une sortie 0 ou 1 est celle où la somme pondérée des entrées est égale à zéro. Cette configuration convient aux tâches de classification, où les entrées sont étiquetées 0 ou 1 en fonction de la sortie du neurone.
Pour effectuer une régression ou une classification à l'aide de neurones uniques, nous avons besoin d'un ensemble de données composé de paires d'entrée-sortie. La fonction d'activation choisie varie selon que la sortie est binaire (0 ou 1) ou continue. La dimensionnalité des exemples d'entrée détermine le nombre d'entrées et de poids dans le modèle de neurone unique.
La formation d'un réseau neuronal ou d'un neurone unique implique la définition d'une fonction de perte qui quantifie l'écart du modèle par rapport aux données. Pour les tâches de régression, la somme des erreurs au carré peut être utilisée, tandis que les tâches de classification avec des sorties binaires peuvent utiliser d'autres fonctions de perte appropriées.
L'objectif de la formation est de mettre à jour les paramètres (pondérations et biais) de manière à minimiser la perte et à améliorer la précision du modèle. La descente de gradient est une technique d'optimisation courante utilisée pour mettre à jour les paramètres et réduire la perte.
Dans la vidéo suivante, nous approfondirons le concept de descente de gradient et comment il facilite les mises à jour des paramètres pour améliorer les performances du modèle.
Comment entraîner son neurone (DL 04)
Comment entraîner son neurone (DL 04)
Dans notre vidéo précédente, nous avons exploré le calcul d'un seul neurone. Nous avons appris qu'un neurone calcule en prenant une somme pondérée d'entrées, en ajoutant un biais et en appliquant une fonction d'activation. L'utilisation d'une fonction en escalier pour l'activation nous donne un classificateur binaire, tandis qu'une fonction linéaire nous donne un régresseur.
Nous avons également discuté de la mesure de la perte d'un modèle sur son ensemble de données à l'aide de la somme des erreurs au carré et de la formation du modèle à l'aide du gradient de la fonction de perte. La fonction de perte dépend des paramètres du modèle, à savoir les poids et le biais. L'erreur quadratique moyenne est couramment utilisée comme fonction de perte dans les calculs.
Pour comprendre comment la fonction de perte dépend des paramètres et comment nous pouvons les modifier pour réduire la perte, nous avons calculé la perte sur un petit ensemble de données de régression. En additionnant les différences au carré entre les sorties correctes et prédites, nous avons obtenu la valeur de perte.
Ensuite, nous nous sommes concentrés sur la recherche du gradient de la fonction de perte. Nous avons dérivé les dérivées partielles de la perte par rapport à chaque paramètre. Ces dérivées partielles forment le gradient, qui nous guide pour diminuer la perte. En mettant à jour les paramètres dans la direction opposée du gradient, nous pouvons minimiser la perte et améliorer la représentation de l'ensemble de données par notre modèle.
Nous avons visualisé la fonction de perte comme une surface dans l'espace des paramètres et discuté de la façon dont le gradient indique la direction de la plus forte augmentation de la perte. En faisant de petits pas dans la direction opposée du gradient, nous pouvons diminuer la perte de manière itérative et affiner notre modèle.
Pour les tâches de classification, nous avons rencontré un défi lors de la prise de la dérivée de l'activation de la fonction échelon. Pour surmonter cela, nous avons remplacé la fonction en escalier par une approximation douce appelée la fonction sigmoïde. Nous avons expliqué le comportement de la fonction sigmoïde et sa capacité à produire des sorties probabilistes entre 0 et 1.
Nous avons appliqué la fonction sigmoïde à un exemple de classification et montré comment calculer la perte et le gradient à l'aide de la nouvelle activation. Le processus de mise à jour des paramètres et d'amélioration du modèle reste le même qu'en régression.
Enfin, nous avons souligné que les concepts discutés peuvent être étendus à des dimensions supérieures en appliquant les mêmes formules à plusieurs poids et points de données. Les principes généraux de calcul de la perte, de calcul du gradient et de mise à jour des paramètres sont valables quelle que soit la dimensionnalité de l'entrée.
Dans l'ensemble, la compréhension du calcul d'un seul neurone, de la fonction de perte et du gradient constitue la base de la formation des réseaux de neurones et de l'amélioration de leurs performances.
Le pipeline d'analyse de données (DL 05)
Le pipeline d'analyse de données (DL 05)
Dans notre classe d'apprentissage en profondeur, nous approfondirons l'étude des réseaux de neurones. Cependant, il est important de se rappeler qu'un réseau de neurones, ou tout modèle d'apprentissage automatique, n'est qu'une partie d'un système plus vaste. Avant que les données puissent être introduites dans un réseau neuronal, elles doivent être collectées et traitées dans un format que le réseau peut comprendre. De même, les sorties d'un réseau de neurones nécessitent souvent un post-traitement ou une analyse plus approfondie.
Tout au long du semestre, il sera utile de garder à l'esprit la métaphore d'un pipeline d'analyse de données. Cette analogie souligne que notre objectif dans l'apprentissage automatique est de transformer les observations du monde en prédictions sur le monde, et le réseau de neurones n'est qu'une étape dans ce processus. Le pipeline nous rappelle de considérer les étapes par lesquelles nos données passent et comment chaque étape contribue à la suivante.
Différents problèmes nécessitent différentes étapes dans le pipeline. Alors que les ensembles de données standardisés ou simulés peuvent nous permettre de sauter certaines étapes, les applications réelles de l'apprentissage en profondeur nous obligent à prendre en compte les aspects pratiques de l'analyse des données.
Discutons plus en détail de certains aspects importants des pipelines d'analyse de données. La première étape est la collecte de données. Bien que des ensembles de données préexistants puissent être utilisés dans certains cas, si nous voulons résoudre un nouveau problème avec un apprentissage en profondeur, nous devons déterminer quelles données conviennent à la formation de notre modèle. Lors de la collecte de données, nous devons nous assurer que nous disposons d'une quantité suffisante, étant donné que les récents succès de l'apprentissage en profondeur reposent sur de grands ensembles de données. Cependant, il y a aussi trop de données, surtout lorsque les ressources de calcul sont limitées. Dans certains cas, travailler avec une quantité limitée de données peut être bénéfique, en particulier lors de l'exploration et de la découverte de problèmes. Il est crucial de s'assurer que l'ensemble de données que nous utilisons pour la formation est représentatif du problème que nous visons à résoudre. Cela implique de prendre en compte des facteurs tels que la représentation de toutes les classes souhaitées dans une tâche de classification et de ne pas négliger les valeurs aberrantes importantes que le modèle doit reconnaître.
Un autre défi consiste à identifier les biais systématiques dans les ensembles de données. Les biais peuvent survenir de diverses manières, comme une surreprésentation des images prises les jours ensoleillés, entraînant des difficultés pour un classificateur d'images dans des conditions nuageuses. Les biais peuvent également affecter les prévisions liées à la santé ou à l'éducation, en attribuant des facteurs individuels à des structures sociales plus larges. Il est essentiel de garder à l'esprit les biais potentiels lors de la collecte des données. Cependant, traiter et corriger les biais est un problème complexe qui nécessite des recherches continues sur l'apprentissage en profondeur.
Après avoir collecté des données, nous devons souvent les nettoyer avant d'appliquer l'apprentissage automatique ou d'autres techniques de traitement. Cette étape implique de gérer les données manquantes, de décider quelles dimensions des données sont pertinentes et de traiter les différentes dimensionnalités dans les exemples. Un bon étiquetage des données est crucial pour l'apprentissage supervisé. L'obtention d'étiquettes appropriées peut être difficile, en particulier lors de la transcription de la langue des signes ou de la gestion des incohérences entre la parole et le texte. Les étiquettes doivent représenter avec précision les aspects des données que nous voulons que notre modèle apprenne.
Ensuite, nous devons transformer les données dans un format numérique adapté à la formation de notre réseau neuronal ou modèle d'apprentissage automatique. Les réseaux de neurones attendent une entrée numérique sous forme de vecteurs ou de matrices. Le processus de codage numérique varie en difficulté selon le problème. Par exemple, le traitement des données d'image est relativement simple en raison de la représentation basée sur les pixels déjà utilisée par les ordinateurs. Cependant, la manipulation de données textuelles codées au format ASCII nécessite des représentations alternatives. Transformer la représentation des données ou même la dimensionnalité devient de plus en plus important à mesure que les problèmes deviennent plus complexes.
De plus, il peut être avantageux de normaliser les données, en particulier si les réseaux de neurones ont tendance à produire des valeurs comprises entre zéro et un. La normalisation implique la mise à l'échelle de la plage de valeurs de données, garantissant que les entrées du réseau neuronal sont plus proches les unes des autres. Après la sortie du réseau de neurones, nous devrons peut-être effectuer des étapes de post-traitement. Cela inclut le décodage de la sortie du réseau dans le format de prédiction souhaité, la transmission de la confiance de la prédiction et la prise en compte de l'application ou de l'algorithme qui utilisera les prédictions du modèle.
Une fois que nous avons traité les données et entraîné notre réseau de neurones, nous pouvons passer à l'étape d'évaluation et de réglage. C'est là que nous évaluons les performances de notre modèle et apportons des améliorations. L'évaluation consiste à utiliser l'ensemble de tests que nous avons mis de côté plus tôt. En appliquant le réseau de neurones formé à ces données invisibles, nous pouvons mesurer à quel point il se généralise à de nouveaux exemples. Nous utilisons généralement des mesures telles que l'exactitude, la précision, le rappel et le score F1 pour évaluer les performances de notre modèle. Ces métriques donnent un aperçu de l'efficacité avec laquelle le réseau de neurones fait des prédictions.
Sur la base des résultats de l'évaluation, nous pouvons identifier les domaines dans lesquels le modèle peut être sous-performant ou présenter des limites. Ces informations nous guident dans les ajustements et améliorations nécessaires. Nous pouvons itérer sur l'architecture du modèle, les hyperparamètres, ou même collecter des données supplémentaires si nécessaire. L'objectif est d'affiner les performances du modèle et de s'assurer qu'il atteint la précision et la fiabilité souhaitées.
Au cours du processus de réglage, nous expérimentons différentes configurations et paramètres pour optimiser les performances du modèle. Cela inclut l'ajustement d'hyperparamètres tels que le taux d'apprentissage, la taille des lots et les techniques de régularisation. Grâce à une exploration et une expérimentation systématiques, nous visons à trouver la meilleure combinaison de paramètres qui maximise l'efficacité du réseau de neurones.
En plus d'affiner le modèle lui-même, nous considérons également le contexte plus large de son application. Nous prenons en compte le problème spécifique que nous essayons de résoudre et les implications réelles des prédictions du modèle. Cela implique d'examiner les aspects sociaux, éthiques et juridiques du déploiement du modèle dans la pratique. Il est crucial de s'assurer que le modèle est juste, impartial et aligné sur les valeurs et les exigences du domaine du problème.
En tant que praticiens de l'apprentissage en profondeur, notre responsabilité va au-delà du développement de modèles précis. Nous devons analyser et interpréter les résultats de manière critique, en tenant compte de tout biais ou limitation potentiels. Il est nécessaire de revoir et de réévaluer régulièrement les performances du modèle pour maintenir son efficacité dans le temps.
Étudier les réseaux de neurones dans une classe d'apprentissage en profondeur implique de comprendre qu'ils font partie d'un système plus vaste. Le pipeline d'analyse des données, de la collecte des données au prétraitement, à la formation et à l'évaluation, englobe plusieurs étapes qui nécessitent une attention particulière. En étant conscients de l'ensemble du processus et en améliorant continuellement nos modèles, nous pouvons exploiter efficacement la puissance de l'apprentissage en profondeur pour faire des prédictions précises et résoudre des problèmes du monde réel.
Validation hors échantillon (DL 06)
Validation hors échantillon (DL 06)
Dans l'apprentissage automatique, l'évaluation d'un modèle consiste à faire de nouvelles prédictions et à les tester sur des données inédites. Dans cette discussion, nous explorerons comment utiliser efficacement nos données pour valider et améliorer nos modèles d'apprentissage automatique.
Le processus de sélection du modèle commence par l'identification des options disponibles pour résoudre un problème donné. Cela nous amène au concept d'espace d'hypothèses d'un modèle, qui définit les types de fonctions que le modèle peut représenter. L'espace d'hypothèse est limité par des facteurs tels que la représentation d'entrée choisie et le type de sortie requis.
Une fois que nous avons choisi un modèle spécifique ou un algorithme d'apprentissage automatique, divers aspects du modèle peuvent être ajustés. Cela inclut l'ajustement des paramètres du modèle, tels que les pondérations et les biais, qui sont formés à l'aide des données. De plus, d'autres aspects, comme le taux d'apprentissage ou le nombre d'itérations, peuvent être considérés comme des hyperparamètres qui influencent les performances du modèle.
Pour explorer et tester efficacement différentes options, nous nous appuyons sur la validation expérimentale. Cela implique de diviser notre ensemble de données en ensembles d'entraînement et de test. L'ensemble d'apprentissage est utilisé pour former le modèle, tandis que l'ensemble de test est utilisé pour évaluer ses performances sur des données invisibles. En comparant différents modèles ou hyperparamètres sur l'ensemble de test, nous pouvons déterminer lesquels sont les plus efficaces pour généraliser à de nouvelles données.
La généralisation est un aspect essentiel de l'apprentissage automatique, car notre objectif est de développer des modèles capables de faire des prédictions précises sur de nouvelles données inédites. Le surajustement, où un modèle devient trop spécifique aux données d'entraînement, est un défi courant pour parvenir à une bonne généralisation. En séparant une partie des données pour la validation hors échantillon, nous pouvons évaluer si un modèle est surajusté ou se généralise avec succès.
Lors de l'exploration de plusieurs hyperparamètres, nous pouvons systématiquement faire varier leurs valeurs ou échantillonner au hasard à partir d'une plage plausible. La randomisation nous permet d'explorer efficacement une plus large gamme de valeurs. Cependant, si une expérimentation approfondie conduit à un surajustement de l'ensemble de test, une séparation supplémentaire des données en ensembles d'apprentissage, de validation et de test ou l'utilisation de la validation croisée peut être nécessaire.
La validation croisée consiste à diviser les données en plusieurs sous-ensembles et à former et tester de manière itérative le modèle sur différentes combinaisons de ces sous-ensembles. Cette approche fournit une estimation plus robuste des performances et de la capacité de généralisation du modèle.
L'idée clé de l'apprentissage automatique est de valider expérimentalement nos modèles en séparant les données d'apprentissage et de test. Cela nous permet d'évaluer leurs performances sur des exemples inédits et de prendre des décisions éclairées concernant la sélection de modèles et le réglage des hyperparamètres.
Réseaux de neurones feed-forward (DL 07)
Réseaux de neurones feed-forward (DL 07)
Les réseaux de neurones, contrairement aux neurones uniques, sont constitués de plusieurs couches et effectuent des calculs via des nœuds. Chaque nœud calcule la somme pondérée des entrées et applique une fonction d'activation. Dans un réseau de neurones, l'entrée d'un nœud peut provenir d'activations de nœuds précédentes, et son activation calculée peut être transmise à des nœuds ultérieurs.
Par exemple, le neurone 8 d'un réseau reçoit des entrées des neurones 5, 6 et 7. La somme pondérée des entrées effectuées par le neurone 8 est la somme des activations de ces neurones multipliée par les poids correspondants, plus le biais. La fonction d'activation est ensuite appliquée à la somme pondérée. La sortie du neurone 8 est utilisée comme entrée pour les nœuds 11 et 12. Différentes fonctions d'activation peuvent être utilisées dans un réseau de neurones, telles que la tangente hyperbolique et l'unité linéaire redresseuse (ReLU).
Pour effectuer des calculs à l'aide d'un réseau de neurones pour faire des prédictions, nous commençons par définir les activations des nœuds de la couche d'entrée en fonction des données d'entrée. Les nœuds de la couche d'entrée stockent simplement les valeurs du vecteur d'entrée. La taille des couches d'entrée et de sortie dépend de la dimensionnalité des données et de la prédiction souhaitée. Les neurones cachés du réseau, organisés en couches, effectuent des calculs entre les entrées et les sorties. En calculant les activations pour chaque couche, nous pouvons transmettre les entrées à la couche suivante, en faisant référence aux activations précédentes. Ces activations sont également nécessaires pour la descente de gradient lors des mises à jour de poids. La présence de couches cachées dans un réseau neuronal offre la possibilité d'utiliser des fonctions d'activation non linéaires. Les activations linéaires n'offrent aucun avantage dans les réseaux multicouches. Les fonctions d'activation non linéaires, telles que la fonction sigmoïde, permettent la représentation de diverses fonctions.
Les neurones représentant des opérations logiques telles que AND, OR et NOT peuvent être construits à l'aide de classificateurs de fonctions échelonnées. En rapprochant ces opérations logiques à l'aide d'activations sigmoïdes, un réseau de neurones peut représenter n'importe quelle fonction booléenne. Pour former un réseau de neurones, nous utilisons la descente de gradient pour mettre à jour les poids et les biais. Les paramètres du réseau incluent tous les poids et biais de l'ensemble du réseau. La fonction de perte dans un réseau avec plusieurs neurones de sortie peut être l'erreur quadratique moyenne additionnée sur tous les neurones de sortie. L'objectif est de réduire la perte en mettant à jour les paramètres de manière itérative.
La descente de gradient est effectuée en calculant les gradients de la perte par rapport aux paramètres, en prenant des mesures dans le sens opposé des gradients pour minimiser la perte. Ce processus est connu sous le nom de rétropropagation et permet au réseau d'apprendre et d'améliorer ses prédictions. Dans la vidéo suivante, nous approfondirons les détails de l'algorithme de rétropropagation, qui est utilisé pour effectuer des mises à jour de descente de gradient sur un réseau de neurones. La rétropropagation permet un calcul efficace des gradients de perte par rapport aux paramètres du réseau.
Le processus commence par calculer le gradient de la fonction de perte par rapport aux activations de sortie. Ce gradient représente la sensibilité de la perte aux variations des activations de sortie. Il peut être obtenu en appliquant la règle de la chaîne, car la perte dépend des activations de sortie via la fonction d'activation et de la différence au carré avec les valeurs cibles. Une fois que le gradient de la perte par rapport aux activations de sortie est calculé, il est propagé vers l'arrière à travers le réseau. A chaque couche, les gradients sont multipliés par la dérivée de la fonction d'activation par rapport à la somme pondérée des entrées. Cette dérivée capture la sensibilité de l'activation aux variations de la somme pondérée.
En propageant les gradients vers l'arrière, on peut calculer les gradients de la perte par rapport aux activations de la couche précédente. Ces gradients indiquent dans quelle mesure chaque activation dans la couche précédente contribue à la perte. En utilisant les gradients de la perte par rapport aux activations, nous pouvons alors calculer les gradients de la perte par rapport aux poids et biais dans chaque couche. Ces gradients sont obtenus en multipliant l'activation de la couche précédente par le gradient correspondant de la fonction d'activation. Enfin, avec les gradients de la perte par rapport aux paramètres, nous pouvons mettre à jour les poids et les biais en utilisant l'algorithme de descente de gradient. En prenant des mesures dans le sens opposé aux gradients, nous optimisons progressivement les paramètres du réseau pour minimiser la perte.
Ce processus itératif de propagation vers l'avant, de propagation vers l'arrière et de mises à jour des paramètres est répété pendant un certain nombre d'époques ou jusqu'à ce que la perte converge vers une valeur satisfaisante. Grâce à ce processus de formation, le réseau de neurones apprend à faire de meilleures prédictions en ajustant ses pondérations et ses biais en fonction des données de formation fournies.
Les réseaux de neurones utilisent plusieurs couches et des fonctions d'activation non linéaires pour effectuer des calculs complexes et faire des prédictions. En utilisant l'algorithme de rétropropagation et la descente de gradient, les réseaux de neurones peuvent apprendre des données et optimiser leurs paramètres pour améliorer leurs capacités prédictives.