동전을 10번 던졌더니 앞면이 7번 나왔습니다. 이 동전이 공정한 동전일까요, 아니면 앞면이 더 잘 나오도록 조작된 동전일까요. "앞면이 나올 확률이 0.5인 동전"과 "0.7인 동전" 중 어느 쪽이 이 결과를 더 잘 설명할까요.
이 질문에 답하는 방법이 최대우도추정(MLE, Maximum Likelihood Estimation)입니다. 확률을 거꾸로 뒤집어서 생각하는 방식입니다. "이 데이터가 나올 확률이 가장 높은 모델은 무엇인가"를 찾는 겁니다. 처음엔 이 발상이 낯설었는데, 이게 딥러닝 손실 함수의 수학적 기반이라는 걸 알고 나서 완전히 다르게 보였습니다. 오늘은 그 연결을 따라가 보겠습니다.

확률 vs 가능도 — 같은 상황을 반대로 보는 법
확률(Probability)과 가능도(Likelihood)는 비슷해 보이지만 방향이 반대입니다. 확률은 모델이 고정된 상태에서 데이터가 나올 가능성을 봅니다. 가능도는 데이터가 고정된 상태에서 모델이 얼마나 그럴듯했는지를 봅니다.
가능도: L(모델 | 데이터) ← 데이터가 주어졌을 때 이 모델이 맞을 가능성
예시: 동전 앞면 7번/10번
확률 관점: p=0.5인 동전에서 앞면 7번 나올 확률 = 0.117
가능도 관점: 앞면 7번 결과를 가장 잘 설명하는 p는?
확률은 "이 주사위가 공정하다면 6이 나올 확률은?"이고, 가능도는 "6이 10번 연속으로 나왔다면 이 주사위가 공정할 가능성은?"입니다. 관측된 결과를 설명하는 데 어떤 모델이 더 적합한지를 따지는 게 가능도입니다.

최대우도추정이란 무엇인가
최대우도추정(MLE)의 목표는 단순합니다. 관측된 데이터를 가장 잘 설명하는 파라미터를 찾는 겁니다. 수식으로 쓰면 이렇습니다.
데이터 포인트들이 독립적이라면:
L(θ | x1, x2, ..., xn) = P(x1|θ) × P(x2|θ) × ... × P(xn|θ)
→ 이 곱셈 결과가 최대가 되는 θ를 찾는 것이 MLE
직관적으로 설명하면 이렇습니다. 내가 관측한 데이터가 "우연히 나왔을 가능성"이 가장 높은 모델을 고르는 겁니다. 데이터가 그 모델 아래에서 가장 자연스럽게 발생했을 것 같은 파라미터가 MLE의 답입니다.
실제 숫자로 계산해보기 — 동전 예시
동전을 10번 던져 앞면이 7번 나왔습니다. 앞면이 나올 확률 p를 MLE로 추정해 보겠습니다.
p=0.5일 때: L = 0.5^7 × 0.5^3 = 0.000977
p=0.7일 때: L = 0.7^7 × 0.3^3 = 0.002222 ← 더 높음
p=0.9일 때: L = 0.9^7 × 0.1^3 = 0.000478
→ p=0.7 근처에서 가능도가 최대
→ MLE 추정값: p = 7/10 = 0.7
앞면이 7번 나왔으니 p = 7/10 = 0.7이 MLE 답입니다. 직관적으로도 당연한 결론인데, MLE는 이 직관을 수학적으로 엄밀하게 도출합니다. 데이터가 100개, 1000개여도 같은 방식으로 계산됩니다.
로그 가능도를 쓰는 이유
실제 계산에서는 가능도 함수에 로그를 취한 로그 가능도(Log-Likelihood)를 씁니다. 이유는 두 가지입니다.
첫째, 0과 1 사이의 확률값을 수천 번 곱하면 숫자가 너무 작아져 컴퓨터가 0으로 처리해 버립니다. 이걸 언더플로우(Underflow)라고 합니다. 로그를 취하면 곱셈이 덧셈으로 바뀌어 이 문제가 사라집니다.
둘째, 미분이 훨씬 쉬워집니다. 로그의 성질 log(a×b) = log(a) + log(b) 덕분에 복잡한 곱의 미분 대신 항별 미분이 가능합니다.
로그 가능도: log L(p) = 7·log(p) + 3·log(1-p)
로그는 단조 증가 함수이므로:
L(p)를 최대화 = log L(p)를 최대화 (최적점 동일)
일반 가능도와 로그 가능도의 차이를 정리하면 이렇습니다.
| 구분 | 일반 가능도 | 로그 가능도 |
|---|---|---|
| 연산 형태 | 확률값들의 곱셈 (∏) | 로그값들의 덧셈 (∑) |
| 수치 안정성 | 낮음 (언더플로우 위험) | 높음 (안정적 연산) |
| 미분 편의성 | 복잡 (곱의 미분법) | 단순 (항별 미분) |
| 최적점 위치 | 동일 | 동일 (로그는 단조 증가) |

크로스 엔트로피와 MLE의 연결
딥러닝에서 분류 문제에 쓰이는 크로스 엔트로피 손실 함수가 있습니다. 처음엔 이게 왜 이런 형태인지 몰랐는데, MLE를 이해하고 나면 바로 연결됩니다.
max Σ log P(yi | xi, θ)
크로스 엔트로피 손실 최소화:
min -Σ [yi·log(ŷi) + (1-yi)·log(1-ŷi)]
→ 부호만 반대 (최대화 → 최소화)
→ 크로스 엔트로피 = 음의 로그 가능도 (NLL)
PyTorch에서 nn.CrossEntropyLoss()를 쓸 때마다 사실 MLE를 수행하고 있는 겁니다. 손실을 줄인다는 게 결국 데이터를 가장 잘 설명하는 파라미터를 찾는다는 의미였습니다. 코드 한 줄 뒤에 이 수학이 있다는 걸 알고 나면 모델 설계가 다르게 보이기 시작합니다.
미분으로 최적 파라미터 찾기
MLE를 실제로 계산할 때는 로그 가능도를 파라미터로 미분해서 0이 되는 지점을 찾습니다. 동전 예시로 직접 해보겠습니다.
p로 미분:
d/dp log L(p) = 7/p - 3/(1-p) = 0
7(1-p) = 3p
7 - 7p = 3p
7 = 10p
p = 0.7 ✓
→ 미분값 0 = MLE 추정값
이 연재에서 계속 나온 개념들이 여기서 다시 만납니다. 로그 가능도 함수를 미분해서 임계점을 찾는 과정이 경사하강법의 목표와 정확히 같습니다. 닫힌 형태로 풀리는 경우엔 미분=0으로 직접 계산하고, 복잡한 경우엔 경사하강법으로 반복해서 찾습니다.
라이프니츠의 미분에서 시작해 편미분, 경사하강법, 역전파, 베이즈 정리를 거쳐 여기까지 왔습니다. 결국 모든 개념이 하나의 질문으로 수렴합니다. "데이터를 가장 잘 설명하는 모델은 무엇인가." MLE는 그 질문에 가장 직접적으로 답하는 방법입니다.
'데이터 과학 수학' 카테고리의 다른 글
| 넷플릭스는 어떻게 내 취향을 아는가, 특이값 분해(SVD)의 원리 (0) | 2026.04.22 |
|---|---|
| 데이터의 함정, 상관관계와 인과관계를 혼동하지 않는 법 (0) | 2026.04.05 |
| 데이터의 질서, 정규분포와 중심극한정리의 마법 (0) | 2026.04.04 |
| 베이즈 정리의 마법, 정보가 확신을 바꾸는 원리 (0) | 2026.04.04 |
| 다변수 함수와 편미분, 라이프니츠 표기법의 연산 마법 (0) | 2026.04.04 |