Använda förlustfunktioner för att utvärdera modellförutsägelser

Introduktion till djupinlärning med PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Varför behöver vi en förlustfunktion?

  • Mäter hur bra modellen är under träning
  • Tar en modells förutsägelse $\hat{y}$ och sann etikett $y$
  • Returnerar ett flyttal

$$

Diagram över förlustfunktion

Introduktion till djupinlärning med PyTorch

Varför behöver vi en förlustfunktion?

  • Klass 0 – däggdjur, klass 1 – fågel, klass 2 – reptil
Hair Feathers Eggs Milk Fins Legs Tail Domestic Catsize Class
1 0 0 1 0 4 0 0 1 0

$$

  • Förutsedd klass = 0 -> rätt = låg förlust
  • Förutsedd klass = 1 -> fel = hög förlust
  • Förutsedd klass = 2 -> fel = hög förlust

$$

  • Målet är att minimera förlusten
Introduktion till djupinlärning med PyTorch

Koncept bakom one-hot-kodning

  • $loss = F(y, \hat{y})$
  • $y$ är ett heltal (klassetikett)
    • t.ex. $y=0$ när $y$ är ett däggdjur
  • $\hat{y}$ är en tensor (förutsägelse före softmax)
    • Om N är antalet klasser, t.ex. N = 3
    • $\hat{y}$ är en tensor med N dimensioner,
      • t.ex. $\hat{y}$ = [-5.2, 4.6, 0.8]
Introduktion till djupinlärning med PyTorch

Koncept bakom one-hot-kodning

  • Omvandla ett heltal y till en tensor av nollor och ettor

One-hot-kodning

Introduktion till djupinlärning med PyTorch

Omvandla etiketter med one-hot-kodning

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])
Introduktion till djupinlärning med PyTorch

Korsintropistförlust i 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)
Introduktion till djupinlärning med PyTorch

Allt på ett ställe

Förlustfunktionen tar emot:

  • scores – modellförutsägelser före den sista softmax-funktionen
  • one_hot_target – one-hot-kodad sann etikett

Förlustfunktionen returnerar:

  • loss – ett enskilt flyttal

Diagram över förlustfunktion med värden

Introduktion till djupinlärning med PyTorch

Nu kör vi en övning!

Introduktion till djupinlärning med PyTorch

Preparing Video For Download...