미친 듯 살고 싶다.

Latent Dirichlet Allocation 본문

생산적잉여

Latent Dirichlet Allocation

arongdari 2010. 6. 2. 16:18
오늘은 허세블로깅
1년간 나를 괴롭혀 왔던 LDA(Latent Dirichlet Allocation)에 대하여 정리해보자.
LDA를 한마디로 정의하자면 Unsupervised Generative Topic Model이다!

위 문장을 이루는 각각의 단어에 대해 잠깐 말하자면

Unsupervised라는 것은 supervise 즉 감독이나 지도하는것이 없다는 뜻으로 쉽게 말해서 일반적인 classification문제들은 모두 Supervised Problem의 한 영역이라고 볼 수 있다. 
즉 A라는 데이터가 주어졌을때 이게 1번 클래스에 속하는지 2번 클래스에 속하는지를 판단하는 문제가 있다고 했을때, 우리는 정답이 무엇이든지 상관없이 데이터가 들어왔을때 이 데이터가 1이나 2라는 두개의 클래스중 하나에 속해야 한다는 사실을 알 수가 있다.
이런 문제들을 supervised 문제라고 한다.
Supervised Problem과는 달리 Unsupervised problem에서는 이런 데이터를 나누는 명확한 기준이 제시되지 않는다. 말하자면 데이터가 주어졌을때 이것이 어떤 클래스에 속하는지를 알고싶은데 어떤 클래스가 존재하는지 조차 모를때가 있다. 이런 문제들을 Unsupervised problem이라고 한다.(맞나?)
나에게 데이터 만개가 주어졌다고 할때, 이 데이터들을 비슷한 녀석들끼리 묶어주는 알고리즘이 Clustering 알고리즘이며 Clustering 은 대표적인 Unsupervised Problem중 하나이다. Clustering에 있어서 중요한 것은 우리는 각 데이터가 어떤 영역에 속하는지 명확히 알 수 없다는 것이다. 그냥 데이터 A와 데이터 B가 비슷하니까 얘들 둘이 하나로 묶어야겠다 뭐 이런거다.

Generative는 말 그대로 생성한다는 뜻이다.
처음 조요한군이 LDA에 대해 상세하게 설명해주었었는데
Corpus가 어쩌구  phi가 어쩌구 theta가 어쩌구 했는데 그 당시
가장 이해가 안되었던건 모델에서 단어를 '생성' 한다는 것이었는데
그당시에는 그러면 저 모델만 있으면 문서를 자동으로 쓸 수 있다는 건가?
정도의 황당한 생각을 했었다...
당연히 모델만 있으면 정말 문서를 만들어 낸다는 뜻은 아니고,
보통 어떤 문제를 풀기위해 확률적으로 접근할때 두가지 방법이 존재하는데 그중 하나가 Generative한 측면에서의 접근법이며 다른 하나는 Discriminative한 측면에서의 접근법이다.
Generative Model의 경우에는 데이터가 어떻게 발생되었느냐? 의 측면에서 문제를 접근해 나가는 것이다. 즉 어떤 데이터들이 주어졌을 경우 이 데이터가 생기기 위해서 내부적으로 어떤과정과 어떠한 원인을 통해 이런 데이터가 생성되었느냐의 측면에 초점을 맞추는 것이다. 이는 Bayesian Approach와도 맞닿아 있으며 왜 Prior가 중요한지 와도 연결되는 문제이다.
Discriminative Model은 이와는 조금 다른방식의 접근방법을 사용하는데 발생된 데이터들을 바탕으로 이를 나누는 기준이 무엇인가? 에 초점을 맞춘 접근방식이며 데이터가 발생한 원인이나 과정등을 직접적으로 다루지는 않는다.

Generative / Discriminative Approach에 대해서는 다음에 다시 다루기로 하며
주 목적인 LDA로 다시 돌아가서 우선 LDA가 다루는 문제가 무었인지를 확인해 보자.
우리가 LDA를 사용해서 할 수 있는것은 문서 내에서 토픽을 찾는것이다.
즉 나에게 1만개의 문서가 있다고 가정하고 이 1만개의 문서를 구성하고 있는 어떠한 토픽(어떤 토픽들이 있는지는 알 수 없다)들을 알아내고 싶다고 했을때 사용 할 수 있는것이 바로 이 LDA 모델인 것이다.
그렇다면 무엇이 LDA 모델을 이렇게 유명하게 만든것일까?
LDA의 가장 큰 장점은 각각의 문서를 토픽들의 집합으로 본것이다. (즉 Document는 Mixture of Topic이라는 말이다.)
만약 내가 "김제동, 외압으로 '김제동 쇼'하차" 라는 기사를 본다고 생각해보자.
이 기사에는 김제동이 어떤 정치적 이유 때문에 김제동 쇼에서 하차하게 되었다는 내용이 적혀있을것이다.  일반적으로 '김제동'이라는 단어를 '연예'라는 토픽에 속해 있다고 봤을때 이 기사는 '연예'라는 토픽만을 다룬 것이 아니라 '외압' 즉 어떤 '정치'에 연관된 토픽 또한 다루고 있다.
이와 같이 모든 문서는 하나의 토픽에만 속하는 것이 아니라 두세가지의 다른 토픽들의 혼합(Mixture)으로 정의 할 수 있는데 이것이 LDA가 가지는 가장 큰 가설중 하나이다.


이것이 바로 문제의 LDA 모델.



위의 그림이 바로 LDA를 Graphical한 Plate Model로 표현하였을때의 모습이다. 이 그림에 대해서는 나중에 좀 더 자세히 알아보도록 하자.
위에서 LDA는 Generative Model이라고 하였고 Generative Model은 결과가 발생하기 위한 어떤 과정과 원인을 추론하는 방법이라고 했다.
그렇다면 사람이 글을 쓰기위해서는 어떤 과정이 필요할까?
현실적인 가정은 아니지만 LDA에서는 사람이 글을 쓰는 과정을 아래와 같은 방식으로 모델링 하였다.
우선 첫번째로 내가 문서를 쓰기 위해서는 이 문서가 어떠한 내용들(토픽)을 다룰 것인지를 정한다.
이렇게 문서의 토픽들이 정해지고 나면 문서를 쓰기 시작하는데,
단어 하나를 쓰기위해 우선 이 단어가 어떠한 토픽에 속할지를 정하게 되고,
이렇게 이 단어의 토픽을 정하고 나면 이 토픽을 형성하는 단어의 집합속에서 한 단어를 뽑게된다.
이렇게 뽑힌 단어를 문서에 쓰게된다. 이 과정을 한 문서가 끝날때 까지 반복하면 하나의 문서가 완성되는 것이다.

중요한거니까 다시한번 간략하게 말하자면
1. 문서의 토픽''을 정하고
2. 각 단어의 '토픽'을 정하며
3. 토픽을 형성하는 단어의 집합에서 단어를 '뽑아' 문서에 쓴다.
의 개념으로 이해하면 되겠다.

실제로 사람이 글을 쓰는 과정과는 조금 다르지만 조금 추상화된 단계에서 보면 대충 이런방식을 따르고 있다는 것을 알 수 있다.

다음번에는 위의 과정들을 plate model과 함께 좀 더 formal하게 수학적 수식을 통해서 알아보도록 하자. 오늘은 이만 총총..

신민둥은 위에꺼 읽고 나한테 발표할것!


12 Comments
댓글쓰기 폼