Trabalhando com sequências no PyTorch

Aprendizagem profunda intermediária com PyTorch

Michal Oleszak

Machine Learning Engineer

Dados sequenciais

  • Ordenados no tempo ou espaço
  • A ordem contém dependências entre pontos
  • Exemplos de dados sequenciais:
    • Séries temporais
    • Texto
    • Ondas de áudio

Uma série temporal exibida na tela de um computador.

Um livro aberto.

Um conjunto de alto-falantes e um monitor com software de áudio aberto.

Aprendizagem profunda intermediária com PyTorch

Previsão de consumo de energia

  • Tarefa: prever o consumo futuro com base em padrões passados

  • Conjunto de dados de consumo de energia:

                 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.
Aprendizagem profunda intermediária com PyTorch

Divisão treino-teste

  • Nada de divisão aleatória em séries temporais!
  • Look-ahead bias: o modelo vê o futuro
  • Solução: dividir por tempo

Conjunto de treino (2011–2013) em azul e teste (2014) em laranja, separados visualmente.

Aprendizagem profunda intermediária com PyTorch

Criando sequências

  • Tamanho da sequência = nº de pontos em um exemplo de treino
    • 24 × 4 = 96 -> últimas 24 horas
  • Prever o próximo ponto

Sequências de entrada de mesmo comprimento em azul e o alvo em verde, separados visualmente.

Aprendizagem profunda intermediária com PyTorch

Criando sequências em 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)
  • Recebe os dados e o tamanho da sequência
  • Inicializa as listas de entradas e alvos
  • Itera pelos pontos de dados
  • Define entradas e alvo
  • Adiciona às listas
  • Retorna como arrays NumPy
Aprendizagem profunda intermediária com PyTorch

TensorDataset

Cria exemplos de treino

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

Converte para um Torch Dataset

from torch.utils.data import TensorDataset

dataset_train = TensorDataset(
    torch.from_numpy(X_train).float(),
    torch.from_numpy(y_train).float(),
)
Aprendizagem profunda intermediária com PyTorch

Aplicável a outros dados sequenciais

Técnicas valem para outras sequências:

  • Large Language Models
  • Reconhecimento de fala
Aprendizagem profunda intermediária com PyTorch

Vamos praticar!

Aprendizagem profunda intermediária com PyTorch

Preparing Video For Download...