Hello Computer Vision

딥러닝 손실함수 알아보기(MSE, BCE, CE) 본문

딥러닝/손실함수

딥러닝 손실함수 알아보기(MSE, BCE, CE)

지웅쓰 2022. 11. 16. 23:22

이번 데이터마이닝 수업에서 예측과 분류하는데 한가지 기법으로 Neural Network가 나오는데

이를 설명하시면서 손실함수 내용들이 나왔다.

분명 내가 자주 쓰는건데 낯설었다. 그래서 한번 정의하려고 한다. 

 

1. MSE(Mean Squared Error)

가장 직관적인 손실함수 방법이다.

$$ E = Loss = \frac{1}{2} (y - \hat{y})^2 $$
$y$는 정답값이고 $\hat{y}$ 는 예측값을 의미합니다. 번외로 $\bar{y}$ 는 평균값을 의미합니다.

예시 

정답 : 10(y)

예측 : 5

오차 : (10-5)^2 = 25

MSE의 특징이라하면 큰 오차에 대해 더 많은 처벌을 줄 수 있다는 점입니다.

MAE(Mean Absolute Error) 와는 다르게 미분이 가능해서 주로 사용됩니다.

 

2. BCE(Binary Cross Entropy)

우리가 분류를 할 때 두가지밖에 종류가 없을 경우 사용됩니다. ex) 강아지, 고양이

$$ E = Loss = -y log(\hat{y}) - (1 - y)log(1-\hat{y})$$

일단 로그함수를 살펴보겠습니다.

여기서 BCE에서의 a는 10이므로 왼쪽 그림입니다. 0으로 가까워질수록 밑으로 가므로 이를 반대로 해주기 위해

로그함수에 -를 붙여줌을 확인할 수 있습니다.

$1) y = 0, y hat = 0.9999$
보통 예측할 때 마지막 output값으로 sigmoid 함수를 줌으로써 0~1사이 값을 내뱉도록 합니다.

$0*log(0.9999) - (1-0)log(1 - 0.9999) = -log(0.0001)  = 4$

 

$2) y = 1, yhat = 0.0001$

$-log(0.0001) - (1-1)log(0.9999) = -log(0.0001) = 4$

 

$3) y = 1, yhat = 0.9999$

$-log(0.9999) - (1-1)log(0.0001) = 4.3e^{-5}$

 

이렇게 극단적인 예시들을 한번 들어보았는데요, 혹시 이해가 잘 되시나요?

1,2번 같은 경우 정답에 근접도 못했기 때문에 높은 손실값을 주었고

3번같은 경우 정답에 거의 근접했기 때문에 낮은 손실값을 주었음을 알 수 있습니다.

그리고 이런 분류를 할 때는 일반적으로 다 원핫인코딩을 사용합니다.(정답1)

 

3. CCE(Categorical Cross Entropy)

예전에도 한번 Cross Entropy에 대해서 다룬적이 있는데요, 그때는 손실함수로써 다룬 것이 아닌

KL divergence를 공부하면서 다루었었는데 써먹을 좋은 기회 같네요.

$$E = Loss = NLL loss + softmax$$ 

BCE와는 다르게 여러개의 클래스값에 대한 손실함수를 매겨야하므로 시그마를 사용합니다.

 

https://keepgoingrunner.tistory.com/135

 

F.cross entropy 구현 및 설명해보기

cross entropy이 놈은 공부해도 공부해도 계속 알쏭달쏭하다. 그래서 지금 나름 정리했다고 생각했는데 또 나중에 궁금해 할 수도 있긴한데 일단 지금 기준으로 내가 정리한 걸 적어보려고 한다. y =

keepgoingrunner.tistory.com

계속 헷갈려서 추가로 정리해봤습니다!

 

정답인 logit에 대해서는 1에 가깝게 하도록 손실값을 주고 정답이 아닌 logit에 대해서는 0에 가깝도록 손실값을 줍니다.

 

이렇게 3가지 손실함수에 대하여 알아보았는데요, GAN을 공부하면서 손실함수에 대한 정의들이 나타나는데

이를 잘 정의해야겠다고 생각을 합니다.

 

틀린점 있다면 지적해주시면 감사하겠습니다.