loss와 accuracy

정또치·2023년 6월 26일
0

지식++1

목록 보기
10/15

loss는 예측값과 정답의 차이 를 말하고
accuracy는 올바르게 예측된 데이터의 수 / 전체 데이터의 수 를 말한다.

loss가 작다고 해서 항상 acc가 높은 것이 아니고
반대로 loss가 높다고 해서 acc가 낮은 것은 아니다.


Acc가 높고 Loss가 낮은 경우

import numpy as np
import torch

y_pred = np.array([[0.3, 0.6, 0.1], [0.66, 0.3, 0.04]])
y_true = np.array([[0, 1, 0], [1, 0, 0]])

y_true = torch.from_numpy(y_true).float()  # NumPy 배열을 Torch Tensor로 변환

Loss = torch.nn.BCELoss()

y_loss = Loss(torch.from_numpy(y_pred).float(), y_true)
# y_true에선 y_true[0][1] 0.6, y_true[1][1] 0.66이 가장 크기에 
# y_pred가 [0][1]와 [1][1]이 크다고 해 둘 다 정답을 맞춘 경우

y_loss : tensor(0.2976)

acc : 1.0


Acc가 낮은 낮고 Loss가 높은 경우

import numpy as np
import torch

y_pred = np.array([[0.3, 0.6, 0.1], [0.66, 0.3, 0.04]])
y_true = np.array([[0, 0, 1], [1, 0, 0]])

y_true = torch.from_numpy(y_true).float()  # NumPy 배열을 Torch Tensor로 변환

Loss = torch.nn.BCELoss()

y_loss = Loss(torch.from_numpy(y_pred).float(), y_true)
# y_true에선 y_true[0][1] 0.6, y_true[1][1] 0.66이 가장 크지만
# y_pred는 [0][2]와 [1][1]이 크다고 해 둘 중 하나만 정답을 맞춘 경우

y_loss : tensor(0.7314)

acc : 0.5

acc의 경우 0.5 이면 구분을 못하는 것이다.


따라서 loss가 낮다고 해서 무조건 acc가 높은 것도 아니고
loss가 작다고 acc가 큼을 보장할 수는 없다.

profile
ddochi

0개의 댓글