LDA에 대해서 #2 - 왜 Dirichlet인가?

앞선 글과 관련해서 LDA에서 왜 하필 Dirichlet distribution을 사용하였는지에 대해 내 개인적인 생각을 늘어놓아 보도록 하겠다.

나는 통계학 공부를 따로 했던 사람이 아니고 그저 LDA 논문을 이해하고자 위키피디아나 다른 참고문헌을 발췌해서 부분적으로만 읽은 것이 다 이기 때문에 이 내용은 틀릴 수도 있다. 개인적인 해석에 불과하므로 제대로 아시는 분이 있다면 꼭 알려줬으면 한다.

기본적으로 우리는 특정 문서가 갖는 주제 분포로부터 단어별 주제를 뽑고 싶다. 주제가 여러 가지가 있고 그 주제들의 분포에서 특정 주제를 뽑아내는 행위를 모델링 하기 위해서 multinomial distribution을 사용하면 된다. 우리는 베이지안 방법을 사용할 것이고 posterior distribution이 multinomial distribution이므로 그 conjugate prior인 Dirichlet distribution을 prior probability distribution으로 사용하는 것이 자연스럽다. Conjugate prior를 택하는 이유는 직관적인 이해와 더불어서 계산의 편의를 도모하기 위함이다.

위의 글이 내가 이해하는 `왜 Dirichlet distribution인가?'에 대한 답이다. 사실 이 내용이야말로 완전 개인적인 추측에 불과해서 거짓말일 가능성이 농후하다. 제발 누가 나에게 좀 제대로 된 설명을 해줬으면 좋겠다.

통계학 공부가 필요하다고 느끼는 때가 매우 많지만 특히 그런 생각이 드는 경우가 바로 위와 같은 센스가 요구되는 경우이다. 특정 표본을 뽑았을 때 모집단의 분포에 대한 예측을 한다던지와 같은 분포에 대한 감이 요구될 때 답답한 느낌이 든다. 언젠가는 먹어치워야 할 녀석일 텐데 아직은 그날이 꽤 멀리 있는 것 같아 조금 안타깝다.

0 Replies

E-mail은 비공개이며 스팸 확인용으로 사용됩니다. 댓글은 마크업 사용이 불가능하되 링크는 자동으로 링크가 걸리며 줄바꿈을 인식합니다.

LDA에 대해서

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

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

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% 신뢰하지는 말도록 하시고 그저 참고용 정도로 읽어주시면 되겠다. 혹시라도 틀린 내용을 발견하시면 꼭 저에게도 알려주셨으면 한다.

8 Replies
kek :

외계어네요..

2010-02-24 04:16:14

kek // 내가 당시에 이 논문 읽으면서 머리 깨지는 줄 알았었지. 통계를 잘했었으면 말을 안해; `하나도 모르는데 이걸 발표하라고? 허허허허' 수준이었지;

2010-02-24 04:18:49
일념 :

문외한이라 정확히는 모르겠지만, LDA가 나온 동기를 잘 설명한 듯. 자네의 연구에서도 이걸 쓰는 건가?

2010-02-24 12:58:28

그래. 확률 통계가 필요하지 젠장 -_-
L...로 시작하는 A 들은...
뭔가 좋고 그럴싸한거 같긴한데..
실제로 적용하려면 좀 난감한 부분들이
있는듯..(해서 거의 안봤다는 =_=;)
근데 왜 저런걸 보구있남?
-난 IR with Language model에 관심을 갖는중. 역시나 확률통계를 잘하고 오세요..랄까나;

2010-02-24 13:57:50

일념 // 고급AI 발표 주제였어요. 지금하는 연구와 직접적인 관련이 있지는 않아요.

waityet // 확률 통계 ㅠㅠLanguage model 저도 한 번 봐야겠네요

2010-02-24 14:36:31
dgoon :

근데 Dirichlet 이거 머라고 읽어? 한글로 써줘 ㅋ

2010-02-25 17:14:04

dgoon // 디리클레가 원래 발음에 가까운 것 같아요.

2010-02-25 17:20:08
유키 :

디리클레 맞아욤

2010-02-26 12:11:43

E-mail은 비공개이며 스팸 확인용으로 사용됩니다. 댓글은 마크업 사용이 불가능하되 링크는 자동으로 링크가 걸리며 줄바꿈을 인식합니다.