Gérer les séquences avec PyTorch

Apprentissage profond intermédiaire avec PyTorch

Michal Oleszak

Machine Learning Engineer

Données séquentielles

  • Ordonnées dans le temps ou l'espace
  • L'ordre des points de données crée des dépendances
  • Exemples de données séquentielles :
    • Séries chronologiques
    • Texte
    • Ondes audio

Une série chronologique affichée à l'écran.

Un livre ouvert.

Un ensemble de haut-parleurs et un écran avec un logiciel de traitement audio ouvert.

Apprentissage profond intermédiaire avec PyTorch

Prédire la consommation d'électricité

  • Tâche : prédire la consommation d'électricité future selon les tendances passées

  • Ensemble de données sur la consommation d'électricité :

                 timestamp  consumption
0      2011-01-01 00:15:00    -0.704319
1      2011-01-01 00:30:00    -0.704319
...                    ...          ...
140254 2014-12-31 23:45:00    -0.095751
140255 2015-01-01 00:00:00    -0.095751
1 Trindade,Artur. (2015). ElectricityLoadDiagrams20112014. UCI Machine Learning Repository. https://doi.org/10.24432/C58C86.
Apprentissage profond intermédiaire avec PyTorch

Séparation entraînement-test

  • Pas de séparation aléatoire pour les séries chronologiques !
  • Biais d'anticipation : le modèle voit des infos futures
  • Solution : séparer par période

Ensemble d'entraînement 2011-2013 en bleu et ensemble de test 2014 en orange, séparés visuellement.

Apprentissage profond intermédiaire avec PyTorch

Créer des séquences

  • Longueur de séquence = nombre de points par exemple d'entraînement
    • 24 × 4 = 96 → tenir compte des 24 dernières heures
  • Prédire le prochain point unique

Séquences d'entrée de même longueur en bleu et valeur cible en vert, séparées visuellement.

Apprentissage profond intermédiaire avec PyTorch

Créer des séquences en Python

import numpy as np

def create_sequences(df, seq_length):

xs, ys = [], []
for i in range(len(df) - seq_length):
x = df.iloc[i:(i+seq_length), 1] y = df.iloc[i+seq_length, 1]
xs.append(x) ys.append(y)
return np.array(xs), np.array(ys)
  • Prend les données et la longueur de séquence en entrée
  • Initialise les listes d'entrées et de cibles
  • Itère sur les points de données
  • Définit les entrées et la cible
  • Ajoute aux listes préinitialisées
  • Retourne entrées et cibles comme tableaux NumPy
Apprentissage profond intermédiaire avec PyTorch

TensorDataset

Créer des exemples d'entraînement

X_train, y_train = create_sequences(train_data, seq_length)
print(X_train.shape, y_train.shape)
(34944, 96) (34944,)

Les convertir en Torch Dataset

from torch.utils.data import TensorDataset

dataset_train = TensorDataset(
    torch.from_numpy(X_train).float(),
    torch.from_numpy(y_train).float(),
)
Apprentissage profond intermédiaire avec PyTorch

Applicabilité à d'autres données séquentielles

Les mêmes techniques s'appliquent à d'autres séquences :

  • Large Language Models
  • Reconnaissance de la parole
Apprentissage profond intermédiaire avec PyTorch

Passons à la pratique !

Apprentissage profond intermédiaire avec PyTorch

Preparing Video For Download...