Manejo de secuencias con PyTorch

Aprendizaje profundo intermedio con PyTorch

Michal Oleszak

Machine Learning Engineer

Datos secuenciales

  • Ordenado en el tiempo o en el espacio
  • El orden de los puntos de datos contiene dependencias entre ellos.
  • Ejemplos de datos secuenciales:
    • Series temporales
    • text
    • Ondas sonoras

Una serie temporal mostrada en la pantalla de un ordenador.

Un libro abierto.

Un conjunto de altavoces y una pantalla de ordenador con un software de procesamiento de audio abierto.

Aprendizaje profundo intermedio con PyTorch

Predicción del consumo eléctrico

  • Tarea: predecir el consumo eléctrico futuro basándose en patrones pasados.

  • Conjunto de datos sobre el consumo de electricidad:

                 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. Repositorio de machine learning de la UCI. https://doi.org/10.24432/C58C86.
Aprendizaje profundo intermedio con PyTorch

Entrenamiento/prueba de la división

  • ¡No se dividen aleatoriamente las series temporales!
  • Sesgo de anticipación: el modelo tiene información sobre el futuro.
  • Solución: dividir por tiempo

Conjunto de trenes visualmente separados para los años 2011-2013, mostrados en azul, y conjunto de prueba para el año 2014, mostrado en naranja.

Aprendizaje profundo intermedio con PyTorch

Creación de secuencias

  • Longitud de la secuencia = número de puntos de datos en un ejemplo de entrenamiento
    • 24 × 4 = 96 -> considera las últimas 24 horas
  • Predice el siguiente punto de datos único

Secuencias de entrada separadas visualmente de igual longitud mostradas en azul y el valor objetivo mostrado en verde.

Aprendizaje profundo intermedio con PyTorch

Creación de secuencias 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)
  • Toma los datos y la longitud de la secuencia como entradas.
  • Inicializar las listas de entradas y objetivos
  • Iterar sobre puntos de datos
  • Define los insumos y los objetivos
  • Añadir a listas preinicializadas
  • Devuelve las entradas y los objetivos como arreglos NumPy.
Aprendizaje profundo intermedio con PyTorch

TensorDataset

Crear ejemplos de entrenamiento

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

Convertirlos a un conjunto de datos Torch

from torch.utils.data import TensorDataset

dataset_train = TensorDataset(
    torch.from_numpy(X_train).float(),
    torch.from_numpy(y_train).float(),
)
Aprendizaje profundo intermedio con PyTorch

Aplicabilidad a otros datos secuenciales

Las mismas técnicas son aplicables a otras secuencias:

  • Modelos de lenguaje de gran tamaño
  • el reconocimiento de voz,
Aprendizaje profundo intermedio con PyTorch

¡Vamos a practicar!

Aprendizaje profundo intermedio con PyTorch

Preparing Video For Download...