Використання функцій втрат для оцінки прогнозів моделі

Вступ до Deep Learning з PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Навіщо потрібна функція втрат?

  • Показує, наскільки добра модель під час навчання
  • Приймає прогноз моделі $\hat{y}$ та еталон $y$
  • Повертає число з плаваючою крапкою

$$

Схема функції втрат

Вступ до Deep Learning з PyTorch

Навіщо потрібна функція втрат?

  • Клас 0 — ссавець, клас 1 — птах, клас 2 — плазун
Hair Feathers Eggs Milk Fins Legs Tail Domestic Catsize Class
1 0 0 1 0 4 0 0 1 0

$$

  • Прогнозований клас = 0 -> вірно = мала втрата
  • Прогнозований клас = 1 -> помилка = велика втрата
  • Прогнозований клас = 2 -> помилка = велика втрата

$$

  • Наша мета — мінімізувати втрати
Вступ до Deep Learning з PyTorch

Концепції one-hot кодування

  • $loss = F(y, \hat{y})$
  • $y$ — одиночне ціле число (мітка класу)
    • напр., $y=0$, коли $y$ — ссавець
  • $\hat{y}$ — тензор (прогноз до softmax)
    • Якщо N — кількість класів, напр., N = 3
    • $\hat{y}$ — тензор з N вимірами,
      • напр., $\hat{y}$ = [-5.2, 4.6, 0.8]
Вступ до Deep Learning з PyTorch

Концепції one-hot кодування

  • Перетворіть ціле y на тензор з нулів та одиниць

One-hot кодування

Вступ до Deep Learning з PyTorch

Перетворення міток через one-hot кодування

import torch.nn.functional as F

print(F.one_hot(torch.tensor(0), num_classes = 3))
tensor([1, 0, 0])
print(F.one_hot(torch.tensor(1), num_classes = 3))
tensor([0, 1, 0])
print(F.one_hot(torch.tensor(2), num_classes = 3))
tensor([0, 0, 1])
Вступ до Deep Learning з PyTorch

Втрати крос-ентропії в PyTorch

from torch.nn import CrossEntropyLoss

scores = torch.tensor([-5.2, 4.6, 0.8])
one_hot_target = torch.tensor([1, 0, 0])

criterion = CrossEntropyLoss()
print(criterion(scores.double(), one_hot_target.double()))

$$

tensor(9.8222, dtype=torch.float64)
Вступ до Deep Learning з PyTorch

Об'єднаємо все разом

Функція втрат отримує:

  • scores — прогнози моделі до фінальної функції softmax
  • one_hot_target — еталонну мітку у форматі one-hot

Функція втрат повертає:

  • loss — одне float-значення

Схема функції втрат зі значеннями

Вступ до Deep Learning з PyTorch

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

Вступ до Deep Learning з PyTorch

Preparing Video For Download...