IT 프로그래밍/AI

[Loss function] MSE vs log-likelihood

기술1 2025. 3. 30. 00:26

확률 곱셈의 수치적 불안정성과 로그 변환의 필요성

if 강아지사진
	q를 최대화해야
else if 고양이사진
	q를 최소화해야

확률 q를 최소화하는 것은, 수학적으로 1 - q를 최대화하는 것과 같습니다.

이 개념은 베르누이 분포의 확률 표현인
q^p * (1 - q)^(1 - p)
을 최대화하는 것과도 같습니다. 이 수식은 p가 1일 때는 q, p가 0일 때는 1 - q를 취하는 구조로, 주어진 정답에 따라 올바른 확률을 선택하여 곱하는 방식입니다.

 

이는 독립시행에서 전체 확률을 계산하기 위해 각 시행의 확률을 곱하는 방식과 같습니다. 예를 들어, 어떤 모델이 하나의 데이터에서 정답을 0.9 확률로 맞춘다고 하면, 이를 100번 반복하면 전체 확률은 0.9^100 ≈ 0.000026이 됩니다.

 

이처럼 0과 1 사이의 값을 반복해서 곱하게 되면, 곱셈 결과가 기하급수적으로 0에 가까워지는 수치적 문제가 발생합니다.

 

또한, 0과 1 사이의 실수는 무한히 존재하지만, 컴퓨터는 유한한 비트(예: 64비트)로 실수를 표현하기 때문에 정확한 표현이 불가능하고, precision(정밀도) 한계로 인해 수치적 오차가 발생합니다. 곱셈이 반복되면 이 오차가 커져 결국 로스를 계산하는 데 어려움이 생깁니다.


✅ 해결책: 로그 변환

이 문제의 해결책은 로그(log)를 취하는 것입니다.

확률을 곱하는 대신 로그를 취하면 곱셈이 덧셈으로 바뀌기 때문에 수치적으로 훨씬 안정적인 계산이 가능해집니다:

log(q^p * (1 - q)^(1 - p))  
= p * log(q) + (1 - p) * log(1 - q)

log(q₁^p₁ * (1 - q₁)^(1 - p₁) * q₂^p₂ * (1 - q₂)^(1 - p₂) * ...)

p₁ * log(q₁) + (1 - p₁) * log(1 - q₁) +
p₂ * log(q₂) + (1 - p₂) * log(1 - q₂) + ...

 

 

📌 로그를 취해도 되는 이유: 단조증가성

"그런데 로그를 왜 취해도 되는 거야?" 라는 의문이 들 수 있습니다.

그 이유는 로그 함수는 단조 증가 함수이기 때문입니다.
즉, 어떤 값을 최대화하려고 할 때, 그 값을 로그로 바꿔도 극댓값을 주는 지점(argmax)은 동일합니다:

 
argmax x ≡ argmax log(x)
 

따라서 확률을 직접 곱해서 최대화하려는 것과, 그 확률의 로그를 더해서 최대화하려는 것은 결과적으로 같은 파라미터(w, b) 를 찾는 과정입니다.

 

 

  • 확률을 곱하면 0에 수렴 → 수치적 불안정 발생
  • 로그를 취하면 덧셈으로 바뀌고 안정적 계산 가능
  • 로그는 단조 증가함수이므로 최대화 위치(argmax)는 동일
  • 이론적으로는 베르누이 분포 기반이며, Binary Cross Entropy와 연결됨

 

 

MSE vs Log-Likelihood 로스 함수 선택

왜 분류 문제에서는 MSE보다 Cross Entropy (log-likelihood)를 써야 할까?
→ 그 이유는 수치적 안정성, 최적화 효율성, 그리고 함수의 모양(convex성)에 있음.

 

 

 1. “확률 분포인데 왜 합이 1이 아니야?”에 대한 이야기

신경망 마지막에 softmax를 붙이면 출력이 확률 분포처럼 보이지만,
그 자체는 "확률"이 아니라, conditional probability-like function입니다.

  • 즉, 확률처럼 해석할 수는 있지만,
  • 실제로 통계에서 말하는 조건부 확률밀도 함수(conditional PDF)는 아닙니다.
  • 그 이유는 정의역 전체에서의 합이 1이 아니기 때문.
    (예: 연속공간이면 적분해서 1이 나와야 함)

Cross Entropy는 정답에서 멀리 벗어났을 때 훨씬 강하게 패널티를 줌.
MSE는 정답에서 0.001만큼 벗어나든 0.1만큼 벗어나든, 패널티 크기가 적음.

 

 2. MSE는 non-convex, Log-Loss는 convex

  • 마지막 출력층에서 sigmoid를 거친 뒤:
    • output = 1 / (1 + e^(-w)) = q
  • 이 q에 대해 loss를 그려보면:
Loss Function그래프 모양Gradient Descent에 유리?
MSE non-convex ❌ 로컬 최소점에 빠질 수 있음
-log(q) convex ✅ 어디서 시작하든 global minimum 쪽으로 감

📌 Convex 함수는 미분(기울기)이 한쪽 방향이므로 최적화에 유리
MSE는 곡선이 뒤집히기도 해서 학습이 잘 안 될 수 있음

 

3. 층이 깊어질수록 non-convex는 더 심해짐

  • 원래 딥러닝 모델은 전체적으로 non-convex한 구조
  • 그런데 마지막 출력층에서라도 convex한 loss를 쓰는 게 낫다
  • MSE는 마지막 층조차도 non-convex로 만들기 때문에 더 학습이 어려움
  • Cross Entropy는 convex한 모양이 유지돼서 학습에 유리함

4. 실전에서의 적용 (협업에서 MSE vs CE 논쟁 시)

  • 누군가 "MSE 쓰면 안돼?"라고 하면 이렇게 답:

"분류 문제에서는 Cross Entropy를 써야
왜냐하면 MSE는 비선형 함수에 대해 non-convex 손실 함수를 만들어서
학습이 느리거나 멈출 수 있음.

반면 Cross Entropy는 convex해서 더 안정적으로 학습할 수 있고,
특히 예측이 틀릴수록 더 강하게 패널티를 주기 때문에 성능도 좋아짐

 

'IT 프로그래밍 > AI' 카테고리의 다른 글

다중분류 이진분류 요약  (0) 2025.03.30
인공신경망은 MLE 기계  (0) 2025.03.30
[딥러닝] 기본적 개념 정리  (0) 2025.03.24
[Pytorch] BMM, Layer, Activation Function  (0) 2025.03.24
파이토치의 구성요소  (0) 2025.03.19