[기본기 0-2] 딥러닝을 위한 확률/통계 기초
딥러닝 모델은 "정답의 확률"을 예측합니다. 즉 핵심 목표는 입력이 주어졌을 때 정답일 확률 P(y|x)를 높이는 것입니다.
예를 들어 고양이 분류 모델은 단순히 "cat"이라고 말하는 것이 아니라, P(cat|image), P(dog|image), P(car|image)처럼 여러 후보의 가능성을 동시에 낸다. 학습은 이 분포가 실제 정답 분포에 더 가까워지도록 바꾸는 과정이다.
그래서 확률/통계를 이해하면 분류 문제뿐 아니라 language modeling, generative model, uncertainty estimation까지 같은 프레임으로 연결해서 볼 수 있다. 이후에 나오는 likelihood, cross-entropy, KL divergence도 모두 여기서 출발한다.
시각 자료로 먼저 보기
왜 딥러닝에서 확률이 중요한가
- 이미지 분류:
P(cat|image) - 감성 분류:
P(positive|text)
모델은 정답 자체가 아니라 정답일 가능성을 계산하고, 가장 높은 확률의 클래스를 선택합니다.
즉 모델의 출력은 "하나의 값"이 아니라 "가능성의 분포"라고 보는 편이 정확하다. softmax가 중요한 이유도 바로 이 분포를 만들기 위해서다. 이 관점이 있어야 loss 함수도 단순 점수 차이가 아니라 분포 차이를 줄이는 과정으로 이해된다.
1) 조건부 확률 (Conditional Probability)
x: 입력 데이터y: 정답P(x,y): 동시 확률P(x): 입력 확률
왜 필요한가: 딥러닝은 항상 입력 조건 하에서 정답 확률을 계산합니다.
분류 모델에서 P(y|x)를 높인다는 말은, 같은 입력 x에 대해 정답 클래스에 더 큰 확률을 주도록 파라미터를 조정한다는 뜻이다. 언어 모델에서는 앞 문맥이 x, 다음 토큰이 y가 된다. 그래서 조건부 확률은 다양한 모델을 하나로 묶는 공통 구조다.
2) 기댓값 (Expectation)
기댓값은 확률적 평균이며, 학습에서 평균 loss와 직접 연결됩니다.
| x | P(x) |
|---|---|
| 1 | 1/6 |
| 2 | 1/6 |
| 3 | 1/6 |
| 4 | 1/6 |
| 5 | 1/6 |
| 6 | 1/6 |
3) 분산 (Variance)
분산은 평균에서 얼마나 퍼져 있는지 측정합니다. BatchNorm/정규화 해석에도 중요합니다.
4) 로그우도 (Log Likelihood)
L = \prod_i p(x_i), \log L = \sum_i \log p(x_i)
확률을 곱하면 수치가 매우 작아지므로 로그로 바꿔 안정적으로 계산합니다.
주의: p(x)=0이면 \log p(x)가 정의되지 않습니다.
5) Cross-Entropy
p: 실제 분포q: 모델 예측 분포
정답 확률이 높을수록 loss가 작아지고, 정답 확률이 낮을수록 loss가 커집니다.
딥러닝 최적화 관점에서는 보통 Loss = -\log P(y|x) 형태로 사용됩니다.
코드-수식 연결
| 수식 | PyTorch 코드 | 설명 |
|---|---|---|
P(y|x) | torch.softmax(logits, dim=-1) | 확률 계산 |
\log p(x) | torch.log(p) | 로그 확률 |
-\log P(y|x) | nn.CrossEntropyLoss() | 분류 loss |
E[L] | loss.mean() | 배치 평균 loss |
자주 하는 오해 5개
- softmax 출력값과 확률 개념을 완전히 동일시한다
- Cross-Entropy를 단순 암기식으로만 이해한다
- 로그를 쓰는 수치적 이유를 놓친다
- 확률의 합이 1이라는 제약을 잊는다
- loss가 낮으면 항상 정확도가 높다고 단정한다
체크리스트
P(y|x)가 의미하는 조건부 확률을 설명할 수 있는가?- 기댓값과 평균 loss의 관계를 설명할 수 있는가?
- 분산이 데이터 분포 해석에 왜 중요한가?
- 우도 대신 로그우도를 쓰는 이유를 설명할 수 있는가?
- Cross-Entropy가 분류 문제에 적합한 이유를 설명할 수 있는가?