TIL - Maximum Likelihood, NLL, Cross Entropy와 데이터 전처리

정승민·2026년 9월 22일

TIL

목록 보기
2/6

오늘은 딥러닝에서 자주 사용하는 Maximum Likelihood, NLL, Cross Entropy, Softmax + Cross Entropy, MSE와 데이터 전처리에서 사용하는 정규화, 표준화, Whitening에 대해 정리한다.

단순히 수식을 외우는 것보다 "왜 이걸 사용하는가?"를 중심으로 이해해보자.


1. Maximum Likelihood란?

📌 우리가 원하는 것은 무엇일까?

분류 모델을 학습한다고 생각해보자.

입력 데이터와 정답은 다음과 같이 표현할 수 있다.

(xi,yi)(x_i, y_i)
  • xix_i: i번째 입력 데이터
  • yiy_i: i번째 데이터의 정답 클래스
  • ii: 데이터의 인덱스
  • θ\theta: 모델이 가지고 있는 모든 weight, bias 등의 파라미터

예를 들어 MNIST라면,

x_i = 숫자 3 이미지
y_i = 3

이다.

🚨 여기서 yiy_i는 One-Hot Encoding의 0, 1 값이 아니다.
정답 클래스의 번호를 의미한다.


📌 모델이 정답에 얼마나 높은 확률을 줬는가?

모델은 입력 xix_i가 들어왔을 때 각 클래스에 대한 확률을 계산한다.

P(yi∣xi,θ)P(y_i \mid x_i, \theta)

이 식의 의미는:

현재 모델 θ\theta에서 입력 xix_i가 들어왔을 때 실제 정답 yiy_i가 나올 확률

이다.

예를 들어:

정답: class 3

모델 출력:
[0.01, 0.02, 0.05, 0.80, 0.12]
                  ↑
               class 3

이면,

P(yi=3∣xi,θ)=0.8P(y_i=3 \mid x_i,\theta)=0.8

이다.

우리는 당연히 이 정답 확률을 높이고 싶다.


2. Maximum Likelihood Estimation

데이터가 하나가 아니라 NN개라면 모든 데이터에 대해 정답 확률을 높이고 싶다.

그래서 다음과 같이 확률을 곱한다.

L(θ)=∏i=1NP(yi∣xi,θ)L(\theta) = \prod_{i=1}^{N} P(y_i \mid x_i,\theta)

여기서:

  • NN: 전체 학습 데이터 개수
  • P(yi∣xi,θ)P(y_i|x_i,\theta): i번째 데이터에서 실제 정답에 준 확률
  • L(θ)L(\theta): 현재 모델이 실제 데이터를 얼마나 잘 설명하는지를 나타내는 Likelihood

그리고 우리의 진짜 목적은:

θ∗=arg⁡max⁡θL(θ)\theta^* = \arg\max_{\theta}L(\theta)

이다.

즉,

실제 정답들이 나올 확률을 가장 크게 만드는 모델 파라미터 θ\theta를 찾자.

이것이 Maximum Likelihood Estimation, MLE이다.

📌 간단한 예시

현재 모델이 세 데이터의 정답에 다음 확률을 줬다고 하자.

데이터 1 → 0.6
데이터 2 → 0.7
데이터 3 → 0.5

Likelihood는:

0.6×0.7×0.5=0.210.6\times0.7\times0.5=0.21

그런데 학습 후:

데이터 1 → 0.8
데이터 2 → 0.9
데이터 3 → 0.7

이 되었다면:

0.8×0.9×0.7=0.5040.8\times0.9\times0.7=0.504

Likelihood가 증가했다.

💡 Maximum Likelihood의 핵심
모델이 우리가 실제로 관측한 정답에 높은 확률을 주도록 모델의 weight를 찾는 것.


3. 왜 Log를 사용하는가?

Maximum Likelihood에는 한 가지 문제가 있다.

데이터가 많아지면 작은 확률들을 계속 곱해야 한다.

0.8 × 0.7 × 0.9 × 0.6 × 0.8 × ...

확률은 1보다 작기 때문에 계속 곱하면 값이 매우 작아진다.

또한 곱셈은 미분하기도 상대적으로 불편하다.

그래서 log를 사용한다.

로그의 중요한 성질은:

log⁡(ab)=log⁡a+log⁡b\log(ab)=\log a+\log b

이다.

따라서:

log⁡L(θ)=∑i=1Nlog⁡P(yi∣xi,θ)\log L(\theta) = \sum_{i=1}^{N} \log P(y_i|x_i,\theta)

가 된다.

곱셈이 덧셈으로 변경되었다.

이것을 Log-Likelihood라고 한다.


4. NLL - Negative Log Likelihood

Maximum Likelihood는 값을 최대화해야 한다.

하지만 딥러닝에서는 일반적으로 Loss를 최소화하는 방식으로 학습한다.

따라서 Log-Likelihood에 음수를 붙인다.

LNLL=−∑i=1Nlog⁡P(yi∣xi,θ)L_{NLL} = -\sum_{i=1}^{N} \log P(y_i|x_i,\theta)

이것이 Negative Log Likelihood(NLL) 이다.

즉:

Likelihood 최대화
        ↓
Log-Likelihood 최대화
        ↓
Negative Log-Likelihood 최소화

세 개는 결국 같은 목적을 다른 형태로 표현한 것이다.

🎯 NLL을 왜 쓰는가?
Maximum Likelihood라는 통계적 목표를 딥러닝에서 사용하기 편한 Loss 최소화 문제로 바꾸기 위해 사용한다.


5. Cross Entropy

Cross Entropy는 정답 확률 분포와 모델이 예측한 확률 분포의 차이를 측정한다.

다중 클래스 분류에서:

LCE=−∑k=1Ctklog⁡pkL_{CE} = -\sum_{k=1}^{C} t_k\log p_k

여기서:

  • CC: 클래스 개수
  • kk: 클래스의 인덱스
  • tkt_k: 정답의 One-Hot 값
  • pkp_k: 모델이 k번째 클래스에 예측한 확률

예를 들어 정답이 class 3이라면:

정답 t:
[0, 0, 0, 1, 0]

예측 p:
[0.01, 0.02, 0.05, 0.80, 0.12]

Cross Entropy는:

−(0log⁡0.01+0log⁡0.02+0log⁡0.05+1log⁡0.8+0log⁡0.12)-\left( 0\log0.01+ 0\log0.02+ 0\log0.05+ 1\log0.8+ 0\log0.12 \right)

결국:

L=−log⁡0.8L=-\log0.8

만 남는다.


6. NLL과 Cross Entropy는 왜 같은가?

NLL은:

−log⁡P(yi∣xi,θ)-\log P(y_i|x_i,\theta)

즉 정답 클래스에 모델이 준 확률만 사용한다.

Cross Entropy는:

−∑ktklog⁡pk-\sum_k t_k\log p_k

이지만 One-Hot Encoding에서는 정답 클래스만 tk=1t_k=1이고 나머지는 0이다.

따라서:

−log⁡p정답-\log p_{\text{정답}}

만 남는다.

즉 One-Hot + 다중 클래스 분류 환경에서는

NLL=Cross EntropyNLL = Cross\ Entropy

가 된다.

개념관점
NLL실제 정답이 나올 확률을 최대화하자
Cross Entropy정답 분포와 예측 분포의 차이를 줄이자

💡 NLL은 Likelihood 관점, Cross Entropy는 확률분포 관점에서 시작하지만 One-Hot 분류에서는 같은 식으로 귀결된다.


7. Softmax

Neural Network의 마지막 출력은 바로 확률이 아니다.

예를 들어:

z = [2.0, 1.0, 0.5]

이런 값을 출력할 수 있다.

이를 Logit이라고 한다.

Softmax는 logit을 확률로 변환한다.

pi=ezi∑jezjp_i= \frac{e^{z_i}} {\sum_j e^{z_j}}

여기서:

  • ziz_i: i번째 클래스의 logit
  • pip_i: i번째 클래스의 예측 확률
  • jj: 모든 클래스를 순회하기 위한 인덱스

🎯 Softmax를 왜 쓰는가?
모델이 출력한 임의의 실수값을 합이 1인 클래스 확률분포로 만들기 위해서다.


8. Softmax + Cross Entropy가 좋은 이유

Softmax + Cross Entropy를 함께 사용하는 중요한 이유 중 하나는 gradient가 매우 깔끔해지기 때문이다.

정답이 kk번째 클래스라고 하자.

Cross Entropy:

L=−log⁡pkL=-\log p_k

Softmax는:

pk=ezk∑jezjp_k= \frac{e^{z_k}} {\sum_j e^{z_j}}

이므로 합치면:

L=−log⁡(ezk∑jezj)L = -\log \left( \frac{e^{z_k}} {\sum_j e^{z_j}} \right)

로그 성질을 사용하면:

L=−zk+log⁡(∑jezj)L = -z_k+ \log \left( \sum_j e^{z_j} \right)

9. Loss를 각 logit에 대해 미분

우리가 원하는 것은:

∂L∂zi\frac{\partial L}{\partial z_i}

이다.

여기서:

  • LL: Loss
  • ziz_i: i번째 클래스의 logit
  • ∂L∂zi\frac{\partial L}{\partial z_i}: ziz_i를 조금 바꿨을 때 Loss가 얼마나 변하는지를 나타내는 gradient

📌 정답 클래스인 경우

정답 클래스가 i=ki=k라면:

−zk-z_k

를 zkz_k로 미분하면:

−1-1

그리고:

log⁡(∑jezj)\log\left(\sum_j e^{z_j}\right)

를 zkz_k로 미분하면:

ezk∑jezj\frac{e^{z_k}} {\sum_j e^{z_j}}

가 된다.

그런데 이것은 바로 Softmax의 pkp_k이다.

따라서:

∂L∂zk=pk−1\frac{\partial L}{\partial z_k} = p_k-1

📌 정답 클래스가 아닌 경우

정답이 아닌 클래스 ii에서는 −zk-z_k와 관계가 없으므로 미분하면 0이다.

따라서:

∂L∂zi=pi\frac{\partial L}{\partial z_i} = p_i

가 된다.


10. 결국 Gradient는 p - t

One-Hot 정답을 사용하면 이를 하나의 식으로 표현할 수 있다.

∂L∂zi=pi−ti\frac{\partial L}{\partial z_i} = p_i-t_i

여기서:

  • pip_i: i번째 클래스의 예측 확률
  • tit_i: i번째 클래스의 One-Hot 정답값
  • ziz_i: i번째 클래스의 Softmax 이전 logit

예를 들어:

예측:
p = [0.23, 0.63, 0.14]

정답:
t = [0, 1, 0]

이라면:

gradient = p - t
         = [0.23, -0.37, 0.14]

이다.

Gradient Descent에서는:

znew=z−η∂L∂zz_{\text{new}} = z-\eta\frac{\partial L}{\partial z}

여기서 η\eta는 learning rate다.

정답 클래스는 gradient가 음수이므로 logit이 증가하고, 오답 클래스는 gradient가 양수이므로 logit이 감소한다.

🎯 Softmax + Cross Entropy를 사용하면 모델이 정답 확률은 올리고 오답 확률은 내리는 방향의 gradient가 매우 직접적으로 만들어진다.


11. MSE

MSE 계열의 제곱 오차는 예측값과 정답값의 거리를 보는 방식이다.

분류 출력을 One-Hot과 비교한다고 하면:

E=12∑k=1C(yk−tk)2E = \frac{1}{2} \sum_{k=1}^{C} (y_k-t_k)^2

여기서:

  • CC: 클래스 개수
  • yky_k: k번째 클래스의 예측값
  • tkt_k: k번째 클래스의 정답 One-Hot 값

예를 들어:

예측:
[0.1, 0.2, 0.7]

정답:
[0, 0, 1]

이면 3개 값 모두 계산한다.

12[(0.1−0)2+(0.2−0)2+(0.7−1)2]\frac12 \left[ (0.1-0)^2 + (0.2-0)^2 + (0.7-1)^2 \right]
MSECross Entropy
예측 벡터와 정답 벡터의 거리정답 클래스의 확률
모든 출력의 오차를 계산One-Hot에서는 정답 항만 남음
회귀에서 주로 사용분류에서 주로 사용

💡 MSE는 "얼마나 멀리 틀렸는가?"를 보고, Cross Entropy는 "정답에 얼마나 높은 확률을 줬는가?"를 본다고 이해하면 쉽다.


12. 데이터 전처리는 왜 할까?

모델에 들어오는 feature마다 값의 크기가 크게 다르면 학습이 불안정하거나 느려질 수 있다.

그래서 모델이 다루기 쉬운 형태로 데이터를 변환한다.

대표적으로:

  • 정규화
  • 표준화
  • Whitening

이 있다.


13. 정규화 - Normalization

여기서는 흔히 사용하는 Min-Max Scaling 기준으로 생각한다.

x′=x−xmin⁡xmax⁡−xmin⁡x' = \frac{x-x_{\min}} {x_{\max}-x_{\min}}

여기서:

  • xx: 원래 값
  • xmin⁡x_{\min}: 데이터의 최소값
  • xmax⁡x_{\max}: 데이터의 최대값
  • x′x': 변환된 값

예를 들어 이미지 픽셀은:

0 ~ 255

이므로:

x′=x255x'=\frac{x}{255}

를 하면 0 ~ 1 범위로 변경된다.

🎯 왜 쓰는가?
데이터의 값 범위를 비슷하게 맞춰 모델이 특정 큰 값에 과도하게 영향을 받는 것을 줄이기 위해서다.


14. 표준화 - Standardization

표준화는 데이터를 평균 0, 표준편차 1에 가깝게 만든다.

x′=x−μσx' = \frac{x-\mu}{\sigma}

여기서:

  • xx: 원래 값
  • μ\mu: 평균
  • σ\sigma: 표준편차
  • x′x': 표준화된 값

🎯 왜 쓰는가?
Feature마다 평균과 분산이 다른 문제를 줄여서 학습을 안정적으로 만들기 위해서다.


15. Whitening

Whitening은 표준화보다 한 단계 더 나아간다.

표준화는 각각의 feature의 스케일을 맞추지만, feature끼리의 상관관계는 남아 있을 수 있다.

Whitening은:

분산을 맞추고 feature 간 상관관계까지 제거

하는 것이 목적이다.

먼저 평균을 제거한다.

Xc=X−μX_c=X-\mu

여기서:

  • XX: 전체 데이터
  • μ\mu: feature별 평균
  • XcX_c: 평균이 제거된 데이터

그리고 공분산 행렬:

Σ=1NXcTXc\Sigma = \frac1N X_c^T X_c

를 구한다.

이를 고유값 분해하면:

Σ=UΛUT\Sigma=U\Lambda U^T

여기서:

  • UU: 데이터의 새로운 방향을 나타내는 고유벡터
  • Λ\Lambda: 각 방향의 분산을 나타내는 고유값

PCA Whitening은:

Xwhite=XcUΛ−1/2X_{\text{white}} = X_c U\Lambda^{-1/2}

와 같이 수행할 수 있다.

결과적으로:

Cov(Xwhite)≈ICov(X_{\text{white}})\approx I

가 된다.

즉:

각 feature의 분산 ≈ 1
feature 사이 상관관계 ≈ 0

가 된다.

🎯 왜 쓰는가?
Feature 간 중복된 상관관계를 제거하고 각각의 방향을 비슷한 스케일로 만들어 데이터를 더 독립적으로 다루기 위해서다.


16. 정규화 / 표준화 / Whitening 비교

방법핵심 목적결과
정규화값의 범위를 맞춤예: 0~1
표준화평균과 분산을 맞춤평균 0, 표준편차 1
Whitening스케일 + feature 상관관계 제거공분산 ≈ 단위행렬

이미지 딥러닝에서는 흔히:

픽셀값 0~255
   ↓
0~1 Scaling
   ↓
채널별 Mean / Std 표준화
   ↓
Neural Network

와 같은 형태를 사용한다.


17. 전체 흐름 정리

Model
  ↓
Logit z
  ↓
Softmax
  ↓
Probability p
  ↓
Cross Entropy
  ↓
Loss
  ↓
Gradient 계산
  ↓
Weight Update

Cross Entropy의 배경을 따라가면:

실제 정답이 나올 확률을 높이고 싶다.
             ↓
Maximum Likelihood
             ↓
Log-Likelihood
             ↓
Negative Log-Likelihood
             ↓
One-Hot Classification
             ↓
Cross Entropy

그리고 모델에 데이터를 넣기 전에는:

Raw Data
   ↓
Normalization / Standardization
   ↓
필요하다면 Whitening
   ↓
Model Input

과 같은 전처리 과정을 사용할 수 있다.


18. 한 줄 정리

💡 Maximum Likelihood는 실제 정답의 확률을 최대화하자는 원칙이고, NLL은 이를 Loss 최소화 형태로 바꾼 것이며, One-Hot 다중분류에서는 Cross Entropy와 같은 형태가 된다. Softmax + Cross Entropy는 gradient가 p−tp-t로 깔끔하게 계산되어 분류 학습에 매우 적합하다.

그리고 전처리는:

💡 정규화는 범위, 표준화는 평균과 분산, Whitening은 여기에 feature 간 상관관계까지 조정하는 과정이다.

profile
매일 꾸준히

0개의 댓글