Apprentissage Automatique et Réseaux Neuronaux - page 52

 

LSTM (DL 18)



LSTM (DL 18)

L'objectif de cette conférence est de démontrer l'utilisation pratique des réseaux de neurones récurrents (RNN) pour la modélisation du langage. Auparavant, nous avons discuté de l'utilisation des RNN pour prédire le mot suivant dans une phrase, qui sert de tâche de pré-formation commune pour les RNN. Pour les tâches plus complexes comme la réponse aux questions ou la traduction automatique, nous pouvons utiliser une approche d'apprentissage par transfert. Tout d'abord, nous pré-entraînons le RNN sur la tâche de prédiction de mot suivante, puis nous l'ajustons pour la tâche spécifique qui nous intéresse.

Pour obtenir des sorties plus significatives d'un RNN, nous nous concentrons sur les activations ou les états cachés qui traversent le réseau dans le sens avant ou arrière. Ces états masqués représentent l'ensemble de la saisie de texte. Par exemple, lors de la traduction d'une phrase, chaque mot est introduit séquentiellement dans le RNN, et l'état caché produit au dernier pas de temps devient une représentation du texte entier. Nous pouvons ensuite transmettre cet état caché à des couches de réseau de neurones supplémentaires pour résoudre la tâche souhaitée, telle que la classification ou la génération de texte.

Ce processus d'introduction de texte dans un RNN pour l'encoder dans un état de couche caché, puis d'utilisation d'un autre RNN comme décodeur, nous permet de générer du texte de sortie. En entraînant cette paire de RNN sur des paires entrée-sortie, nous pouvons traduire des phrases ou générer des réponses.

Cependant, les RNN réguliers avec des activations de 10h rencontrent des difficultés lorsqu'ils traitent des séquences plus longues en raison de la disparition des gradients. Pour résoudre ce problème, nous pouvons utiliser une architecture appelée Long Short-Term Memory (LSTM). Les LSTM offrent plusieurs chemins pour que les activations circulent, permettant aux gradients de se propager plus efficacement à travers le réseau.

La couche LSTM se compose d'une entrée et d'une sortie. Nous pouvons les utiliser pour entraîner le réseau sur des tâches telles que la prédiction du mot suivant. L'entrée est concaténée avec l'état caché précédent, tandis qu'un état caché supplémentaire (c) est passé du réseau à lui-même à chaque pas de temps. Cet état c permet la propagation du gradient sans les limitations imposées par les activations 10h. Les fonctions d'activation sigmoïde sont utilisées pour contrôler quelles informations sont conservées ou oubliées des états précédents, et ces portes sont apprises pendant la formation.

Les LSTM intègrent à la fois les chemins h et c, permettant des calculs plus complexes à chaque pas de temps et facilitant une propagation rapide du gradient à travers de multiples applications du réseau LSTM. Bien que nous n'ayons pas une connaissance complète des fonctions spécifiques apprises par chaque composant, l'architecture LSTM s'est avérée efficace dans la pratique par rapport à d'autres types de RNN.

L'efficacité pratique des architectures LSTM réside dans leur capacité à résoudre le problème du gradient de fuite et à capturer les dépendances à long terme dans les données séquentielles. En incorporant des mécanismes de déclenchement et de multiples chemins pour le flux d'informations, les LSTM ont montré des améliorations significatives par rapport aux RNN traditionnels dans diverses tâches de traitement du langage naturel.

La nature fermée des LSTM leur permet de mémoriser et d'oublier de manière sélective les informations des pas de temps précédents, ce qui les rend bien adaptés à la modélisation et à la génération de séquences. Les activations sigmoïdes dans les portes LSTM contrôlent le flux d'informations, déterminant ce qu'il faut retenir et ce qu'il faut rejeter. Ces portes apprennent à partir des données d'apprentissage et décident de manière adaptative quelles parties de l'état caché précédent et de l'entrée actuelle sont pertinentes pour le pas de temps actuel.

La capacité du LSTM à se souvenir des dépendances à long terme est particulièrement cruciale dans la modélisation du langage. Dans la traduction d'une langue, par exemple, comprendre le contexte d'une phrase nécessite de considérer l'ensemble de la séquence d'entrée. L'état caché au dernier pas de temps du LSTM de codage capture le sens général de la phrase, permettant une traduction précise ou d'autres tâches en aval.

De plus, les LSTM facilitent une propagation efficace du gradient lors des passes avant et arrière. En préservant les informations pertinentes et en atténuant l'impact des gradients de fuite, les LSTM permettent la formation efficace de réseaux récurrents profonds sur de longues séquences. Ceci est accompli grâce à l'utilisation de chemins parallèles qui permettent aux gradients de s'écouler sans interruption, les empêchant de disparaître ou d'exploser lorsqu'ils traversent le réseau.

Le succès des LSTM dans la modélisation du langage en a fait un élément fondamental de nombreux modèles de pointe. Les chercheurs et les praticiens ont étendu les architectures LSTM avec des fonctionnalités supplémentaires telles que les mécanismes d'attention, l'attention multi-tête et les modèles basés sur des transformateurs. Ces avancées améliorent encore les capacités de modélisation des LSTM, leur permettant de gérer des tâches encore plus complexes, notamment la synthèse de documents, l'analyse des sentiments et la génération de dialogues.

En résumé, les LSTM ont révolutionné la modélisation du langage en s'attaquant aux limites des RNN traditionnels. Leur capacité à capturer les dépendances à long terme, à gérer les gradients de fuite et à conserver de manière sélective les informations pertinentes en a fait un outil indispensable dans le traitement du langage naturel. En tirant parti des architectures LSTM, les chercheurs et les développeurs ont réalisé des progrès significatifs dans diverses tâches liées au langage, ce qui a permis d'améliorer la traduction automatique, les systèmes de questions-réponses et les modèles de génération de texte.

LSTMs (DL 18)
LSTMs (DL 18)
  • 2020.10.25
  • www.youtube.com
Davidson CSC 381: Deep Learning, F'20, F'22
 

Transformateurs et auto-attention (DL 19)



Transformateurs et auto-attention (DL 19)

L'architecture Transformer, basée sur des réseaux de neurones, a atteint des performances de pointe dans la modélisation du langage et diverses autres tâches. Explorons les idées de base derrière Transformers, y compris leur construction à partir de blocs d'auto-attention et l'intégration de fonctionnalités de réseau récurrentes et résiduelles.

Les réseaux de neurones récurrents (RNN) excellent dans le traitement de texte en construisant progressivement un état caché qui représente le contenu informatif d'un document. Ils reçoivent des incorporations de mots en entrée et peuvent être entraînés à des tâches non supervisées comme prédire le mot suivant dans une phrase. Cependant, les RNN, y compris les variantes LSTM, ont du mal avec de longues entrées en raison de la nécessité d'un traitement répété à travers les couches.

D'autre part, les réseaux résiduels sont efficaces pour gérer des modèles profonds avec de nombreuses couches en utilisant des connexions résiduelles. Ces connexions simplifient la formation en permettant à chaque bloc d'améliorer l'entrée et permettent aux gradients de se propager plus efficacement.

Les réseaux résiduels présentent des avantages supplémentaires dans le traitement d'image, tels que l'exploitation de la convolution dans les blocs résiduels, ce qui s'aligne bien avec les fonctions liées à l'image. Pour combiner les forces des réseaux récurrents pour le traitement de texte et des réseaux résiduels pour l'apprentissage de modèles profonds, le transformateur a été introduit.

Semblable aux RNN, un transformateur fonctionne sur les incorporations de mots. Cependant, au lieu de recevoir les mots un par un, il traite toutes les intégrations d'un document entier concaténées dans une matrice. Les transformateurs peuvent être formés sur des tâches non supervisées qui prédisent les mots manquants, ce qui se traduit par un codage du document utilisable pour diverses tâches de traitement du langage naturel.

Des réseaux résiduels, les transformateurs héritent des connexions de saut qui permettent à chaque bloc d'augmenter ses prédécesseurs, simplifiant la formation même dans les grands réseaux. Pour faciliter le traitement de texte, l'architecture au sein des blocs intègre une idée clé appelée auto-attention.

L'auto-attention répond à la nécessité de prêter attention aux mots éloignés dans une phrase pour comprendre le sens d'un mot spécifique. Plutôt que de concevoir explicitement une fonction d'attention, l'architecture du transformateur est conçue pour faciliter l'apprentissage d'une telle fonction.

Dans un bloc d'encodeur d'auto-attention, l'intégration de chaque mot subit trois couches denses : requête (q), clé (k) et valeur (v). Ces couches partagent des poids sur tous les mots mais sont appliquées à différents éléments de la phrase d'entrée. En calculant le produit scalaire entre la requête et les vecteurs clés, le modèle peut évaluer la similarité.

Le produit scalaire entre la requête et les vecteurs clés du même mot indique l'auto-similarité. De plus, des produits scalaires sont calculés entre le vecteur de requête d'un mot spécifique et les vecteurs clés de tous les autres mots. Softmax est appliqué pour convertir les scores de similarité en poids entre 0 et 1, en mettant l'accent sur les vecteurs les plus similaires.

En multipliant les poids softmax avec les vecteurs de valeur de chaque mot, l'attention est portée sur différentes parties du document. Cette somme pondérée produit un vecteur de sortie calculé à partir du document entier. Ce processus est exécuté en parallèle pour tous les mots, résultant en une matrice qui encode le document en fonction de l'attention.

Les incorporations de mots d'origine sont complétées par les informations dérivées de l'ensemble du document, pondérées par l'attention. Une couche dense régulière de forme assortie est ensuite appliquée. Plusieurs têtes d'attention peuvent être utilisées dans un bloc d'encodeur pour apprendre différents modèles d'attention. La sortie de toutes les têtes d'attention est additionnée et combinée avec la connexion de saut, ce qui donne la sortie du bloc.

Le mécanisme d'auto-attention permet au réseau d'apprendre à quoi prêter attention dans chaque tête d'attention. Plusieurs têtes d'attention permettent au modèle de se concentrer sur différents aspects dans diverses circonstances, améliorant la représentation d'entrée dans un codage utile du document texte.

Ce codage peut être traité ultérieurement pour la classification ou utilisé comme entrée dans un autre réseau de neurones pour des tâches telles que la traduction automatique. Les transformateurs de formation se sont initialement concentrés sur l'encodage de la langue dans une langue et le décodage dans une autre langue. Une formation non supervisée, similaire aux RNN, peut également être effectuée en fournissant des documents avec des mots masqués au hasard et en entraînant le modèle à prédire les mots manquants.

Les transformateurs ont révolutionné diverses tâches de traitement du langage naturel et sont devenus l'architecture de pointe pour la modélisation du langage et de nombreuses autres applications. Approfondissons les concepts de base des transformateurs et explorons comment ils combinent les meilleurs aspects des réseaux récurrents et résiduels.

Les réseaux de neurones récurrents (RNN), tels que LSTM, sont efficaces pour le traitement de texte car ils traitent les incorporations de mots de manière séquentielle et créent un état caché qui représente le contenu informatif d'un document. Les RNN peuvent être formés à des tâches non supervisées comme prédire le mot suivant dans une phrase en utilisant des données facilement disponibles. Cependant, les RNN ont tendance à se débattre avec de longues entrées en raison de la nécessité de transmettre des données à travers plusieurs couches à plusieurs reprises.

D'autre part, les réseaux résiduels excellent dans la gestion des modèles profonds en utilisant des connexions résiduelles, ce qui simplifie la formation et permet aux gradients de se propager efficacement. Dans le traitement d'image, les réseaux résiduels tirent parti de la convolution dans les blocs résiduels, offrant un avantage pour les fonctions pertinentes pour l'analyse d'image. L'objectif est de combiner les avantages des réseaux récurrents dans le traitement de texte avec les avantages de l'apprentissage de modèles profonds à partir de réseaux résiduels.

Cela nous amène à l'architecture Transformer. Comme les réseaux récurrents, les transformateurs fonctionnent sur des incorporations de mots. Cependant, contrairement aux réseaux récurrents qui traitent les mots un par un, les transformateurs reçoivent les intégrations d'un document entier concaténées dans une matrice, chaque ligne représentant l'intégration d'un mot différent. Les transformateurs peuvent être formés sur des tâches non supervisées, telles que la prédiction de mots manquants, pour générer des encodages de documents pour diverses tâches de traitement du langage naturel.

À partir des réseaux résiduels, les transformateurs héritent des connexions de saut, garantissant que chaque bloc n'a besoin que d'augmenter ses prédécesseurs et permettant aux gradients de se propager efficacement même dans les grands réseaux. Pour faciliter le traitement de texte, les transformateurs utilisent une architecture distincte au sein des blocs, connue sous le nom d'auto-attention.

L'auto-attention est l'idée que pour comprendre un mot dans une phrase, nous devons prêter attention à d'autres mots qui peuvent être éloignés dans la phrase. L'architecture n'est pas explicitement conçue avec une fonction d'attention spécifique ; au lieu de cela, il est conçu pour faciliter l'apprentissage de ces fonctions.

Dans un bloc d'encodeur d'auto-attention, l'intégration de chaque mot subit trois couches denses appelées requête, clé et valeur. Ces couches sont partagées par tous les mots mais appliquées à différents éléments de la phrase d'entrée. En prenant le produit scalaire entre la requête et les vecteurs clés, nous pouvons évaluer la similarité. Les produits scalaires plus grands indiquent des vecteurs pointant dans des directions similaires, tandis que les produits scalaires plus petits indiquent des vecteurs pointant dans des directions différentes.

Pour un mot donné, nous calculons le produit scalaire entre son vecteur de requête et les vecteurs clés de tous les autres mots. Cela produit un vecteur de scores de similarité, représentant à quel point le vecteur de requête est similaire à chaque vecteur clé. L'application de softmax à ces scores les convertit en valeurs comprises entre 0 et 1, en mettant l'accent sur les vecteurs les plus similaires. Les poids softmax résultants servent de multiplicateurs sur les vecteurs de valeur pour tous les mots du document.

Chaque vecteur de valeur est multiplié élément par élément avec son poids softmax correspondant, créant une somme pondérée qui représente l'attention du mot à d'autres mots. Ce processus est appliqué en parallèle pour chaque mot, générant un vecteur de sortie calculé à partir de l'ensemble du document, pondéré en fonction de l'attention portée à chaque mot. Ces informations sont ensuite ajoutées au mot incorporé d'origine.

Pour produire la sortie d'une tête d'attention, une couche dense régulière de forme assortie est appliquée. Plusieurs têtes d'attention peuvent être utilisées dans un bloc d'encodeur, permettant au réseau d'apprendre différents modèles d'attention dans différents contextes. La sortie de toutes les têtes d'attention est combinée et ajoutée à la connexion de saut, ce qui donne la sortie du bloc.

Semblables aux couches convolutionnelles utilisant plusieurs canaux, les transformateurs utilisent souvent plusieurs têtes d'attention dans un bloc d'encodeur pour capturer différents modèles d'attention. Cela permet au réseau d'apprendre et de combiner divers calculs d'attention, augmentant la représentation d'entrée en un codage utile du document texte.

Une fois l'encodage produit, il peut être utilisé pour diverses tâches. Par exemple, des couches supplémentaires peuvent être appliquées pour la classification, ou l'encodage peut servir d'entrée à un autre réseau de neurones pour des tâches telles que la traduction automatique. Initialement, la formation Transformer se concentrait sur l'encodage dans une langue et le décodage dans une autre. Une formation non supervisée peut également être effectuée en supprimant au hasard des mots dans les documents et en entraînant le modèle à prédire les mots manquants.

Pour tenir compte de l'ordre des mots et de la proximité, les transformateurs intègrent un codage positionnel. Ces informations supplémentaires sont ajoutées aux incorporations de mots et permettent au modèle de comprendre les positions relatives des mots dans le document.

Les transformateurs constituent une architecture puissante pour les tâches de traitement du langage naturel. En combinant les atouts des réseaux récurrents et résiduels, ils ont obtenu des résultats de pointe dans diverses applications. Le mécanisme d'auto-attention permet au modèle d'apprendre à quels mots prêter attention, et plusieurs têtes d'attention capturent différents modèles d'attention. Les transformateurs ont considérablement fait progresser le domaine de la modélisation du langage et continuent d'être un domaine actif de recherche et de développement.

Transformers and Self-Attention (DL 19)
Transformers and Self-Attention (DL 19)
  • 2022.11.05
  • www.youtube.com
Davidson CSC 381: Deep Learning, Fall 2022
 

Autres métriques et courbe ROC (DL 20)



Autres métriques et courbe ROC (DL 20)

Il s'agit d'une courte conférence sur les métriques alternatives pour mesurer le succès des tâches de classification binaire lors de l'utilisation de réseaux de neurones.

Dans une tâche de classification binaire, nous avons généralement deux nœuds de sortie dans notre réseau de neurones, et nos vecteurs cibles sont soit [1, 0] soit [0, 1]. Lors du décodage de la sortie du réseau en une étiquette de catégorie, il y a quatre résultats possibles :

  1. Vrai positif : la cible est [1, 0] et la sortie décodée est d'accord.
  2. Faux négatif : la cible est [1, 0], mais la sortie décodée l'étiquette à tort comme [0, 1].
  3. Vrai négatif : la cible est [0, 1] et la sortie décodée est d'accord.
  4. Faux positif : la cible est [0, 1], mais la sortie décodée l'étiquette à tort comme [1, 0].

Ces résultats peuvent être utilisés pour calculer différentes métriques pour évaluer les performances du modèle en classification binaire. Voici quelques mesures alternatives à considérer :

  1. Précision : la fraction de points de données que le modèle étiquette correctement comme positifs sur tous les points de données étiquetés comme positifs.
  2. Sensibilité ou rappel : La fraction des points de données qui auraient dû être étiquetés comme la première catégorie que le modèle identifie correctement comme telle.
  3. Spécificité : La fraction des points de données qui auraient dû être étiquetés comme deuxième catégorie ou catégorie négative que le modèle identifie correctement comme telle.

La précision, qui mesure la fraction globale d'étiquettes correctes, n'est pas toujours la mesure la plus informative. Différentes situations, telles que l'importance des faux positifs ou des faux négatifs, peuvent nécessiter de se concentrer sur des métriques spécifiques. De plus, la distribution des étiquettes positives et négatives dans l'ensemble de données peut fortement influencer la précision.

Pour comprendre les compromis entre les métriques, il est courant de les visualiser à l'aide de techniques telles que la courbe ROC (Receiver Operating Characteristic). La courbe ROC représente le taux de faux positifs par rapport au taux de vrais positifs pour différents seuils de classification.

En considérant les compromis entre les faux positifs et les faux négatifs et en analysant la courbe ROC, nous pouvons choisir le modèle et la métrique d'évaluation les plus appropriés en fonction des exigences spécifiques de notre problème.

Au lieu de se fier uniquement à la précision, il est important de tenir compte de l'importance relative des faux positifs et des faux négatifs, et de la performance des différents modèles à cet égard. Ainsi, lorsque vous travaillez sur votre projet, il est conseillé d'évaluer les compromis entre les métriques et de considérer les implications pour votre problème spécifique plutôt que de se fier uniquement à la précision globale.

Comprendre les compromis entre les différentes métriques est crucial lors de l'évaluation des modèles d'apprentissage automatique. Dans certains scénarios, la précision peut ne pas fournir une image complète des performances d'un modèle, en particulier lorsque les faux positifs et les faux négatifs ont des niveaux d'importance différents. Explorons quelques cas où des métriques alternatives sont plus appropriées :

  1. Importance des faux positifs et des faux négatifs : dans des domaines tels que le diagnostic médical, les conséquences des faux positifs et des faux négatifs peuvent varier considérablement. Par exemple, dans la détection du cancer, un faux négatif (manquer un cas positif) peut avoir de graves conséquences, tandis qu'un faux positif (diagnostiquer de manière incorrecte un cas négatif) peut entraîner des traitements inutiles. Dans de tels cas, des mesures telles que la précision et le rappel/la sensibilité peuvent offrir des informations précieuses sur les performances d'un modèle.

  2. Données déséquilibrées : lorsque les étiquettes positives et négatives sont inégalement réparties dans l'ensemble de données, la précision peut être trompeuse. Supposons que 95 % des points de données appartiennent à la classe positive. Dans ce cas, un modèle qui prédit simplement tout comme positif atteindrait une précision élevée de 95 % sans réellement apprendre les modèles sous-jacents. Des mesures telles que la précision et le rappel peuvent aider à corriger le biais et à se concentrer sur les performances du modèle dans chaque classe.

  3. Compromis précision-rappel : les modèles d'apprentissage automatique présentent souvent un compromis entre précision et rappel. La précision mesure la capacité à identifier correctement les exemples positifs, tandis que le rappel mesure la capacité à capturer tous les exemples positifs. En ajustant le seuil ou la limite de décision du modèle, nous pouvons donner la priorité à la précision ou au rappel. Cependant, modifier le seuil pour améliorer une métrique se fait souvent au détriment de l'autre. Comprendre ce compromis est important lors de la sélection de la métrique appropriée pour un problème donné.

  4. Courbe des caractéristiques de fonctionnement du récepteur (ROC) : la courbe ROC fournit une représentation graphique des performances d'un modèle de classification binaire en traçant le taux de faux positifs par rapport au taux de vrais positifs à divers seuils de classification. Un modèle qui atteint des taux de vrais positifs élevés avec de faibles taux de faux positifs aura une courbe plus proche du coin supérieur gauche, indiquant de meilleures performances. L'aire sous la courbe ROC (AUC-ROC) est couramment utilisée comme métrique récapitulative, les valeurs proches de 1 indiquant de meilleures performances.

Différents modèles d'apprentissage automatique peuvent avoir des compromis différents entre sensibilité et spécificité ou précision et rappel. Il est important de tenir compte des exigences spécifiques du problème et de l'importance relative des différentes métriques. En évaluant ces compromis et en comprenant comment les modèles fonctionnent sur diverses métriques, nous pouvons prendre des décisions plus éclairées et choisir le modèle le plus adapté à notre application.

Dans votre projet, tenez compte des compromis entre les faux positifs et les faux négatifs et sélectionnez des métriques qui correspondent aux objectifs du problème. Au lieu de vous fier uniquement à la précision, tenez compte des besoins spécifiques et des implications de votre tâche pour évaluer et comparer avec précision les performances de différents modèles.

Other Metrics and the ROC Curve (DL 20)
Other Metrics and the ROC Curve (DL 20)
  • 2020.10.12
  • www.youtube.com
Davidson CSC 381: Deep Learning, F'20, F'22
 

L'optimiseur d'Adam (DL 21)



L'optimiseur d'Adam (DL 21)

L'objectif de cette conférence est de démontrer comment nous pouvons remédier aux faiblesses de la descente de gradient stochastique (SGD) et présenter l'optimiseur Adam, qui a été largement utilisé pour l'entraînement des réseaux de neurones.

Dans SGD, nous mettons à jour chaque poids dans le réseau de neurones en soustrayant le produit du taux d'apprentissage et de la dérivée partielle de la perte par rapport à ce poids pour chaque lot sur lequel nous nous entraînons. Ce processus prend des mesures dans le sens du gradient négatif de la perte, en la minimisant progressivement. Cependant, SGD peut rencontrer plusieurs modes de défaillance qui nuisent à son efficacité.

Pour illustrer ces problèmes, nous commençons par un exemple unidimensionnel où nous visons à minimiser la perte. Dans ce cas, SGD nous emmène en descente en suivant la direction de la pente, en se rapprochant progressivement du minimum. Cependant, il existe des scénarios où SGD n'est pas utile. Si nous atteignons un minimum local, où le gradient est nul, nous ne nous éloignerons pas de ce point. De même, être sur un plateau de la fonction de perte, où le gradient est également nul, empêche de progresser. Bien que la stochasticité de la formation sur différents lots puisse parfois aider à échapper aux minima ou plateaux locaux, elle ne résout pas complètement ces problèmes.

Dans les problèmes d'optimisation de dimension supérieure, tels que la formation de réseaux de neurones avec plusieurs dimensions de poids, des défis supplémentaires se posent. Les points de selle, où il y a des minima et des maxima locaux dans différentes directions, peuvent rendre le gradient nul, ce qui ralentit l'apprentissage. De plus, les écarts dans les échelles des dérivées partielles à travers différentes dimensions peuvent conduire à un comportement en zigzag pendant la descente du gradient, provoquant un dépassement et une convergence plus lente.

L'optimiseur Adam résout ces problèmes avec deux idées clés. Le premier est le momentum, qui favorise la poursuite dans la même direction lorsque plusieurs pas ont été franchis dans cette direction. Momentum aide à surmonter les plateaux et peut éloigner l'algorithme des points de selle. La deuxième idée consiste à maintenir une moyenne mobile des dérivées partielles et des dérivées partielles au carré. En estimant le deuxième moment (variance) des dérivées partielles, nous pouvons normaliser les pas effectués dans chaque dimension, en réduisant les zigzags et les dépassements.

La règle de mise à jour d'Adam remplace le terme de dérivée partielle dans la mise à jour du poids par la moyenne mobile de la dérivée partielle (v) divisée par la racine carrée de la moyenne mobile de la ou des dérivées partielles au carré, ainsi qu'une petite constante (epsilon) pour éviter la division par zéro. Cette règle de mise à jour garantit des étapes plus équilibrées à travers les dimensions et s'est avérée plus efficace que la vanille SGD pour la formation des réseaux de neurones.

L'optimiseur Adam répond aux limites de SGD en incorporant la dynamique et en maintenant les moyennes mobiles des dérivées partielles. Ces modifications améliorent la capacité de l'optimiseur à naviguer dans les minima locaux, les plateaux et les points de selle tout en réduisant le comportement en zigzag et le dépassement. En conséquence, Adam est devenu un choix populaire pour la formation pratique des réseaux de neurones.

The Adam Optimizer (DL 21)
The Adam Optimizer (DL 21)
  • 2020.11.05
  • www.youtube.com
Davidson CSC 381: Deep Learning, F'20, F'22
 

Auto-encodeurs (DL 22)



Auto-encodeurs (DL 22)

Dans de nombreux scénarios d'apprentissage en profondeur, nous rencontrons souvent l'idée de former un réseau de neurones sur un ensemble de données et d'utiliser une couche cachée de ce réseau pour coder des données pouvant être appliquées à d'autres problèmes ou ensembles de données. Ce concept est connu sous le nom d'apprentissage par transfert. Par exemple, avec les réseaux résiduels, la pré-formation implique l'apprentissage de techniques de traitement d'image utiles qui peuvent être appliquées ultérieurement à différents ensembles de données. En supprimant les couches de sortie du modèle pré-formé et en ajoutant de nouvelles couches de sortie pour une nouvelle tâche, nous créons essentiellement un nouveau réseau qui traite les données codées produites par le modèle pré-formé.

Les incorporations de mots servent également à l'encodage des données, où le but est d'apprendre une représentation qui capture des informations significatives dans les couches cachées. Cette idée s'étend également à divers autres contextes. Un modèle notable qui embrasse ce concept est l'auto-encodeur. Un auto-encodeur est formé sur des données non supervisées, où les données d'entrée et les données de sortie sont les mêmes. Bien qu'il puisse sembler trivial de résoudre ce problème de régression à l'aide de la régression linéaire, l'objectif principal d'un auto-encodeur est d'apprendre une représentation plus compacte dans ses couches cachées.

En réduisant progressivement la taille des couches cachées, l'auto-encodeur force le réseau à apprendre des représentations compressées des données d'entrée. Si le réseau peut reproduire de manière cohérente l'entrée d'origine à partir de cette représentation compressée, il apprend efficacement la compression des données. Par exemple, si nous avons une image de 200x200 pixels en entrée et que nous la réduisons à une couche cachée de 1000 neurones, qui peut ensuite se développer pour reproduire une approximation proche de l'image d'origine, nous obtenons un taux de compression de 20:1.

Cependant, l'utilisation d'un réseau neuronal uniquement pour la compression des données n'est pas particulièrement utile car il existe des algorithmes de compression non basés sur l'apprentissage plus efficaces. Au lieu de cela, la valeur d'un auto-encodeur réside dans l'utilisation soit de la première moitié du réseau pour générer une représentation pour l'apprentissage par transfert dans d'autres tâches d'apprentissage en profondeur, soit de la seconde moitié comme décodeur pour générer des exemples de données à partir de l'ensemble d'entrée.

L'application initiale d'un auto-encodeur pour l'apprentissage par transfert était importante au début de l'apprentissage en profondeur. Cependant, de meilleures approches d'apprentissage par transfert ont été développées depuis. D'autre part, l'utilisation de la partie décodeur du réseau pour générer des échantillons de données est devenue la base de nombreux autres algorithmes d'apprentissage en profondeur.

L'approche la plus simple consiste à obtenir la compression maximale possible en minimisant la taille de la couche cachée. Dans ce scénario, tout vecteur d'entrée raisonnable donné au décodeur devrait générer des données ressemblant à la distribution des données d'entrée. Cependant, déterminer la taille optimale de la couche cachée est difficile. Il peut être soit trop petit, ce qui le rend incapable de reproduire les entrées avec précision, soit trop grand, entraînant la génération de données irréalistes qui ne ressemblent pas à l'ensemble de données d'origine.

Pour résoudre ce problème, nous pouvons modifier l'architecture pour encourager l'auto-encodeur à apprendre des représentations qui ressemblent à des vecteurs échantillonnés de manière aléatoire. Cette modification nous amène à l'auto-encodeur variationnel. Dans un auto-encodeur variationnel, le vecteur caché du milieu est remplacé par deux vecteurs représentant la moyenne et la variance. Le processus d'apprentissage consiste à générer un vecteur aléatoire à l'aide d'une distribution normale, qui est ensuite combiné avec les vecteurs de codage cachés pour créer l'entrée pour le décodeur. De plus, la perte pour le réseau de codeurs comprend un terme de divergence qui encourage la moyenne et la variance à rester proches d'une distribution normale. Cela permet de regrouper les représentations autour du centre de l'espace, ce qui le rend plus fiable pour l'échantillonnage aléatoire. Ainsi, l'auto-encodeur variationnel nous permet de générer des échantillons qui ressemblent étroitement à la distribution de données apprise par le réseau.

En résumé, le concept d'utilisation de la couche cachée d'un réseau neuronal comme codage de données a évolué vers la capacité d'échantillonner à partir d'une distribution de probabilité apprise. Cela ouvre les portes à des réseaux antagonistes génératifs et à la génération de données diverses et intéressantes.

Auto-Encoders (DL 22)
Auto-Encoders (DL 22)
  • 2022.11.12
  • www.youtube.com
Davidson CSC 381: Deep Learning, Fall 2022
 

Réseaux antagonistes génératifs (DL 23)



Réseaux antagonistes génératifs (DL 23)

Dans la dernière conférence, nous avons couvert les auto-encodeurs variationnels, qui sont un type d'approche de modélisation générative. L'objectif principal de l'auto-encodeur est d'apprendre les variables latentes qui peuvent être utilisées pour l'échantillonnage à partir de la distribution générative. Une autre façon de penser à la génération d'échantillons à partir d'une distribution consiste à utiliserdes générateurs de nombres aléatoires informatiques.

Lors de l'utilisation d'une bibliothèque aléatoire dans la programmation, des échantillons de distributions aléatoires sont générés sur la base d'une séquence de bits aléatoires ou pseudo-aléatoires. Le générateur de nombres aléatoires effectue des calculs pour transformer cette séquence de bits en échantillons d'une distribution différente. De nombreuses distributions sont construites au-dessus des distributions uniformes dans ces générateurs.

Cette approche alternative à la modélisation générative implique la formation d'un réseau de neurones générateurs. Le générateur prend un bruit aléatoire en entrée et le transforme en un échantillon aléatoire à partir d'une distribution de données. Par exemple, si l'ensemble de données se compose d'images de chiots, l'objectif est d'entraîner le réseau de neurones à générer des images aléatoires de chiots compte tenu de tout bruit d'entrée.

Pour entraîner le réseau générateur, un réseau neuronal supplémentaire appelé discriminateur est utilisé. Le discriminateur prend des entrées à partir de données d'apprentissage réelles ou de la sortie du réseau de générateurs et détermine si l'entrée est réelle ou fausse. Le réseau générateur vise à produire des échantillons pouvant tromper le discriminateur, tandis que le discriminateur vise à distinguer les vraies données des fausses données. Cela crée une relation conflictuelle entre les deux réseaux.

Le processus de formation implique d'abord de former le discriminateur, lui permettant d'apprendre la distribution de données réelles. Ensuite, le générateur est formé pour produire des sorties qui ressemblent à des données réelles et peuvent tromper le discriminateur. L'entraînement alterne entre le discriminateur et le générateur pour améliorer leurs performances.

La fonction de perte pour le réseau du générateur peut être l'opposé de la perte du discriminateur ou une fonction de perte complètement différente. Les gradients peuvent être propagés à travers le discriminateur dans le réseau du générateur pour mettre à jour ses poids en fonction de la fonction de perte. Cela permet au générateur d'apprendre à améliorer sa fonction objective.

Différentes fonctions de perte peuvent être utilisées pour les réseaux générateur et discriminateur, en particulier lorsque l'objectif est de générer des échantillons pour des catégories spécifiques dans la distribution des données. Le générateur peut être conditionné sur des informations supplémentaires telles que des étiquettes pour produire des échantillons qui trompent le discriminateur en produisant des catégories spécifiques.

Lors de la formation des réseaux antagonistes, il existe des modes de défaillance potentiels à prendre en compte. Un mode de défaillance est que le réseau de générateurs produit simplement des échantillons à partir de la distribution réelle des données, ce qui ne minimiserait pas sa fonction objective. Le surajustement est une autre préoccupation, car le générateur pourrait mémoriser les données réelles au lieu de générer divers échantillons.

Pour éviter le surajustement, il est important de limiter l'exposition du générateur aux données réelles et de s'assurer qu'il n'a pas trop d'occasions de les mémoriser. L'ensemble de données réel n'est pas directement entré dans le réseau du générateur. Le générateur apprend indirectement des données réelles lorsqu'il influence les poids dans le réseau discriminateur, ce qui affecte ensuite la perte renvoyée au générateur.

En cas de succès, un réseau de générateurs formés peut générer des échantillons qui ressemblent aux données réelles mais vont au-delà. Cela peut être utile pour l'augmentation des données dans la formation d'autres réseaux de neurones et à des fins artistiques. Des exemples de réseaux contradictoires génératifs utilisés pour l'augmentation de l'art et des données ont été discutés dans la conférence.

De plus, les réseaux de générateurs formés peuvent être utiles dans diverses applications au-delà de l'augmentation des données et de l'art. L'une de ces applications consiste à générer des données synthétiques pour améliorer la formation des réseaux de neurones pour résoudre d'autres problèmes importants.

En tirant parti du réseau de générateurs, nous pouvons générer des échantillons de données spécifiquement adaptés pour améliorer la formation des réseaux de neurones. Par exemple, si nous avons un problème de classification où les classes sont déséquilibrées, nous pouvons utiliser le générateur pour générer des échantillons supplémentaires pour la classe sous-représentée. Cela peut aider à équilibrer l'ensemble de données et à améliorer la capacité du modèle à apprendre la classe minoritaire.

De plus, les réseaux antagonistes génératifs ont le potentiel de générer des échantillons qui explorent l'espace entre différentes catégories ou combinaisons de caractéristiques. Par exemple, si nous fournissons au générateur une combinaison de caractéristiques comme 0,5 chien et 0,5 chat, il peut produire un échantillon qui combine les caractéristiques des chiens et des chats. Cette capacité à interpoler entre différentes catégories ou fonctionnalités ouvre des possibilités de sorties créatives et novatrices.

Les réseaux antagonistes génératifs ont trouvé des applications dans divers domaines. Dans le domaine de la vision par ordinateur, ils ont été utilisés pour générer des images réalistes, améliorer la qualité des images et même créer des contrefaçons profondes. Dans le traitement du langage naturel, ils ont été utilisés pour générer du texte réaliste, traduire entre les langues et même créer des chatbots.

Il est important de noter que la formation de réseaux antagonistes génératifs peut être une tâche difficile. Cela nécessite un réglage minutieux des hyperparamètres, la sélection des fonctions de perte appropriées et la gestion du compromis entre les réseaux générateur et discriminateur. De plus, assurer la stabilité de la formation et éviter l'effondrement du mode, où le générateur ne produit qu'un ensemble limité d'échantillons, sont des considérations importantes.

Malgré ces défis, les réseaux antagonistes génératifs ont démontré des capacités impressionnantes pour générer des échantillons réalistes et diversifiés. Les recherches en cours continuent de faire progresser le domaine, explorant de nouvelles architectures, fonctions de perte et techniques de formation pour améliorer encore les performances et la fiabilité de ces réseaux.

En conclusion, les réseaux antagonistes génératifs offrent un cadre puissant pour la modélisation générative. En formant un réseau générateur et discriminateur de manière contradictoire, nous pouvons apprendre à générer des échantillons qui ressemblent à la distribution réelle des données. Cela ouvre des possibilités intéressantes dans l'augmentation des données, les applications créatives et l'amélioration de la formation pour diverses tâches d'apprentissage automatique.

Generative Adversarial Networks (DL 23)
Generative Adversarial Networks (DL 23)
  • 2020.11.15
  • www.youtube.com
Davidson CSC 381: Deep Learning, F'20, F'22
 

AlphaGo et AlphaGo zéro (DL 24)



AlphaGo et AlphaGo zéro (DL 24)

AlphaGo et AlphaGo Zero sont deux agents de jeu développés par la filiale de Google DeepMind. Ces systèmes combinent des réseaux de neurones convolutifs profonds avec un apprentissage par renforcement de l'auto-jeu pour réaliser des avancées significatives dans les algorithmes de jeu. En 2016, AlphaGo est devenu le premier go AI à vaincre un champion du monde humain. Dans cette vidéo, nous allons explorer comment DeepMind a créé ces systèmes et discuter des principaux résultats des articles de recherche publiés sur AlphaGo et AlphaGo Zero.

Go est un jeu à deux joueurs avec des règles simples : les joueurs placent à tour de rôle des pierres noires et blanches sur une intersection vide du plateau. Les pierres ou groupes de pierres entourés par les pièces de l'adversaire sont capturés et retirés du plateau. Le jeu se termine lorsque les deux joueurs passent, et le score est déterminé par le nombre de pierres et d'intersections vides entourées.

Développer un algorithme d'IA pour le go nécessite de planifier plusieurs mouvements à l'avance. Les moteurs d'échecs comme Deep Blue y sont parvenus en considérant toutes les séquences de mouvements possibles et en évaluant les positions d'échiquier résultantes. Cependant, évaluer la qualité d'une position sur le plateau de go est plus difficile en raison de la complexité du jeu et du facteur de ramification plus élevé. Restreindre l'espace de recherche aux mouvements prometteurs et déterminer la qualité de la position du conseil d'administration étaient des problèmes importants qu'AlphaGo a résolus à l'aide de l'apprentissage en profondeur.

AlphaGo a résolu ces problèmes en formant des réseaux de neurones profonds pour estimer la valeur et la politique des États du conseil. Le réseau de valeur prédit la probabilité de gagner à partir d'un état donné, tandis que le réseau de politique estime la qualité du déplacement. Ces modèles guident l'algorithme de planification en limitant l'attention aux mouvements prometteurs et en fournissant des estimations de qualité.

L'architecture d'AlphaGo et d'AlphaGo Zero diffère. L'AlphaGo d'origine utilisait des réseaux de politique et de valeur distincts, tandis qu'AlphaGo Zero utilisait un réseau unique avec des têtes distinctes pour les sorties de politique et de valeur. Les deux architectures intègrent des blocs résiduels pour extraire des informations importantes sur l'état de la carte. Les données d'entraînement pour AlphaGo comprenaient des jeux joués par des amateurs de haut niveau, tandis qu'AlphaGo Zero utilisait uniquement des données provenant de l'auto-jeu.

La formation du réseau de valeur est relativement simple, en utilisant des représentations d'état du tableau et des étiquettes de gain/perte. La formation du réseau de politiques est plus complexe, car elle nécessite de prédire la qualité des déplacements. AlphaGo Zero a amélioré cela en formant le réseau de politiques sur les estimations de qualité de déplacement générées par l'algorithme de recherche lors des déploiements. Au fil du temps, le réseau politique apprend à estimer la qualité des déménagements plusieurs étapes dans le futur.

AlphaGo et AlphaGo Zero utilisent Monte Carlo Tree Search (MCTS) comme algorithme de planification. MCTS effectue des déploiements pour recueillir des informations sur les valeurs de séquence de déplacement et l'incertitude. L'algorithme de recherche utilise les réseaux de politique et de valeur pour évaluer les états de la carte et estimer la qualité des mouvements. Grâce à l'apprentissage par renforcement de l'auto-jeu, les deux systèmes améliorent les estimations de la qualité de leurs réseaux et deviennent des joueurs de go plus forts.

Dans l'ensemble, le développement d'AlphaGo et d'AlphaGo Zero représente une étape importante dans l'IA go-playing. Ces systèmes combinent l'apprentissage en profondeur avec l'apprentissage par renforcement et les algorithmes de planification pour obtenir des performances remarquables et un jeu stratégique dans le jeu de go.

AlphaGo & AlphaGo Zero (DL 24)
AlphaGo & AlphaGo Zero (DL 24)
  • 2022.11.20
  • www.youtube.com
Davidson CSC 381: Deep Learning, Fall 2022
 

Graphiques de calcul (DL 25)



Graphiques de calcul (DL 25)

Cette conférence se concentre sur les graphes de calcul, qui sont des représentations visuelles du flux de données et de la séquence de calculs dans un programme. Bien que les graphes informatiques soient couramment utilisés pour comprendre la propagation avant et arrière dans les réseaux de neurones, ils peuvent être appliqués à n'importe quel programme. En rendant explicites les opérations implicites dans un réseau de neurones, les graphes de calcul fournissent une compréhension plus claire des calculs impliqués.

Dans un graphe de calcul, chaque nœud représente un calcul, tel que la multiplication des poids par les activations, la somme des entrées pondérées, le calcul des fonctions d'activation ou le calcul de la perte. Les connexions entre les nœuds représentent les dépendances entre les variables du programme. En sachant comment prendre la dérivée de n'importe quel nœud du graphe, nous pouvons représenter à la fois les étapes de propagation avant et arrière dans un réseau de neurones.

Pour calculer les dérivées partielles nécessaires à la descente de gradient dans un réseau de neurones, nous propageons les dérivées vers l'arrière à travers le réseau en utilisant la règle de la chaîne. A chaque étape, on multiplie la dérivée de l'opération courante par la dérivée du nœud précédent. Lorsqu'un nœud a plusieurs sorties, nous additionnons les dérivées provenant de chaque sortie.

Le graphe de calcul nous permet de calculer les sorties d'un réseau de neurones et de calculer les dérivées partielles de la perte par rapport à chaque poids. En travaillant en arrière sur un tri topologique du graphe et en propageant les dérivées, nous pouvons déterminer les dérivées partielles pour n'importe quel paramètre du réseau.

La conférence fournit également des exemples de graphiques de calcul, illustrant comment les valeurs intermédiaires et les dérivées sont calculées. En décomposant les fonctions en calculs plus petits et en attribuant des noms aux valeurs intermédiaires, nous pouvons calculer à la fois les sorties des fonctions et leurs dérivées partielles à l'aide du graphe de calcul.

De plus, les graphes informatiques peuvent gérer non seulement des variables scalaires, mais également des variables représentant des vecteurs, des matrices ou des tenseurs. En utilisant des variables qui correspondent à des objets de plus grande dimension, tels que des vecteurs d'activation et des matrices de poids, nous pouvons appliquer des graphes de calcul à des réseaux de neurones densément connectés et à d'autres calculs complexes.

Pour étendre le graphe de calcul pour un réseau de neurones densément connecté, nous pouvons introduire des variables qui correspondent à des vecteurs d'activations ou à des matrices de poids. Appelons le vecteur d'activations à cette couche entière du réseau "a1", désigné par un symbole de chapeau de vecteur (^). De même, on peut représenter les poids sous la forme d'une matrice W1.

Dans ce graphe étendu, l'entrée de chaque nœud de la couche est le produit scalaire du vecteur d'activations (a1) et de la matrice de pondérations correspondante (W1). Nous pouvons représenter cette opération comme une multiplication matricielle : a1 * W1.

De plus, nous pouvons introduire un vecteur de biais (b1) associé à chaque nœud de la couche. Le terme de biais est ajouté élément par élément au produit scalaire des activations et des poids avant d'appliquer une fonction d'activation.

Ensuite, nous appliquons une fonction d'activation (telle qu'un sigmoïde ou ReLU) élément par élément au vecteur résultant. Désignons ce vecteur par "a2" (avec un symbole de chapeau), représentant les activations de la couche suivante.

Nous pouvons répéter ce processus pour les couches suivantes du réseau de neurones, en connectant les nœuds avec des arêtes et en propageant les activations et les poids à travers le graphe.

Pour calculer la passe avant dans ce graphique de calcul étendu, nous commencerions par les valeurs d'entrée (telles que les intensités de pixels pour une image) et les propager vers l'avant à travers le graphique, en appliquant des multiplications matricielles, des additions par élément et des fonctions d'activation à chaque nœud. jusqu'à ce que nous obtenions le résultat final.

En ce qui concerne la rétropropagation, l'objectif est de calculer les dérivées partielles de la fonction de perte par rapport à chaque poids du réseau. En étendant le graphe de calcul, nous pouvons suivre le flux des gradients vers l'arrière à travers le réseau, ce qui nous permet de calculer efficacement ces dérivées partielles à l'aide de la règle de la chaîne.

Lors de la rétropropagation, nous commençons par la dérivée de la fonction de perte par rapport à la sortie finale et utilisons la règle de la chaîne pour la propager vers l'arrière dans le graphe. A chaque nœud, nous multiplions la dérivée entrante par la dérivée de l'opération correspondante (fonction d'activation, multiplication matricielle, etc.) par rapport à ses entrées.

En suivant ce processus, nous pouvons calculer les gradients pour chaque poids du réseau, ce qui nous permet de mettre à jour les poids à l'aide d'algorithmes d'optimisation comme la descente de gradient et ses variantes.

En résumé, l'extension du graphe de calcul pour représenter un réseau de neurones densément connecté nous permet de visualiser et de calculer les étapes de propagation vers l'avant et vers l'arrière. Il permet un calcul efficace des gradients et facilite l'optimisation du réseau grâce à des mises à jour de poids.

Computation Graphs (DL 25)
Computation Graphs (DL 25)
  • 2020.09.29
  • www.youtube.com
Davidson CSC 381: Deep Learning, F'20, F'22
 

Différenciation automatique (DL 26)



Différenciation automatique (DL 26)

La différenciation automatique en mode inverse (AD) est une technique utilisée pour calculer les gradients de fonctions. Dans Julia, la bibliothèque Zygote fournit des fonctionnalités de différenciation automatique. Lorsque vous travaillez sur des projets d'apprentissage automatique à grande échelle dans Julia, la bibliothèque d'apprentissage en profondeur Flux, construite au-dessus de Zygote, est couramment utilisée.

Zygote propose une fonction "gradient" qui prend une autre fonction et des arguments d'entrée, et il calcule automatiquement le gradient à ces points. Par exemple, étant donné une fonction et l'entrée (1, 2, -1), Zygote peut calculer le gradient comme (22, 4, -12). Cette fonctionnalité est pratique mais similaire à ce que vous auriez pu implémenter dans Project Zero.

La puissance de la différenciation automatique réside dans sa capacité à calculer des gradients pour des fonctions plus complexes. Par exemple, considérons une fonction pour calculer le nième élément de la suite de Fibonacci. En utilisant la fonction de gradient de Zygote, nous pouvons calculer le gradient de cette fonction de Fibonacci. Aux entrées (0, 1, 12), la dérivée partielle par rapport à "a" est de 89, et par rapport à "b" est de 144. Cependant, il n'y a pas de dérivée partielle par rapport à "n" car ce n'est pas un continu variable dans cette fonction.

Pour comprendre comment Zygote calcule le gradient pour de telles fonctions, nous pouvons nous pencher sur la différenciation automatique en mode inverse. En mode inverse AD, un graphe de calcul est construit au fur et à mesure que la fonction est exécutée, et les dérivées partielles sont rétropropagées à travers le graphe. Pour ce faire, les valeurs numériques des variables sont remplacées par des objets qui stockent à la fois la valeur et des informations supplémentaires pour le calcul de la dérivée.

Deux types d'informations peuvent être stockées dans ces objets : (1) la valeur de la variable et ses dérivées partielles par rapport à chaque entrée (mode direct AD), ou (2) la valeur de la variable et les variables précédentes dans le calcul et la fonction utilisée pour calculer sa valeur (mode inverse AD). Pour l'apprentissage en profondeur, le mode inverse AD est plus utile car il s'adapte mieux au nombre de sorties (généralement une) plutôt qu'aux entrées (par exemple, les paramètres de pondération dans un réseau de neurones).

En créant ces objets auto-diff en mode inverse et en construisant un graphe de calcul pendant l'évaluation de la fonction, nous pouvons effectuer une rétropropagation plus tard. Les variables intermédiaires stockent les résultats des calculs et les arêtes parentes dans les objets indiquent les dépendances entre les nœuds du graphe. Le graphe de calcul, y compris les nœuds de fonction et les dépendances, est construit implicitement. En appliquant la règle de la chaîne à chaque nœud, les dérivées peuvent être propagées vers l'arrière à travers le graphe.

Cette collection d'objets de comparaison automatique en mode inversé, avec leurs valeurs, leurs parents et leurs fonctions, est généralement stockée dans une bande de dégradé. Avec cette approche, même les fonctions avec des calculs intermédiaires plus complexes peuvent être différenciées, tant que les dérivées des composants sont connues. Les valeurs de ces variables peuvent être des scalaires, des vecteurs, des matrices ou des tenseurs, permettant la différenciation des fonctions avec différents types de données.

En résumé, la différenciation automatique en mode inverse, prise en charge par des bibliothèques telles que Zygote dans Julia, nous permet de calculer efficacement les gradients des fonctions. En construisant un graphe de calcul et en y propageant des dérivées, nous pouvons automatiser le processus de calcul des gradients, le rendant ainsi adapté à l'apprentissage en profondeur et à d'autres applications complexes.

Automatic Differentiation (DL 26)
Automatic Differentiation (DL 26)
  • 2020.10.29
  • www.youtube.com
Davidson CSC 381: Deep Learning, F'20, F'22
 

Coursera Neural Networks for Machine Learning — Geoffrey Hinton - Conférence 1.1 — Pourquoi avons-nous besoin de l'apprentissage automatique



Conférence 1.1 — Pourquoi avons-nous besoin de l'apprentissage automatique [Réseaux de neurones pour l'apprentissage automatique]

Bienvenue dans le cours Coursera sur les réseaux de neurones pour l'apprentissage automatique ! Dans ce cours, nous explorerons le domaine fascinant des réseaux de neurones et leurs applications en apprentissage automatique. Avant de plonger dans les subtilités des algorithmes d'apprentissage des réseaux de neurones, prenons un moment pour discuter de l'importance de l'apprentissage automatique, de ses utilisations et fournissons quelques exemples pour illustrer ses capacités.

L'apprentissage automatique est nécessaire pour résoudre des problèmes complexes difficiles à résoudre avec les approches de programmation traditionnelles. Par exemple, reconnaître un objet en trois dimensions à partir de différents points de vue, dans des conditions d'éclairage variables et dans des scènes encombrées est une tâche difficile. La complexité réside dans le fait que nous ne comprenons pas entièrement comment notre cerveau effectue une telle reconnaissance, ce qui rend difficile l'écriture de programmes explicites pour résoudre ces problèmes. Même si nous découvrions le programme sous-jacent, il pourrait être extrêmement compliqué à mettre en œuvre efficacement.

Un autre exemple est la détection de transactions frauduleuses par carte de crédit. Les systèmes traditionnels basés sur des règles ont du mal à saisir les subtilités des modèles de fraude, car ils nécessitent de combiner de nombreuses règles peu fiables qui changent constamment au fil du temps. L'apprentissage automatique offre une approche alternative en exploitant un grand nombre d'exemples qui spécifient les sorties correctes pour des entrées données. Un algorithme d'apprentissage traite ces exemples pour produire un programme qui s'attaque efficacement à la tâche. Le programme résultant peut sembler différent des programmes traditionnels fabriqués à la main, contenant potentiellement des millions de nombres pondérés. Cependant, s'il est correctement mis en œuvre, il peut bien se généraliser à de nouveaux cas et s'adapter à l'évolution des données en se recyclant sur des informations mises à jour.

L'apprentissage automatique excelle dans la reconnaissance de modèles, tels que des objets dans des scènes réelles, des expressions faciales ou des mots prononcés. Il est également puissant pour identifier les anomalies, telles que des séquences inhabituelles de transactions par carte de crédit ou des lectures anormales de capteurs dans une centrale nucléaire. De plus, l'apprentissage automatique est précieux dans les tâches de prédiction, comme la prévision des cours des actions ou la prédiction des préférences des utilisateurs en fonction de leurs choix passés et du comportement des autres.

Tout au long de ce cours, nous utiliserons la base de données MNIST de chiffres manuscrits comme exemple standard pour expliquer de nombreux algorithmes d'apprentissage automatique. Cette base de données est largement utilisée et permet une comparaison efficace des différentes méthodes. En utilisant de telles tâches, nous pouvons mieux saisir les concepts et principes sous-jacents de l'apprentissage automatique.

Ces exemples ne font qu'effleurer la surface des capacités remarquables de l'apprentissage automatique et des réseaux de neurones. Grâce aux avancées technologiques et aux ressources de calcul facilement disponibles, des modèles complexes d'apprentissage automatique peuvent être formés et déployés efficacement. Ces modèles ont le potentiel de s'attaquer à des tâches de plus en plus complexes, repoussant les limites de ce que nous pouvons réaliser avec l'apprentissage automatique.

Dans ce cours, nous plongerons dans les subtilités des réseaux de neurones, en discutant de leurs architectures, des algorithmes de formation et des techniques de mise en œuvre pratiques. À la fin du cours, vous aurez une base solide dans les réseaux de neurones et serez équipé pour les appliquer à un large éventail de problèmes.

Rejoignez-nous dans ce voyage passionnant dans le monde des réseaux de neurones pour l'apprentissage automatique. Préparez-vous à approfondir vos connaissances, à améliorer vos compétences et à libérer le potentiel de cette technologie transformatrice !

Lecture 1.1 — Why do we need machine learning [Neural Networks for Machine Learning]
Lecture 1.1 — Why do we need machine learning [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
For more cool AI stuff, follow me at https://twitter.com/iamvriad.Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton ...