이 블로그는 Christopher M.Bishop의 Deep Learning 책을 기반으로 작성되었습니다.
3.1. Discrete Variables (이산 변수)
3.1.1 Bernoulli distribution (베르누이 분포)
주어진 확률 0≤p≤1에 대하여
X={1with probability p 0with probability (1−p)
를 Bernoulli distribution라고 합니다.
평균과 분산은 위 확률 분포로 직접 구할 수 있습니다.
변수 μ에 대하여 x=1는 다음과 같이 정의할 수 있습니다:
p(x=1∣μ)=μ
0≤μ≤1이고 p(x=0∣μ)=1−μ이면,
Bern(x∣μ)=μx(1−μ)1−x
이를 일반화하면, 다음과 같이 나옵니다.
E[X]=1×μ+0×(1−μ)=μ
E[X2]=12×μ+02×(1−μ)=μ
Var[X]=E[X2]−(E[X])2=μ(1−μ)
우도 함수 재정의
p(D∣μ)=n=1∏Np(xn∣μ)=n=1∏Nμxn(1−μ)1−xn(3.5)
- D=x1,…,xN: 관측된 데이터 N개 관측한 N개의 이진 데이터 예를 들어, 동전을 5번 던졌고 결과가 [1,0,1,1,0] 라면, D=1,0,1,1,0입니다.
- 관측된 값들이 서로 독립이라 가정하면, 전체 확률은 개별 확률들의 곱
- 우도 함수이며, 파라미터 μ가 주어졌을 때 데이터가 나올 확률
로그 우도 함수 (Log-Likelihood)
lnp(D∣μ)=n=1∑Nlnp(xn∣μ)=n=1∑Nxnlnμ+(1−xn)ln(1−μ)(3.6)
- 확률 곱을 그대로 쓰면 수치적으로 불안정 -> 로그로 변환
- 곱셉 -> 덧셈으로 바뀌어 계산과 미분이 훨씬 쉬워짐 ln(∏n=1Nan)=∑n=1Nlnan lnp(D∣μ)=ln(∏n=1Nμxn(1−μ)1−xn)=∑n=1N[xnlnμ+(1−xn)ln(1−μ)]
- μ에 대한 목적 함수로 쓰임
- 로그우도 함수를 최대화하는 μ를 찾는 것
최대우도추정 (MLE)
로그우도 함수를 최대화하면 우리가 원하는 μ 추정값을 얻을 수 있습니다.
μ^=argμmaxlnp(D∣μ)
미분해서 0이 되는 지점을 찾으면:
μ^=N1n=1∑Nxn(3.7)
직관적인 의미
μML=Nm(3.8)
- m은 성공한 횟수
- 전체 시도 횟수 N에 대한 성공 비율
- 베르누이 분포의 MLE는 성공한 비율이라는 매우 직관적인 결과를 얻습니다.
3.1.2 Binomial distribution (이항 분포)
이항 변수 x에 대해 데이터 셋의 크기가 N이고 그 중에서 x=1인 관측값이 m번 나올 확률을 구하고자 합니다.
Bin(m∣N,μ)=(mN)μm(1−μ)N−m
3.1.3 Multinomial distribution (다항 분포)
One-hot Encoding (1-of-K 표현)
x=(0,0,1,0,0,0)T(3.13)
- 이 벡터는 어떤 변수가 6개의 상태 중 세 번째 상태(x3=1)일 때의 one-hot 표현입니다.
- 특징: 오직 하나의 원소만 1이고 나머지는 모두 0입니다.
- 일반적으로 K개의 클래스 중 하나를 표현할 때 이렇게 사용합니다.
다항 분포의 정의
p(x∣μ)=k=1∏Kμkxk(3.14)
- 여기서 μ_k는 각 클래스(또는 상태) k에 해당할 확률.
- xk는 해당 클래스가 선택되었는지를 나타냅니다 (즉, one-hot이기 때문에 하나만 1임).
- 예를 들어 x=(0,1,0)이면 p(x∣μ)=μ2
정규화 조건
x∑p(x∣μ)=k=1∑Kμk=1(3.15)
- 가능한 모든 one-hot 벡터에 대해 확률을 합하면 1이 되어야 하므로,
- μ_k들은 전체 합이 1인 확률 분포입니다.
기대값
E[x∣μ]=x∑p(x∣μ)x=μ(3.16)
- 기대값은 각 클래스가 선택될 확률로 가중합한 것입니다.
- one-hot 벡터 x들의 기대값은 그대로 확률 벡터 μ가 됩니다.
데이터셋에 대한 우도 함수 (Likelihood)
p(D∣μ)=n=1∏Nk=1∏Kμkxnk(3.17)
- 관측값이 N개 (x1,…,xN) 있을 때, 각 데이터 포인트의 확률을 곱한 것이 전체 우도
- xnk는 n번째 데이터가 k번째 클래스를 선택했는지를 나타냄
이를 다음과 같이 정리할 수 있습니다.
=k=1∏Kμkmk
- 여기서 mk는 k번째 클래스가 선택된 횟수입니다: m_k = \sum_{n=1}^{N} x_{nk} \tag{3.18}
데이터 수의 제약 조건
k=1∑Kmk=N(3.19)
- mk: k번째 상태(또는 클래스)가 관측된 횟수입니다.
- N: 전체 관측 데이터의 수입니다.
- 각 상태의 등장 횟수 총합은 전체 데이터 수와 같아야 합니다.
로그우도 함수와 라그랑주 승수법 (Lagrange Multiplier)
목표:
우도 함수를 최대화하는 확률 벡터 μ를 구하는 것
그런데 uk는 확률이기 때문에 다음 조건이 반드시 성립해야 합니다:
k=1∑Kμk=1(3.15)
이런 부분 해결을 위해 라그랑주 승수법을 사용합니다. 그래서 최적화 대상이 되는 식은 다음과 같이 정의됩니다.
k=1∑Kmklnμk+λ(k=1∑Kμk−1)(3.20)
유도
이 식을 uk에 대해 편미분하고, 0으로 두면 최적값을 구할 수 있습니다.
∂μk∂[j=1∑Kmjlnμj+λ(j=1∑Kμj−1)]=0
1. 목표
다음의 로그우도 + 라그랑주 승수 식을 μk에 대해 편미분해서 최대화하려고 합니다:
L(μ,λ)=j=1∑Kmjlnμj+λ(j=1∑Kμj−1)
- 첫 번째 항: log-likelihood (우도 함수의 로그)
두 번째 항: 확률 벡터 μ=(μ1,…,μK)가 합쳐서 1이 되어야 한다는 제약조건위 식을 μk에 대해 편미분합니다.
∂μk∂L=∂μk∂[j=1∑Kmjlnμj+λ(j=1∑Kμj−1)]
2. μk에 대해 편미분
- ∂μk∂∑j=1Kmjlnμj=μkmk←j=k 이면 상수니까 미분 0
∂μk∂λ(∑j=1Kμj−1)=λ←μk에 대한 편미분은 λ만 남음
결과:
∂μk∂L=μkmk+λ
3. 최댓값 조건 →0으로 둠
목표가 로그우도의 최대화이므로 위의 편미분식을 0으로 둡니다.
μkmk+λ=0 ⇒ μkmk=−λ ⇒ μk=−λmk(1)
4. 제약 조건 이용
확률 벡터 합이 1이 되어야 합니다.
k=1∑Kμk=1
식 (1)에 μk=−λmk를 대입:
k=1∑K−λmk=1 ⇒ −λ1k=1∑Kmk=1 ⇒ −λN=1 ⇒ λ=−N
5. λ값을 μk에 다시 대입
식 (1)에 다시 대입:
μk=−λmk=Nmk
이 식을 풀면 다음과 같은 해를 구할 수 있습니다.
μk=Nmk
즉, 각 클래스 k의 MLE 확률은 전체 데이터 중 해당 클래스가 나온 비율입니다.