본문 바로가기

NLP/용어정리

[용어정리] MSE loss vs Cross Entropy loss

 

코드에서는 무슨 차이가 있어?

 

아마 이런 글을 찾은 사람들은 구현할 때 이 둘의 차이가 크게 없다고 보고 궁금해서 찾아봤을 것이다.

 

나도 그렇다. 대강 이런 생각을 했었다.

  • 어차피 둘 다 정답을 향해 수렴하는데?
  • 학습은 뭘 쓰든 잘 될 것 같은데?

 

분포적으로는 이해를 했지만

찾아보면 이런 이야기를 한다.

  • Gaussian 분포를 미분하면, MSE loss 가 나온다 → 그러므로 연속 확률 변수에 쓰자
  • Categorical 분포를 미분하면, CE loss 가 나온다 → 그러므로 이산 확률 변수에 쓰자

(여기에 정리가 잘 되어 있어서 참고하시길.)

 

좋다. 원리적으로는 이게 맞지.

 

그래서 성능도 그게 더 좋아?

근데 성능 면에서도 더 좋은 건가? 그에 대해서는 말이 없었다. 그냥  Gaussian 분포는 연속적인 변수를 의미하고, 이거 negative log likelihood로 바꿔서 미분하면 MSE loss 가 나오니까, 연속 확률 변수에 쓰는 게 맞다는 이야기였다. 내가 부족해서 놓친 게 있을 것 같았다.

 

그래서 좀 더 고민해봤다.

 

오차에 더 엄격한 Cross Entropy Loss

먼저 많이 틀렸을 때, 그에 대한 손실 계산이 컸다. 정답이 1인데, 예측값이 0.001이었으면 loss 값은 다음과 같다.

  • MSE loss: 0.999 ^ 2 → 대략 1에 가깝다.
  • Cross Entropy loss: -1 * log 0.001 → 6.907

log 함수의 특성상, 0 ~ 1일 때 범위가 무한대까지 뻗는다. 그러니, 못 맞춘다 싶으면 매우 큰 값을 선사해 back propagation이 많이 일어날 것이다. 반면, MSE loss 는 x^2 함수를 기반으로 하기 때문에, 0 ~ 1 사이의 값만 나타낸다.

 

이산 분포에 유리한 Cross Entropy Loss

위 점을 이해했다면, 이산 분포는 Cross Entropy loss 가 어울린다는 걸 깨달을 수 있다. Cross Entropy loss 의 목적은 분류다. 간단히 말해서, 0 아니면 1이다. 색깔로 비유하자면 다음과 같다.

 

분류 문제로 바라보다

검정 계열(1)의 색과 하얀 계열(0)의 색을 구분하고자 한다. 이때,  진한 회색이든 검은 색에 가까운 회색이든 흰 색이 조금 섞였다고 해서 0.7, 0.8 이렇게 분류할 필요가 없다. 그냥 조금이라도 검은 계열이 강하다 싶으면, 최대한 1에 가깝도록 몰아붙이면 된다. Cross Entropy loss 는 틀린 값에 엄격하기 때문에, 분류의 관점에서는 더 탁월할 수 밖에 없다.

 

 

회귀 문제로 바라보다

이제는  진한 회색과 검은 색에 가까운 회색을 무작정 1이라고 불러선 안 된다. 검정색이 얼마나 섞였는지도 표현이 되어야 한다.

 

다른 예시를 들자면, 미성년자와 성인을 구분할 때는 만 19세를 넘냐 안 넘냐만 따졌다. 노인이든 청년이든 중년이든 다 똑같았다. 그런데 갑자기, 나이 추측기를 만든다고 하면 노인과 중년, 청년층 모두 섬세하게 구분해야 한다. 이런 점에서 볼 때는 MSE loss 가 더욱 정밀하게 값을 조정하며 풀기 때문에 Cross Entropy Loss 보다 잘 할 것이다.

 

하지만 확실한 것은 없다

나는 이렇게 정리했지만, Deep Learning에서 실험 결과이외에 최고의 방법은 없다고 생각한다. 가령, scheduler나 AdamW를 기본적으로 먼저 쓰는 게 좋지만 다른 optimizer가 더 좋을 수도 있고 scheduler를 사용하지 않는 게 더 성능이 높을 수도 있다. dropout도 task마다 적용 비율에 따라 성능이 달라질 수 있고, 그건 오로지 실험을 정밀하게 해서 찾아내야 한다.

 

하지만 인간에게 직관이라는 게 있다. 일반적으로 좋다고 알려진 것부터, 권장하는 것부터 사용하는 게 시간을 절약하고 효과적으로 연구자들이 연구하는 길이라고 생각한다. 그러니, 일단 좋다고 알려진 것부터 쓰되, 확신은 갖지 않고 실험을 차근차근 해보자.


참고

https://vhrehfdl.tistory.com/137

 

MSE와 CEE에 대한 고찰

목표 여러 loss function이 있지만, classification task 경우에는 대부분 CEE를 사용하는 코드가 많다. MSE(Mean Squared Error)와 CEE(Cross Entropy Error)가 어떤 점이 다르길래 CEE를 자주 사용하는 것일까? 그것에 대

vhrehfdl.tistory.com