Réseaux de neurones récurrents

Deep learning intermédiaire avec PyTorch

Michal Oleszak

Machine Learning Engineer

Neurone récurrent

  • Réseaux feed-forward
  • RNN: connexions en boucle arrière
  • Neurone récurrent :
    • Entrée x
    • Sortie y
    • État caché h
  • En PyTorch : nn.RNN()

Schéma d’un neurone RNN simple : le neurone applique poids et activation, reçoit l’entrée x et produit les sorties y et h, où h est réinjecté.

Deep learning intermédiaire avec PyTorch

Dépliage du neurone récurrent dans le temps

Schéma du neurone récurrent. Au pas de temps 0, il reçoit h0 et x0, et produit y0 et h1.

Deep learning intermédiaire avec PyTorch

Dépliage du neurone récurrent dans le temps

Schéma du neurone récurrent. Au pas de temps 1, il reçoit h1 et x1, et produit y1.

Deep learning intermédiaire avec PyTorch

Dépliage du neurone récurrent dans le temps

Schéma du neurone récurrent. Au pas de temps 2, il reçoit h2 et x2, et produit y2 et h3.

Deep learning intermédiaire avec PyTorch

RNN profonds

Schéma de deux neurones récurrents formant une couche. À chaque pas de temps, les sorties y sont transmises à un autre neurone.

Deep learning intermédiaire avec PyTorch

Architecture séquence-à-séquence

  • Entrée: une séquence, utiliser toute la séquence de sorties
  • Exemple: reconnaissance vocale en temps réel

Schéma d’architecture : à chaque pas de temps, un nouvel input ; toutes les sorties y à chaque pas sont en vert (utilisées).

Deep learning intermédiaire avec PyTorch

Architecture séquence-à-vecteur

  • Entrée: une séquence, n’utiliser que la dernière sortie
  • Exemple: classification de sujets de texte

Schéma d’architecture : à chaque pas de temps, un nouvel input ; seule la dernière sortie y est en vert (utilisée).

Deep learning intermédiaire avec PyTorch

Architecture vecteur-à-séquence

  • Entrée: un seul vecteur, utiliser toute la séquence de sorties
  • Exemple: génération de texte

Schéma d’architecture : un seul input au premier pas de temps ; toutes les sorties y à chaque pas sont en vert (utilisées).

Deep learning intermédiaire avec PyTorch

Architecture encodeur-décodeur

  • Traiter toute la séquence d’entrée, puis commencer à utiliser la séquence de sorties
  • Exemple: traduction automatique

Schéma d’architecture : dans la première partie (encodeur), des inputs à chaque pas mais sorties ignorées ; dans la seconde (décodeur), plus d’inputs mais toutes les sorties sont utilisées.

Deep learning intermédiaire avec PyTorch

RNN avec PyTorch

class Net(nn.Module):
    def __init__(self):
        super().__init__()

self.rnn = nn.RNN( input_size=1, hidden_size=32, num_layers=2, batch_first=True, )
self.fc = nn.Linear(32, 1)
def forward(self, x): h0 = torch.zeros(2, x.size(0), 32)
out, _ = self.rnn(x, h0)
out = self.fc(out[:, -1, :]) return out
  • Définir la classe du modèle avec __init__
  • Définir la couche récurrente, self.rnn
  • Définir la couche linéaire, fc
  • Dans forward(), initialiser le premier état caché à zéro
  • Passer l’entrée et le premier état caché dans la couche RNN
  • Prendre la dernière sortie du RNN et la passer dans la couche linéaire
Deep learning intermédiaire avec PyTorch

Passons à la pratique !

Deep learning intermédiaire avec PyTorch

Preparing Video For Download...