인공지능관련/EM

EM 이해하기4

학위논문통계 2016. 11. 28. 02:53

 

 

0.

 

우리가 이 EM알고리즘을 자세히 설명하는 이유는 음성인식 때문입니다. 책을 보면 이 알고리즘을 사용한다고 되어 있습니다. 물론 약간의 변형이 있을 수 있겠지만 기본적으로 이 EM을 쓴다고 하니 이 EM 알고리즘을 정확하게 이해하는 것이 필요합니다.

 

 

 

1.

 

기호를 좀 바꾸겠습니다. 쓰기가 많이 불편해서요. 관찰 확률변수는 X, Y, 등으로 쓰고 실제 설문지나 실험에서 관찰되었을 때는 그 값을 x, y 등 소문자로 쓰겠습니다. 은닉변수는 U로 쓰겠습니다. 가능성 함수(우도 함수)는 LF, 로그 가능성 함수는 LLF, EM 알고리즘에 나오는 최대화해야 하는 함수는 ELLF이라 하겠습니다.

 

LF나 LLF, ELLF는 관찰변수 X, Y에 실제 관찰된 값, 숫자가 들어가기 때문에 오로지 모수의 함수입니다.

 

모수는 통상 통계학에서 그리스 문자를 사용하는데 여기서는 a, b, c 이런 문자로 쓰겠습니다. 간혹 불편하면 그리스 문자를 한글로 쓰겠습니다. 즉 정규분포는 N(뮤, 시그마), 또는 N(a, b) 이런 식으로 사용하겠습니다. 적분이나 합(summation) 이런 기호는 적분(-5, 5), 합(i) 이런 식으로 사용하겠습니다.

 

 

 

 

2.

 

앞에서 몇 개의 예에서 보듯이 구태여 EM 알고리즘을 사용할 필요가 없는데 사용하는 경우가 있습니다. EM 알고리즘을 소개하고 실제 계산하는 방법을 보여주기 위해서입니다. 구태여 쓸 필요가 없습니다.

 

그럼 언제 이 EM 알고리즘을 사용하는가 하는 의문이 생깁니다. 우리가 지금 하는 것은 현실을 반영한, 묘사한 모형에 있는 모르는 값 모수 a, b, c 등을 관찰된 데이터 값 x, y을 보고 추정, 추측하는 것입니다. 즉 모수 a의 추정은 데이터 값 x의 어떤 함수로 표시하고자 하는 것이 목적입니다.

 

a의 추정=T(x)

 

최대가능성 추정량(MLE)는 이런 작업을 하는 통계학의 하나의 이론이고 이게 사실상 주류 통계학의 대부분을 차지하고 있습니다.

 

 

이 MLE의 핵심은 확률분포 f(x; a)를 x의 함수로 보는 것이 아니고 모수 a의 함수로 보는 것입니다. 확률변수 f(x; a)는 모르지만 모수 a가 주어질 때 확률변수 x가 나올 가능성 함수라 생각하면 되고, 가능성 함수 LF는 확률변수 x가 실제 관찰되었을 때 모수 a가 나올 가능성 함수라 보는 것입니다. 그래서 함수 모양은 똑 같습니다. 함수 모양만 보면

 

 

LF(a)=f(X=x:a)

 

입니다.

 

 

이 가능성 함수는 바로 쓰면 불편하기 때문에 거의 대부분 log을 취합니다. 왜냐하면 이 확률분포는 대부분 지수 함수의 모양을 가지고 있어 log를 취하면 식이 굉장히 편해집니다.

 

또 우리가 하고자 하는 것은 이 가능성 함수를 최대화 시켜 주는 모수 a의 값을 찾는 것인데 그럼 모수 a에 대해 미분하여 0으로 놓고 풀어야 합니다. 그런데 가능성 함수 LF를 미분하여 0을 놓는 것이랑 로그 가능성 함수 LLF를 미분하여 0을 놓고 푸는 것이나 둘 다 근이 똑 같습니다. log 함수가 단조 증가함수이기 때문입니다.

 

 

예를 한번 들어 보겠습니다. 베르누이 시행입니다. 즉 동전을 던질 때 앞면이 나올 확률은 p 이게 모수입니다. 실제 동전을 한번 던졌는데 앞면이 나왔다고 하죠. 뒷면이 나오면 0, 앞면이 나오면 1이라고 하죠. 그럼 관찰된 변수 값은 X=1입니다.

 

 

확률분포는

 

 

f(x; p)=px*(1-p)(1-x)

 

 

입니다. 즉 x=1이면 즉 동전이 앞면이 나올 확룰은 f(x: p)=p이고, x=0 이면 즉 동전이 뒷면이 나올 확률은 (1-p)입니다. 즉 현실 실험을 제대로 표현한 모형입니다.

 

 

그럼 실제 던졌는데 앞면을 관찰했다는 것이죠. 즉, X=1이 관찰되었다는 것입니다. 그럼 가능성 함수 LF는

 

 

LF(p)=p1*(1-p)(1-1)=p

 

p가 0가 1 사이에 있으니까 이게 최대가 되는 경우는 p=1일 경우입니다. 즉 동전을 한번 던져 앞면이 나오면 이 동전이 앞면이 나올 확률 p를 우리는 1이라고 추정한다는 것입니다.

 

 

만약 동전을 던져 뒷면이 나왔다면, 즉 X=0 이라고 하면 가능성 함수 LF는

 

LF(p)=p0*(1-p)(1-0)=1-p

 

 

0과 1 사이에서 이 함수가 최대가 되는 경우는 p=0 이죠. 그래서 뒷면, 즉 x=0 일때 동전이 앞면이 나올 확률 p에 대한 우리의 추정은 0이 됩니다.

 

 

그러나 이렇게 데이터 x가 관찰될 때 마다 저걸 일일이 구해서 계산하는 것이 매우 불편하죠. 그래서 통계학 이론 책에서는 관찰된 X=x을 일반적인 값으로 생각해서 위에 말한 T(x)를 구해 냅니다. 이걸 추정량(estimator)라고 하고 실제 x에 여러분이 구한 값을 집어 넣어 나온 T(x)의 값을 추정치(estimate)라고 합니다.

 

물론 기초 통계학 책에서는 안 나옵니다. 인터넷에 돌아다니는 pdf로 책을 구해서 한번 보시기 바랍니다.

 

그럼 x는 관찰된 값, 숫자라고 생각하고 아래 식 함수가 최대가 되는 p 값을 한번 구해 볼까요. 일단 p에 관해 미분해서 0이 되어야 하죠.

 

f(x; p)=px*(1-p)(1-x)

  

위 식을 p에 관해 미분하는 것을 좀 골치 아프죠. 그래서 log을 취합니다.

 

LLF(p)=x*p+(1-x)*(1-p)

 

x는 숫자고 위 식은 오로지 p에 관한 함수이기 때문에 p에 관해 미분하는 것이 쉽죠. 그래서 미분해서 0으로 놓고 풀면

 

p의 추정=T(X)=X

 

라는 추정량 공식이 나옵니다. 그래서 여러분이 앞면이 관찰, 즉 X=1이면 p의 추정은 1이 되고 여러분이 뒷면을 관찰, 즉 X=0이면 p의 추정은 0이 됩니다.

 

 

 

 

3.

 

위의 방법은 통계학 교과서에 여러 가지 예를 들어 많이들 설명합니다. 그럼 대부분 아 저렇게 구하면 MLE를 구할 수 있겠구나 이렇게 생각할 겁니다. 그러나 이 방법은 아주 간단한 경우나 단순한 모형일 경우만 그렇습니다. 그래서 좀 복잡한 경우는 관찰된 데이터 X=x 값을 넣어 수치해석 방법을 많이 사용합니다. 컴퓨터 안에서 계속 반복해서 근사치를 찾아 간다는 것이죠.

 

 

이때 가장 많이 사용하는 방법이 Newton-Raphson 방식입니다. 이 방법은 워낙 유명해서 수치해석책 기본으로 다 나오는 방법입니다.

 

f(x)=0

 

일때 근을 찾는 방법입니다. 전에 글에서 함수가 복잡하면 우리가 실제로 뭘 분석해 낼 방법이 별로 없습니다. 그래서 다항식이나 삼각함수의 선형 결합으로 풀어낸다고 했습니다. 즉

 

f(x)=f(x*)+f'(x*)(x-x*)+f''(x*)(x-x*)2+...=0

=f(x*)+f'(x*)(x-x*)=0

 

두 번째 식에서 2차항 이상은 다 잘라내고 1차식만 가지고 풀어냅니다. 이때 구한 x 값이 두 번 째 값 x2이 되고 이걸 또 x*에 넣고 또 다시 세 번째 x 값 x3을 구하고 다시 위에 x*에 넣고 또 풀고 이렇게 하는 것입니다.

 

 

우리는 로그 가능성 함수를 미분한 것을 0으로 놓고 풀어야 하기 때문에

 

LLF(p)'=0

 

을 하기 때문에 실제로는 로그 가능성 함수 LLF의 2차 미분한 값 까지 사용해야 합니다. 흔히 LLF를 미분한 것을 스코어 함수(score function). 이차 미분한 것을 Fisher information 행렬이라 합니다.

 

 

그런데 문제는 이 Newton-Rapson 알고리즘이 그리 안정적이지 못하다고 합니다. 이건 제가 전문적으로 공부를 하지 않아서... 따라서 좀 더 안정적인 수치해석 방법이 EM알고리즘이라 생각하시면 됩니다.

 

그래서 EM은 로그 가능성 함수을 사용할 때 식이 복잡해지거나 또 일반적인 Newton-Raphson 알고리즘이 불안할 때 사용한다고 생각하시면 됩니다.

 

 

 

 

4.

 

로그 가능성 함수의 식이 복잡해지는 경우를 한번 보겠습니다. 범주형 변수와 연속형 변수와 같이 있는 Mixture Model을 한번 보죠. 예를 들어 키는 연속형 변수 Y라고 하고 관찰되는 변수이고요, 성별은 관찰되지 않는 범주형 변수 U라고 하죠. U=0이면 남자, U=1이면 여자인데 관찰이 되지 않는다는 것이죠. 그리고 남자일 확률이 a, 여자일 확률이 (1-a)이고 우리가 알지 못하는 모수라고 하죠.

 

 

이때 Y의 확률분포는

 

f(y)=a*N(뮤1, 시그마1)+(1-a)*N(뮤2, 시그마2)

 

이렇게 되고 우리는 관찰된 키 데이터 Y를 가지고 a, 뮤1, 시그마1, 뮤2, 시그마2를 추정해야 합니다. 당연히 뮤1은 남자의 키 평균, 뮤2는 여자의 키 평균이 되겠죠.

 

 

그럼 위 식을 log을 취해 보죠

 

 

LLF(a, 뮤1, 시그마1, 뮤2, 시그마2)=log(a*N(뮤1, 시그마1)+(1-a)*N(뮤2, 시그마2))

 

위 식을 모수 a와 뮤1, 시그마1, 뮤2, 시그마2에 대해 미분해서 0으로 놓고 방정식을 풀어야 하는데 log을 취해도 미분이 매우 복잡해집니다. 집단이 많아지고 더 복잡해집니다.

 

여기서 전의 글에서 강조해지만 f(y)는 f(y, u) 결합확률분포에서 구한 주변 확률분포입니다. 단독적인 키 y의 확률분포가 아닙니다.

다음 표를 한번 보죠

 

성별(X)

키(Y)

성별(U)

키(Y)

0

170

.

170

1

157

.

157

1

163

.

163

 

앞의 경우는 일반적인 데이터 모양입니다. 성별 x에 대한 빈도도 구할 수 있고 오로지 키 Y에 대한 평균과 표준편차를 구할 수 있습니다. 이때는 우리는 각각 독립적으로 성별 X, 키 Y에 대해 분석하는 것입니다. 또 성별과 키의 관계를 보고 싶으면 t 검증을 하는데(또는 범주가 여러개 일 경우 분산분석) 이럴 때는 우리는 두 개의 변수 X, Y를 동시에 고려해 결합 확률분포 f(x, y)를 생각해야 한다는 것이죠.

 

두 번째는 우리가 이야기 하는 은닉변수가 있을 경우입니다. 이 경우는 오로지 키 Y만 관심이 있다면 성별에 신경쓰지 않고 오로지 키 y에 대한 확률분포 f(y)만 고려하면 된다는 것이죠. 그러나 성별이 관찰되지는 않지만 성별에 따라 키에 분포와 성별의 비중에 대해 알고 싶다면 U와 Y 두 개를 동시에 고려한 결합확률분포 f(u, y)를 생각해야 하고 이때 U가 관찰되지 않기 때문에 결합확률분포 f(u,y)에서 주변확률분포 f(y)를 구해 이걸 가능성 함수로 생각해야 한다는 것이죠.

 

 

이 개념들을 구별하지 못하면 EM 알고리즘을 처음부터 이해하기가 힘듭니다.

 

그럼 지난 글에서 이 결합확률분포 f(y, u)에서 주변 확률분포 f(y)를 구하는 공식을 소개한 적이 있습니다.

  

 

 

 

첫 번째 식이 기초통계학에서 나오는 주변 확률분포를 구하는 공식이고 두 번째와 세 번째 공식이 인공지능과 관련된 이론에서 많이 쓰이는 조건부 확률을 이용해서 구하는 방식입니다. 두 번째는 연속형일 경우, 세 번째는 범주형의 경우입니다. 그래서 앞의 성별과 키의 경우 세 번째 공식을 이용한 것입니다. 즉 N(뮤1, 시그마1)는 f(y|u=0)이고 N(뮤2, 시그마2)는 f(y|u=1)인 경우입니다. 조건 확률분포라는 것이죠.

 

 

 

 

5.

 

그럼 이 혼합모형일 경우 EM은 어떻게 사용할까요. 책에 나오는 방법입니다. Davidson의 모델 선택이라는 책에 나오는 공식입니다.

 

 

  

 

 

 

 

여기서 세타=(a, 뮤1, 시그마1, 뮤2, 시그마2)라고 생각하시면 됩니다.

 

일단 세타'는 전혀 생각할 필요가 없고요. 나중에 반복 계산할 때 이전 모수 추정값이 됩니다.

 

 

위 식은 우리식 표현을 하면

 

 

ELLF(세타)=LLF(세타)+C(세타)

 

 

여기서 오른쪽 첫항에 나오는 로그 가능성 함수 LLF(세타)가 원칙적으로 우리가 최대화 시켜야 하는 가능 함수입니다. 이걸 사용하기 힘들기 때문에 그 대신 왼쪽에 있는 ELLF(세타)를 쓰자는 것이 EM 알고리즘의 핵심입니다. 오른쪽 두 번째 항인 C(세타)는 전혀 신경 쓸 필요가 없습니다. 나중에 EM 알고리즘이 좋다는 것을 증명할 때 사용되지 실제 계산에서는 전혀 신경쓸 필요가 없습니다.

 

 

분명히 우리가 쓰는 ELLF(세타)는 오른쪽 진짜 로그 가능성 함수인 LLF와 C(세타) 만큼 차이가 납니다. 그래서 이 갭을 줄이기 위해 계속 반복해서 세타 추정값을 찾아 나가는 것입니다.

 

'인공지능관련 > EM' 카테고리의 다른 글

혼합모형(Mixture Model)  (0) 2016.12.03
EM 공식 이해하기  (0) 2016.11.29
EM3  (0) 2016.11.14
EM 이해하기2  (0) 2016.11.10
EM 알고리즘 이해1  (0) 2016.11.10