상세 컨텐츠

본문 제목

[토픽 모델링] 확장된 LDA 기법들 - ATM, DMR

그냥 공부

by ∫2tdt=t²+c 2017. 7. 1. 01:21

본문

앞선 글에서 토픽 모델링의 대표적인 기법이라고 할 수 있는 LDA(Latent Dirichlet Allocation)에 대해서 다뤄보았는데요, 이번 글에서는 LDA를 확장한 기법들 몇 개를 살펴보고자 합니다. 복습으로 다시 한 번 LDA 토픽 모델링 기법을 정리해보자면 다음과 같겠죠. K개의 주제와 V종류의 단어가 들어가 있는 M개의 문헌이 있다고 합시다. 우리는 하나의 문헌이 여러 개의 주제들의 조합으로 이루어져있고, 각각의 주제는 여러 개의 단어가 포함된다고 가정합니다. 이 문헌의 주제 분포와 주제의 단어 분포가 디리클레 분포를 따른다고 가정하고, 실제 관측되는 문헌의 단어로부터 문헌별 주제 분포와 주제별 단어분포를 추론해내는 작업, 이 것이 LDA 토픽 모델링 기법입니다. 그러나 이 LDA 기법에서 놓치고 있는게 몇 개 있습니다. 문헌을 작성한 저자들이 여러명일 경우 저자에 따라서 사용하는 주제나 단어가 다를 수 있지 않을까요? 만약 그렇다고 하면 저자에 따라 선호하는 주제의 차이를 발견할 수 있을까요? 이런 아이디어에서 출발한 것이 ATM모델입니다.


Author Topic Model 모형

이 단락은 이 슬라이드논문 Rosen-Zvi, M., Griffiths, T., Steyvers, M., & Smyth, P. (2004, July). The author-topic model for authors and documents. In Proceedings of the 20th conference on Uncertainty in artificial intelligence (pp. 487-494). AUAI Press. 을 참조하여 작성되었습니다.


이 모형이 LDA와 가장 다른 점은, LDA는 문헌별 주제분포를 계산하는 반면, ATM은 저자별 주제분포를 계산한다는 것입니다. 즉 이 모델은 문헌에 특정 주제가 얼만큼 포함되어 있는지보다는 그 문헌을 작성한 저자가 어떤 주제를 주로 사용했는지에 집중합니다.

ATM 모형의 Plate Notation은 다음과 같습니다.


그림에서 확인할 수 있듯이, LDA 모델에서는 주제분포 θ가 D Plate 안에 들어가 있습니다. 반면, ATM 모델에서는 밖에 빠져나와있고, 저자 a_d에서 나온 저자값 x와 그 저자의 주제분포 θ_a의 영향을 받아 주제 z가 결정되지요.


만약 모든 문헌의 저자가 다를 경우, 각각의 저자가 가지는 주제분포는 곧 그 저자가 작성한 유일한 문헌의 주제분포가 되므로, 이 경우 ATM모델은 LDA모델과 같아집니다. 즉 LDA 모형은 ATM 모형에서 모든 문헌의 저자가 다른 특수한 경우라고 볼수있고, 거꾸로 ATM 모형은 LDA 모형의 일반화된 버전이라고 할 수 있겠죠. 그렇다면 저자의 주제분포는 어떻게 계산할 수 있을까요? LDA에서 문헌별 주제분포를 계산하던 것을 생각하면 그리 어렵지 않습니다. 


위의 수식은 깁스샘플링을 이용해 LDA 확률모형을 풀어쓴 것입니다. C_mj는 단어 m이 주제 j에 속하는 횟수이고, C_dj는 문헌 d의 단어들이 주제 j에 속하는 횟수입니다. 문헌 d에 속하는 어떤 단어 m이 주제 j에 속할 확률은 주제 j에 속하는 모든 단어 중에서 단어 m이 차지하는 비중문헌 d에 속하는 모든 주제 중 주제 j가 차지하는 비중의 곱에 비례한다는 것입니다.



ATM모형에서도 비슷합니다. 다만 문헌별로 주제 비중을 계산하는 것이 아니라 저자별로 주제 비중을 계산한다는 차이점이 있는 것이죠. C_mj는 위와 같고, C_kj는 저자 k의 단어들이 주제 j에 속하는 횟수를 나타냅니다. 즉 이 경우 저자 k의 문헌에 속하는 어떤 단어 m이 주제 j에 속할 확률은 주제 j에 속하는 모든 단어 중에서 단어 m이 차지하는 비중과 저자 k에 속하는 모든 주제 중 주제 j가 차지하는 비중의 곱에 비례합니다. 간단합니다!



Dirichlet Multinomial Regression 모형

이 단락은 Mimno, D., & McCallum, A. (2012). Topic models conditioned on arbitrary features with dirichlet-multinomial regression. arXiv preprint arXiv:1206.3278.를 참조하여 작성되었습니다.


ATM 모형의 경우 단순히 문헌의 주제분포를 저자의 주제분포로 옮긴 것이라고 생각할 수 있다면, DMR 모형은 LDA모형을 훨씬 과감히 확장했다고 볼수 있습니다. 문헌의 주제 분포를 관장하는 하이퍼 파라미터 α가 그 문헌의 메타데이터(저자, 연도, 기관, 국가 등등)에 따라서 달라질 수 있다고 가정한 것이지요. 따라서 ATM 모형에서는 저자별로 달라지는 주제분포만을 파악할 수 있었지만, DMR에서는 저자뿐만이 아니라 문헌에 할당된 명목변수라면 어떤 것도 사용할 수 있습니다. 예를 들어 문헌이 작성된 연도를 메타데이터로 사용한다면, 연도에 따라 달라지는 주제 분포 파라미터를 구할 수 있겠죠?


DMR의 Plate Notation입니다. LDA와 비교했을때 외부에 빠져있던 α가 안으로 들어가고 그 α를 지배하는 자질로 λ가 새로 도입되었습니다. λ는 평균이 μ이고 표준편차가 σ인 정규분포를 따르는 메타데이터별 하이퍼 파라미터 결정값입니다. (어 그러면 최종적으로 μ와 σ는 하이퍼 파라미터인 α의 분포를 지배하므로 하이퍼 하이퍼 파라미터라고 해야하려나요..?)


α를 결정하는 변수가 추가된 관계로 이 모델의 문헌 생성과정 역시 좀 더 늘어났습니다. 먼저 기호 설명부터 하자면 w는 관측가능한 문헌 내의 단어, x는 문헌의 메타데이터입니다. 나머지는 LDA모델과 동일합니다. 

메타데이터는 총 F개가 있다고 가정하며 이는 F차원의 벡터로 One-hot encoding 됩니다. (One-hot encoding한다는 것은 한 성분만 1이고 나머지는 모두 0인 벡터로 표현하는 것을 의미합니다. 즉 메타데이터 A, B, C 3종류 있다고 하면 메타 데이터 A는 (1, 0, 0), B는 (0, 1, 0), C는 (0, 0, 1)처럼 나타내는것이죠!)


문헌 생성과정은 크게 2단계로 이뤄집니다. (굵게 처리한 부분이 DMR에서 달라지는 부분입니다.)


1. 주제별로 메타데이터 분포 및 단어 분포를 뽑기


* λ_t ~ N(0, σ²I)

* φ_t ~ D(β)


λ_t는 F차원의 벡터입니다. 각각의 차원을 독립으로하는 평균이 0, 표준편차가 σ인 다변수 정규분포에서 λ_t를 하나 뽑습니다. 그리고 φ_t는 LDA에서와 마찬가지로 V차원의 벡터(V는 서로 다른 단어의 종류수)이고, 하이퍼 파라미터 β를 따르는 대칭적인 디리클레 분포에서 그 값을 뽑습니다. 모든 주제에 대해서 이 작업을 반복하며 주제별 메타데이터 분포와 주제별 단어 분포를 생성합니다.


2. 문헌 생성하기


* 모든 주제 t에 대해서 α_t = exp(x_d . λ_t) 를 계산하여 해당 문헌에 사용할 α를 계산

* θ_d ~ D(α)

* 모든 단어에 대해 z_i ~ M(θ_d), w_i ~ M(φ_zi) 를 뽑음


앞서 생성해두었던 λ_t를 이용해 이 문헌의 주제분포를 결정할 하이퍼 파라미터 α를 구해냅니다. λ_t가 F차원의 벡터였다는 것 기억나시죠? 메타데이터 벡터 x는 문헌의 메타데이터를 One-hot encoding한 것이었죠. 따라서 둘을 내적하면 해당 메타데이터가 속한 부분의 성분값만 나오게 됩니다. (예: λ_t = (0.5, 0.3, -0.7), x_d = (0, 1, 0) 이라면 x_d . λ_t = 0.3 이 됩니다.) 이렇게 λ_t에서 하나의 성분을 골라낸 것들을 exp 계산하고(exp를 계산하기때문에 그 값은 항상 0보다 커져서 하이퍼 파라미터로 기능할 수 있게 됩니다) 모든 주제에 대해서 모으면, 그 문헌의 주제 분포 하이퍼 파라미터가 됩니다. 이렇게 문헌의 메타데이터 별로 α값이 바뀐다는 점이 하이퍼 파라미터 α가 모든 문헌에 대해서 같으면서 대칭적이었던 LDA와 다른점이죠.

즉 예를들어, LDA에서는 α = 0.1, K=3으로 설정했다면 모든 문헌의 주제분포는 디리클레 분포 D(0.1, 0.1, 0.1)를 따르게 되지만, DMR에서는 λ에 따라서 메타데이터가 A인 문헌은 D(0.5, 1.1, 0.3), B인 문헌은 D(0.2, 0.3, 2.1)을 따르는 등 차이를 둘 수 있다는 것입니다.


그리고 메타데이터에 의해 계산된 α에 따라 주제 분포를 산출하고, 모든 단어에 대해서 주제 분포에서 주제를 하나 뽑고, 그 주제 안에서 단어를 하나 뽑는 식으로 문헌이 생성됩니다.



이론적으로는 아주 완벽한데요, 이를 실제로 계산할 수 있을까요? 이 역시 깁스샘플링을 통해서 가능합니다. 사실상 대부분은 LDA 깁스 샘플링 과정과 같습니다. 하이퍼 파라미터 계산 부분이 추가된것만 빼구요. 그 과정을 요약하면 다음과 같습니다.

  1. 각각의 단어에 임의의 주제를 배정한다
  2. (잘못됐겠지만) 모든 단어에 주제가 배정되어있고, 그 결과 문헌별 주제 분포와 주제별 단어분포가 결정되었음. 이를 깁스샘플링을 통해서 개선해 나가자.
  3. BFGS를 이용해 현재 분포에 가장 적합한 lambda를 찾는다.
  4. n번째 단어를 골라 빼낸다. (나머지 단어들이 모두 적절하게 배정되어 있다고 가정하고)
  5. 빼낸 단어를 제외하고, 그 단어가 속한 문헌의 주제분포(P(Topic | Document))를 계산하고, 그 단어가 속한 주제의 단어분포(P(Word | Topic))를 계산한다. P(Word | Topic) * P(Topic | Document)를 최대로하는 Topic을 찾아 그 단어에 배정한다.
  6. n <- n+1로 하고 4번으로 돌아간다. 
  7. 깁스 샘플링 한 사이클이 끝나면 3번으로 돌아가 다시 반복. 충분히 반복하다 보면 값들이 수렴하고 안정되게 된다. 그럼 끝.

3번 부분이 추가되는 부분입니다. λ가 주제 분포에 영향을 미치고, 이것이 결국 단어의 주제 z에 영향을 미칩니다. 그리고 이 주제 z에서 단어 w가 뽑히는 것이구요. 우리는 w가 무엇인지 알수 있습니다. 따라서 현재 보이는 w와 w에 임의로 배정된 z를 통해서 가장 가능성이 높은 λ값을 찾을 수 있습니다.


먼저 P(Λ=λ|W,Z)는 다음과 같이 계산할 수 있습니다. (당황하지마세요... 그냥 그렇다고 식이 저렇게 풀어질수가 있답니다... )

(이때 입니다.)


핵심은 무엇이냐면 결국 주제 개수 T, 메타데이터 개수 F에 따라 T x F 차원의 행렬로 표현할 수 있는 λ가 위 복잡한 식의 변수이고(x, z는 이미 결정되어 있음을 기억하세요!), 이 값에 따라 위 확률의 값이 변한다는 것입니다. 이 확률을 최대로 하는 λ를 추정할 수 있으면 좋겠죠. 수학 문제를 풀듯이 완벽한 답을 구하는 것은 불가능하지만 BFGS라는 최적화 기법을 이용하면 위 식을 최대로하는 값 λ를 근사할 수 있습니다. (최적화에 대해서는 http://darkpgmr.tistory.com/149 를 참조하시길 바랍니다.)

즉 이렇게 새로 구한 λ를 바탕으로 α가 얻어지고, 이 값에 따라 다시 각각의 단어들의 주제 배정을 업데이트할 수 있겠죠. 이를 수렴할때까지 반복하면 우리는 모든 단어들이 적절한 주제에 배치되고, 그에 따라 문헌의 주제분포와 주제의 단어 분포, 그리고 메타데이터별 하이퍼 파라미터 λ를 얻을 수 있습니다.


만약에 메타데이터가 A, B, C로 3종류가 있고, 주제가 2종류 있다고 하면 최종적으로 나오는 λ는 다음과 같은 형태일 것입니다.


λ A B C
#1 -1.074 0.942 0.196
#2 0.866 -1.118 0.196

이는 무슨 의미일까요? 얼핏보면 메타데이터 A는 #2 주제가 우세하고, B는 #1이 우세하다. C는 비등비등하다. 이 정도로 해석할 수 있겠죠. 하지만 이 값들을 가지고 그 이상의 의미 해석을 하기는 어렵네요. 수학적인 관점에서 접근에서 의미 해석을 해보죠.


α를 구하기 위해 이 값에 exp를 씌우면 다음과 같이되죠.

α=exp(λ) A B C
#1

0.341

2.565

1.216
#2 2.377 0.326

1.216


그리고 이 말은 메타데이터가 A인 문헌의 주제분포는 기본적으로 디리클레 분포 D(0.341, 2.377)를 따르고, 메타데이터가 B인 문헌의 주제분포는 D(2.565, 0.326)를 따른다는 것이죠. 즉 우리는 각각의 문헌에 대해서 살펴보지 않고도 λ값을 통해서 해당 메타데이터에 속하는 문헌들의 주제분포를 예상해볼수 있습니다. 만약 메타데이터 A를 가지는 어떤 문헌이 주제#2을 평균적으로 얼만큼 포함할지 계산하고 싶다면 디리클레 분포의 특성상 간단하게 2.377 / (0.341 + 2.377) = 0.874라고 계산할 수 있죠.


DMR은 LDA의 확장이라고 볼 수 있습니다. DMR에서 모든 문헌의 메타데이터가 동일한 경우 LDA와 동일한 모형이 됩니다. (사실 완전 같지는 않습니다. DMR에서는 하이퍼 파라미터 α를 직접 지정하는 방법이 없으니깐요.) 지금까지 설명한 바를 정리하면 다음과 같이 되겠네요.


정리

LDA ATM DMR
영향 요소

문헌의 주제분포

주제의 단어분포

저자의 주제분포

주제의 단어분포

메타데이터별 주제 분포

문헌의 메타데이터

주제의 단어분포

하이퍼
파라미터

α: 주제의 문헌 밀집도를 결정
β: 단어의 주제 밀집도를 결정 

σ: 메타데이터별 주제분포 편차
  (클수록 메타데이터별 차이가 극단적)

β: 단어의 주제 밀집도를 결정

특징 모형이 단순하고 범용적

저자별 특성을 밝혀낼 수 있으나,
동일 저자의 문헌간 차이는 식별불가

LDA의 기능 + 메타데이터별 하이퍼 파라미터도 추론 가능


관련글 더보기

댓글 영역