Xử lý chuỗi với PyTorch

Deep Learning nâng cao với PyTorch

Michal Oleszak

Machine Learning Engineer

Dữ liệu tuần tự

  • Có thứ tự theo thời gian hoặc không gian
  • Thứ tự điểm dữ liệu chứa quan hệ phụ thuộc
  • Ví dụ dữ liệu tuần tự:
    • Chuỗi thời gian
    • Văn bản
    • Sóng âm thanh

Một chuỗi thời gian hiển thị trên màn hình máy tính.

Một quyển sách mở.

Bộ loa và màn hình máy tính mở phần mềm xử lý âm thanh.

Deep Learning nâng cao với PyTorch

Dự đoán tiêu thụ điện

  • Nhiệm vụ: dự đoán mức tiêu thụ điện tương lai từ mẫu trong quá khứ

  • Bộ dữ liệu tiêu thụ điện:

                 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 nâng cao với PyTorch

Chia train–test

  • Không chia ngẫu nhiên cho chuỗi thời gian!
  • Thiên lệch nhìn trước: mô hình biết thông tin tương lai
  • Giải pháp: chia theo thời gian

Tập train cho 2011–2013 màu xanh và tập test cho 2014 màu cam, tách biệt trực quan.

Deep Learning nâng cao với PyTorch

Tạo chuỗi

  • Độ dài chuỗi = số điểm dữ liệu trong một mẫu huấn luyện
    • 24 × 4 = 96 -> xét 24 giờ gần nhất
  • Dự đoán điểm dữ liệu kế tiếp duy nhất

Các chuỗi đầu vào có cùng độ dài màu xanh và giá trị mục tiêu màu xanh lá.

Deep Learning nâng cao với PyTorch

Tạo chuỗi trong 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)
  • Nhận dữ liệu và độ dài chuỗi làm đầu vào
  • Khởi tạo danh sách input và target
  • Lặp qua các điểm dữ liệu
  • Xác định input và target
  • Thêm vào các danh sách đã khởi tạo
  • Trả về input và target dạng mảng NumPy
Deep Learning nâng cao với PyTorch

TensorDataset

Tạo mẫu huấn luyện

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

Chuyển thành 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 nâng cao với PyTorch

Áp dụng cho dữ liệu tuần tự khác

Kỹ thuật tương tự áp dụng cho chuỗi khác:

  • Mô hình ngôn ngữ lớn
  • Nhận dạng giọng nói
Deep Learning nâng cao với PyTorch

Ayo berlatih!

Deep Learning nâng cao với PyTorch

Preparing Video For Download...