LDA

ph
이동: 둘러보기, 검색

일단 위키.(여기보면 처음 발표된 논문은 인용이 10k가 넘는 굉장히 기념비적인 논문이라고 함.) 뭔가 엄청나게 복잡한 수식이 마구마구 등장한다. 읽어볼 엄두도 안냈음.
이걸 또 한글 위키(잠재 디리클레 할당)로 모두 번역하는 수고를 누군가 했다. ㄷㄷㄷㄷㄷ

한글로 된 참고할 만한 자료들이 몇개 있기는 한데 다 대동소이하고, [잠재 디리클레 할당 파헤치기] 3. 깁스 샘플링으로 파라미터 추정[1]이 가장 좋다. 구체적인 예시와 함께 있다.


[1]읽을 때 미리 염두에 두면 좋을 것:

  1. 문서가 가지는 주제의 분포\(\theta\)와 각 주제가 가질 수 있는 단어의 분포\(\varphi\)를 모른다.
  2. 단어가 어느 주제에 속해 있는지 맞추는 것이 목적 : 여기서는 (collapsed) gibbs sampling한다.

단어를 주제에 (잘) 매칭하면, \(\theta, \varphi\) 둘 다 자동으로 나온다.

collapsed gibbs sampling한다고 하는데, gibbs sampling과 (약간) 다른 것이다.[2]
gibbs sampling은, \(x_{j}^{ {(i+1)}}\)를 \({\displaystyle p\left(x_{j}^{(i+1)}|x_{1}^{(i+1)},\dots ,x_{j-1}^{(i+1)},x_{j+1}^{(i)},\dots ,x_{n}^{(i)}\right)}\)에 따라 update하는 반면, collapsed gibbs는 아예 일부를 marginalize하고 update한다고 한다.

imagine that a model consists of three variables A, B, and C. A simple Gibbs sampler would sample from p(A|B,C), then p(B|A,C), then p(C|A,B). A collapsed Gibbs sampler might replace the sampling step for A with a sample taken from the marginal distribution p(A|C), with variable B integrated out in this case.[3]

(이게 설명만 읽으면 알겠는데 또 위에 [1]에서 실제로 하는것 보면 collapsed가 아닌것 같고 그렇다고 basic version하고는 또 달라서 그냥 알쏭달쏭하다. basic version이라면 LDA할 때 하나를 빼놓는 것이 아니라 나머지에 대해 조건부확률을 보아야 할 것인데 아예 그 하나를 빼버리고 나머지만으로 분포를 구성한 후 추정하기 때문에 collapsed인가 싶다가도, collapsed는 빼버린 그것을 추정하는 것이 아니고 빼버린후 (뺀건 생각하지 않고) 나머지에 대해 sampling하는거 같은데, 그럼 아니지 않나 싶기도 하고 -_-)


hyperparameter로 \(\alpha, \beta\)가 더해지는데, 아마도 dirichlet distribution[4]이 prior를 추정하면 \(\operatorname {Dir} (K,\mathbf {c} +{\boldsymbol {\alpha }}) \)라서 그런듯하다. (\(\mathbf {c}\)는 occurence. 즉, 발생횟수) 확실치 않음.

[5]에 보면 from scratch부터 구현되어 있다.


gibbs로 iteration을 많이 돌면 최적점에 수렴한다고 확신할 수 있는지 궁금한데, 그 증명은 못찾아보겠다. dirichlet distribution이 unimodality[6]를 보장하면 되는건가(혹은 그 반대인가) 싶다가도.. 그냥 모르겠음. 말하자면 뭔가 solution을 찾기엔 rank가 부족하다는 느낌이 있다.

지금까지 이해한 바로는,

이 추정의 결과가 거의 항상 일치할 수 있는 이유는 단어가 document로 묶여있기 때문. hyperparameter를 모두 1보다 작게(위의 예시에서도 \(\alpha=0.1, \beta=0.001\)주었음)주면 각 단어가 가질 수 있는 주제가 ‘rich get richer’ fashion으로 모이게 되어 있다. 주제별 단어분포에서 몇개의 단어가 dominant해진다는 얘기. document의 주제도 마찬가지다. 극단적인 경우, 주제 하나가 단어 하나만 가지고, 문서 하나도 하나의 주제만 100% 가지게 될 것이다. 애초 랜덤하게 단어마다 주제를 배치하면 단어의 주제나, 문서의 주제도 거의 균일하게 퍼져 있게 되어 있어서 여기에 sparcity를 가하는(\(\alpha, \beta\)를 가해서 sampling and reassign하는) 과정에서 한 문서 안에 묶인 단어들이 되도록 같은 주제를 가지도록 단어별 주제분포가 따라서 변한다. 곧, 허락하는 한 가장 극단적으로 entropy를 낮춘다는 얘기. (위키에 entropy항목[7]이 있는데 이건 또 무슨소린지 모를 소리만 몇줄 ㅋㅋ ) 따라서 document가 '실제'로 존재하는 문서들처럼 단어를 균일하게(이래야 너무 극단적인 분포를 가지는 것을 막아준다), 그리고 적당하게 불균일하게(주제에 편향된 단어분포를 가질 것이므로) 가지고 있지 않고, 어떤식으로든 조작되어 있다면 (결국, LDA적용 이후상태라면… -_- ) 잘 동작하지 않을 것이다. 관찰되는 document의 양이 많을수록 유리한, 그러니까 실제로 써먹으려면 양질의 데이터가 어느정도 있어주어야 한다는 뜻.



blog comments powered by Disqus