Réseaux de neurones récurrents : types, formation, exemples et applications. H Réseaux de neurones récurrents

Réseaux graphiques inverses à convolution profonde(réseaux graphiques inverses à convolution profonde, DCIGN) légèrement incorrectement nommés, car ce sont essentiellement des auto-encodeurs variationnels, dont les parties d'encodage et de décodage sont représentées respectivement par les réseaux de neurones convolutionnels et dépliants. Ces types de réseaux modélisent les propriétés sous forme de probabilités, de sorte qu'ils peuvent être formés pour créer une image d'un chien et d'un chat, même si le réseau n'a vu que des images avec un seul des animaux. Il est également possible de supprimer l'un des deux objets. Des maillages ont également été créés pour modifier la source de lumière et faire pivoter l'objet. Les réseaux de ce type sont généralement entraînés à l'aide de la méthode de rétropropagation.

Réseaux antagonistes génératifs(réseaux antagonistes génératifs, GAN) sont des réseaux d'un genre différent, ils ressemblent à des jumeaux. Ces réseaux se composent de deux (généralement FF et CNN), dont l'un génère du contenu et l'autre évalue. Le réseau discriminateur reçoit des données d'apprentissage ou générées par un générateur. Le degré d'estimation par le discriminateur de la source de données est en outre impliqué dans la formation de l'erreur. Ainsi, une compétition s'installe entre le générateur et le discriminateur, où le premier apprend à tromper le premier, et le second apprend à découvrir la tromperie (similaire à la situation « banquier-contrefacteur »). Il est très difficile de former de tels réseaux, car il faut non seulement former chacun d'eux, mais aussi ajuster l'équilibre.

Réseaux de neurones récurrents(réseaux de neurones récurrents, RNN) sont des réseaux de type FFNN, mais avec une particularité : les neurones reçoivent des informations non seulement de la couche précédente, mais aussi d'eux-mêmes de la passe précédente. Cela signifie que l'ordre dans lequel vous alimentez les données et formez le réseau devient important. Une grande complication des RNN est le problème du gradient de fuite (ou d'explosion), qui est la perte rapide d'informations au fil du temps. Bien sûr, cela n'affecte que les poids, pas les états des neurones, mais c'est en eux que l'information s'accumule. Typiquement, les réseaux de ce type sont utilisés pour compléter automatiquement les informations.

Réseaux à longue mémoire à court terme(mémoire longue à court terme, LSTM) essayez de résoudre le problème de perte d'informations susmentionné en utilisant des filtres et une cellule de mémoire explicitement spécifiée. Chaque neurone possède une cellule mémoire et trois filtres : entrée, sortie et oubli. Le but de ces filtres est de protéger les informations. Le filtre d'entrée détermine la quantité d'informations de la couche précédente qui seront stockées dans la cellule. Le filtre de sortie détermine la quantité d'informations que les couches suivantes recevront. Eh bien, le filtre inconscient, aussi étrange que cela puisse paraître, fonctionne également fonction utile: par exemple, si le réseau étudie un livre et passe à un nouveau chapitre, certains personnages de l'ancien peuvent être oubliés. De tels réseaux peuvent apprendre à créer des structures complexes, comme écrire comme Shakespeare ou composer musique simple, mais ils consomment également beaucoup de ressources.

Neurones récurrents contrôlés(unités récurrentes fermées, GRU) est une légère variation du réseau précédent. Ils ont un filtre en moins et les connexions sont implémentées différemment. Le filtre de mise à jour détermine la quantité d'informations qui restera de l'état précédent et la quantité qui sera extraite de la couche précédente. Le filtre de réinitialisation fonctionne un peu comme un filtre d'oubli.

Machines de Turing neuronales(machines de Turing neurales, NTM) peut être considéré comme un modèle LSTM abstrait et une tentative de montrer ce qui se passe réellement à l'intérieur d'un réseau de neurones. La cellule mémoire n'est pas placée dans un neurone, mais placée à part afin de combiner l'efficacité d'une mémoire de données classique et la puissance d'un réseau de neurones. En fait, c'est pourquoi ces réseaux sont appelés machines de Turing - en raison de leur capacité à lire et à écrire des données et à changer d'état en fonction de ce qu'ils lisent, ils sont complets de Turing.

RNN, LSTM et GRU bidirectionnels(réseaux de neurones récurrents bidirectionnels, réseaux de mémoire à long / court terme bidirectionnels et unités récurrentes fermées bidirectionnelles, BiRNN, BiLSTM et BiGRU) ne figurent pas dans le tableau car ils ne sont pas différents de leurs variantes unidirectionnelles. La différence est que ces réseaux utilisent non seulement des données du "passé", mais aussi du "futur". Par exemple, un réseau de type LSTM régulier est formé pour deviner le mot "poisson" en fournissant des lettres une à la fois, et un réseau bidirectionnel est formé pour fournir également la lettre suivante de la séquence. De tels réseaux sont capables, par exemple, non seulement d'agrandir l'image sur les bords, mais également de combler les trous à l'intérieur.

Réseaux résiduels profonds(réseaux résiduels profonds, DRN) sont des réseaux très profonds comme les FFNN avec des connexions supplémentaires entre les couches séparées les unes des autres. De tels réseaux peuvent être formés sur des modèles aussi profonds que 150 couches - bien plus que ce à quoi on pourrait s'attendre. Cependant, il a été montré que ces réseaux ne sont pas très différents des réseaux récurrents, et ils sont souvent comparés à Réseaux LSTM.

Réseau d'écho neuronal(réseaux d'état d'écho, ESN) est un autre type de réseaux récurrents. Sa caractéristique est l'absence de couches formées, c'est-à-dire les connexions entre les neurones sont aléatoires. En conséquence, la méthode de rétropropagation ne fonctionne pas. Au lieu de cela, vous devez alimenter les données d'entrée, les transmettre via le réseau et mettre à jour les neurones en observant les données de sortie.

Méthode d'apprentissage extrême(machines d'apprentissage extrême, ELM) est, en fait, un réseau comme FFNN, mais avec des connexions aléatoires. Ils sont très similaires aux réseaux LSM et ESN, mais sont utilisés comme FFNN. Ce n'est pas seulement parce qu'ils ne sont pas récurrents, mais aussi parce qu'ils peuvent être entraînés simplement par rétropropagation.

Méthode des états instables(machines à état liquide, LSM) semblable au réseau d'écho, mais il y a une différence significative : l'activation sigmoïde est remplacée par une fonction de seuil, et chaque neurone est une cellule de mémoire accumulative. Ainsi, lorsqu'un neurone est mis à jour, sa valeur ne devient pas égale à la somme de ses voisins, mais s'ajoute à elle-même, et lorsque le seuil est atteint, elle est signalée aux autres neurones.

Soutenir la machine vectorielle(machines à vecteurs de support, SVM) trouve solutions optimales problèmes d'optimisation. La version classique est capable de catégoriser des données linéairement séparables : par exemple, pour distinguer les images avec Tom le chat et Garfield le chat. Pendant le processus d'apprentissage, le réseau, pour ainsi dire, place toutes les données sur un graphique 2D et essaie de séparer les données par une ligne droite afin qu'il n'y ait qu'une seule classe de données de chaque côté et que la distance des données à la ligne est maximale. En utilisant l'astuce du noyau, vous pouvez classer les données de dimension n. Fait révélateur, cette méthode n'est pas toujours considérée comme un réseau de neurones.

et enfin réseaux de neurones Kohonen(réseaux Kohonen, KN), aussi connu sous le nom cartes auto-organisées(cartes auto-organisées (fonctionnalités), SOM, SOFM), complétez notre liste. Ces réseaux utilisent l'apprentissage compétitif pour classer les données non supervisées. Le réseau reçoit des données d'entrée, après quoi le réseau détermine lequel des neurones leur correspond le plus. Après cela, ces neurones changent pour une plus grande précision de la correspondance, déplaçant leurs voisins avec eux dans le processus. Parfois, les cartes de Kohonen ne sont pas non plus considérées comme des réseaux de neurones.

C'est tout! Après avoir lu nos articles et les documents qui les accompagnent, vous comprendrez certainement les types de réseaux de neurones en toute confiance 🙂

Réseaux de neurones récurrents

Réseaux de neurones récurrents- c'est le type de réseau de neurones le plus complexe dans lequel il y a une rétroaction. Dans ce cas, la rétroaction signifie une connexion d'un élément logiquement plus éloigné à un élément moins éloigné. La présence de rétroaction permet de mémoriser et de reproduire des séquences entières de réactions à un stimulus. Du point de vue de la programmation, dans de tels réseaux, un analogue de l'exécution cyclique apparaît, et du point de vue des systèmes, un tel réseau équivaut à une machine à états finis. De telles caractéristiques offrent potentiellement de nombreuses opportunités pour modéliser les réseaux de neurones biologiques. Mais, malheureusement, la plupart des possibilités sont actuellement mal comprises en raison de la possibilité de construire une variété d'architectures et de la complexité de leur analyse.

Perceptrons de Rosenblatt avec rétroaction

Les premières idées sur les réseaux de neurones avec retour d'information décrit par F. Rosenblatt à la fin de son livre sur les perceptrons en 1962. F. Rosenblatt a donné une description qualitative de plusieurs types de perceptrons avec rétroaction. Le premier groupe de ces perceptrons a été conçu pour développer une attention sélective, et le second groupe a été conçu pour entraîner une séquence de réactions.

Réseaux à couche unique avec rétroaction

Après la publication du livre de Minsky critiquant les capacités du perceptron élémentaire en 1969, les travaux sur l'étude des réseaux de neurones artificiels ont pratiquement cessé. Seuls de petits groupes ont poursuivi les recherches dans cette direction. Un de ces groupes du Massachusetts Institute of Technology a commencé ses travaux en 1978. John Hopfield a été invité en tant que consultant du Département de Biophysique du Laboratoire Bel. Ses idées, comme celles de Rosenblatt, s'appuyaient sur les résultats de la recherche en neurophysiologie. Le principal mérite de Hopfield est l'interprétation énergétique du travail d'un réseau de neurones artificiels. Quant au réseau de neurones de Hopfield lui-même, il présente un certain nombre d'inconvénients en raison desquels il ne peut pas être utilisé en pratique. Par la suite, Kosko a développé les idées de Hopfield et développé un modèle de mémoire hétéroassociative, le réseau de neurones Kosko. Le principal inconvénient de ces réseaux est le manque de stabilité, et dans les cas où il est atteint, le réseau devient équivalent à un réseau neuronal monocouche, c'est pourquoi il n'est pas capable de résoudre des problèmes linéairement inséparables. En conséquence, la capacité de ces réseaux est extrêmement faible. Malgré ces lacunes pratiques dans le domaine de la reconnaissance, ce réseau a été utilisé avec succès dans des études sur le chaos énergétique, l'émergence d'attracteurs, et depuis lors, il est devenu possible de parler de réseaux de neurones artificiels comme de mémoire associative.

Réseaux récurrents à retard unitaire

voir également

Littérature

  • Rosenblatt, F. Principes de la neurodynamique : les perceptrons et la théorie des mécanismes cérébraux. - M. : Mir, 1965. - 480 p.
  • JJ Hopfield[Réimpression PNAS (Résumé) Réimpression PNAS (PDF) Réseaux de neurones et systèmes physiques dotés de capacités de calcul collectives émergentes.] // Actes de l'Académie nationale des sciences. - Avril 1982. - S. vol. 79 non. 8 p. 2554-2558.
  • Jordan, MI Ordre en série : une approche de traitement distribué parallèle. // Rapport 8604 de l'Institut des sciences cognitives. - Université de Californie, San Diego : 1986.
  • Elman, J.L. Trouver une structure dans le temps. // Sciences cognitives. - 1990. - S. 179-211.

Fondation Wikimédia. 2010 .

Voyez ce que sont les "réseaux de neurones récurrents" dans d'autres dictionnaires :

    "Réseau de neurones" redirige ici. Voir aussi d'autres significations. Schéma d'un réseau neuronal simple. Le vert indique les éléments d'entrée, l'élément de sortie jaune Les modèles mathématiques des réseaux de neurones artificiels (ANN), ainsi que leurs logiciels ou ... ... Wikipedia

    "Réseau de neurones" redirige ici. Voir aussi d'autres significations. Schéma d'un réseau neuronal simple. Le vert indique les éléments d'entrée, l'élément de sortie jaune Les modèles mathématiques des réseaux de neurones artificiels (ANN), ainsi que leurs logiciels ou ... ... Wikipedia

    "Réseau de neurones" redirige ici. Voir aussi d'autres significations. Schéma d'un réseau neuronal simple. Le vert indique les éléments d'entrée, l'élément de sortie jaune Les modèles mathématiques des réseaux de neurones artificiels (ANN), ainsi que leurs logiciels ou ... ... Wikipedia

    Ce terme a d'autres significations, voir Réseau de neurones (significations). Schéma d'un réseau neuronal simple. Les neurones d'entrée sont marqués en vert, les neurones cachés en bleu, les neurones de sortie en jaune ... Wikipedia

    Souhaitez-vous améliorer cet article ? : Ajoutez des illustrations. Réseaux de neurones récurrents (English ... Wikipedia

    Le réseau neuronal Hopfield est un réseau neuronal entièrement connecté avec une matrice de connexion symétrique. En cours de fonctionnement, la dynamique de tels réseaux converge (converge) vers l'une des positions d'équilibre. Ces positions d'équilibre sont des minima locaux ... ... Wikipedia

    Cet article devrait être wikiifié. Veuillez le formater selon les règles de formatage des articles. La mémoire humaine est associative, c'est-à-dire qu'une certaine mémoire peut générer une grande zone qui lui est associée. Un élément nous rappelle ... Wikipedia

    Architecture du réseau de neurones Kosko Le réseau de neurones Kosko (Bi-Directional Associative Memory DAM) est un réseau de neurones développé par Bart Kosko. Il s'agit d'un réseau de neurones à une seule couche avec rétroaction, basé sur deux idées: adaptatif ... ... Wikipedia

    Schéma logique d'un perceptron à trois sorties Article détaillé : Perceptron Le perceptron est l'un des premiers modèles dans l'art... Wikipedia

Livres

  • Apprentissage automatique appliqué avec Scikit-Learn et TensorFlow. Concepts, Outils et Techniques, Géron Aurélien. Apprentissage automatique appliqué avec Scikit-Learn et TensorFlow. Concepts, outils et techniques de création systèmes intelligents. Édition en couleur. "Ce livre est incroyable...

N+1, avec le MIPT, continue de familiariser le lecteur avec les aspects les plus marquants de la recherche moderne dans le domaine de l'intelligence artificielle. Dans nous avons écrit sur les principes généraux apprentissage automatique et plus précisément sur la méthode de rétropropagation pour l'entraînement des réseaux de neurones. Aujourd'hui notre interlocuteur est Valentin Malykh, chercheur junior au Laboratoire de Systèmes Neuronaux et Apprentissage Profond. Avec lui, nous parlerons d'une classe inhabituelle de ces systèmes - les réseaux de neurones récurrents, leurs caractéristiques et leurs perspectives, à la fois dans le domaine de toutes sortes de divertissements dans le style de DeepDream, et dans les domaines "utiles". Va.

Que sont les réseaux de neurones récurrents (RNN) et en quoi diffèrent-ils des réseaux ordinaires ?

Rappelons d'abord ce que sont les réseaux de neurones "ordinaires", puis il deviendra immédiatement clair en quoi ils diffèrent des réseaux récurrents. Imaginez le réseau neuronal le plus simple - un perceptron. C'est une seule couche de neurones, dont chacun prend une donnée d'entrée (un ou plusieurs bits, nombres réels, pixels, etc.), la modifie en fonction de son propre poids et la transmet. Dans un perceptron monocouche, la sortie de tous les neurones est combinée d'une manière ou d'une autre, et le réseau de neurones donne une réponse, mais les possibilités d'une telle architecture sont très limitées. Si vous souhaitez obtenir des fonctionnalités plus avancées, vous pouvez procéder de plusieurs manières, par exemple, augmenter le nombre de couches et ajouter une opération de convolution qui «stratifierait» les données entrantes en morceaux d'échelles différentes. Dans ce cas, vous vous retrouvez avec des réseaux convolutifs d'apprentissage en profondeur qui excellent dans le traitement d'images et la reconnaissance des chats. Cependant, un perceptron primitif et un réseau neuronal convolutif ont une limitation commune : les données d'entrée et de sortie ont une taille fixe et prédéterminée, par exemple, une image de 100 × 100 pixels ou une séquence de 256 bits. D'un point de vue mathématique, le réseau de neurones se comporte comme une fonction régulière, quoique très complexe : il a un nombre prédéterminé d'arguments, ainsi qu'un format désigné dans lequel il produit une réponse. Un exemple simple est la fonction x 2, qui prend un argument et produit une valeur.

Les fonctionnalités ci-dessus ne présentent pas de grandes difficultés si nous parlons des mêmes images ou à l'avance certaines séquences personnages. Mais que se passe-t-il si vous souhaitez utiliser un réseau de neurones pour traiter du texte ou de la musique ? Dans le cas général - toute séquence conditionnellement infinie dans laquelle non seulement le contenu est important, mais également l'ordre dans lequel les informations suivent. Pour ces tâches, des réseaux de neurones récurrents ont été inventés. Leurs opposés, que nous avons appelés «ordinaires», ont un nom plus strict - réseaux de neurones à réaction, car en eux, les informations ne sont transmises que vers l'avant à travers le réseau, de couche en couche. Dans les réseaux de neurones récurrents, les neurones échangent des informations entre eux : par exemple, en plus d'une nouvelle donnée entrante, le neurone reçoit également des informations sur l'état précédent du réseau. Ainsi, une «mémoire» est implémentée dans le réseau, ce qui change fondamentalement la nature de son travail et vous permet d'analyser toutes les séquences de données dans lesquelles il est important dans quel ordre les valeurs entrent - des enregistrements sonores à cotations boursières.

Schéma d'un réseau de neurones récurrent monocouche : à chaque cycle de travail, la couche interne de neurones reçoit un ensemble de données d'entrée X et des informations sur l'état précédent de la couche interne A, sur la base desquelles elle génère une réponse h .

La présence de mémoire dans les réseaux de neurones récurrents nous permet d'élargir quelque peu notre analogie avec x 2 . Si nous appelons les réseaux de neurones à anticipation une fonction "simple", alors les réseaux de neurones récurrents peuvent presque en toute bonne conscience être appelés un programme. En effet, la mémoire des réseaux de neurones récurrents (bien qu'ils ne soient pas à part entière, mais plus à ce sujet plus tard) les rend Turing-complets : avec les bons poids, le réseau de neurones peut imiter avec succès le travail logiciels d'ordinateur.

Plongeons un peu dans l'histoire : quand les RNN ont-ils été inventés, pour quelles tâches et quel devrait être, à ce qu'il semblait alors, leur avantage par rapport à un perceptron conventionnel ?

Le premier RNN était probablement le réseau Hopfield (mentionné pour la première fois en 1974, finalisé en 1982), qui implémentait en pratique une cellule de mémoire associative. Il diffère des RNN modernes en ce qu'il fonctionne avec des séquences de taille fixe. Dans le cas le plus simple, le réseau de Hopfield a une couche de neurones internes connectés les uns aux autres, et chaque connexion est caractérisée par un certain poids qui détermine sa signification. A un tel réseau est associé un équivalent d'"énergie" physique, qui dépend de tous les poids du système. Le réseau peut être formé en utilisant la descente de gradient d'énergie, où le minimum correspond à un état dans lequel le réseau s'est « souvenu » d'un certain modèle, par exemple 10101 . Maintenant, si un modèle déformé, bruyant ou incomplet est envoyé à son entrée, disons, 10000 , elle va "se souvenir" et le restituer de la même manière que la mémoire associative fonctionne chez l'homme. Cette analogie est plutôt éloignée, alors ne la prenez pas trop au sérieux. Néanmoins, les réseaux Hopfield ont réussi à faire face à leur tâche et ont contourné les perceptrons alors existants en termes de capacités. Fait intéressant, la publication originale de John Hopfield dans Actes de l'Académie nationale des sciences publié dans la rubrique "Biophysique".


Le problème de la mémoire à long terme dans les RNN simples : comment plus de cycles s'est écoulé depuis la réception de telle ou telle information, plus il est probable que la signification de ces données ne jouera pas un grand rôle dans le nouveau cycle de travail.

Christopher Olah / colah.github.io

L'étape suivante dans l'évolution des RNN a été le "réseau récurrent simple" de Jeff Elman, décrit en 1990. Dans ce document, l'auteur a abordé en détail la question de savoir comment il est possible (et s'il est possible du tout) d'entraîner un réseau de neurones à reconnaître des séquences temporelles. Par exemple, s'il y a une entrée 1100 Et 0110 , peuvent-ils être considérés comme un même ensemble décalé dans le temps ? Bien sûr, vous pouvez, mais comment former un réseau de neurones pour faire cela ? Un perceptron ordinaire se souviendra facilement de ce schéma pour tous les exemples qui lui seront proposés, mais il s'agira à chaque fois d'une tâche de comparaison de deux signaux différents, et non d'une tâche d'évolution ou de décalage d'un même signal. La solution d'Elman, basée sur des développements antérieurs dans ce domaine, reposait sur le fait qu'une autre couche « contextuelle » était ajoutée à un réseau de neurones simple, dans lequel l'état de la couche interne de neurones était simplement copié à chaque cycle du réseau. Dans le même temps, la connexion entre le contexte et les couches internes pourrait être entraînée. Une telle architecture rendait relativement facile la reproduction de séries chronologiques, ainsi que le traitement de séquences de longueur arbitraire, ce qui distinguait nettement le RNN simple d'Elman des concepts précédents. De plus, ce réseau était capable de reconnaître et même de classer les noms et les verbes dans une phrase en se basant uniquement sur l'ordre des mots, ce qui constituait une véritable avancée pour l'époque et suscitait un grand intérêt tant chez les linguistes que chez les chercheurs en conscience.

Le RNN simple d'Elman a été suivi de plus en plus de développements et, en 1997, Hochreiter et Schmidhuber ont publié l'article Long Short-term memory (il existe de nombreuses autres variantes de traduction), qui a jeté les bases de la plupart des RNN modernes. Dans leur travail, les auteurs ont décrit une modification qui a résolu le problème de la mémoire à long terme des RNN simples : leurs neurones « se souviennent » bien des informations récemment reçues, mais ils ne sont pas capables de stocker en permanence en mémoire quelque chose qui a été traité il y a de nombreux cycles, quelle que soit l'importance de cette information. Dans les réseaux LSTM, les neurones internes sont «équipés» d'un système complexe de soi-disant portes (portes), ainsi que du concept d'état cellulaire (état cellulaire), qui est une sorte de mémoire à long terme. Les portes, d'autre part, déterminent quelles informations entreront dans l'état cellulaire, ce qui en sera effacé et ce qui affectera le résultat que le RNN donnera sur cette étape. Nous n'analyserons pas LSTM en détail, mais notons que ce sont ces variations RNN qui sont largement utilisées maintenant, par exemple pour la traduction automatique de Google.


Le principe de fonctionnement du RNN de type LSTM : les neurones des couches internes peuvent lire et modifier l'état de la cellule (cell state), qui combine les fonctions de mémoire à court terme et à long terme.

Christopher Olah / colah.github.io

Tout sonne bien dans les mots, mais que peut faire RNS de toute façon ? Ici, ils leur ont donné un texte à lire ou à écouter de la musique - et puis quoi ?

L'un des principaux domaines d'application du RNN aujourd'hui est de travailler avec des modèles de langage, en particulier l'analyse du contexte et la connexion générale des mots dans le texte. Pour les RNN, la structure du langage est une information à long terme dont il faut se souvenir. Il comprend la grammaire, ainsi que les caractéristiques stylistiques du corpus de textes sur lesquels la formation est effectuée. En fait, le RNN se souvient de l'ordre dans lequel les mots suivent habituellement et peut compléter la phrase après avoir reçu une graine. Si cette graine est aléatoire, il peut en résulter un texte complètement dénué de sens, rappelant stylistiquement le modèle sur lequel le RNS a appris. Si le texte original était significatif, le RNN aidera à le styliser, mais dans ce dernier cas, un RNN ne suffira pas, car le résultat devrait être un "mélange" de texte aléatoire mais stylisé du RNN et un significatif, mais pièce d'origine "non colorée". Cette tâche rappelle déjà tellement Monet et Van Gogh, désormais populaires pour le traitement des photographies, qu'une analogie s'impose involontairement.

En effet, la tâche de transfert d'un style d'une image à une autre est résolue à l'aide de réseaux de neurones et de l'opération de convolution, qui divise l'image en plusieurs échelles et permet aux réseaux de neurones de les analyser indépendamment les uns des autres, puis de les mélanger. Opérations similaires avec la musique (utilisant également des réseaux de neurones convolutifs): dans ce cas, la mélodie est le contenu et l'arrangement est le style. Et le RNS réussit à peine à écrire de la musique. Étant donné que les deux tâches - à la fois écrire et mixer une mélodie avec un style arbitraire - ont déjà été résolues avec succès à l'aide de réseaux de neurones, il reste une question de technologie pour combiner ces solutions.

Enfin, voyons pourquoi la musique du RNS est, à tout le moins, écrite, mais il y a des problèmes avec les textes à part entière de Tolstoï et de Dostoïevski ? Le fait est qu'en musique instrumentale, aussi barbare que cela puisse paraître, il n'y a pas signification dans le même sens que dans la plupart des textes. C'est-à-dire que la musique peut être aimée ou non, mais si elle ne contient pas de mots, elle ne porte pas de charge informationnelle (bien sûr, si elle n'est pas code secret). C'est à donner du sens à leurs travaux que les RNS ont des problèmes : ils peuvent parfaitement apprendre la grammaire de la langue et se rappeler comment ils doivent ressembler à texte dans un certain style, mais RNS ne peut pas (encore) créer et transmettre une idée ou une information.


Schéma d'un réseau de neurones récurrent tridimensionnel pour l'écriture de fragments musicaux : contrairement à l'architecture la plus simple, ce système combine en fait deux RNN qui décrivent séparément la séquence dans le temps et la combinaison des notes à chaque instant.

Daniel Johnson / hexahedria.com

Un cas particulier dans cette question est l'écriture automatique code de programme. En effet, puisqu'un langage de programmation, par définition, est Langue, RNS peut l'apprendre. En pratique, il s'avère que les programmes écrits par les RNN se compilent et s'exécutent assez bien, mais ils ne font rien d'utile à moins qu'on ne leur confie une tâche à l'avance. Et la raison en est la même que dans le cas des textes littéraires : pour les RNN, un langage de programmation n'est rien d'autre qu'une stylisation, dans laquelle, malheureusement, ils ne peuvent mettre aucun sens.

La "génération de délire" est drôle, mais dénuée de sens, mais pour quelles tâches réelles les RNN sont-ils utilisés ?

Bien sûr, RNS, en plus de divertir, devrait également poursuivre des objectifs plus pragmatiques. Il découle automatiquement de leur conception que leurs principaux domaines d'application doivent être exigeants sur le contexte et/ou la dépendance temporelle des données, qui sont essentiellement la même chose. Par conséquent, les RNN sont utilisés, par exemple, pour l'analyse d'images. Il semblerait que cette zone soit généralement perçue dans le contexte des réseaux de neurones convolutifs, cependant, il existe également des tâches pour les RNN : leur architecture vous permet de reconnaître rapidement les détails en fonction du contexte et de l'environnement. De même, les RNN travaillent dans les domaines de l'analyse et de la génération de texte. Des tâches plus inhabituelles incluent les tentatives d'utilisation du premier RNS pour classer les spectres de carbone de résonance magnétique nucléaire de divers dérivés du benzène, et des dérivés modernes - l'analyse de l'apparition de critiques négatives sur les produits.

Et quel est le succès du RNS en traduction automatique ? Sont-ils utilisés dans Google Traduction ?

Actuellement, Google utilise des RNN de type LSTM pour la traduction automatique, ce qui a permis d'atteindre la plus grande précision par rapport aux analogues existants, cependant, selon les auteurs eux-mêmes, la traduction automatique est encore très loin du niveau humain. Les difficultés auxquelles sont confrontés les réseaux de neurones dans les tâches de traduction sont dues à plusieurs facteurs à la fois : premièrement, dans toute tâche, il existe un échange inévitable entre qualité et rapidité. En ce moment, une personne est très loin devant intelligence artificielle par cet indicateur. Étant donné que la traduction automatique est le plus souvent utilisée dans les services en ligne, les développeurs sont obligés de sacrifier la précision au profit de la vitesse. Dans un post récent de Google sur le sujet, les développeurs détaillent bon nombre des solutions qui ont permis d'optimiser l'actuel VersionGoogle Traduisez, cependant le problème demeure. Par exemple, des mots rares, ou de l'argot, ou une déformation délibérée d'un mot (par exemple, pour un titre plus brillant) peuvent confondre même un traducteur humain, qui devra passer du temps à trouver l'analogue le plus adéquat dans une autre langue. Une telle situation mettra la machine dans une impasse complète et le traducteur sera obligé de «jeter» le mot composé et de le laisser sans traduction. Par conséquent, le problème de la traduction automatique n'est pas si axé sur l'architecture (les RNN réussissent à faire face à tâches routinières dans ce domaine), jusqu'à la complexité et la diversité de la langue. La bonne nouvelle est que ce problème est plus technique que la rédaction de textes significatifs, ce qui nécessite probablement une approche radicalement nouvelle.


Le principe de fonctionnement du traducteur automatique Google Translate, repose sur une combinaison de plusieurs réseaux de neurones récurrents.

recherche.googleblog.com / Google

Existe-t-il des façons plus inhabituelles d'utiliser le RNS ? Voici une machine de Turing neurale, par exemple, quelle est l'idée ici ?

La Neural Turing Machine, proposée il y a deux ans par l'équipe Google DeepMind, diffère des autres RNN en ce que ces derniers ne stockent pas réellement les informations de manière explicite - elles sont encodées dans les poids et les connexions des neurones, même dans des variantes avancées comme LSTM. Dans la machine neurale de Turing, les développeurs ont adhéré à l'idée plus compréhensible d'une "bande mémoire", comme dans la machine de Turing classique : les informations y sont explicitement écrites "sur bande" et peuvent être lues si nécessaire. Dans le même temps, le suivi des informations nécessaires incombe à un contrôleur de réseau neuronal spécial. En général, on peut noter que l'idée de NMT fascine vraiment par sa simplicité et son accessibilité pour la compréhension. D'autre part, en raison des limitations techniques du matériel moderne, il n'est pas possible d'appliquer le HMT en pratique, car l'apprentissage d'un tel réseau devient extrêmement long. En ce sens, les RNN sont un lien intermédiaire entre les réseaux de neurones plus simples et les NMT, car ils stockent une certaine "distribution" d'informations, ce qui, en même temps, ne limite pas fatalement leurs performances.

Quel est le concept d'attention par rapport à RNN ? Quelles nouvelles choses cela vous permet-il de faire ?


Le concept d'attention est un moyen de "dire" au réseau à quoi consacrer plus d'attention lors du traitement des données. En d'autres termes, l'attention dans un réseau neuronal récurrent est un moyen d'augmenter l'importance de certaines données par rapport à d'autres. Puisqu'une personne ne peut pas donner d'indices à chaque fois (cela neutraliserait tous les avantages du RNN), le réseau doit apprendre à s'inviter. En général, le concept d'attention est un outil très puissant dans le travail avec les RNN, car il vous permet de dire rapidement et mieux au réseau quelles données méritent d'être prises en compte et celles qui ne le sont pas. En outre, cette approche peut à l'avenir résoudre le problème des performances dans les systèmes avec une grande quantité de mémoire. Pour mieux comprendre comment cela fonctionne, nous devons considérer deux modèles d'attention : "soft" (soft) et "hard" (dur). Dans le premier cas, le réseau accédera toujours à toutes les données auxquelles il a accès, mais la signification (c'est-à-dire le poids) de ces données sera différente. Cela rend le RNN plus précis, mais pas plus rapide. Dans le second cas, de toutes les données existantes, le réseau n'accédera qu'à certaines (le reste aura des poids nuls), ce qui résout deux problèmes à la fois. L'inconvénient de la conception "rigide" de l'attention est le fait que ce modèle cesse d'être continu, donc différentiable, ce qui complique grandement la tâche de son apprentissage. Cependant, il existe des solutions pour corriger cette lacune. Étant donné que le concept d'attention a été activement développé au cours des deux dernières années, nous devrons attendre des nouvelles de ce domaine dans un proche avenir.

Enfin, un exemple de système utilisant le concept d'attention est Dynamic Memory Networks, une variante proposée par la division de recherche de Facebook. Les développeurs y décrivent un "module de mémoire épisodique", qui, à partir de la mémoire des événements donnés en entrée, ainsi que d'une question sur ces événements, crée des "épisodes", qui aident finalement le réseau à trouver la bonne réponse à la question. question. . Cette architecture a été testée sur bAbI, une grande base de données de tâches générées pour une inférence logique simple (par exemple, une chaîne de trois faits est donnée, il faut donner la bonne réponse : "Mary est à la maison. Elle est sortie dans la cour. Où est Marie ? Dans la cour. »), et a montré des résultats. , supérieurs aux architectures classiques comme LSTM.

Que se passe-t-il d'autre dans le monde des réseaux de neurones récurrents en ce moment ?

Selon Andrej Karpathy, spécialiste des réseaux de neurones et auteur d'un excellent blog, « le concept d'attention est l'architecture récente la plus intéressante dans le monde des réseaux de neurones ». Cependant, l'attention n'est pas seulement focalisée sur la recherche dans le domaine du RNS. Si nous essayons de formuler brièvement la tendance principale, elle est maintenant devenue une combinaison de différentes architectures et l'utilisation de développements d'autres domaines pour améliorer le RNN. Les exemples incluent les réseaux de neurones déjà mentionnés de Google, qui utilisent des méthodes tirées du travail d'apprentissage par renforcement, des machines neuronales de Turing, des algorithmes d'optimisation comme la normalisation par lots et bien plus encore - tout cela mérite un article séparé. En général, nous notons que bien que les RNN n'aient pas attiré autant d'attention que les réseaux de neurones convolutifs préférés du public, c'est uniquement parce que les objets et les tâches avec lesquels les RNN fonctionnent ne sont pas aussi visibles que DeepDream ou Prisma. C'est comme dans dans les réseaux sociaux- si un post est publié sans photo, il y aura moins d'engouement autour de lui.

Donc toujours poster avec une photo.


Taras Molotilin

Le type suivant de réseaux de neurones artificiels est utilisé pour prédire des séquences. Les données du réseau "comprennent" la relation entre les différents éléments du réseau. Par exemple, ils sont utilisés pour générer des textes par des chatbots. Cela fonctionne comme ceci :

Le principe de fonctionnement du NS récurrent (pris)

Dans ce cas, le réseau reçoit la séquence "Salut, comment vas-tu ?" et devrait afficher : "Salut, d'accord"

En médecine, de tels réseaux sont utilisés pour analyser les dossiers médicaux et prédire d'éventuels cas futurs, prédire le développement d'une crise d'épilepsie, etc.

Je vais démontrer le fonctionnement de tels réseaux avec un exemple simple.

Dataframe = pandas.read_csv("international-airline-passengers.csv", usecols=, engine="python", skipfooter=3) dataset = dataframe.values ​​​​dataset = dataset.astype("float32") dataframe.head( )

Compagnie aérienne internationale : totaux mensuels en milliers de passagers. 49 janvier ? 60 décembre
0 112
1 118
2 132
3 129
4 121

L'ensemble de données comprend des observations mensuelles du nombre de passagers dans les aéroports de janvier 1949 à décembre 1960. Il y a un total de 144 observations.

Si vous tracez un graphique d'observations, vous pouvez remarquer une certaine tendance :

    C'est cyclique, car il y a des afflux de passagers pendant la saison estivale.

    Il y a une tendance positive dans le nombre total de passagers, partout où la popularité du transport aérien ne cesse de croître.

plt.plot(dataframe)

Nous devons créer un modèle capable de trouver des relations entre le nombre de passagers au cours de différents mois et de prédire le nombre de passagers à l'avenir.

Train_size = int(len(dataset) * 0.67) test_size = len(dataset) - train_size print(len(train), len(test)) (96, 48)

96 observations (67%) sont utilisées pour former le réseau, 48 observations sont utilisées pour tester la précision du modèle.

Le modèle sera composé de deux couches. La première couche ne contient que 4 neurones. La couche de sortie n'est qu'un neurone, à partir duquel le nombre prévu de passagers « sortira ».

Model = Sequential() model.add(LSTM(4, input_dim=look_back)) model.add(Dense(1)) model.compile(loss="mean_squared_error", optimiseur="adam")

Chargeons les données dans le modèle :

Model.fit(trainX, trainY, nb_epoch=5, batch_size=1, verbose=2) Epoch 1/5 0s - perte : 0,0019 Epoch 2/5 0s - perte : 0,0020 Epoch 3/5 0s - perte : 0,0020 Epoch 4/ 5 0s - perte : 0,0019 Epoque 5/5 0s - perte : 0,0020

Évaluons l'erreur du modèle :

TrainPredict = model.predict(trainX) testPredict = model.predict(testX) trainScore = math.sqrt(mean_squared_error(trainY, trainPredict[:,0])) print("Train Score: %.2f RMSE" % (trainScore)) testScore = math.sqrt(mean_squared_error(testY, testPredict[:,0])) print("Score du test : %.2f RMSE" % (testScore)) Score d'entraînement : 0,04 RMSE Score du test : 0,11 RMSE

Sur l'ensemble de test, l'erreur était de 0,11. Cela signifie que le modèle se trompe en moyenne de 11 000 passagers. Afin de comprendre si c'est beaucoup ou non, visualisons le résultat.

Le bleu est donc le graphique d'origine. Le vert correspond aux prédictions correctes sur l'échantillon entraîné. Nous nous intéressons à la partie rouge - les prédictions du modèle sur l'ensemble de test. On voit que le modèle devine approximativement les cycles annuels et la tendance générale.

C'est ainsi que fonctionnent les réseaux de neurones récurrents. Encore une fois, c'est un exemple très simple à illustrer. Par exemple, des réseaux plus profonds sont utilisés pour analyser les dossiers médicaux. Aussi, pour améliorer la précision des prédictions, ils peuvent être combinés avec des réseaux de neurones convolutifs, décrits

Les réseaux neuronaux récurrents sont les réseaux dans lesquels les sorties des éléments neuronaux des couches suivantes ont des connexions synaptiques avec les neurones des couches précédentes. Cela conduit à la possibilité de prendre en compte les résultats de la transformation des informations par le réseau de neurones à l'étape précédente pour traiter le vecteur d'entrée à l'étape suivante du fonctionnement du réseau. Les réseaux récurrents peuvent être utilisés pour résoudre des problèmes de prévision et de contrôle.

Architecture réseau récurrente

Il existe différentes variantes d'architectures de réseaux de neurones récurrents.

Réseau de Jordan : En 1986, Jordan a proposé un réseau récurrent (Fig. 6), dans lequel les sorties des éléments neuronaux de la dernière couche sont connectées via des neurones d'entrée spéciaux aux neurones de la couche intermédiaire. Ces éléments neuronaux d'entrée sont appelés contextuel neurones (unités de contexte). Ils distribuent la sortie du réseau neuronal aux éléments neuronaux de la couche intermédiaire.

Riz. 6Architecture d'un réseau neuronal récurrent avec rétroaction des neurones de la couche de sortie

Le nombre de neurones de contexte est égal au nombre d'éléments neuronaux de sortie du réseau récurrent. Des éléments neuronaux avec une fonction d'activation linéaire sont utilisés comme couche de sortie de tels réseaux. Alors la valeur de sortie jème élément neuronal de la dernière couche est déterminé par la formule

vij- facteur de pondération entre je-ème neurone de l'intermédiaire et j-ième neurone des couches de sortie ; Pi(t) - valeur de sortie je-ième neurone de la couche intermédiaire ; tj- valeur de seuil jème neurone de la couche de sortie. Somme pondérée je-ème élément neuronal de la couche intermédiaire est défini comme suit :

w ij- facteur de pondération entre j-ème neurone de l'entrée et je-ème neurone des couches intermédiaires ; R- nombre de neurones de la couche de sortie ; w ki- facteur de pondération entre k-ème neurone de contexte et je-ième neurone de la couche intermédiaire ; J- valeur de seuil je-ième neurone de la couche intermédiaire ; n- dimension du vecteur d'entrée.



Alors la valeur de sortie jeème neurone de la couche cachée

En tant que fonction de transformation non linéaire F généralement, la tangente hyperbolique ou la fonction sigmoïde est utilisée.

Pour former des réseaux de neurones récurrents, un algorithme de rétropropagation d'erreurs est utilisé.

L'algorithme d'apprentissage d'un réseau de neurones récurrent comprend généralement les étapes suivantes :

1. Au moment initial t= 1 tous les neurones de contexte sont mis à l'état zéro - les valeurs de sortie sont mises à zéro.

2. L'image d'entrée est transmise au réseau et elle est directement distribuée dans le réseau neuronal.

3. Conformément à l'algorithme de rétropropagation des erreurs, les coefficients de pondération et les valeurs de seuil des éléments neuronaux sont modifiés.

4. Installé t = t+1 et passez à l'étape 2. Le réseau récurrent est formé jusqu'à ce que l'erreur quadratique moyenne totale du réseau devienne inférieure à celle spécifiée.

Vous avez aimé l'article ? Partager avec des amis: