Expectation / Variance 이해
주제 정보
| 항목 | 내용 |
|---|---|
| 주제 | Expectation / Variance |
| 분류 | foundations |
| 타입 | concept |
| 난이도 | 입문 |
| 선수지식 | 확률 기초 (확률분포, 합/평균) |
한 줄 직관
Expectation은 "확률적으로 기대되는 평균값"이고, Variance는 "값이 평균에서 얼마나 퍼져 있는지"를 측정하는 값이다.
이 두 개념은 기초 통계에서 끝나는 것이 아니라, 딥러닝의 평균 loss, gradient noise, BatchNorm, 초기화 안정성까지 이어진다. 그래서 "평균"과 "흔들림"을 읽는 언어라고 생각하면 이후 문서와 연결하기 쉽다.
직관적 비유
주사위를 던지는 상황을 생각해보자.
- Expectation: 평균적으로 몇이 나올까?
- Variance: 결과가 얼마나 들쭉날쭉한가?
예를 들어 항상 3만 나오는 주사위는 variance가 0이고, 일반 주사위는 variance가 크다.
시각 자료로 먼저 보기
1. Expectation (기댓값)
수식
기호 의미
X: 확률 변수x: 가능한 값p(x): 값x가 발생할 확률
왜 필요한가
Expectation은 확률분포의 중심 위치를 나타낸다. 딥러닝에서는 모델 출력의 평균적인 행동을 이해하거나, loss의 기대값을 최소화하는 관점으로 학습 과정을 해석할 때 자주 등장한다.
직관
Expectation은 확률을 가중치로 둔 평균이다.
예를 들어 공정한 주사위에서는 다음처럼 계산한다.
즉 실제로 3.5가 나오지는 않지만, 장기적으로 평균 결과는 3.5에 가까워진다.
중요한 점은 기댓값이 실제 한 번의 관측값과 같을 필요는 없다는 것이다. 3.5라는 값은 "여러 번 반복했을 때의 평균적 행동"을 나타낸다. 이 감각이 있어야 expected loss나 expected gradient 같은 표현도 자연스럽게 읽힌다.
주의점
- Expectation은 실제 관측값과 다를 수 있다. 예를 들어 주사위의 기댓값 3.5는 실제 눈금이 아니다.
- Expectation만 보면 분포가 얼마나 넓게 퍼져 있는지는 알 수 없다.
2. Variance (분산)
수식
기호 의미
E[X]: 평균X - E[X]: 평균에서 얼마나 떨어졌는지 나타내는 편차( )²: 음수와 양수가 상쇄되지 않도록 하고, 큰 편차를 더 강하게 반영한다.
왜 필요한가
평균만 알면 데이터의 안정성이나 변동성을 알 수 없다. Variance는 값이 평균 주변에 얼마나 퍼져 있는지 측정해서, 같은 평균을 가진 두 분포를 구별할 수 있게 해준다.
직관
평균에서 멀리 떨어진 값이 많을수록 분산이 커진다.
그래서 분산은 "흔들림의 크기"라고 생각하면 된다. 평균이 같아도 값이 넓게 퍼져 있으면 분산이 크고, 평균 근처에 몰려 있으면 분산이 작다. 딥러닝에서 학습이 불안정하다는 말도 결국 이런 흔들림이 크다는 뜻으로 읽을 수 있다.
| 분포 | 평균 | 분산 |
|---|---|---|
| 3, 3, 3, 3 | 3 | 0 |
| 1, 3, 5 | 3 | 큼 |
주의점
- 분산의 단위는 원래 단위의 제곱이다.
- 그래서 실제 해석에서는 표준편차를 함께 보는 경우가 많다.
3. Variance의 다른 표현
수식
기호 의미
E[X²]: 제곱값의 평균(E[X])²: 평균의 제곱
왜 필요한가
이 식은 분산 계산을 더 빠르고 간단하게 만들기 때문에 확률 이론과 구현 모두에서 자주 사용된다. 특히 배치 통계량이나 초기화 분석에서 이 형태가 자주 등장한다.
주의점
- 두 항의 값이 매우 크고 차이가 작으면 수치적으로 불안정할 수 있다.
- 실제 구현에서는 안정성을 위해 평균 중심 계산이나 보정 기법을 함께 쓸 수 있다.
4. Variance와 안정성 (Stability)
핵심 직관
- 분산이 작다: 결과가 비교적 안정적이다.
- 분산이 크다: 결과가 크게 흔들릴 가능성이 높다.
딥러닝에서는 다음과 같은 상황에서 분산 개념이 매우 중요하다.
- gradient variance
- initialization 안정성
- batch training 안정성
예: Gradient Variance
미니배치 SGD에서는 gradient가 확률 변수처럼 움직인다.
배치가 바뀔 때마다 gradient 값이 달라지기 때문에 gradient variance가 크면 학습 곡선이 흔들리고 수렴이 느려질 수 있다.
그래서 다음과 같은 방법이 자주 사용된다.
- 더 큰 batch size 사용
- Adam 같은 적응형 optimizer 사용
- gradient clipping 적용
5. 코드와 수식 연결
Expectation 계산
import torch
x = torch.tensor([1.0, 2.0, 3.0, 4.0])
mean = x.mean()
| 코드 | 수식 대응 |
|---|---|
x.mean() |
E[X] |
Variance 계산
var = x.var()
| 코드 | 수식 대응 |
|---|---|
x.var() |
E[(X - E[X])²] |
6. 자주 하는 오해 5개
- Expectation은 항상 실제 값이다: 아니다. 장기 평균은 실제 샘플 값과 다를 수 있다.
- 평균이 같으면 분포도 같다: 아니다. 분산과 꼬리 형태가 다를 수 있다.
- Variance가 크면 항상 나쁜 것이다: 아니다. 탐색이나 표현 다양성 측면에서 필요한 경우도 있다.
- Variance와 standard deviation은 같은 것이다: 아니다. 표준편차는 분산의 제곱근이다.
- 딥러닝에서 variance는 중요하지 않다: 아니다. 초기화, gradient 안정성, 정규화 이해에 핵심이다.
7. 스스로 설명할 수 있어야 하는 질문 (체크리스트)
- Expectation의 정의를 수식으로 설명할 수 있는가?
- Variance가 왜 제곱을 사용하는지 설명할 수 있는가?
Var(X) = E[X²] - (E[X])²관계를 유도할 수 있는가?- 분산이 작다는 것이 왜 안정성을 의미하는가?
- 딥러닝에서 gradient variance가 왜 중요한가?