Funções de perda para avaliar previsões do modelo

Introdução ao Aprendizado Profundo com o PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Por que precisamos da função de perda?

  • Informa a qualidade do modelo durante o treinamento
  • Recebe uma previsão de modelo $\hat{y}$ e a verdade base $y$
  • Gera um float

$$

Diagrama da função de perda

Introdução ao Aprendizado Profundo com o PyTorch

Por que precisamos da função de perda?

  • Classe 0: mamífero, classe 1: ave, classe 2: réptil
Pelo Penas Ovos Leite Barbatanas Pernas Cauda Doméstico Tamanho Classe
1 0 0 1 0 4 0 0 1 0

$$

  • Classe prevista = 0 -> correta = perda baixa
  • Classe prevista = 1 -> errado = perda alta
  • Classe prevista = 2 -> errado = perda alta

$$

  • Nossa meta é minimizar a perda
Introdução ao Aprendizado Profundo com o PyTorch

Conceitos de one-hot encoding

  • $loss = F(y, \hat{y})$
  • $y$ é um inteiro (rótulo de classe)
    • Ex.: $y=0$ quando $y$ é mamífero
  • $\hat{y}$ é um tensor (previsão antes de softmax)
    • Se N for o número de classes, como N = 3
    • $\hat{y}$ é um tensor com N dimensões,
      • Ex.: $\hat{y}$ = [-5.2, 4.6, 0.8]
Introdução ao Aprendizado Profundo com o PyTorch

Conceitos de one-hot encoding

  • Converter um inteiro y em um tensor de zeros e uns

One-hot encoding

Introdução ao Aprendizado Profundo com o PyTorch

Transformação de rótulos com 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])
Introdução ao Aprendizado Profundo com o PyTorch

Perda de entropia cruzada no 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)
Introdução ao Aprendizado Profundo com o PyTorch

Reunindo tudo

A função de perda usa:

  • pontuações: previsões do modelo antes da função softmax final
  • one_hot_target: rótulo de verdade base com one-hot encoding

Saídas da função de perda:

  • perda: um único float

Diagrama da função de perda com valores

Introdução ao Aprendizado Profundo com o PyTorch

Vamos praticar!

Introdução ao Aprendizado Profundo com o PyTorch

Preparing Video For Download...