Haru's 개발 블로그

[NLP] MSE(Mean Square Error)/ CrossEntropy / BinaryCrossEntopy에 대하여? 본문

머신러닝 & 딥러닝/NLP(자연어 처리)

[NLP] MSE(Mean Square Error)/ CrossEntropy / BinaryCrossEntopy에 대하여?

Haru_29 2023. 8. 26. 21:28

MSE(Mean Square Error)

 

MSE는 회귀모델에서 가장 기본적으로 사용되는 손실 함수 중 하나입니다. 이 손실 함수는 예측값과 실제값의 차이를 제곱하여 오차를 계산하고, 이를 데이터 샘플 수로 나눈 후 평균을 취합하는 특징을 가지고 있어 모델의 성능을 평가하는데 사용됩니다. MSE는 오차가 작을수록 모델의 예측이 실제 데이터에 더 잘 맞는 것을 의미합니다. 따라서 MSE는 최소화해야 하는 값으로, 더 낮은 MSE를 가진 모델일수록 더 우수한 모델로 평가됩니다.

MSE는 회귀 모델에서 주로 사용됩니다. 회귀 모델은 연속적인 출력 값을 예측하는데 사용되며, 출력 값과의 오차를 측정하는 데에 MSE가 적합합니다. 그 예로 선형 회귀(Linear Regression), 다변수 회귀(Multiple Regression), 인공 신경망(Neural Networks)가 있습니다.

MSE의 최소값은 0입니다. 이는 모든 데이터 포인트의 예측값과 실제값이 완벽하게 일치할 때, 즉 오차가 전혀 없을 때 발생합니다. 반대로, MSE의 최대값은 정해져 있지 않습니다. MSE는 제곱 오차를 평균한 값이기 때문에 오차가 클수록 제곱되어 더 큰 값을 가지게 됩니다. 다만, 이런 경우는 실제로는 매우 드물며, 일반적으로 잘못된 모델 또는 비현실적인 입력 데이터가 있을 때 발생할 수 있습니다.

예를 들어, 임의값으로 실제값이 5이고 예측값이 7이라고 가정을 해보겠습니다. 그러면 MSE = (실제값 - 예측값)² / 데이터 포인트 수 = (5-7)²/1 = 4이므로 MSE는 4가 됩니다. 이는 예측값이 실제값보다 2만큼 크다는 것을 의미합니다. 따라서 이 모델은 평균적으로 2만큼 실제값을 과소 예측하는 경향이 있다고 볼 수 있습니다. MSE가 낮을수록 모델의 예측이 실제값과 가깝다고 해석할 수 있습니다. 그러므로 모델을 개선하고자 할 때는 MSE를 최소화하는 방향으로 학습을 진행하면 됩니다.

 

CrossEntropy / BinaryCrossEntopy

CrossEntropy는 분류 문제에서 주로 사용되는 손실 함수로, 예측값과 실제값 사이의 차이를 측정하여 오차를 계산하고, 이를 데이터 샘플 수로 나눈 후 평균을 취합하는 특징을 가지고 있어 모델의 성능을 평가하는데 사용됩니다. 여기서 실제값은 one-hot 인코딩된 벡터이며, 예측값은 모델이 예측한 클래스의 확률 분포입니다.

CrossEntropy은 다중 클래스 분류 문제에서 특히 유용합니다. 예측값과 실제값 사이의 확률 분포를 비교하여 모델이 다양한 클래스에 대해 얼마나 확신하는지 알 수 있습니다. 또한 CrossEntropy는 벡터화된 계산을 사용하여 빠르게 최적화할 수 있으며, 다중 클래스 분류 문제에 대한 효과적인 손실 함수로 사용됩니다.

CrossEntropy의 최소값은 0이며, 이는 모델의 예측이 완벽하게 실제값과 일치할 때 발생합니다. 반대로, CrossEntropy의 최댓값은 정해져 있지 않으며, 무한대로 커질 수 있습니다. 교차 엔트로피의 최대값이 무한대로 나오는 케이스는 일반적으로 모델의 예측이 매우 부정확하거나 잘못되었을 때 발생할 수 있습니다.


예를 들어, 임의값으로 실제값이 1이고 예측값이 0.8이라고 가정을 해보겠습니다. 그러면 CrosssEntropy는 CrossEntropy = -(1 * log(0.8)) = -(-0.223) ≈ 0.223으로 계산이 됩니다. 이 값은 모델의 예측이 실제값과 멀어질수록 증가하는 값입니다. 그러므로 CrossEntropy 손실을 최소화하도록 모델을 학습하면, 모델의 예측이 실제값에 더 가까워지고 분류 작업을 더 잘 수행할 수 있습니다.

 

다만, 무한대로 나오는 예를 들어 이항 분류(Binary Classification) 문제를 가정하겠습니다. 클래스가 2개(양성과 음성)인 경우를 생각해보겠습니다. 실제 확률 분포에서 양성 클래스의 확률이 1이고 음성 클래스의 확률이 0일 때, 모델이 예측한 양성 클래스의 확률이 0에 가까워질 때 교차 엔트로피의 최대값이 무한대로 수렴할 수 있습니다.

실제 확률 분포:

P(양성) = 1
P(음성) = 0
모델의 예측 확률 분포:

P(양성) ≈ 0
P(음성) ≈ 1
이 때, 교차 엔트로피를 계산하면 다음과 같습니다:

Cross-Entropy = - (1 * log(0)) - (0 * log(1)) = - (-∞) - (0 * 0) = ∞


BinaryCrossEntopy는 이진 분류에서 주로 사용되는 손실 함수로, 예측값과 실제값 사이의 차이를 측정하여 오차를 계산하고, 이를 데이터 샘플 수로 나눈 후 평균을 취합하는 특징을 가지고 있어 모델의 성능을 평가하는데 사용됩니다. 이 손실 함수는 실제 클래스와 예측 클래스 간의 차이를 측정하는데, 두 클래스를 0 또는 1로 표현하여 사용합니다.

Binary Cross Entropy는 이진 분류 문제에서 특히 유용합니다. 이 손실 함수는 0 또는 1로 표현된 이진 클래스를 사용하며, 이러한 경우에는 두 클래스 간의 괴리를 효과적으로 측정할 수 있습니다.

Binary Cross Entropy의 최소값은 0이며, 이는 모델의 예측이 완벽하게 실제값과 일치할 때 발생합니다. 반대로, Binary Cross Entropy의 최댓값은 정해져 있지 않으며, Binary Cross Entropy의 값은 확률값을 로그 함수에 적용하므로, 정확한 값이 0 또는 1에서 멀어질수록 무한대로 커질 수 있습니다. Binary Cross Entropy 손실 함수의 최대값이 무한대로 나오는 경우는 모델의 예측이 실제 클래스와 역으로 반대되는 경우입니다

예를 들어, 임의값으로 실제 클래스가 1이고 모델의 예측 확률이 0.8인 경우를 생각해봅시다. 그러면 Binary Cross Entropy는 다음과 같이 계산됩니다. BCE(1,0.8)=−[1⋅log(0.8)+(1−1)⋅log(1−0.8)]=−[0.223+0]≈−0.223이므로 손실 값은 약 -0.223이 됩니다. 이 값은 모델의 예측이 실제 클래스에 가까워질수록 작아지며, 0에 가까울수록 예측이 실제 클래스에 가깝다고 해석할 수 있습니다. 따라서 y = 0에서는 BCE 손실 함수의 첫 번째 항 (y * log(ŷ))은 0이 되고, y = 1 BCE 손실 함수의 두 번째 항 ((1 - y) * log(1 - ŷ))은 0이 되는데 이때는 BCE의 값은 무한대로 발산합니다.

Comments