Функции потерь для оценки предсказаний модели

Введение в глубокое обучение с PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Зачем нужна функция потерь?

  • Показывает, насколько хороша модель в процессе обучения
  • Принимает предсказание модели $\hat{y}$ и истинное значение $y$
  • Возвращает число с плавающей точкой

$$

Схема функции потерь

Введение в глубокое обучение с 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 -> неверно = высокие потери

$$

  • Цель — минимизировать потери
Введение в глубокое обучение с PyTorch

Концепция унитарного кодирования

  • $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]
Введение в глубокое обучение с PyTorch

Концепция унитарного кодирования

  • Преобразует целое число y в тензор из нулей и единиц

Унитарное кодирование

Введение в глубокое обучение с PyTorch

Преобразование меток с помощью унитарного кодирования

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])
Введение в глубокое обучение с 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)
Введение в глубокое обучение с PyTorch

Собираем всё вместе

Функция потерь принимает:

  • scores — предсказания модели до финальной функции softmax
  • one_hot_target — истинная метка в унитарном кодировании

Функция потерь возвращает:

  • loss — единственное значение типа float

Схема функции потерь со значениями

Введение в глубокое обучение с PyTorch

Давайте потренируемся!

Введение в глубокое обучение с PyTorch

Preparing Video For Download...