Expectation / Variance 이해

주제 정보

항목 내용
주제 Expectation / Variance
분류 foundations
타입 concept
난이도 입문
선수지식 확률 기초 (확률분포, 합/평균)

한 줄 직관

Expectation은 "확률적으로 기대되는 평균값"이고, Variance는 "값이 평균에서 얼마나 퍼져 있는지"를 측정하는 값이다.

Expectation은 분포의 중심을, Variance는 그 중심 주변의 흔들림 크기를 말한다. 둘을 함께 봐야 분포를 제대로 이해할 수 있다.

이 두 개념은 기초 통계에서 끝나는 것이 아니라, 딥러닝의 평균 loss, gradient noise, BatchNorm, 초기화 안정성까지 이어진다. 그래서 "평균"과 "흔들림"을 읽는 언어라고 생각하면 이후 문서와 연결하기 쉽다.

직관적 비유

주사위를 던지는 상황을 생각해보자.

예를 들어 항상 3만 나오는 주사위는 variance가 0이고, 일반 주사위는 variance가 크다.

시각 자료로 먼저 보기

평균은 같지만 분산이 다른 정규분포 두 개
기댓값은 같아도 분산이 다르면 분포 폭이 얼마나 달라지는지 보여주는 가장 직접적인 그림이다.
원본 / 라이선스 · TheJojan · Public domain
분산의 기하학적 시각화
각 값이 평균에서 얼마나 떨어져 있는지 제곱 거리로 본다는 분산 정의를 기하학적으로 설명한 그림이다.
원본 / 라이선스 · Cmglee · CC BY-SA 3.0
표본평균의 sampling distribution 그림
표본 수가 늘수록 평균의 분포가 어떻게 좁아지는지 보여주는 그림이다. expectation과 sample mean의 관계를 설명할 때 좋다.
원본 / 라이선스 · Biggerj1 · CC BY-SA 4.0

1. Expectation (기댓값)

수식

E[X]=Σx·p(x)

기호 의미

왜 필요한가

Expectation은 확률분포의 중심 위치를 나타낸다. 딥러닝에서는 모델 출력의 평균적인 행동을 이해하거나, loss의 기대값을 최소화하는 관점으로 학습 과정을 해석할 때 자주 등장한다.

직관

Expectation은 확률을 가중치로 둔 평균이다.

예를 들어 공정한 주사위에서는 다음처럼 계산한다.

E[X]=(1+2+3+4+5+6)/6=3.5

즉 실제로 3.5가 나오지는 않지만, 장기적으로 평균 결과는 3.5에 가까워진다.

중요한 점은 기댓값이 실제 한 번의 관측값과 같을 필요는 없다는 것이다. 3.5라는 값은 "여러 번 반복했을 때의 평균적 행동"을 나타낸다. 이 감각이 있어야 expected loss나 expected gradient 같은 표현도 자연스럽게 읽힌다.

주의점

2. Variance (분산)

수식

Var(X)=E[(XE[X])²]

기호 의미

왜 필요한가

평균만 알면 데이터의 안정성이나 변동성을 알 수 없다. Variance는 값이 평균 주변에 얼마나 퍼져 있는지 측정해서, 같은 평균을 가진 두 분포를 구별할 수 있게 해준다.

직관

평균에서 멀리 떨어진 값이 많을수록 분산이 커진다.

그래서 분산은 "흔들림의 크기"라고 생각하면 된다. 평균이 같아도 값이 넓게 퍼져 있으면 분산이 크고, 평균 근처에 몰려 있으면 분산이 작다. 딥러닝에서 학습이 불안정하다는 말도 결국 이런 흔들림이 크다는 뜻으로 읽을 수 있다.

분포 평균 분산
3, 3, 3, 3 3 0
1, 3, 5 3

주의점

3. Variance의 다른 표현

수식

Var(X)=E[X²](E[X])²

기호 의미

왜 필요한가

이 식은 분산 계산을 더 빠르고 간단하게 만들기 때문에 확률 이론과 구현 모두에서 자주 사용된다. 특히 배치 통계량이나 초기화 분석에서 이 형태가 자주 등장한다.

주의점

4. Variance와 안정성 (Stability)

핵심 직관

딥러닝에서는 다음과 같은 상황에서 분산 개념이 매우 중요하다.

예: Gradient Variance

미니배치 SGD에서는 gradient가 확률 변수처럼 움직인다.

g=L(θ)

배치가 바뀔 때마다 gradient 값이 달라지기 때문에 gradient variance가 크면 학습 곡선이 흔들리고 수렴이 느려질 수 있다.

그래서 다음과 같은 방법이 자주 사용된다.

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개

7. 스스로 설명할 수 있어야 하는 질문 (체크리스트)