본문 바로가기

etc

LDA

반응형

얼마 전에 누군가 LDA에 대한 질문을 해서 내 기억을 되살리기를 겸해서 기록을 남긴다.

http://blog.shurain.net/posts/5/

http://www.4four.us/article/2010/11/latent-dirichlet-allocation-simply

미리 밝히지만 나는 이 분야의 전문가도 아니고 그저 논문 몇 편을 읽고 쓰는 것이므로 틀린 내용이 있을 수도 있다. 그러니 틀린 내용이 있으면 가차없이 말해주시기 바란다.

LDA의 이야기를 하기 전에 우선 LSI 이야기를 조금 해보자. LSI는 Latent Semantic Indexing의 약자로 Deerwester 등이 만들어낸 방법이다. LSI는 선형 대수적인 도구(Singular Value Decomposition)를 사용해서 단어(term)와 개념(concept) 사이의 관계를 파악한다. 이렇게 만들어진 LSI는 꽤 훌륭한 결과를 내놓았고 관련 연구가 많이 있다. 당연한 이야기이지만 사람들은 이 LSI가 실제로 얼마나 훌륭한지 객관적인 판단을 내리고 싶었다. 그래서 생긴 것이 문서를 생성하는 모델이다. 사람들은 문서를 생성하는 그럴싸한 모델을 만들고 이를 통해서 LSI가 얼마나 문서 간의 관계를 잘 잡아내는지 확인하려고 했다. 그런데 여기까지 논리가 진행되면 애초에 문서를 생성하는 모델이 있기 때문에 굳이 LSI를 사용하지 않고 애초에 문서를 생성하는 모델을 사용해서 베이지안 기법을 사용하는 것을 생각할 수 있다. 그렇게 해서 LDA가 만들어졌다.

LDA는 우리가 문서를 생성하는 모델이라고 볼 수 있다. 간단히 LDA의 기본 아이디어를 설명하자면 다음과 같다. LDA는 문서를 단어들의 집합으로 바라본다. 이 단어들은 어떤 주제로부터 선택되었다고 볼 수 있으며 해당 문서가 어떤 주제의 분포를 가질 것인지도 그 밑에 깔린 특정 분포에서 나올 수 있다. 이런 아이디어를 갖고 다음을 살펴보자.

임의의 문서의 길이 N을 결정한다. 위의 예에서는 포아종 분포를 사용하였지만 다른 분포를 사용하여도 무방하다.

이제 알파를 따르는 Dirichlet 분포로부터 쎄타를 뽑는다. 알파는 모든 문서가 갖는 주제들의 분포를 결정짓는 변수로서의 역할을 한다. 그러므로 쎄타는 i번째 문서의 주제 분포를 결정하는 변수의 역할을 한다. 이제 위에서 결정한 문서의 길이 N을 순회하면서 매번 단어별 주제를 뽑게 된다.

쎄타가 i번째 문서에서의 주제 분포를 의미하므로, z는 i번째 문서의 j번째 단어의 주제를 의미한다. 이렇게 단어의 주제가 결정되었으니 최종적으로 단어를 뽑게 된다.

w가 i번째 문서의 j번째 단어를 뜻하며 이 단어는 결국 단어의 주제인 z와 전체 주제에서 단어의 분포를 결정하는 베타에 의존적이게 된다.

<출처 : 위키피디아 LDA>

이를 도표화 하면 위와 같은 방식으로 표현할 수 있다.

이런 방식으로 문서를 생성하는 방법을 완성하고 나면 그 이후에는 베이지안 방법을 사용해서 우리가 관측한 단어 w를 토대로 숨겨진(latent) 변수들을 추론하는 작업만 남게 된다. 이를 수식으로 표현하면 다음과 같다.

하지만 이 작업도 간단하지는 않은 게 위의 수식을 풀어나가다 보면 쎄타와 베타 사이의 커플링이 생기는데, 이 때문에 정확한 계산은 사실상 불가능하다(intractable). 그래서 수식을 근사시켜서 계산하게 되며 근사 방법은 여러 가지가 있다. LDA 논문에서는 라플라스 근사(Laplace Approximation), 변동 근사(Variational Approximation), 마르코프 체인 몬테카를로 방식(Markov chain Monte Carlo) 등을 예로 들고 있다. 논문의 뒷부분에서는 변동 근사를 실제 예로 들어서 어떤 방식으로 근사할 것인지에 대한 논의를 한다.

아무튼 이러한 방법으로 베이지안 추론을 사용하면 결과적으로 원하는 대로 관측한 문서를 토대로 주제를 뽑아내는 것이 가능하다. 그 이후부터는 LDA를 활용하는 것만 남게 된다. 여기까지가 내가 이해하는 LDA이다. 위에서도 언급하였지만 틀린 내용이 있을 수도 있으니 100% 신뢰하지는 말도록 하시고 그저 참고용 정도로 읽어주시면 되겠다. 혹시라도 틀린 내용을 발견하시면 꼭 저에게도 알려주셨으면 한다.

반응형

'etc' 카테고리의 다른 글

당1  (0) 2012.10.29
log life time  (0) 2012.10.19
apple publishing systems developer  (0) 2012.09.16
다형성  (0) 2012.09.15
공무원  (0) 2012.08.27