Présentation

Les gens ne commencent pas leur intuition sans préparation. En lisant cet article, vous verrez que chaque mot dépend de votre compréhension des mots passés. Vous ne vous débarrassez pas de tout et vous recommencez à penser sans aucune préparation. Vos réflexions ont de la diligence.

Les réseaux neuronaux conventionnels ne peuvent pas le faire, et cela semble être une lacune importante. Par exemple, imaginez que vous devez organiser le type d’événement qui se produit à chaque point d’un film. Il est difficile de savoir comment un système neuronal conventionnel pourrait utiliser ses réflexions sur les événements passés du film pour conseiller les événements ultérieurs.

Les réseaux neuronaux répétitifs permettent de résoudre ce problème. Ce sont des systèmes contenant des cercles qui permettent aux données de perdurer.

Dans le schéma ci-dessus, un morceau du système neuronal A, voit certaines informations xt et donne un ht de valeur. Un cercle permet de faire passer les données d’une étape du système à l’autre. Un système neuronal intermittent peut être considéré comme une multitude de copies d’un système similaire, chacune transmettant un message à un successeur. Pensez à ce qui se passe dans le cas où nous déroulons le cercle

Cette nature en chaîne révèle que les systèmes neuronaux répétitifs sont personnellement identifiés par des groupements et des enregistrements. Ils sont l’ingénierie régulière des systèmes neuronaux à utiliser pour de telles informations. De plus, ils sont certainement utilisés ! Au cours des dernières années, on a assisté à des réalisations époustouflantes en appliquant les RNN à un ensemble de problèmes : reconnaissance du discours, affichage de la langue, interprétation, sous-titrage des images… La liste est longue.

Bien que ce ne soit pas encore obligatoire, il serait utile pour l’utilisateur de comprendre ce que sont les WordVectors. Voici mon précédent blog sur Word2Vec, une procédure pour fabriquer des WordVectors.
Que sont les systèmes neuronaux répétitifs ?

Une contrainte flagrante des systèmes neuronaux vanille (et en outre des systèmes convolutifs) est que leur interface de programmation est excessivement obligée : ils reconnaissent un vecteur de taille fixe comme information (par exemple une image) et produisent un vecteur de taille fixe comme rendement (par exemple des probabilités de différentes classes). Et ce n’est pas tout : ces modèles jouent cette cartographie en utilisant une mesure fixe des progrès du calcul (par exemple le nombre de couches dans le modèle).

L’explication centrale est que les réseaux répétitifs sont d’autant plus énergisants qu’ils nous permettent de travailler sur des successions de vecteurs : Dispositions dans l’information, le rendement ou, dans le cas le plus large, les deux.

Quelques modèles peuvent rendre cela de plus en plus concret :

Chaque forme carrée est un vecteur et les boulons parlent de capacités (par exemple la duplication du cadre). Les vecteurs d’information sont en rouge, les vecteurs de rendement sont en bleu et les vecteurs verts contiennent l’état du RNN (plus d’informations à ce sujet prochainement). De gauche à droite :

Méthode de traitement vanille sans RNN, de la contribution de taille fixe au rendement de taille fixe (par exemple, regroupement d’images).

Rendement de regroupement (par exemple, le sous-titrage d’une image prend une image et donne une phrase de mots).

Groupement de l’apport (par exemple enquête d’opinion où une phrase donnée est déléguée en communiquant une hypothèse positive ou négative)

Les informations relatives à la succession et les résultats de l’arrangement (par exemple, l’interprétation automatique : un RNN parcourt une phrase en anglais et ensuite donne une phrase en français).

Regroupement des informations et rendement (par exemple, arrangement vidéo où l’on souhaite marquer chaque image de la vidéo).

Notez que pour chaque situation, il n’y a pas d’impératif préétabli sur les longueurs des successions, étant donné que le changement répétitif (vert) est fixe et peut être appliqué le même nombre de fois que nous le souhaitons.
Calcul RNN

Comment y parviennent-ils ?

Ils reconnaissent un vecteur informationnel x et donnent un vecteur de rendement y. Néanmoins, la substance de ce vecteur de rendement est affectée de toute urgence non seulement par les informations que vous venez d’apporter, mais aussi par toute l’histoire des sources de données que vous avez déjà utilisées. Composée comme une classe, l’interface de programmation du RNN comprend un travail d’étape solitaire :

rnn = RNN()

y = rnn.step(x) # x est un vecteur informationnel, y est le vecteur de rendement du RNN

La classe RNN dispose d’un express intérieur qu’elle a la possibilité de rafraîchir à chaque fois qu’un pas est appelé. Dans le cas le moins difficile, cet état comprend un vecteur solitaire enveloppé h. Voici une exécution du travail de progression dans un RNN vanille : L’état enveloppé self.h est introduit avec le vecteur zéro. Le travail np.tanh (digression hyperbolique) actualise une non-linéarité qui écrase les initiations à l’intervalle [-1, 1].
classe RNN :

def step(self, x) :

mettre à jour l’état caché

self.h = np.tanh(np.dot(self.W_hh, self.h) + np.dot(self.W_xh, x))

calculer le vecteur de sortie

y = np.dot(self.W_hy, self.h)

retourne y
Ce qui précède précise le passage en avant d’un RNN vanille. Les paramètres de ce RNN sont les trois matrices –
W_hh : Matrice basée sur l’état caché précédent
W_xh : Matrice basée sur l’entrée actuelle
W_hy : Matrice basée entre l’état caché et la sortie
Comment cela fonctionne-t-il ?

Il y a deux termes dans la tanh : l’un dépend de l’état passé de l’enveloppe et l’autre de l’information actuelle. En numpy np.dot est l’augmentation du réseau. Les deux intermédiaires collaborent à l’expansion, et sont ensuite écrasés par le tanh dans le nouveau vecteur d’état.
La notation mathématique pour la mise à jour de l’état caché est –

où le tanh est appliqué de façon élémentaire.
Nous introduisons les réseaux du RNN avec des nombres irréguliers et la plus grande partie du travail de préparation consiste à trouver les grilles qui offrent une ascension vers une conduite séduisante, comme on l’a estimé avec un travail malheureux qui communique votre inclination vers les types de rendements y que vous aimeriez trouver à la lumière de vos successions d’informations x
Nous verrons dans un article que les RNN joignent le vecteur info à leur vecteur d’état avec une capacité fixe (encore apprise) de délivrer un autre vecteur d’état.
Maintenant, en profondeur –
y1 = rnn1.step(x)
y = rnn2.step(y1)
En fin de compte, nous avons deux RNN distincts : Le premier accepte les vecteurs d’information et le second reçoit le rendement du premier comme information. Mais aucun de ces RNN ne sait ou ne s’en soucie – c’est tout, juste des vecteurs qui entrent et sortent, et quelques angles qui parcourent chaque module pendant la rétropropagation.

J’aimerais rapidement faire référence à une grande partie d’entre nous qui utilise un plan légèrement inattendu par rapport à ce que j’ai exposé ci-dessus, à savoir une organisation à mémoire longue momentanée (LSTM). La LSTM est un type spécifique de système intermittent qui fonctionne un peu mieux, ce qui peut être déduit de ses conditions de mise à jour encore plus dominantes et de certains éléments de rétropropagation engageants. Je n’entrerai pas dans les subtilités, mais tout ce que j’ai dit sur les RNN reste exactement l’équivalent, à l’exception de la structure scientifique de traitement de la mise à jour (la ligne self.h = … ) qui devient un peu plus alambiquée. À partir de maintenant, j’utiliserai les expressions “RNN/LSTM” à l’inverse, mais tous les examens de ce poste utilisent un LSTM.