코드에서는 무슨 차이가 있어?
아마 이런 글을 찾은 사람들은 구현할 때 이 둘의 차이가 크게 없다고 보고 궁금해서 찾아봤을 것이다.
나도 그렇다. 대강 이런 생각을 했었다.
- 어차피 둘 다 정답을 향해 수렴하는데?
- 학습은 뭘 쓰든 잘 될 것 같은데?
분포적으로는 이해를 했지만
찾아보면 이런 이야기를 한다.
- 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
'NLP > 용어정리' 카테고리의 다른 글
[용어정리] Dual Softmax Loss (0) | 2024.02.02 |
---|---|
[용어정리] SC: Self-Consistency (1) | 2024.01.09 |
[용어정리] reparameterization trick (0) | 2023.01.03 |
[용어정리] ELBO (0) | 2023.01.02 |
[용어정리] ML(Maximum Likelihood) vs MAP(Maximum A Posterior) (0) | 2022.12.30 |