수학

MATH / 중급 20번

확률변수와 기댓값: 베르누이·범주형·이항부터 LOTUS까지

논문의 E[·]와 코드의 .mean() 사이를 잇습니다. 확률변수와 pmf·pdf·cdf를 세우고, 베르누이·범주형·이항이 각각 드롭아웃·토큰 샘플링·정답 개수에 어떻게 대응하는지 본 뒤, 기댓값의 선형성과 LOTUS로 «손실은 데이터 분포 위의 기댓값»을 실제로 계산합니다.

PALDYN Team17 MIN READ

논문에 적힌 학습 목표는 거의 언제나 이 모양입니다.

L(θ)=Ex∼D[ℓ(fθ(x),y)]\mathcal{L}(\theta) = \mathbb{E}_{x \sim \mathcal{D}}\big[\ell(f_\theta(x), y)\big]

그런데 코드에서 같은 자리를 찾아가면 loss.mean() 한 줄입니다. 드롭아웃도 마찬가지입니다 — 구현은 마스크를 곱하고 1−p1-p 로 나누는 두 줄인데, 왜 하필 그 수로 나누는지는 코드에 안 적혀 있습니다.

E\mathbb{E} 라는 기호와 .mean() 사이에 무엇이 있는가 — 이 글이 그 사이를 채웁니다. 지난 글에서 사건에 확률을 붙이는 데까지 왔으니, 이제 결과에 수를 붙이고 그 수의 평균을 낼 차례입니다.

확률변수 — 결과에 수를 붙이는 함수

표본공간의 결과는 꼭 수가 아닙니다. 토큰 cat, 뉴런이 «살아남음», 동전의 앞면은 전부 수가 아닙니다. 평균을 내려면 먼저 수여야 합니다.

정의. 확률변수는 표본공간의 각 결과에 실수 하나를 붙이는 함수 X:Ω→RX : \Omega \to \mathbb{R} 이다.

이름이 «변수»지만 실제로는 함수입니다. 확률변수 자체에는 무작위성이 없고, 무작위한 것은 어떤 결과가 뽑히느냐입니다. 뽑힌 결과에 붙는 수는 그때 결정됩니다.

X=1X = 1 같은 표기는 «XX 가 1이라는 값을 갖는 결과들의 집합», 즉 사건을 가리키는 줄임말입니다. 그래서 P(X=1)P(X=1) 이 말이 됩니다 — 지난 글에서 사건에 확률을 붙였고, 여기서는 그 사건을 XX 로 지목했을 뿐입니다.

표본공간의 결과에 실수를 붙이는 함수로서의 확률변수

pmf, cdf, 그리고 밀도가 1을 넘는 이야기

값이 셀 수 있게 떨어져 있으면 이산확률변수이고, 값마다 확률을 적은 함수를 확률질량함수(pmf)라고 합니다.

pX(k)=P(X=k),∑kpX(k)=1p_X(k) = P(X = k), \qquad \sum_k p_X(k) = 1

값이 연속이면 사정이 달라집니다. 실수 하나가 정확히 나올 확률은 0이므로 — 후보가 무한히 많아 각각에 양수를 주면 합이 발산합니다 — 점이 아니라 구간에 확률을 줍니다. 그 역할을 하는 것이 확률밀도함수(pdf)입니다.

P(a≤X≤b)=∫abfX(x) dx,∫−∞∞fX(x) dx=1P(a \le X \le b) = \int_a^b f_X(x)\,dx, \qquad \int_{-\infty}^{\infty} f_X(x)\,dx = 1

여기서 자주 걸리는 자리가 하나 있습니다. 밀도는 1을 넘어도 됩니다. 확률인 것은 높이가 아니라 넓이이기 때문입니다. [0,0.5][0, 0.5] 위에 고르게 퍼진 분포라면 밀도가 f(x)=2f(x) = 2 여야 넓이 2×0.5=12 \times 0.5 = 1 이 됩니다.

pmf pdf
값의 성질 떨어져 있음 이어져 있음
p(k)p(k) 또는 f(x)f(x) 그 값이 나올 확률 확률이 아니다. 넓이의 밀도
1을 넘을 수 있나 아니오 예
전체를 1로 만드는 것 합 적분

pmf 막대의 합과 pdf 곡선 아래 넓이가 각각 1이 되는 그림

둘을 한 언어로 묶는 것이 누적분포함수(cdf)입니다.

FX(x)=P(X≤x)F_X(x) = P(X \le x)

이산이든 연속이든 정의가 같고, 0에서 1까지 결코 내려가지 않으며 올라갑니다. 이산이면 계단 모양이고 연속이면 매끄러운 곡선이지만, 「이 값 이하가 나올 확률」이라는 뜻은 하나입니다. 「중급 25번 · 범주분포에서 뽑기」의 역변환 표집이 이 함수의 역함수를 쓰는 방법입니다.

연속에서 한 가지가 따라옵니다. P(X=a)=0P(X = a) = 0 이므로 부등호에 등호가 붙든 말든 값이 같습니다 — P(X≤a)=P(X<a)P(X \le a) = P(X < a) 입니다. 이산에서는 그 자리에 막대 하나만큼의 차이가 생기므로 같지 않습니다.

세 분포와 그 자리

이 글에서 필요한 이산분포는 셋뿐이고, 셋 다 AI 코드에 이름 없이 들어 있습니다.

베르누이 분포. 값이 0 또는 1 하나입니다. P(X=1)=qP(X=1) = q, P(X=0)=1−qP(X=0) = 1-q.

드롭아웃 마스크가 정확히 이것입니다. 뉴런마다 베르누이 확률변수를 하나씩 뽑아 1이면 살리고 0이면 죽입니다.

범주형 분포. 값이 KK 개 중 하나이고 각각에 확률 π1,…,πK\pi_1,\dots,\pi_K 가 붙습니다. 합이 1이어야 합니다.

softmax의 출력이 이 분포의 파라미터이고, 토큰을 뽑는다는 것은 어휘 크기 KK 짜리 범주형 분포에서 한 번 뽑는 것입니다. K=2K=2 이면 베르누이가 됩니다.

이항 분포. 같은 베르누이를 서로 독립으로 nn 번 반복해 1이 나온 횟수를 센 것입니다.

P(X=k)=(nk)qk(1−q)n−kP(X = k) = \binom{n}{k} q^k (1-q)^{n-k}

(nk)\binom{n}{k} 는 nn 자리 중 1이 놓일 kk 자리를 고르는 경우의 수이고, 뒤의 곱은 그중 한 배치가 나올 확률입니다 — 독립이라 곱셈 규칙을 nn 번 쓸 수 있습니다.

벤치마크 문제 10개를 정답률 0.3인 모델에 냈을 때 맞힌 개수가 이 분포를 따릅니다. 값을 몇 개 계산해 보면

P(X=0)=0.710=0.028,P(X=3)=(103)(0.3)3(0.7)7=120×0.027×0.0824=0.267P(X=0) = 0.7^{10} = 0.028, \qquad P(X=3) = \binom{10}{3}(0.3)^3(0.7)^7 = 120 \times 0.027 \times 0.0824 = 0.267

입니다. 3개를 맞히는 것이 가장 흔하지만 그 확률조차 0.267뿐이고, 같은 모델로 같은 문제를 다시 풀려도 2개나 5개가 나오는 일이 흔합니다. 평가 점수가 실행마다 흔들리는 이유의 절반이 여기에 있습니다.

셋의 관계도 정리해 둘 만합니다. 베르누이는 K=2K=2 인 범주형이고, 이항은 베르누이를 독립으로 nn 번 반복해 센 것입니다. 뿌리는 하나입니다.

기댓값 — 값을 확률로 가중한 평균

정의. 이산확률변수의 기댓값은 E[X]=∑kk⋅pX(k)\displaystyle \mathbb{E}[X] = \sum_k k \cdot p_X(k) 이고, 연속이면 합이 적분이 된다: E[X]=∫xfX(x) dx\displaystyle \mathbb{E}[X] = \int x f_X(x)\,dx

«값 × 그 값이 나올 확률»을 전부 더한 것입니다. 앞의 이항분포에서 계산해 봅니다.

E[X]=0(0.0282)+1(0.1211)+2(0.2335)+3(0.2668)+⋯+10(0.0000059)=3.0\mathbb{E}[X] = 0(0.0282) + 1(0.1211) + 2(0.2335) + 3(0.2668) + \cdots + 10(0.0000059) = 3.0

일반적으로 이항분포의 기댓값은 nqnq 이고 여기서는 10×0.3=310 \times 0.3 = 3 입니다. 기댓값은 실제로 나올 수 있는 값일 필요가 없습니다 — 문제 10개 중 3.5개를 맞힐 수는 없지만 q=0.35q=0.35 이면 기댓값은 3.5입니다.

물리적으로 보면 기댓값은 무게중심입니다. pmf의 막대를 무게로 보고 막대그래프를 자로 떠받칠 때 균형이 잡히는 자리입니다.

이항분포 pmf 막대와 무게중심에 놓인 받침점

선형성 — 이 글에서 가장 많이 쓰이는 성질

E[aX+b]=a E[X]+b,E[X+Y]=E[X]+E[Y]\mathbb{E}[aX + b] = a\,\mathbb{E}[X] + b, \qquad \mathbb{E}[X + Y] = \mathbb{E}[X] + \mathbb{E}[Y]

두 번째 식에 독립 조건이 없다는 점이 중요합니다. XX 와 YY 가 아무리 얽혀 있어도 기댓값은 그냥 더해집니다. 증명은 정의를 펴는 것이 전부입니다 — 결합분포 위에서 ∑x,y(x+y)p(x,y)\sum_{x,y}(x+y)p(x,y) 를 두 덩어리로 갈라 각각 주변화하면 ∑xx p(x)+∑yy p(y)\sum_x x\,p(x) + \sum_y y\,p(y) 가 됩니다. 주변화가 지난 글의 도구였습니다.

이제 드롭아웃의 1−p1-p 를 설명할 수 있습니다. 뉴런의 출력이 aa 이고 마스크 MM 이 확률 q=1−pq = 1-p 로 1이라면, 그냥 곱한 출력의 기댓값은

E[aM]=a E[M]=a q\mathbb{E}[aM] = a\,\mathbb{E}[M] = a\,q

라서 학습 때만 신호가 qq 배로 줄어듭니다. 추론에서는 마스크를 안 쓰니 스케일이 어긋나죠. 그래서 학습 때 qq 로 나눠 둡니다.

E ⁣[aMq]=a qq=a\mathbb{E}\!\left[\frac{aM}{q}\right] = \frac{a\,q}{q} = a

기댓값을 보존하려고 나누는 것이고, 이것이 인버티드 드롭아웃이라는 이름의 뜻입니다. 첫 등호에서 쓴 것이 선형성입니다.

층 전체로 넓혀도 같습니다. 뉴런 1000개짜리 층에서 살아남는 뉴런의 개수는 베르누이 1000개의 합이므로 이항분포이고, q=0.9q=0.9 면 기댓값이 900입니다. 여기서 선형성의 «독립이 필요 없다»가 한 번 더 쓰입니다 — 마스크끼리 상관이 있어도 살아남는 개수의 기댓값은 여전히 nqnq 입니다. 독립이 필요해지는 것은 개수가 900에서 얼마나 벗어나는지를 물을 때이고, 그 질문이 다음 글의 것입니다.

LOTUS — 변환된 값의 기댓값

XX 의 기댓값이 아니라 g(X)g(X) 의 기댓값이 필요할 때가 훨씬 많습니다. 손실이 그렇습니다 — 뽑는 것은 데이터이고 평균 내는 것은 그 데이터의 손실값입니다.

Y=g(X)Y = g(X) 의 분포를 새로 구한 뒤 정의를 쓰는 것이 정공법인데, 그럴 필요가 없습니다.

E[g(X)]=∑kg(k) pX(k)\mathbb{E}[g(X)] = \sum_k g(k)\,p_X(k)

XX 의 분포를 그대로 두고 값만 gg 로 바꿔 넣으면 됩니다. 이 결과를 LOTUS(law of the unconscious statistician)라고 부릅니다 — «무의식적 통계학자의 법칙»이라는 이름은 이 계산이 너무 자연스러워서 정당화 없이 쓰게 된다는 뜻입니다.

작은 예로 확인합니다. XX 가 1, 2, 3을 각각 0.5, 0.3, 0.2로 가질 때

E[X]=1(0.5)+2(0.3)+3(0.2)=1.7\mathbb{E}[X] = 1(0.5) + 2(0.3) + 3(0.2) = 1.7

E[X2]=1(0.5)+4(0.3)+9(0.2)=3.5\mathbb{E}[X^2] = 1(0.5) + 4(0.3) + 9(0.2) = 3.5

X2X^2 의 분포를 따로 만들지 않았습니다. 그리고 3.5≠1.72=2.893.5 \ne 1.7^2 = 2.89 입니다 — 선형성은 gg 가 일차식일 때만 성립합니다. 이 두 값의 차이가 다음 글의 주제인 분산입니다.

손실은 기댓값이다

이제 처음의 식을 읽을 수 있습니다.

L(θ)=Ex∼D[ℓ(fθ(x),y)]=∑xℓ(fθ(x),y) pD(x)\mathcal{L}(\theta) = \mathbb{E}_{x \sim \mathcal{D}}\big[\ell(f_\theta(x), y)\big] = \sum_{x} \ell(f_\theta(x), y)\,p_{\mathcal{D}}(x)

두 번째 등호가 LOTUS입니다. 뽑는 것은 데이터 분포 D\mathcal{D} 에서의 xx 이고, 평균 내는 값은 그 xx 의 손실 ℓ\ell 입니다.

문제는 pDp_{\mathcal{D}} 를 모른다는 것입니다. 우리에게 있는 것은 그 분포에서 뽑힌 표본 nn 개뿐이고, 그래서 합을 표본평균으로 대신합니다.

L^=1n∑i=1nℓ(fθ(xi),yi)\hat{\mathcal{L}} = \frac{1}{n}\sum_{i=1}^{n} \ell(f_\theta(x_i), y_i)

이것이 loss.mean()입니다. 미니배치 손실은 진짜 손실이 아니라 진짜 손실의 추정값이고, 배치를 다시 뽑으면 다른 값이 나옵니다.

그런데도 이 추정값을 써도 되는 근거가 선형성입니다. 표본 xix_i 를 각각 D\mathcal{D} 에서 뽑았다면 ℓi=ℓ(fθ(xi),yi)\ell_i = \ell(f_\theta(x_i), y_i) 하나하나의 기댓값이 전부 L\mathcal{L} 이므로

E[L^]=1n∑i=1nE[ℓi]=1n⋅n L=L\mathbb{E}[\hat{\mathcal{L}}] = \frac{1}{n}\sum_{i=1}^{n}\mathbb{E}[\ell_i] = \frac{1}{n}\cdot n\,\mathcal{L} = \mathcal{L}

입니다. 평균적으로는 맞는 값을 내놓는다는 뜻이고, 이런 추정량을 불편추정량이라고 합니다. 여기서도 ℓi\ell_i 끼리의 독립은 쓰지 않았습니다 — 선형성만으로 충분합니다.

같은 계산이 그래디언트에도 그대로 적용됩니다. 미분은 선형 연산이므로 배치 그래디언트의 기댓값이 진짜 그래디언트이고, 확률적 경사하강법이 «틀린 방향으로 가는데도 도착하는» 이유가 이 한 줄입니다.

import numpy as np
rng = np.random.default_rng(0)

# 진짜 손실이 1.8인 분포에서 배치 32개를 세 번 뽑아 본다
true_mean = 1.8
for _ in range(3):
    batch = rng.exponential(true_mean, size=32)
    print(round(float(batch.mean()), 3))
# 2.079
# 1.633
# 2.626

참값 1.8과 세 배치의 평균이 흩어져 있는 수직선

세 값이 모두 다르고 셋 다 1.8이 아닙니다. 그런데도 학습이 굴러가는 이유, 그리고 배치를 키우면 이 흔들림이 얼마나 줄어드는지가 다음 글입니다.

정리

  • 확률변수는 결과에 수를 붙이는 함수다. P(X=1)P(X=1) 은 «XX 가 1이 되는 결과들»이라는 사건의 확률이다.
  • pmf는 확률이고 pdf는 밀도다. 밀도는 1을 넘어도 된다 — 확률인 것은 높이가 아니라 넓이다.
  • 베르누이·범주형·이항이 각각 드롭아웃 마스크, 토큰 샘플링, 벤치마크 정답 개수에 대응한다. 이항의 기댓값은 nqnq 다.
  • 기댓값은 값을 확률로 가중한 평균이고 pmf의 무게중심이다. 실제로 나올 수 있는 값일 필요가 없다.
  • 선형성에는 독립이 필요 없다. 인버티드 드롭아웃이 1−p1-p 로 나누는 이유가 이 성질로 기댓값을 보존하는 것이다.
  • LOTUS는 g(X)g(X) 의 분포를 구하지 말라는 허가증이다. 「손실은 데이터 분포 위의 기댓값」이라는 문장이 이 법칙 덕분에 합 하나로 계산된다.
  • loss.mean()은 그 기댓값의 추정값이다. 등호가 아니라 근사다.

논문의 E\mathbb{E} 와 코드의 .mean()이 이어졌습니다. 하나는 분포 위의 참값이고 다른 하나는 표본으로 만든 추정값이라는 것까지 알았으니, 남은 질문은 하나입니다 — 그 추정값은 얼마나 믿을 만한가. 다음 글이 분산과 표준오차로 답합니다.


읽어주셔서 감사합니다. 😊

LATEST

수학의 최신 글

수학2026.09.07

양자화 오차: 격자 사상, 오차 분산, 이상치 채널

실수를 2^b개 격자에 사상할 때 오차의 분산이 왜 Δ²/12인지 유도하고, 그것이 비트당 6.02dB라는 SNR로 번역되는 과정을 실측과 대조했습니다. 이상치 하나가 나머지 값의 유효 비트를 어떻게 먹는지, 그리고 int4에서 성능이 무너지는 지점을 오차 예산으로 미리 계산하는 법까지.

중급18 MIN
수학2026.09.07

수치적으로 안정한 계산 패턴 모음

최댓값 빼기, 로그 공간, log1p·expm1, 분산의 두 공식, 정규화의 ε, fp32 누산, 역행렬 대신 solve — 프레임워크가 몰래 해 주는 일곱 가지를 하나씩 꺼내 각각 어떤 고장을 막는지 직접 재 봤습니다. 수식을 그대로 옮긴 코드가 왜 라이브러리보다 나쁜지에 대한 목록입니다.

중급22 MIN
수학2026.09.07

부동소수점은 어디서 새는가: 반올림, 상쇄, 더하는 순서

0.1 + 0.2가 0.3이 아닌 이유부터 시작해 머신 엡실론을 유도하고, 같은 16비트인데 fp16과 bf16이 서로 다른 지점에서 터지는 이유, 비슷한 수를 뺄 때 유효자리가 사라지는 파괴적 상쇄, 그리고 1,000만 개를 순서만 바꿔 더했을 때 오차가 백만 배 갈리는 실험까지 직접 재 봤습니다.

중급23 MIN