Опрацювання послідовностей у PyTorch

Середній рівень Deep Learning з PyTorch

Michal Oleszak

Machine Learning Engineer

Послідовні дані

  • Упорядковані в часі або просторі
  • Порядок точок даних містить залежності між ними
  • Приклади послідовних даних:
    • Часові ряди
    • Текст
    • Аудіосигнали

Часовий ряд на екрані комп'ютера.

Відкрита книга.

Набір гучномовців і екран комп'ютера з відкритим ПЗ для обробки аудіо.

Середній рівень Deep Learning з PyTorch

Прогноз споживання електроенергії

  • Завдання: передбачити майбутнє споживання електроенергії за минулими шаблонами

  • Набір даних про споживання електроенергії:

                 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.
Середній рівень Deep Learning з PyTorch

Train-test split

  • Без випадкового розбиття для часових рядів!
  • Look-ahead bias: модель має інформацію з майбутнього
  • Рішення: розбивайте за часом

Візуально розділені тренувальна вибірка за 2011–2013 роки (синім) і тестова за 2014 рік (помаранчевим).

Середній рівень Deep Learning з PyTorch

Створення послідовностей

  • Довжина послідовності = кількість точок даних в одному тренувальному прикладі
    • 24 × 4 = 96 → беремо останні 24 години
  • Прогнозуємо одну наступну точку

Візуально відокремлені вхідні послідовності однакової довжини (синім) і цільове значення (зеленим).

Середній рівень Deep Learning з PyTorch

Створення послідовностей у 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)
  • Приймає дані й довжину послідовності як вхідні параметри
  • Ініціалізує списки «inputs» і «targets»
  • Ітерується по точках даних
  • Визначає вхідні дані й ціль
  • Додає до попередньо створених списків
  • Повертає вхідні й цілі як масиви NumPy
Середній рівень Deep Learning з PyTorch

TensorDataset

Створіть тренувальні приклади

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

Перетворіть їх на Torch Dataset

from torch.utils.data import TensorDataset

dataset_train = TensorDataset(
    torch.from_numpy(X_train).float(),
    torch.from_numpy(y_train).float(),
)
Середній рівень Deep Learning з PyTorch

Застосування до інших послідовних даних

Ті самі підходи застосовні до інших послідовностей:

  • Великі мовні моделі
  • Розпізнавання мовлення
Середній рівень Deep Learning з PyTorch

Давайте потренуємось!

Середній рівень Deep Learning з PyTorch

Preparing Video For Download...