인공지능관련/EM

EM 공식 이해하기

학위논문통계 2016. 11. 29. 03:49

 

 

1.

 

 

그럼 이번에는 EM의 공식을 이해하도록 해보죠. 실제 개념은 그렇게 어렵지 않습니다. 설명들이 좀 어렵게 나와서 그렇죠.

 

먼저 앞에서 이야기한 것처럼 세타‘이 나오는데 이건 잊기로 하고요. EM 반복 작업할 때 이전 세타값으로 집어 넣는 값입니다.

 

EM의 공식은 기초 통계학의 간단한 조건부 확률 공식에서 나옵니다.

 

 

f(y,u;a)=f(y;a)*f(u;a|y)

 

이걸 log 취하면

 

log(f(y,u;a))=log(f(y;a))+log(f(u;a|y))

 

 

log(f(y,u;a))=LLF(a)+log(f(u;a|y))

 

가 되고 여기서 오른쪽 첫째항인 LLF인 log(f(y:a)를 최대화하는 a값을 구해야 하는데 이게 안 좋으니까 왼쪽에 있는 log(f(y,u;a))를 사용하겠다는 생각입니다.

 

 

 

2.

 

그러나 분명히 두 항간에 오른쪽 두번 째 항인 log(f(u:a|y)) 만큼 차이가 있기 때문에 바로 log(f(y,u;a))를 사용하면 안 좋습니다. 그럼 여기서 가능하면 두 개를 일치하려면 log(f(y,u;a)를 u에 관해 기댓값을 취하면 조금 좋지 않을까 생각할 수 있습니다. 왜냐하면 LLF(a)는 u 값이 없기 때문에 왼쪽 항을 u가 나올 확률을 가중치로 평균하면 왼쪽 항이 LLF(a)와 좀 더 비슷하지 않을까 하는 생각이 든다는 것이죠. 아래 그림을 보시죠.

 

 

 

 

빨간색 곡선이 원래 우리가 추정해야 할 가능성 함수 LLF(a)입니다. 파란 색 곡선이 왼쪽 log(f(y,u;a)의 u=1인 경우, u=2인 경우, u=3인 경우입니다. 이렇게 u 값에 따라 다양하게 나오는 log(f(y,u;a))를 U에 대해 평균(즉 기댓값)을 해주면 빨간색 곡선인 LLF(a)와 좀 더 비슷하게 되지 않을까 하는 생각입니다. 여기서 빨간색과 파란색 곡선의 차이가 log(f(u;a|y))입니다.

 

 

그러나 이 보다 조금 더 나은 생각이 있습니다. 우리는 y에 대한 관찰값이 있습니다. 이 정보를 이용하는 것이 더 나을 거라는 생각이죠. 예를 들어 남녀의 경우 키 Y=180이라 나왔다고 하죠. 그럼 남녀에 대한 확률값, 가중치가 달라집니다. 즉 남자일 확률이 거의 1에 가깝게 된다는 것이죠. 이런 관찰된 Y를 이용하게 않고 단순하게 U에 대해 평균, 즉 기댓값을 취할 때는 남자, 여자 비중을 각각 0.5 정도 둬야 한다는 것입니다.

 

만약 U가 연령대라고 하면 키 Y=98.4라고 나오면 이건 거의 10세 미만의 어린이일 가능성이 1에 가깝고, 10세 이상일 확률은 거의 0에 가깝다는 것이죠.

 

그래서 왼쪽 log(f(y,u;a)에서 기댓값(평균)을 취할 때 단순히

 

EU[log(f(y,u:a))]

 

보다

 

EU|Y[log(f(y,u:a))]

 

하는게 좋습니다.

 

 

 

3.

 

일반적으로 확률변수 Y의 함수인 T(Y)의 기댓값은 다음과 같습니다. Y의 확률분포를 f(y)라고 하면

 

E[T(Y)]= t(y)*f(y)dy

 

또는 Z=T(Y)로 새로운 변수로 정의하면 Z의 대한 확률분포 h(z)를 새로 구해

 

E[T(Y)]=E(Z)=z*h(z)dz

 

이렇게 두 가지 방법으로 풉니다.

 

 

조건부 기댓값도 별 다르지 않습니다. U|Y에 대해 기댓값을 구하는 것은 U|Y의 조건부 확률분포 h(u|y)를 구해

 

EU|Y[T(Y,U)]= t(y,u)*h(u|y)du

 

를 해 주면 됩니다. EM의 복잡한 모형에서 제일 어려운 부분이 f(y, u;a)를 구하는 것과 조건부 확률 h(u|y)를 구하는 것입니다. 그래서 논문을 읽을 때 어떻게 f(y, u;a), h(u|y)를 구했는지 조심해서 읽으면 이해하기가 편합니다.

 

 

 

4.

 

제가 옛날에 일 때문에 은행에서 간단하게 통계 강의를 몇 번 한 적이 있는데 은행 연구소 직원을 대상으로 할 때도 기초통계학 개념도 거의 이해를 못하고 있었습니다. 이런 상황인데 은행에서 이상한 exotic 옵션인 키코를 개발해서 여러 회사에 팔아서 많은 회사들을 전부 파산상태로 만들었죠. 키코 사태라고 하죠. 이것도 한 은행이 아니고 여러 은행이 동시에, 그리고 은행 자체가 엄청 보수적인데 자기도 전혀 이해를 못하는 옵션 상품을 판다, 이건 말이 안되죠.

 

명박이 정권때 환율정책 정보가 사전에 빠져 나간 것이죠. 다음 정권에서도 이 키코 사태 다시 조사해야 합니다. 정부기관인 금융연구소 같은데서는 당사간에 사적인 계약 문제이기 때문에 아무런 문제가 없다고 실드쳐 주고요.

 

 

5.

 

그래서 앞의 식을 U|Y에 대해 기댓값을 취하면

 

EY|U[log(f(y,u;a))]=EY|U[log(f(y;a))]+EY|U[log(f(u;a|y))]

 

여기서 오른쪽 첫째항 LLF(a)은 그냥 log(f(y:a))입니다. y는 실제 데이터 값이라 숫자에 불과합니다. 그래서 오로지 모수 a에 대한 함수입니다. 기댓값을 취해서 똑 같은 식입니다. 그럼 우리 표현을 따르면

 

ELLF(a)=LLF(a)+C(a)

 

그럼에도 불구하고 여전히 LLF(a)와 ELLF(a) 사이에는 C(a)라는 차이가 있죠. 만약 LLF(a)와 C(a) 함수가 최대화되는 a 값이 일치한다면 왼쪽의 ELLF(a)을 최대화 시키면 됩니다. 그러나 그럴 가능성은 확률 0이라 봐야 합니다.

 

 

그래서 수치해석 방법으로 반복적으로 근을 찾는 방법을 생각합니다.

 

Y|U의 기댓값을 취할 때 a에 이전 반복작업에서 구한 특정 a* 값을 집어 넣습니다. Y|U, a=a*에 대해 기댓값을 취합니다. 그럼 위의 식은

 

ELLF(a, a*)=LLF(a)+C(a, a*)

 

여기서 a*도 그냥 숫자에 불과하기 때문에 양쪽 다 모두 a에 대한 함수이고 왼쪽의 ELLF(a, a*)를 최대화하는 a를 구한 다음 이 a값을 다시 ELLF(a, a*)의 a*의 값으로 넣고, 그런 다음 또 이 함수를 최대화 시키는 a를 구한 다음 ELLF(a, a*)의 a* 값에 넣고 이런 식으로 계속 진행한다는 것이죠. 그래서 구한 a가 이전의 값 a*와 거의 비슷하면 과정을 끝냅니다. 아니면 ELLF 값이 거의 비슷할 때가지 하거나.

 

그럼 이 과정에서 특징은 무엇인가? 이렇게 하면 항상

 

LLF(다음 과정 a) > LLF( 이전 과정 a)

 

즉 로그 가능성 함수가 반복적으로 진행할 때마다 증가하게 되어 있습니다. 그래서 최종적으로 LLF가 최대가 되는 a가 구할 수 있다는 것입니다. 이 과정을 증명하는데 C(a, a*)가 사용됩니다.

 

물론 안 되는 경우도 있습니다. 그리고 이 EM 계산이 상당히 느린 경우도 있다고 합니다.

 

 

Davison 책에 나오는 실제 과정의 그림을 한번 보죠.

 

 

왼쪽에서 실선 함수는 로그 가능성 함수 LLF(세타)입니다. 즉 우리가 직접 최대화하여야 하는 함수입니다. 그리고 점선 함수는 EM에서 사용하는 ELLF(세타)함수입니다. 점선 함수는 반복수가 증가할 수록 최대값이 되는 세타의 값이 LLF(세타) 함수의 최대가 되는 값으로 점점 접근합니다. 그림에서 점으로 나오죠.

 

그리고 왼쪽의 그림은 반복수가 증가할 때 실제 모수 세타의 값이 1.0으로 접근하는 모양을 그린 것입니다. 실선이 LLF(세타)의 경우이고 점선이 EM의 경우입니다. 실제 LLF(세타)를 최대화하는 세타를 구할 경우 5번 정도 반복하면 거의 1.0에 수렴하지만 EM을 사용하면 거의 60번 정도 반복해야 1.0에 수렴하는 것을 볼 수 있습니다.

 

다음은 MIxture Model과 Pet 모형(뇌 촬영)의 실제 계산 과정을 조금 상세히 적겠습니다.

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

PET, 뇌촬영  (0) 2016.12.11
혼합모형(Mixture Model)  (0) 2016.12.03
EM 이해하기4  (0) 2016.11.28
EM3  (0) 2016.11.14
EM 이해하기2  (0) 2016.11.10