Apprentissage Automatique et Réseaux Neuronaux - page 56

 

Cours 7.2 — Entraînement des RNN avec rétropropagation



Cours 7.2 — Entraînement des RNN avec rétropropagation [Réseaux de neurones pour l'apprentissage automatique]

Dans cette vidéo, je vais discuter de l'algorithme de rétropropagation dans le temps, qui est une méthode courante pour former des réseaux de neurones récurrents. L'algorithme est simple une fois que vous avez compris la relation entre un réseau de neurones récurrent et un réseau de neurones à anticipation avec plusieurs couches représentant différentes étapes de temps. Je couvrirai également diverses approches pour fournir des entrées et des sorties souhaitées aux réseaux de neurones récurrents.

Le diagramme illustre un réseau récurrent simple avec trois neurones interconnectés. Chaque connexion a un délai de un et le réseau fonctionne en temps discret avec des ticks entiers. Pour former un réseau récurrent, nous devons reconnaître qu'il s'agit essentiellement d'une version étendue d'un réseau à anticipation dans le temps. Le réseau récurrent commence dans un état initial au temps zéro et utilise ses poids de connexion pour générer un nouvel état au temps un. Il répète ce processus, en utilisant les mêmes poids pour produire de nouveaux états ultérieurs.

La rétropropagation est efficace pour apprendre lorsque des contraintes de poids sont présentes. Cela a également été observé dans les réseaux convolutifs. Pour incorporer des contraintes de poids, nous calculons les gradients comme d'habitude, en ignorant les contraintes, puis modifions les gradients pour maintenir les contraintes. Par exemple, si nous voulons que w1 soit égal à w2, nous nous assurons que la variation de w1 est égale à la variation de w2 en prenant les dérivées par rapport à w1 et w2, en les additionnant ou en les faisant la moyenne, et en appliquant la même quantité pour mettre à jour les deux poids. Tant que les poids satisfont initialement aux contraintes, ils continueront à le faire.

L'algorithme de rétropropagation dans le temps est simplement un terme utilisé pour décrire le processus de traitement d'un réseau récurrent comme un réseau d'alimentation en aval avec des poids partagés et sa formation à l'aide de la rétropropagation. Dans le domaine temporel, la passe avant accumule les activités à chaque tranche de temps, tandis que la passe arrière extrait les activités de la pile et calcule les dérivées d'erreur pour chaque pas de temps. Ce passage en arrière à chaque pas de temps donne son nom à l'algorithme : la rétropropagation dans le temps.

Après la passe arrière, nous additionnons ou faisons la moyenne des dérivées de tous les pas de temps pour chaque poids. Nous mettons ensuite à jour toutes les instances de ce poids du même montant, proportionnel à la somme ou à la moyenne des dérivées. Une considération supplémentaire se pose si nous ne spécifions pas l'état initial de toutes les unités, telles que les unités masquées ou de sortie. Dans ce cas, nous devons les démarrer dans un état particulier. Une approche consiste à définir des valeurs par défaut, comme 0,5, mais cela peut ne pas donner des résultats optimaux. Alternativement, nous pouvons apprendre les états initiaux en les traitant comme des paramètres et en les ajustant en fonction du gradient de la fonction d'erreur par rapport à l'état initial.

Il existe différentes méthodes pour fournir une entrée à un réseau neuronal récurrent. Nous pouvons spécifier l'état initial de toutes les unités, un sous-ensemble d'unités ou les états à chaque pas de temps pour un sous-ensemble d'unités. Ce dernier est souvent utilisé lorsqu'il s'agit de données séquentielles. De même, il existe différentes manières de spécifier les cibles d'un réseau récurrent. Nous pouvons spécifier les états finaux souhaités pour toutes les unités ou pour plusieurs pas de temps si nous voulons l'entraîner à s'installer sur un attracteur particulier. En incluant les dérivés de chaque pas de temps lors de la rétropropagation, nous pouvons facilement intégrer ces spécifications et encourager l'apprentissage des attracteurs.

L'algorithme de rétropropagation dans le temps est une extension directe de la rétropropagation pour la formation de réseaux de neurones récurrents. En traitant le réseau récurrent comme un réseau feed-forward étendu avec des poids partagés, nous pouvons appliquer la rétropropagation et ajuster les états et poids initiaux pour optimiser la formation. Diverses méthodes existent pour fournir des entrées et des sorties souhaitées aux réseaux récurrents, permettant une flexibilité dans le traitement des données séquentielles et la formation pour des objectifs spécifiques.

Lecture 7.2 — Training RNNs with back propagation [Neural Networks for Machine Learning]
Lecture 7.2 — Training RNNs with back propagation [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
 

Cours 7.3 — Un exemple jouet de formation d'un RNN



Cours 7.3 — Un exemple jouet de formation d'un RNN [Neural Networks for Machine Learning]

Dans cette vidéo, je vais vous expliquer comment un réseau neuronal récurrent (RNN) résout un problème de jouet. Un problème jouet est choisi pour mettre en valeur les capacités des RNN qui ne sont pas facilement réalisables avec les réseaux de neurones à anticipation. Le problème démontré ici est l'addition binaire. Une fois que le RNN a appris à résoudre le problème, nous pouvons examiner ses états cachés et les comparer aux états cachés d'un automate à états finis qui résout le même problème.

Pour illustrer le problème de l'addition de deux nombres binaires, nous pourrions former un réseau de neurones à anticipation. Cependant, il y a des limites à cette approche. Nous devons déterminer à l'avance le nombre maximum de chiffres pour les numéros d'entrée et le numéro de sortie. De plus, le traitement appliqué aux différents bits des nombres d'entrée n'est pas généralisable. Par conséquent, la connaissance de l'addition des deux derniers chiffres et de la gestion des retenues réside dans des poids spécifiques. Lorsqu'il s'agit de différentes parties d'un nombre binaire long, les connaissances doivent être codées dans des poids différents, ce qui entraîne un manque de généralisation automatique.

L'algorithme d'addition binaire est représenté dans l'image. Les états de l'algorithme ressemblent à ceux d'un modèle de Markov caché, sauf qu'ils ne sont pas vraiment cachés. Le système fonctionne dans un état à la fois, exécutant une action lors de l'entrée dans un état (impression 1 ou 0). Lorsqu'il est dans un état, il reçoit une entrée, qui consiste en deux nombres de la colonne suivante, provoquant une transition vers un nouvel état. Par exemple, s'il est dans l'état de report et vient d'imprimer un 1, lorsqu'il rencontre un 1 1, il reste dans le même état et imprime un autre 1. Cependant, s'il rencontre un 1 0 ou 0 1, il passe au report mais imprime un 0. De même, un 0 0 le conduit à l'état sans report, où il imprime un 1. Ce processus se poursuit à chaque pas de temps.

Un réseau neuronal récurrent pour l'addition binaire nécessite deux unités d'entrée et une unité de sortie. Il reçoit deux chiffres d'entrée à chaque pas de temps et produit une sortie correspondant à la colonne rencontrée il y a deux pas de temps. Pour tenir compte du délai, le réseau a besoin d'un délai de deux pas de temps, où la première étape met à jour les unités cachées en fonction des entrées, et la deuxième étape génère la sortie à partir de l'état caché. L'architecture du réseau se compose de trois unités cachées interconnectées, bien que davantage d'unités cachées puissent être utilisées pour un apprentissage plus rapide. Ces unités cachées ont des connexions bidirectionnelles avec des poids variables. Les connexions entre les unités cachées permettent au modèle d'activité à un pas de temps d'influencer le modèle d'activité caché au pas de temps suivant. Les unités d'entrée ont des connexions directes aux unités cachées, permettant au réseau d'observer les deux chiffres dans une colonne. De même, les unités cachées ont des connexions d'anticipation à l'unité de sortie, permettant la production d'une sortie.

Il est fascinant d'analyser ce que le réseau de neurones récurrent apprend. Il apprend quatre modèles d'activité distincts dans ses trois unités cachées, qui correspondent aux nœuds de l'automate à états finis pour l'addition binaire. Il est crucial de ne pas confondre les unités d'un réseau de neurones avec les nœuds d'un automate à états finis. Les nœuds de l'automate s'alignent sur les vecteurs d'activité du réseau neuronal récurrent. L'automate est limité à un état à chaque instant, tout comme les unités cachées dans le RNN, qui ont précisément un vecteur d'activité à chaque pas de temps. Alors qu'un RNN peut émuler un automate à états finis, sa représentation est exponentiellement plus puissante. Avec N neurones cachés, il peut avoir deux à la puissance N vecteurs d'activité binaires possibles. Bien qu'il n'ait que N poids au carré, il peut ne pas exploiter pleinement tout le pouvoir de représentation. Si le goulot d'étranglement réside dans la représentation, un RNN peut surpasser un automate à états finis.

Ceci est particulièrement important lorsque le flux d'entrée contient deux processus distincts se produisant simultanément. Un automate à états finis doit augmenter de manière exponentielle son nombre d'états pour gérer les processus parallèles. En revanche, un réseau neuronal récurrent n'a besoin que de doubler le nombre d'unités cachées, doublant ainsi le nombre d'unités et quadruplant le nombre d'états vectoriels binaires qu'il peut représenter.

Lecture 7.3 — A toy example of training an RNN [Neural Networks for Machine Learning]
Lecture 7.3 — A toy example of training an RNN [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
 

Cours 7.4 — Pourquoi est-il difficile de former un RNN ?



Cours 7.4 — Pourquoi est-il difficile de former un RNN ? [Réseaux de neurones pour l'apprentissage automatique]

Dans cette vidéo, je discuterai du problème des gradients qui explosent et disparaissent, ce qui rend difficile la formation de réseaux de neurones récurrents (RNN). Pendant de nombreuses années, les chercheurs ont cru qu'il était presque impossible de modéliser les dépendances à long terme avec les RNN. Cependant, il existe maintenant quatre approches efficaces pour résoudre ce problème.

Pour comprendre pourquoi la formation des RNN est difficile, nous devons reconnaître une différence cruciale entre les passes avant et arrière dans un RNN. Dans la passe avant, des fonctions d'écrasement comme la fonction logistique sont utilisées pour empêcher les vecteurs d'activité d'exploser. Chaque neurone du RNN utilise une unité logistique, qui limite la sortie entre 0 et 1. Cela empêche les niveaux d'activité de croître de manière incontrôlable.

En revanche, la passe arrière est complètement linéaire. Étonnamment, si nous doublons les dérivées d'erreur au niveau de la couche finale, toutes les dérivées d'erreur doubleront également lors de la rétropropagation. Les gradients sont déterminés par les pentes des courbes logistiques à des points spécifiques (marqués par des points rouges dans la vidéo). Une fois la passe avant terminée, les pentes de ces tangentes sont fixées. Lors de la rétropropagation, les gradients se propagent à travers un système linéaire où la pente de la non-linéarité a été fixée. Cependant, les systèmes linéaires ont tendance à souffrir du problème des gradients qui explosent ou meurent lors de leur itération. Si les poids sont petits, les gradients diminuent de façon exponentielle et deviennent négligeables. Inversement, si les poids sont grands, les gradients explosent et dominent le processus d'apprentissage. Ces problèmes sont plus graves dans les RNN que dans les réseaux de neurones à anticipation, en particulier lorsqu'il s'agit de longues séquences.

Même avec une initialisation minutieuse du poids, il reste difficile de capturer les dépendances entre la sortie actuelle et les événements qui se sont produits il y a de nombreuses étapes de temps. Les RNN ont du mal à gérer les dépendances à longue portée. La vidéo fournit un exemple de la façon dont les gradients peuvent disparaître ou exploser lors de la formation d'un réseau de neurones récurrent pour apprendre les états des attracteurs. De petites différences dans les états initiaux n'entraînent aucun changement dans l'état final (gradients qui disparaissent), tandis que de légères variations près des frontières entraînent une divergence significative (gradients qui explosent).

Pour relever ces défis, il existe quatre méthodes efficaces de formation des RNN. La première méthode est la mémoire longue à court terme (LSTM), qui modifie l'architecture du réseau pour améliorer les capacités de mémoire. La deuxième approche consiste à utiliser des optimiseurs avancés capables de gérer efficacement les petits gradients. L'optimisation sans Hessian, adaptée aux réseaux de neurones, excelle dans la détection de petits gradients à faible courbure. La troisième méthode implique une initialisation soigneuse des poids et la création d'un réservoir d'oscillateurs faiblement couplés dans l'état caché. Cela permet au réseau de se répercuter et de mémoriser les séquences d'entrée. Les connexions entre les unités cachées et les sorties sont alors formées, tandis que les connexions récurrentes restent fixes. La quatrième méthode utilise la quantité de mouvement et la combine avec la technique d'initialisation utilisée dans les réseaux à état d'écho. Cette modification améliore la dynamique du réseau, le rendant encore plus efficace.

La capacité de former des RNN s'est améliorée avec ces approches, surmontant les défis posés par l'explosion et la disparition des gradients.

Lecture 7.4 — Why it is difficult to train an RNN? [Neural Networks for Machine Learning]
Lecture 7.4 — Why it is difficult to train an RNN? [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
 

Cours 7.5 — Mémoire à court terme à long terme



Conférence 7.5 — Mémoire à court terme à long terme [Réseaux de neurones pour l'apprentissage automatique]

Dans cette vidéo, je vais vous expliquer l'approche dite "Long Short-Term Memory" (LSTM) pour entraîner des réseaux de neurones récurrents. LSTM vise à créer une mémoire à court terme durable dans un réseau de neurones en utilisant des modules spécialisés qui facilitent la synchronisation des informations.

La cellule mémoire de LSTM est conçue pour conserver les informations pendant une période prolongée. Il se compose d'unités logistiques et linéaires avec des interactions multiplicatives. Lorsqu'une porte "écriture" logistique est activée, des informations entrent dans la cellule mémoire depuis le reste du réseau récurrent. L'état de la porte "écriture" est déterminé par le réseau récurrent. L'information reste dans la cellule mémoire tant que la porte "conserver" est activée, qui est contrôlée par le reste du système. Pour lire les informations de la cellule mémoire, une porte de "lecture" logistique est activée, et la valeur stockée est récupérée et influence les états futurs du réseau neuronal récurrent.

LSTM utilise des unités logistiques car elles ont des propriétés différentiables, permettant une rétropropagation à travers elles. Cela permet au réseau d'apprendre et d'optimiser la cellule mémoire sur plusieurs pas de temps. La rétropropagation à travers la cellule mémoire implique la mise à jour des pondérations en fonction des dérivées d'erreur, qui peuvent être propagées à travers des centaines de pas de temps.

LSTM a été particulièrement efficace dans des tâches telles que la reconnaissance de l'écriture manuscrite. Il peut stocker et récupérer efficacement des informations, même en présence d'une écriture manuscrite cursive. Il a montré des performances supérieures par rapport à d'autres systèmes dans les tâches de lecture et d'écriture, et Postes Canada a commencé à utiliser des systèmes basés sur LSTM à ces fins.

Dans la vidéo, une démonstration d'un système de reconnaissance d'écriture manuscrite basé sur LSTM est présentée. Le système prend les coordonnées du stylo en entrée et produit des caractères reconnus en sortie. La rangée supérieure affiche les caractères reconnus, la deuxième rangée montre les états des cellules de mémoire sélectionnées, la troisième rangée visualise l'écriture réelle avec les coordonnées du stylo et la quatrième rangée illustre le gradient rétropropagé aux emplacements XY, indiquant l'impact des événements passés sur décisions de reconnaissance de caractères.

LSTM s'est avéré être une approche puissante pour former des réseaux de neurones récurrents, permettant la capture et l'utilisation de dépendances à long terme dans des données séquentielles.

Lecture 7.5 — Long term Short term memory [Neural Networks for Machine Learning]
Lecture 7.5 — Long term Short term memory [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
For cool updates on AI research, follow me at https://twitter.com/iamvriad.Lecture from the course Neural Networks for Machine Learning, as taught by Geoffre...
 

Cours 8.1 — Un bref aperçu de l'optimisation sans Hessian



Conférence 8.1 — Un bref aperçu de l'optimisation sans Hessian [Réseaux de neurones pour l'apprentissage automatique]

L'optimiseur sans hessian est un algorithme complexe utilisé pour entraîner efficacement les réseaux de neurones récurrents. Bien que je n'entre pas dans tous les détails, je vais fournir une compréhension générale de son fonctionnement.

Lors de la formation de réseaux de neurones, l'objectif est de minimiser l'erreur. L'optimiseur détermine la direction et la distance à parcourir pour obtenir la plus grande réduction d'erreur. La réduction dépend du rapport gradient/courbure, en supposant une surface d'erreur quadratique concave vers le haut. La méthode de Newton résout la limitation de la descente la plus raide en transformant les surfaces d'erreur elliptiques en surfaces circulaires. Pour ce faire, il multiplie le gradient par l'inverse de la matrice de courbure, également connue sous le nom de Hessian. Cependant, l'inversion de la matrice hessienne est irréalisable pour les grands réseaux de neurones en raison de sa taille. Pour surmonter cela, des méthodes approximatives telles que Hessian-free et L-BFGS utilisent des matrices de rang inférieur pour approximer la courbure. Hessian-free se rapproche de la matrice de courbure et utilise un gradient conjugué, une méthode qui minimise l'erreur dans une direction à la fois. Il évite de perturber la minimisation précédente en choisissant des directions conjuguées qui ne modifient pas les gradients des directions précédentes.

Le gradient conjugué trouve efficacement le minimum global d'une surface quadratique à n dimensions en n étapes ou moins. Il y parvient en réduisant l'erreur près de la valeur minimale en beaucoup moins d'étapes que n. Il peut être appliqué directement aux surfaces d'erreur non quadratiques, telles que celles des réseaux de neurones multicouches, et fonctionne bien avec de grands mini-lots. L'optimiseur sans Hessian combine l'approximation quadratique et le gradient conjugué pour améliorer de manière itérative l'approximation de la vraie surface d'erreur et se rapprocher du minimum.

L'optimiseur sans Hessian effectue d'abord une approximation quadratique initiale de la surface d'erreur réelle. Il applique ensuite un gradient conjugué pour minimiser l'erreur sur cette approximation quadratique. Ce faisant, il se rapproche d'un point minimum sur cette approximation. Ensuite, l'optimiseur fait une nouvelle approximation de la matrice de courbure et répète le processus. Il continue de manière itérative, affinant l'approximation et minimisant l'erreur en utilisant le gradient conjugué. Ce processus itératif aide l'optimiseur à approcher progressivement le vrai minimum de la surface d'erreur.

Dans les réseaux de neurones récurrents, il est important d'ajouter une pénalité pour les changements importants dans les activités cachées. Cela empêche les effets excessifs causés par les changements de poids précoces qui se propagent tout au long de la séquence. En pénalisant les changements dans les activités cachées, l'optimiseur assure la stabilité et empêche les résultats indésirables.

L'optimiseur sans Hessian combine l'approximation quadratique, la minimisation du gradient conjugué et la pénalité pour les changements d'activité cachés pour entraîner efficacement les réseaux de neurones récurrents. Il réalise une optimisation efficace et précise en améliorant de manière itérative l'approximation et en minimisant l'erreur.

Lecture 8.1 — A brief overview of Hessian-free optimization [Neural Networks for Machine Learning]
Lecture 8.1 — A brief overview of Hessian-free optimization [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
 

Cours 8.2 — Modélisation des chaînes de caractères


Cours 8.2 — Modélisation des chaînes de caractères [Réseaux de neurones pour l'apprentissage automatique]

Nous allons maintenant appliquer l'optimisation sans Hessian à la tâche de modélisation des chaînes de caractères de Wikipedia. En règle générale, lors de la modélisation du langage, on travaille avec des chaînes de mots. Cependant, étant donné que le Web est composé de chaînes de caractères, la modélisation des informations au niveau des caractères peut fournir une approche plus simple.

La modélisation des chaînes de caractères présente des défis uniques, tels que la gestion des morphèmes, la décomposition des mots en unités significatives et la gestion des langues avec des propriétés agglutinantes. En nous concentrant sur la modélisation au niveau du caractère, nous évitons les complexités associées au prétraitement du texte en mots et pouvons capturer directement des modèles et des informations au niveau du caractère. Pour ce faire, nous utilisons un réseau de neurones récurrent (RNN) avec des connexions multiplicatives. Le RNN se compose d'états cachés, avec 1500 unités cachées dans ce cas. La dynamique de l'état caché implique de considérer le caractère courant et l'état caché précédent pour calculer le nouvel état caché. Par la suite, le RNN tente de prédire le caractère suivant à l'aide d'une couche softmax, en attribuant des probabilités à chaque caractère possible.

Plutôt que d'utiliser une structure RNN traditionnelle, nous employons une approche différente qui donne de meilleurs résultats. Nous organisons toutes les chaînes de caractères possibles dans une structure arborescente, chaque caractère influençant la transition d'état caché. Pour représenter cet arbre, nous utilisons des vecteurs d'état cachés pour capturer les informations pour chaque nœud. Cela nous permet de partager efficacement des informations entre des nœuds similaires, améliorant ainsi les performances globales du modèle. Pour implémenter efficacement les transitions spécifiques aux caractères, nous introduisons des connexions multiplicatives à l'aide de facteurs. Chaque facteur calcule une somme pondérée basée sur deux groupes d'entrée et utilise le résultat pour mettre à l'échelle les poids sortants. En incorporant des facteurs spécifiques au personnage, nous pouvons déterminer la matrice de transition qui pilote l'évolution de l'état caché en fonction du personnage actuel.

Cette approche nous permet de capturer la complexité de la modélisation du langage au niveau des caractères tout en utilisant efficacement les paramètres. Plutôt que de maintenir des matrices de pondération distinctes pour chaque personnage, nous tirons parti des similitudes entre les personnages pour partager des paramètres. Ce partage de paramètres permet d'éviter le surajustement et réduit la charge de calcul.

Nous utilisons une optimisation sans Hesse pour modéliser les chaînes de caractères de Wikipedia. En utilisant des connexions multiplicatives et des facteurs spécifiques au personnage, nous pouvons capturer efficacement les transitions entre les états cachés en fonction du personnage actuel, améliorant ainsi les performances de modélisation.

Lecture 8.2 — Modeling character strings [Neural Networks for Machine Learning]
Lecture 8.2 — Modeling character strings [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
 

Cours 8.3 — Prédire le caractère suivant à l'aide de HF [Neural Networks for Machine Learning]


Cours 8.3 — Prédire le caractère suivant à l'aide de HF [Neural Networks for Machine Learning]

Dans cette vidéo, nous allons explorer les effets de l'utilisation de l'optimiseur sans hessian pour optimiser un réseau neuronal récurrent avec des connexions multiplicatives. L'objectif du réseau est de prédire le caractère suivant dans le texte de Wikipédia. Après s'être entraîné sur des millions de caractères, le réseau démontre des performances remarquables. Il acquiert une compréhension approfondie de la langue anglaise et devient apte à générer des complétions de phrases cohérentes et intéressantes.

L'expérimentateur, Skeever, a utilisé cinq millions de chaînes, chacune composée d'une centaine de caractères, extraite de Wikipedia anglais. À partir du 11e caractère de chaque chaîne, le réseau récurrent commence à prédire, en passant par divers états cachés. Le processus de formation implique la rétropropagation des erreurs de prédiction à l'aide de l'optimiseur sans Hessian. L'obtention d'un excellent modèle a nécessité environ un mois de calcul sur un GPU à haute vitesse.

Actuellement, le meilleur réseau neuronal récurrent de Skeever pour la prédiction de caractères est le modèle unique le plus remarquable pour cette tâche. Bien que la combinaison de plusieurs modèles avec un réseau de neurones puisse donner de meilleurs résultats, son modèle unique représente l'incarnation de la performance. Notamment, son modèle diffère considérablement des autres modèles les plus performants. Plus précisément, son modèle peut gérer efficacement l'utilisation équilibrée des guillemets et des parenthèses sur de longues distances, un exploit impossible avec les modèles de correspondance de contexte. Faire correspondre des contextes précédents spécifiques pour fermer une parenthèse, par exemple, nécessiterait de stocker et de rappeler tous les caractères intermédiaires, ce qui est hautement improbable. En revanche, le modèle de Skeever présente la capacité d'équilibrer avec succès les parenthèses et les citations.

Pour évaluer les connaissances acquises par le modèle, des chaînes sont générées pour observer ses prédictions. Il faut veiller à ne pas surinterpréter les résultats du modèle. Le processus de génération implique de commencer par l'état caché par défaut, suivi d'une séquence de rodage. Chaque personnage met à jour l'état caché, menant à la phase de prédiction. La distribution de probabilité du modèle pour le caractère suivant est examinée et un caractère est sélectionné au hasard sur la base de cette distribution. Le caractère choisi est ensuite renvoyé dans le modèle en tant qu'occurrence réelle, et le processus se poursuit jusqu'à ce que le nombre de caractères souhaité soit généré. Ces chaînes générées éclairent les connaissances acquises par le modèle.

Un exemple de chaîne produite par le réseau de Skeever montre ses performances impressionnantes. Bien que cet extrait ait été sélectionné à partir d'un passage de texte plus étendu, il démontre efficacement la capacité du modèle. Notamment, la chaîne générée présente des associations sémantiques particulières, telles que "opus Paul à Rome". Bien qu'une telle formulation puisse ne pas être utilisée par des individus, elle révèle l'interdépendance de « opus », « Paul » et « Rome ». Cependant, la chaîne manque d'une structure thématique cohérente à long terme, changeant fréquemment de sujet après chaque point.

Fait intéressant, le modèle génère très peu de non-mots. Lorsqu'on lui donne suffisamment de caractères pour compléter un mot anglais d'une manière unique, il prédit presque parfaitement le caractère suivant. Dans les cas où des non-mots apparaissent, comme le mot "éphémère" surligné en rouge, ils sont remarquablement plausibles. Les performances du modèle s'étendent aux supports d'équilibrage, bien qu'il ne maintienne pas systématiquement un équilibre parfait entre les supports. Il présente également un comportement cohérent en ce qui concerne l'ouverture et la fermeture des devis.

L'analyse des connaissances du modèle révèle plusieurs aspects clés. Premièrement, il possède une solide compréhension des mots, générant principalement des mots anglais et parfois des chaînes d'initiales en majuscules. Il peut gérer les nombres, les dates et leur utilisation contextuelle. En outre, il démontre une capacité à équilibrer avec précision les guillemets et les parenthèses, même en comptant les parenthèses dans une certaine mesure. Sa connaissance syntaxique est évidente à travers la production de chaînes sensibles de mots anglais. Cependant, déchiffrer la forme précise de ces connaissances syntaxiques s'avère difficile. Il n'est pas conforme aux modèles de trigrammes simples qui reposent sur des séquences de mots mémorisées. Au lieu de cela, le modèle synthétise des chaînes de mots avec une syntaxe cohérente, ressemblant à la connaissance syntaxique implicite d'un locuteur natif plutôt qu'à un ensemble de règles linguistiques.

Le modèle présente également des associations basées sur une sémantique faible. Par exemple, le modèle démontre une compréhension des associations entre des mots comme « Platon » et « Vicarstown ». Ces associations ne sont ni précises ni bien définies mais reflètent un niveau de connaissance sémantique acquis par la lecture de Wikipédia. Notamment, le modèle montre une bonne compréhension des associations entre « chou » et « légume ».

Pour évaluer davantage les connaissances du modèle, des chaînes spécifiques sont conçues comme des tests. Par exemple, un non-mot comme "runthourunge" est présenté au modèle. Les anglophones, basés sur la forme du mot, s'attendraient à ce que ce soit un verbe. En examinant le caractère suivant le plus probable prédit par le modèle, tel qu'un "S" dans ce cas, il devient évident que le modèle reconnaît la forme verbale en fonction du contexte. De même, lorsqu'il est fourni avec une liste de noms séparés par des virgules et un "T" majuscule ressemblant à un nom, le modèle complète avec succès la chaîne en tant que nom. Cela suggère une large compréhension des noms dans différentes langues.

Le modèle est également soumis à l'invite "le sens de la vie est", et ses complétions générées sont examinées. Étonnamment, dans ses premières tentatives, le modèle produit l'achèvement « reconnaissance littéraire », qui est à la fois syntaxiquement et sémantiquement sensible. Bien que cela puisse être considéré comme le modèle commençant à saisir le concept du sens de la vie, il est crucial de faire preuve de prudence et d'éviter toute surinterprétation.

En conclusion, l'exposition étendue du modèle au texte de Wikipédia lui confère des connaissances sur les mots, les noms propres, les nombres, les dates et les structures syntaxiques. Il excelle à équilibrer les guillemets et les crochets, en utilisant des associations sémantiques dans une certaine mesure. Sa compréhension de la syntaxe ressemble à celle d'un locuteur courant, ce qui rend difficile de déterminer la forme exacte de cette connaissance. Les réseaux de neurones récurrents (RNN) comme le modèle de Skeever surpassent les autres méthodes dans les tâches de modélisation du langage, nécessitant moins de données de formation et présentant une amélioration plus rapide à mesure que les ensembles de données augmentent. En conséquence, il devient de plus en plus difficile pour les approches alternatives de rattraper les RNN, en particulier à mesure que la puissance de calcul et la taille des ensembles de données continuent d'augmenter.

Lecture 8.3 — Predicting the next character using HF [Neural Networks for Machine Learning]
Lecture 8.3 — Predicting the next character using HF [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
 

Conférence 8.4 — Réseaux d'état d'écho



Conférence 8.4 — Réseaux d'états d'écho [Réseaux de neurones pour l'apprentissage automatique]

Les réseaux d'état d'écho sont une approche intelligente pour simplifier le processus d'apprentissage dans les réseaux de neurones récurrents (RNN). Ils initialisent les connexions dans le RNN avec un réservoir d'oscillateurs couplés, convertissant l'entrée en états d'oscillateur. La sortie peut alors être prédite sur la base de ces états, et le seul apprentissage requis est de savoir comment coupler la sortie aux oscillateurs. Cela élimine le besoin d'apprendre les connexions masquées à masquées ou les connexions d'entrée à masquées.

Pour améliorer les performances des réseaux d'état Echo sur des tâches complexes, un grand état caché est nécessaire. La combinaison de l'initialisation soigneusement conçue des réseaux d'état Echo avec la rétropropagation dans le temps avec un élan peut encore améliorer leurs capacités. Une autre idée récente dans la formation de réseaux de neurones récurrents consiste à fixer aléatoirement les connexions cachées à cachées et à se concentrer sur la formation des connexions de sortie. Cette approche est similaire au concept de détecteurs de caractéristiques aléatoires dans les réseaux de neurones à réaction, où seule la dernière couche est apprise, ce qui simplifie le processus d'apprentissage.

Le succès des réseaux d'état Echo repose sur la configuration correcte des connexions aléatoires pour éviter des problèmes tels que la disparition ou l'explosion. Le rayon spectral, qui correspond à la plus grande valeur propre de la matrice des poids cachés à cachés, doit être défini sur environ un pour garantir que la longueur du vecteur d'activité reste stable. Une connectivité clairsemée est également importante, où la plupart des pondérations sont nulles, ce qui permet de conserver les informations dans des parties spécifiques du réseau. L'échelle des connexions entrée-caché doit être choisie avec soin pour piloter les états des oscillateurs sans effacer les informations importantes. Le processus d'apprentissage dans les réseaux à état Echo est rapide, ce qui permet d'expérimenter les échelles et la rareté des connexions pour optimiser les performances. Un exemple de réseau d'état d'écho est illustré, où la séquence d'entrée spécifie la fréquence d'une onde sinusoïdale pour la sortie. Le réseau apprend à générer des ondes sinusoïdales en ajustant un modèle linéaire utilisant les états des unités cachées pour prédire la sortie correcte. Le réservoir dynamique au milieu capture la dynamique complexe entraînée par le signal d'entrée.

Les réseaux d'états d'écho présentent plusieurs avantages, notamment une formation rapide en raison de la simplicité d'ajustement d'un modèle linéaire, de l'importance d'une initialisation sensible des poids cachés à cachés et de leur capacité à modéliser efficacement des séries chronologiques unidimensionnelles. Cependant, ils peuvent avoir du mal à modéliser des données de grande dimension et nécessitent un plus grand nombre d'unités cachées par rapport aux RNN traditionnels.

Ilya Sutskever a exploré l'initialisation d'un réseau de neurones récurrent avec des techniques de réseau d'état Echo, puis l'a formé en utilisant la rétropropagation dans le temps. Cette combinaison s'est avérée être une méthode efficace pour former des réseaux de neurones récurrents, obtenant de meilleures performances. L'approche d'Ilya Sutskever consistant à combiner les techniques d'initialisation des réseaux d'état Echo avec la rétropropagation dans le temps (BPTT) a donné des résultats prometteurs dans la formation des réseaux de neurones récurrents (RNN). En utilisant l'initialisation du réseau d'état Echo, puis en appliquant BPTT avec des techniques telles que RMSprop et momentum, Sutskever a découvert que cette approche est très efficace pour la formation des RNN.

L'utilisation de l'initialisation du réseau d'état Echo fournit un bon point de départ pour le RNN, lui permettant de bien apprendre même en formant uniquement les connexions cachées à la sortie. Cependant, l'expérimentation de Sutskever a montré qu'il était possible d'améliorer encore les performances du RNN en apprenant également les poids cachés à cachés. En combinant les atouts des réseaux d'état Echo et des RNN traditionnels, cette approche hybride tire parti des avantages des deux méthodes. L'initialisation du réseau d'état d'écho fournit une base solide, tandis que BPTT permet d'affiner et d'optimiser les performances du RNN. Le succès de cette approche démontre l'importance d'une bonne initialisation dans la formation des RNN.

En commençant par une initialisation qui capture la dynamique du domaine du problème, la formation ultérieure peut être plus efficace et efficiente. De plus, l'utilisation de techniques d'optimisation comme RMSprop avec momentum améliore encore le processus d'apprentissage et aide à obtenir de meilleurs résultats.

La combinaison de l'initialisation du réseau d'état d'écho et du BPTT avec des techniques d'optimisation présente une approche puissante pour la formation des RNN. Il exploite les points forts des deux méthodes pour améliorer l'efficacité de l'apprentissage, les performances du modèle et la précision des prédictions.

Lecture 8.4 — Echo State Networks [Neural Networks for Machine Learning]
Lecture 8.4 — Echo State Networks [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
 

Cours 9.1 — Aperçu des moyens d'améliorer la généralisation



Cours 9.1 — Aperçu des moyens d'améliorer la généralisation [Réseaux de neurones pour l'apprentissage automatique]

Dans cette vidéo, le sujet abordé est l'amélioration de la généralisation en réduisant le surajustement dans les réseaux de neurones. Le surajustement se produit lorsqu'un réseau a trop de capacité par rapport à la quantité de données d'apprentissage. La vidéo explique diverses méthodes pour contrôler la capacité d'un réseau et déterminer les méta-paramètres appropriés pour le contrôle de la capacité.

Le surajustement survient parce que les données d'apprentissage contiennent non seulement des informations sur les vrais modèles dans le mappage d'entrée-sortie, mais incluent également des erreurs d'échantillonnage et des régularités accidentelles spécifiques à l'ensemble d'apprentissage. Lors de l'ajustement d'un modèle, il ne peut pas faire la distinction entre ces types de régularités, ce qui conduit à une mauvaise généralisation si le modèle est trop flexible et s'adapte à l'erreur d'échantillonnage.

Une méthode simple pour éviter le surajustement consiste à obtenir plus de données. L'augmentation de la quantité de données atténue le surajustement en fournissant une meilleure représentation des véritables régularités. Une autre approche consiste à limiter judicieusement la capacité du modèle, lui permettant de capturer les vraies régularités tout en évitant d'ajuster les fausses régularités causées par l'erreur d'échantillonnage. Cela peut être difficile, mais la vidéo traite de diverses techniques pour réguler efficacement la capacité.

La vidéo mentionne également l'utilisation de méthodes d'ensemble, telles que la moyenne de différents modèles. En formant des modèles sur différents sous-ensembles de données ou en trouvant différents ensembles de pondérations qui fonctionnent bien, la moyenne de leurs prédictions peut améliorer les performances globales par rapport aux modèles individuels. De plus, l'approche bayésienne implique l'utilisation d'une architecture de réseau neuronal unique, mais la recherche de plusieurs ensembles de poids qui prédisent bien la sortie, puis la moyenne de leurs prédictions sur les données de test.

La capacité d'un modèle peut être contrôlée par différents moyens, tels que l'ajustement de l'architecture (par exemple, la limitation du nombre de couches cachées et d'unités par couche), la pénalisation des poids, l'ajout de bruit aux poids ou aux activités, ou l'utilisation d'une combinaison de ces méthodes.

Lors de la définition des méta-paramètres pour le contrôle de la capacité, il est nécessaire d'éviter de biaiser les résultats vers un ensemble de tests spécifique. La vidéo propose une meilleure approche : diviser les données en sous-ensembles de formation, de validation et de test. Les données de validation sont utilisées pour déterminer les méta-paramètres appropriés en fonction des performances du modèle, tandis que les données de test fournissent une estimation impartiale de l'efficacité du réseau. Il est crucial de n'utiliser les données de test qu'une seule fois pour éviter de les sur-ajuster.

La vidéo mentionne également la validation croisée n fois, une technique où les données sont divisées en n sous-ensembles, et les modèles sont formés et validés sur différentes combinaisons de ces sous-ensembles pour obtenir plusieurs estimations des meilleurs méta-paramètres.

Enfin, la vidéo décrit une méthode facile à utiliser appelée arrêt précoce. Cela implique de commencer avec de petits poids et d'arrêter le processus d'apprentissage lorsque les performances du modèle sur l'ensemble de validation commencent à se détériorer. Cette approche contrôle la capacité car les modèles avec de petits poids ont une capacité limitée, se comportant de la même manière que les réseaux linéaires. L'arrêt de l'entraînement au bon moment optimise le compromis entre l'ajustement de vraies régularités et l'ajustement de fausses régularités causées par l'ensemble d'entraînement.

Dans l'ensemble, la vidéo met en évidence diverses approches pour contrôler la capacité et prévenir le surajustement dans les réseaux de neurones. Ces méthodes impliquent l'obtention de plus de données, une régulation judicieuse de la capacité, l'utilisation de méthodes d'ensemble, la définition de méta-paramètres appropriés par la validation et l'utilisation de techniques telles que l'arrêt précoce.

Lecture 9.1 — Overview of ways to improve generalization [Neural Networks for Machine Learning]
Lecture 9.1 — Overview of ways to improve generalization [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
 

Cours 9.2 — Limiter la taille des poids



Cours 9.2 — Limiter la taille des poids [Neural Networks for Machine Learning]

Dans cette vidéo, je vais discuter de la façon dont nous pouvons contrôler la capacité d'un réseau en limitant la taille de ses poids. L'approche courante consiste à appliquer une pénalité qui empêche les pondérations de devenir trop importantes. On suppose qu'un réseau avec des poids plus petits est plus simple qu'un réseau avec des poids plus grands.

Différents termes de pénalité peuvent être utilisés, et il est également possible d'imposer des contraintes sur les poids, garantissant que le vecteur de poids entrant pour chaque unité cachée ne dépasse pas une certaine longueur. La méthode standard pour limiter la taille du poids consiste à utiliser une pénalité de poids L2. Cette pénalité pénalise la valeur au carré des poids et est parfois appelée perte de poids. La dérivée de cette pénalité agit comme une force tirant les poids vers zéro. Par conséquent, la pénalité de poids maintient les poids petits à moins qu'ils n'aient des dérivées d'erreur significatives pour la contrebalancer.

Le terme de pénalité est représenté comme la somme des carrés des poids multipliée par un coefficient (lambda), divisée par deux. En différenciant la fonction de coût, nous constatons que la dérivée est la somme de la dérivée d'erreur et d'un terme lié à l'amplitude du poids et à la valeur de lambda. La dérivée devient nulle lorsque l'amplitude du poids est égale à 1 sur lambda fois l'amplitude de la dérivée. Ainsi, des poids importants ne peuvent exister que s'ils ont également des dérivées d'erreur substantielles. Cette propriété facilite l'interprétation des poids, car il y a moins de grands poids qui ont un impact minimal.

La pénalité de poids L2 empêche le réseau d'utiliser des poids inutiles, ce qui améliore la généralisation. De plus, cela conduit à des modèles plus lisses où la sortie change plus progressivement avec les variations de l'entrée. Pour des entrées similaires, la pénalité de poids distribue le poids uniformément, alors que sans la pénalité, tout le poids peut être attribué à une seule entrée.

Outre la pénalité L2, d'autres pénalités de poids peuvent être utilisées, comme la pénalité L1, qui pénalise les valeurs absolues des poids. Ce type de pénalité conduit de nombreux poids à être exactement nuls, ce qui facilite l'interprétation. Des pénalités de poids plus extrêmes peuvent être appliquées lorsque le gradient de la fonction de coût diminue à mesure que le poids augmente. Cela permet au réseau de maintenir des pondérations importantes sans qu'elles soient tirées vers zéro, en concentrant plutôt la pénalité sur les petites pondérations.

Au lieu de pénalités, des contraintes de poids peuvent être utilisées. Avec des contraintes de poids, une longueur maximale au carré est imposée au vecteur de poids entrant pour chaque unité cachée ou unité de sortie. Si la longueur dépasse la contrainte, les poids sont réduits en divisant tous les poids par le même facteur jusqu'à ce que la longueur corresponde à la limite autorisée. Les contraintes de poids offrent des avantages par rapport aux pénalités de poids, car il est plus facile de sélectionner une valeur raisonnable pour la longueur au carré. De plus, les contraintes de poids empêchent les unités cachées de rester coincées avec des poids minuscules et inefficaces. Ils empêchent également l'explosion de poids.

De plus, les contraintes de poids ont un effet subtil sur les pénalités. Lorsqu'une unité atteint sa contrainte, la pénalité effective sur tous les poids est déterminée par les grands gradients. Les grands gradients poussent la longueur du vecteur de poids entrant vers le haut, exerçant une pression vers le bas sur les autres poids. Cette pénalité d'auto-scaling est plus efficace qu'une pénalité fixe qui pousse les poids non pertinents vers zéro. En termes de multiplicateurs de Lagrange, les pénalités peuvent être considérées comme les multiplicateurs nécessaires pour satisfaire les contraintes.

L'utilisation de contraintes de poids offre plusieurs avantages par rapport aux pénalités de poids. Il est plus facile de sélectionner une valeur appropriée pour la longueur au carré du vecteur de poids entrant par rapport à la détermination de la pénalité de poids optimale. Les unités logistiques ont une échelle naturelle, ce qui facilite la compréhension de la signification d'une valeur de poids de un.

Les contraintes de poids empêchent également les unités cachées de rester bloquées, tous leurs poids étant extrêmement petits et inefficaces. Lorsque tous les poids sont minuscules, il n'y a aucune contrainte sur leur croissance, ce qui les rend potentiellement inutiles. Les contraintes de poids garantissent que les poids ne deviennent pas négligeables.

Un autre avantage des contraintes de poids est qu'elles empêchent les poids d'exploser, ce qui peut se produire dans certains cas avec des pénalités de poids. Ceci est crucial pour maintenir la stabilité et prévenir les instabilités numériques dans le réseau.

Un autre effet subtil des contraintes de poids est leur impact sur les pénalités. Lorsqu'une unité atteint sa contrainte et que la longueur de son vecteur de poids est restreinte, la pénalité effective sur tous les poids est influencée par les grands gradients. Les grands gradients poussent la longueur du vecteur de poids entrant vers le haut, ce qui, à son tour, applique une pression vers le bas sur les autres poids. Essentiellement, la pénalité s'échelonne pour être appropriée aux poids significatifs et supprimer les petits poids. Ce mécanisme de pénalité adaptative est plus efficace qu'une pénalité fixe qui pousse les poids non pertinents vers zéro.

Pour ceux qui connaissent les multiplicateurs de Lagrange, les pénalités peuvent être considérées comme les multiplicateurs correspondants requis pour satisfaire les contraintes. Les contraintes de poids agissent comme un moyen d'appliquer les propriétés souhaitées des poids du réseau.

Le contrôle de la capacité d'un réseau en limitant la taille des pondérations peut être réalisé par des pénalités ou des contraintes. Les deux méthodes ont leurs avantages, mais les contraintes de poids offrent une plus grande facilité dans la sélection des valeurs appropriées, empêchent les poids de devenir négligeables ou d'exploser et fournissent un mécanisme de pénalité d'auto-échelonnement. Ces techniques contribuent à l'interprétabilité, à la stabilité et à l'efficacité des réseaux de neurones.

Lecture 9.2 — Limiting the size of the weights [Neural Networks for Machine Learning]
Lecture 9.2 — Limiting the size of the weights [Neural Networks for Machine Learning]
  • 2016.02.04
  • www.youtube.com
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...