Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- depthwise convolution
- 최대 가능도 추정
- posec3d
- 최대 사후 확률
- OpenGL
- Unreal Engine
- 딥러닝
- 모수 추정 방법
- Vision Transformer
- DDPM
- deformable covolution
- CNN
- Deep Learning
- Swin Transformer
- mobilenet
- Action Recognition
- Focal loss
- covolution
- 티스토리챌린지
- Image denoising
- 포인터
- convolution
- computer graphics
- Diffusion
- C++
- 오블완
Archives
- Today
- Total
심드렁하게 저장
모수추정 방법 두 가지 - Maximum Likelihood Estimation & Maximum A Posteriori 본문
Artificial intelligence/AI Fundamental
모수추정 방법 두 가지 - Maximum Likelihood Estimation & Maximum A Posteriori
Ggoosae 2025. 2. 17. 23:361. Maximum Likelihood Estimation - 최대 가능도 추정
- 최대가능도 추정은 주어진 데이터로부터 모수를 추정하는 방법으로 데이터를 가장 잘 설명하는 파라미터를 찾는다.
- 여기서 모수란 모평균, 모분산같이 모집단 확률 분포의 특성을 나타내느 대푯값을 의미한다.
- 또한 가능도는 확률 분포에서 모수, 즉 파라미터를 고정하였을 때 샘플 데이터를 얻을 확률을 의미한다.
- 가능도가 높다는 말은 고정된 파라미터에서 해당 데이터 표본들이 수집될 확률이 높다는 뜻이며, 추정된 모수가 실제 값일 확률이 높다는 의미이기도 하다.
- 확률 변수 X에 대한 결합 확률 밀도 함수는 가능도 함수로 표현할 수 있다. 이를 파라미터 관점으로 재해석하여 가능도를 최대화하기위한 세타를 찾는 과정은 다음과 같다.

2. Maximum A Posteriori - 최대 사후 확률
- 최대 사후 확률 추정은 베이즈 정리를 활용하여 주어진 데이터로부터 모수를 추정하는 방법이다.
- MAP 추정은 사전 확률(prior)을 고려하여 모수를 추정한다는 점에서 최대 가능도 추정과 차이가 있다.
- 즉, 단순히 데이터를 가장 잘 설명하는 모수를 찾는 것이 아니라, 사전 정보까지 반영하여 모수를 추정하는 것이다.
- MAP 추정에서 우리가 원하는 것은 데이터 X가 주어졌을때 모수 세타가 가장 클 확률을 가지는 값을 찾는 것이다. 이를 수식으로 표현하면 다음과 같다.

- 즉, 가능도 함수와 사전 확률의 곱을 최대화하는 모수를 찾는 것이 MAP 추정의 목적이다.
3. 코드 예제
아래는 MLE (Maximum Likelihood Estimation) 과 MAP (Maximum A Posteriori Estimation) 을 비교하는 Python 코드이다. 정규 분포를 가정하고, 주어진 샘플 데이터에서 평균(μ)을 추정하는 예제이다.
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# 샘플 데이터 생성 (Ground truth: 평균=5, 분산 = 2)
np.random.seed(42)
true_mu = 5
true_sigma = 2
n_samples = 30
# 정규 분포에서 30개의 샘플을 생성
samples = np.random.normal(true_mu, true_sigma, n_samples)
# MLE 추정(가능도 최대화: 단순히 샘플 평균을 사용)
mle_mu = np.mean(samples)
# MAP 추정 (사전 확률 고려: 정규분포 사전 정보)
prior_mu = 4 # 사전 평균
prior_sigma = 1 # 사전 표준편차 (신뢰도)
# MAP 공식
map_mu = (n_samples * mle_mu / true_sigma**2 + prior_mu * true_mu/prior_sigma**2)/ (n_samples / true_sigma**2 + 1 / prior_sigma**2)
# 결과 출력
print(f"MLE 추정 (μ_MLE): {mle_mu:.3f}")
print(f"MAP 추정 (μ_MAP): {map_mu:.3f}")
# 시각화: 가능도 함수
x_vals = np.linspace(0, 10, 100)
likelihood = norm.pdf(x_vals, mle_mu, true_sigma / np.sqrt(n_samples)) # MLE 가능도
prior = norm.pdf(x_vals, prior_mu, prior_sigma) # 사전 확률
posterior = norm.pdf(x_vals, map_mu, true_sigma / np.sqrt(n_samples)) # MAP 사후 확률
plt.figure(figsize=(8, 5))
plt.plot(x_vals, likelihood, label="Likelihood (MLE)", linestyle="dashed")
plt.plot(x_vals, prior, label="Prior (MAP)", linestyle="dotted")
plt.plot(x_vals, posterior, label="Posterior (MAP)", linestyle="solid")
plt.axvline(mle_mu, color="red", linestyle="dashed", label="MLE Estimate")
plt.axvline(map_mu, color="blue", linestyle="solid", label="MAP Estimate")
plt.axvline(true_mu, color="black", linestyle="dashdot", label="True μ")
plt.legend()
plt.xlabel("μ")
plt.ylabel("Probability Density")
plt.title("MLE vs MAP Estimation")
plt.show()
실행 결과:

코드 설명
- 데이터 생성: 평균 μ=5, 표준편차 σ=2 인 정규 분포에서 30개의 샘플을 생성.
- MLE 추정: 단순히 샘플의 평균을 사용하여 μ 를 추정.
- MAP 추정: 사전 확률(정규 분포) 정보를 고려하여 μ 를 추정.
- 가능도/사전 확률/사후 확률 시각화:
- 빨간색 점선 → MLE 추정값
- 파란색 실선 → MAP 추정값
- 검은색 점선 → 실제 모수 값 (Ground Truth)
- 그래프에서 MLE는 데이터에만 의존하고, MAP는 사전 정보를 반영하여 조금 더 보수적인 추정을 함.
'Artificial intelligence > AI Fundamental' 카테고리의 다른 글
| 시그모이드 Cross Entropy 정의식 도출 과정 (0) | 2025.03.27 |
|---|---|
| 고유값(Eigenvalue)과 고유벡터(Eigenvector), 고유값 분해(Eigen Decomposition) (0) | 2025.03.03 |
| Bayes Rule 과 Naive Bayes에 대한 이해 (1) | 2025.02.12 |
| KL Divergence와 Cross Entropy: 개념과 차이점 (1) | 2025.02.03 |
| 손실 함수에 대한 기본 이론과 예시 (1) | 2024.11.21 |