Verliesfuncties gebruiken om modelvoorspellingen te beoordelen

Introductie tot Deep Learning met PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Waarom hebben we een verliesfunctie nodig?

  • Zegt hoe goed ons model is tijdens training
  • Neemt een voorspelling $\hat{y}$ en grondwaarheid $y$
  • Geeft een float terug

$$

Diagram verliesfunctie

Introductie tot Deep Learning met PyTorch

Waarom hebben we een verliesfunctie nodig?

  • Klasse 0 - zoogdier, klasse 1 - vogel, klasse 2 - reptiel
Haar Veren Eieren Melk Vinnen Poten Staart Tam Katgrootte Klasse
1 0 0 1 0 4 0 0 1 0

$$

  • Voorspelde klasse = 0 -> correct = lage loss
  • Voorspelde klasse = 1 -> fout = hoge loss
  • Voorspelde klasse = 2 -> fout = hoge loss

$$

  • Ons doel is loss minimaliseren
Introductie tot Deep Learning met PyTorch

One-hot-encoding: concepten

  • $loss = F(y, \hat{y})$
  • $y$ is één integer (klasselabel)
    • bijv. $y=0$ als $y$ een zoogdier is
  • $\hat{y}$ is een tensor (voorspelling vóór softmax)
    • Als N het aantal klassen is, bijv. N = 3
    • $\hat{y}$ is een tensor met N dimensies,
      • bijv. $\hat{y}$ = [-5.2, 4.6, 0.8]
Introductie tot Deep Learning met PyTorch

One-hot-encoding: concepten

  • Zet een integer y om naar een tensor van nullen en enen

One-hot-encoding

Introductie tot Deep Learning met PyTorch

Labels transformeren met one-hot-encoding

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])
Introductie tot Deep Learning met PyTorch

Cross-entropy loss in 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)
Introductie tot Deep Learning met PyTorch

Alles samenbrengen

De verliesfunctie neemt:

  • scores - modelvoorspellingen vóór de laatste softmax
  • one_hot_target - one-hot gecodeerd label

De verliesfunctie geeft terug:

  • loss - één float

Diagram verliesfunctie met waarden

Introductie tot Deep Learning met PyTorch

Laten we oefenen!

Introductie tot Deep Learning met PyTorch

Preparing Video For Download...