Skip to content

부록 · 참고 자료

본문에서 반복적으로 쓰이는 확률 분포, 행렬 항등식, 변분법과 라그랑주 승수법을 정리했습니다. ψ(a)ddalnΓ(a)디감마digamma 함수입니다.

A. 확률 분포

A.1 베르누이 분포

  • 단일 이진 변수 x{0,1}에 대한 분포로 μ[0,1]x=1일 확률이다. 켤레 사전 분포는 베타 분포다.
Bern(xμ)=μx(1μ)1x,E[x]=μ,var[x]=μ(1μ),H[x]=μlnμ(1μ)ln(1μ)

A.2 베타 분포

  • 연속 변수 μ[0,1]에 대한 분포로 a>0, b>0을 매개변수로 갖는다. 베르누이·이항 분포의 켤레 사전 분포이며 a, bx=1·x=0의 유효 관측 수로 해석된다.
Beta(μa,b)=Γ(a+b)Γ(a)Γ(b)μa1(1μ)b1,E[μ]=aa+b,var[μ]=ab(a+b)2(a+b+1),mode[μ]=a1a+b2

A.3 이항 분포

  • 베르누이 시행 N번 중 x=1m번 관측할 확률의 분포다. N=1이면 베르누이, N이 크면 가우시안에 가까워진다.
Bin(mN,μ)=(Nm)μm(1μ)Nm,E[m]=Nμ,var[m]=Nμ(1μ),mode[m]=(N+1)μ

A.4 디리클레 분포

  • kμk=1, 0μk1K차원 벡터에 대한 분포로 다항 분포의 켤레 사전 분포이며 베타 분포의 일반화다(α^=kαk).
Dir(μα)=C(α)k=1Kμkαk1,C(α)=Γ(α^)Γ(α1)Γ(αK)E[μk]=αkα^,var[μk]=αk(α^αk)α^2(α^+1),cov[μjμk]=αjαkα^2(α^+1),E[lnμk]=ψ(αk)ψ(α^)

A.5 감마 분포

  • 양의 변수 τ>0에 대한 분포로 단변량 가우시안 정밀도의 켤레 사전 분포다. a=1이면 지수 분포다.
Gam(τa,b)=1Γ(a)baτa1ebτ,E[τ]=ab,var[τ]=ab2,mode[τ]=a1b (a1),E[lnτ]=ψ(a)lnb

A.6 가우시안 분포

  • 단변량은 평균 μ·분산 σ2, 다변량은 평균 μ·공분산 Σ(대칭 양의 정부호)로 결정된다. μ의 켤레 사전 분포는 가우시안, 정밀도 행렬의 켤레 사전 분포는 위샤트 분포다.
N(xμ,σ2)=1(2πσ2)1/2exp{(xμ)22σ2},N(xμ,Σ)=1(2π)D/2|Σ|1/2exp{12(xμ)Σ1(xμ)}
  • 선형 가우시안 관계에서 주변·조건부 분포는 다음과 같다. p(x)=N(xμ,Λ1), p(yx)=N(yAx+b,L1)일 때
p(y)=N(yAμ+b,L1+AΛ1A),p(xy)=N(xΣ{AL(yb)+Λμ},Σ),  Σ=(Λ+ALA)1
  • 분할 x=(xa,xb), Λ=Σ1에서 조건부·주변 분포는
p(xaxb)=N(xaμaΛaa1Λab(xbμb),Λaa1),p(xa)=N(xaμa,Σaa)

A.7 가우시안 감마 · 가우시안 위샤트 분포

  • 평균·정밀도가 둘 다 미지인 가우시안의 켤레 사전 분포다. 단변량은 정규 감마normal-gamma, 다변량은 정규 위샤트normal-Wishart이다.
p(μ,λμ0,β,a,b)=N(μμ0,(βλ)1)Gam(λa,b),p(μ,Λμ0,β,W,ν)=N(μμ0,(βΛ)1)W(ΛW,ν)

A.8 다항 분포

  • 원 핫 이산 변수의 일반화. N개 관측에서 상태 k의 개수 mk에 대한 분포다.
Mult(m1,,mKμ,N)=(Nm1mK)k=1Kμkmk,E[mk]=Nμk,var[mk]=Nμk(1μk),cov[mjmk]=Nμjμk

A.9 스튜던트 t 분포

  • 같은 평균·다른 분산의 가우시안들의 무한 혼합이다. 자유도 ν>0이며 ν=1이면 코시 분포, ν이면 가우시안이 된다.
St(xμ,λ,ν)=Γ(ν/2+1/2)Γ(ν/2)(λπν)1/2[1+λ(xμ)2ν]ν/21/2,E[x]=μ (ν>1),var[x]=1λνν2 (ν>2)

A.10 균등 · 폰 미제스 · 위샤트 분포

  • 균등 분포 U(xa,b)=1ba, E[x]=a+b2, var[x]=(ba)212.
  • 폰 미제스 분포von Mises는 주기 변수 θ[0,2π]에 대한 가우시안 유사 분포다. p(θθ0,m)=12πI0(m)exp{mcos(θθ0)}(I0은 0차 베셀 함수, m은 집중 매개변수).
  • 위샤트 분포Wishart는 다변량 가우시안 정밀도 행렬의 켤레 사전 분포다.
W(ΛW,ν)=B(W,ν)|Λ|(νD1)/2exp{12Tr(W1Λ)},E[Λ]=νW

실습 · 분포 모멘트 공식 검증

베타·감마·디리클레·스튜던트 t 분포에서 표본을 뽑아, 위 표의 평균·분산 공식과 일치하는지 확인합니다.

python
import numpy as np
rng = np.random.default_rng(0); N = 500000
a, b = 2.0, 5.0                                         # Beta(a, b)
s = rng.beta(a, b, N)
print(f"Beta({a},{b}): 평균 {s.mean():.4f} (이론 {a/(a+b):.4f}), 분산 {s.var():.5f} (이론 {a*b/((a+b)**2*(a+b+1)):.5f})")
ag, bg = 3.0, 2.0                                       # Gam(a, b): rate b → scale 1/b
g = rng.gamma(ag, 1/bg, N)
print(f"Gam({ag},{bg}): 평균 {g.mean():.4f} (이론 {ag/bg:.4f}), 분산 {g.var():.5f} (이론 {ag/bg**2:.5f})")
al = np.array([2.0, 3.0, 5.0])                          # Dirichlet
d = rng.dirichlet(al, N)
print(f"Dir{al.tolist()}: 평균 {np.round(d.mean(0),4).tolist()} (이론 {np.round(al/al.sum(),4).tolist()})")
nu = 5.0                                                # Student-t
t = rng.standard_t(nu, N)
print(f"St(ν={nu}): 분산 {t.var():.4f} (이론 ν/(ν-2)={nu/(nu-2):.4f})")

B. 행렬의 성질

B.1 기본 성질

(AB)=BA,(AB)1=B1A1,(A)1=(A1)
  • 유용한 항등식과 우드베리 항등식Woodbury identity은 다음과 같다(MN이면 우변 계산이 훨씬 효율적).
(P1+BR1B)1BR1=PB(BPB+R)1(A+BD1C)1=A1A1B(D+CA1B)1CA1

B.2 대각합과 행렬식

Tr(AB)=Tr(BA),Tr(ABC)=Tr(CAB)=Tr(BCA),|AB|=|A||B|,|A1|=1|A|
  • A, BN×M이면 |IN+AB|=|IM+AB|이고, 벡터에 대해 |IN+ab|=1+ab이다.

B.3 행렬 미분

x(xa)=a,x(A1)=A1AxA1,xln|A|=Tr(A1Ax)ATr(AB)=B,ATr(AB)=B,ATr(ABA)=A(B+B),Aln|A|=(A1)

B.4 고윳값 공식

  • 정방 행렬 A고유벡터eigenvector ui·고윳값eigenvalue λiAui=λiui이며, 해의 존재 조건인 특성 방정식characteristic equation|AλiI|=0이다.

실습 · 행렬 항등식 검증 (우드베리 · 행렬식 보조정리)

우드베리 항등식과 |IN+AB|=|IM+AB|을 무작위 행렬로 수치 검증합니다.

python
import numpy as np
rng = np.random.default_rng(1)
n, m = 5, 2
A = rng.standard_normal((n, n)); A = A@A.T + n*np.eye(n)         # 양의 정부호
B = rng.standard_normal((n, m)); C = rng.standard_normal((m, n))
D = rng.standard_normal((m, m)); D = D@D.T + np.eye(m)
lhs = np.linalg.inv(A + B@np.linalg.inv(D)@C)
rhs = np.linalg.inv(A) - np.linalg.inv(A)@B@np.linalg.inv(D + C@np.linalg.inv(A)@B)@C@np.linalg.inv(A)
print(f"우드베리 항등식 최대 오차: {np.abs(lhs-rhs).max():.2e}")
Am = rng.standard_normal((n, m)); Bm = rng.standard_normal((n, m))
d1 = np.linalg.det(np.eye(n) + Am@Bm.T); d2 = np.linalg.det(np.eye(m) + Am.T@Bm)
print(f"|I_N+ABᵀ|={d1:.4f}, |I_M+AᵀB|={d2:.4f}, 오차={abs(d1-d2):.2e}")

C. 변분법

  • 범함수functional F[y]는 함수 y(x)를 입력받아 값을 내는 연산자다. 함수의 미소 변화 y(x)y(x)+ϵη(x)에 대한 범함수 미분functional derivative
F[y(x)+ϵη(x)]=F[y(x)]+ϵδFδy(x)η(x)dx+O(ϵ2)

로 정의된다. 임의의 η(x)에 대해 정류 조건 δFδy(x)η(x)dx=0이 성립하려면 모든 x에서 범함수 미분이 0이어야 한다.

그림 C.1 · 범함수 미분은 y(x)y(x)+ϵη(x)의 변화에 대한 F[y]의 변화로 정의된다(η(x)는 임의 함수).

  • F[y]=G(y,y,x)dx 형태의 범함수를 정류시키는 함수는 오일러–라그랑주 방정식Euler–Lagrange equation을 만족한다.
Gyddx(Gy)=0

D. 라그랑주 승수법

  • 라그랑주 승수법Lagrange multiplier은 제약 조건 하의 임계점을 찾는다. 제약 g(x)=0의 표면에서 g는 표면에 수직이고, f(x)의 최적점에서 f도 표면에 수직이어야 하므로 두 기울기가 평행하다.
f+λg=0,L(x,λ)f(x)+λg(x)

라그랑주 함수 Lx·λ에 대한 임계점을 찾으면 된다(L/λ=0이 곧 제약 g(x)=0).

그림 D.1 · 라그랑주 승수법의 기하. 제약 g(x)=0(적색) 하에서 f(x)를 최대화하며, L(x,λ)=f(x)+λg(x)를 최적화해 푼다.

  • 부등식 제약inequality constraint g(x)0 하의 최대화는 다음 카루시–쿤–터커Karush–Kuhn–Tucker; KKT 조건 하에 L을 최적화한다.
g(x)0,λ0,λg(x)=0

제약이 비활성inactive이면(g>0) λ=0이라 f=0, 활성active이면(g=0) 등식 제약과 같다.

그림 D.2 · 부등식 제약 g(x)0 하에서 f(x)를 최대화하는 문제.

실습 · 라그랑주 승수법

g(x)=x2+y21=0 제약 하에 f(x)=x+y를 최대화합니다. 해석해 (1/2,1/2)에서 f=λg가 성립하고, 원 위 격자 탐색의 최댓값 2와 일치함을 확인합니다.

python
import numpy as np
# max f=x+y  s.t. g=x²+y²-1=0.  ∇f=λ∇g → (1,1)=λ(2x,2y) → x=y=1/√2
xst = 1/np.sqrt(2)
gradf = np.array([1.0, 1.0]); gradg = np.array([2*xst, 2*xst]); lam = gradf[0]/gradg[0]
print(f"최적점 (x,y)=({xst:.4f},{xst:.4f}), f={xst+xst:.4f} (최댓값 √2={np.sqrt(2):.4f})")
print(f"∇f={gradf.tolist()},  λ∇g={(lam*gradg).round(4).tolist()}  (∇f=λ∇g 성립, λ={lam:.4f})")
th = np.linspace(0, 2*np.pi, 100000); vals = np.cos(th) + np.sin(th)   # 원 위 격자
print(f"격자 탐색 최댓값={vals.max():.4f} at θ={th[vals.argmax()]:.4f} (π/4={np.pi/4:.4f})")
PDF