[토픽 모델링] Relational Topic Model

Posted by 적분 ∫2tdt=t²+c
2018.03.23 17:31 그냥 공부

어쩌다보니 토픽 모델링만 진득허니 파고 있는 블로거입니다. 오늘 살펴볼 토픽 모델은 링크(혹은 더 나아가 네트워크)를 예측해낼 수 있는 RTM(Relational Topic Model)예요. 전에 설명한 sLDA 모델각각의 텍스트로부터 각각의 텍스트에 속한 응답변수를 학습하는데에 사용되었다면, 이번 RTM 모델은 각각의 텍스트로부터 각각의 텍스트 쌍에 속하는 응답변수(연결 확률)를 학습하는데 사용된다는 점이 차이점입니다. 이미 다 말해버렸네요. 사실 이것만 이해하면 어려울게 전혀 없는 모형입니다.


이 포스팅은 다음 논문과 슬라이드를 바탕으로 작성되었습니다.

Chang, J., & Blei, D. (2009, April). Relational topic models for document networks. In Artificial Intelligence and Statistics (pp. 81-88).

https://www.slideshare.net/perseid/supervised-and-relational-topic-models


단도직입적인 RTM 모형 설명

전반적인 모형은 sLDA와 거의 동일합니다. 차이점이 있다면 sLDA는 1개의 문헌당 1개의 응답변수를 모델링했다면, RTM은 매 문헌쌍마다 1개의 응답변수를 모델링했다는 것이죠. 


sLDA 모형을 복습해봅시다. sLDA의 생성 모형은 다음과 같아요.


각각의 토픽에 대해

  • β를 파라미터로 하는 디리클레 분포를 따라 V개의 단어 분포를 뽑아낸다.
    (φ ~ Dir(β))
각각의 문헌에 대해
  1. α를 파라미터로 하는 디리클레 분포를 따라 T개의 주제 분포를 뽑아낸다.
    (θ ~ Dir(α))
  2. 모든 단어에 대해, 주제 분포에서 주제 하나를 뽑고, 그 주제의 단어 분포에서 단어 하나를 뽑아낸다.
    (z ~ Mult(θ), w ~ Mult(φ_z))
  3. 문헌 내의 주제 비중에 η를 내적한 값을 평균으로 하고, σ를 표준편차로 하는 정규분포에서 응답 변수 y를 뽑아낸다.
    (y ~ N(η·Avg(z), σ²))


RTM의 생성 모형은 다음과 같아요.(sLDA에서 무엇이 달라졌는지 찾아보시길!)


각각의 토픽에 대해

  • β를 파라미터로 하는 디리클레 분포를 따라 V개의 단어 분포를 뽑아낸다. 
    (φ ~ Dir(β))
각각의 문헌에 대해
  1. α를 파라미터로 하는 디리클레 분포를 따라 T개의 주제 분포를 뽑아낸다. 
    (θ ~ Dir(α))
  2. 모든 단어에 대해, 주제 분포에서 주제 하나를 뽑고, 그 주제의 단어 분포에서 단어 하나를 뽑아낸다. 
    (z ~ Mult(θ), w ~ Mult(φ_z))
모든 문헌쌍에 대해
  1. 두 문헌 쌍의 주제 비중을 연결 확률 함수(link probability function) Ψ에 넣어 응답 변수 y를 뽑아낸다. 
    (y ~ Ψ(d, d`))

이제 핵심은 '연결 확률 함수를 어떻게 정의할까' 겠지요? 저자들은 로지스틱형지수형 2가지를 제안했습니다. 

이를 계산하기 위해 먼저 각 문헌의 평균 주제 비중 (Avg_z(d)라고 쓰겠습니다.)을 알아야 합니다. 이는 해당 문헌에 속한 각각 주제별 단어수를 전체 단어의 수로 나눠서 얻습니다. 예를 들어 전체 단어가 10개인데 주제 #0이 5개, 주제 #1이 3개, 주제 #2가 2개로 분포되어 있다면 이 문헌의 평균 주제 비중은 (0.5, 0.3, 0.2)가 됩니다. 

이 때 두 문헌의 연결 확률은 로지스틱형에서는 다음과 같이 계산됩니다.

 (가운데 ○는 요소별 곱, σ(x)는 시그모이드 함수) 

만약 Avg_z(d) = (0.5, 0.3, 0.2), Avg_z(d') = (0.1, 0.1, 0.8)이고, η = (1, -1, 1), ν = 0 라고 하고 위 값을 계산해보자면, (1, -1, 1) · (0.5*0.1, 0.3*0.1, 0.2*0.8) + 0 이므로, 0.05 - 0.03 + 0.16 = 0.18이 되고 이 값을 sigmoid에 넣은 0.5448이 두 문헌 d, d'가 연결될 확률입니다. 


지수형은 로지스틱과 동일하지만 함수만 지수함수로 바뀐 형태입니다.


이 연결 확률 함수들은 두 문헌이 얼마나 주제적으로 일치하는지에 계수 η와 상수항 ν을 합쳐 하나의 확률값을 계산해냅니다. 두 문헌이 주제적으로 일치한다고 하더라고, 일치하는 주제가 무엇이냐에 따라 연결이 될수도 안될수도 있기 때문에(예를 들어 굉장히 두 문헌이 일반적인 주제면에서 일치하는 경우와 매우 특정한 좁은 주제면에서 일치하는 경우를 생각해봅시다. 전자는 주제가 일치도가 높아도 연결되지 않을 확률이 높지만, 후자는 주제 일치도가 낮아도 일치할 확률이 높겠죠?) 이를 잘 반영하는 식이라고 볼 수 있겠네요.


추론

저자들은 Variational Inference 방법과 파라미터 최적화를 위해 ELBO(evidence lower bound)를 사용했지만, 다른 토픽모델들이 그러하듯 이 역시 깁스 샘플링 과정으로 추론도 가능합니다. 깁스 샘플링과 BFGS를 이용한 Java 구현은 여기서 찾아볼 수 있습니다.


실험 결과와 활용 가능성

RTM은 문헌 집합과 문헌들 간의 연결(논문이라면 citation, 웹이라면 hyperlink, SNS라면 친구관계 등등)을 입력으로 받아서 그 연결 패턴을 학습합니다. 그리고 새로운 문헌들이 들어오면 새로운 문헌들끼리의 연결 가능성, 혹은 새로운 문헌과 기존 문헌간의 연결 가능성을 예측해주죠. 네트워크 이론에서 다루는 링크 예측을 토픽 모델링을 통해서 수행할 수 있다는 것이 가장 큰 가능성입니다.

Chang이 논문에서 제시한 결과들을 함께 살짝 살펴보겠습니다.

RTM 및 LDA+회귀를 통해서 뽑힌 해당 논문과 연결 가능성이 높은 논문 Top8을 표로 정리해놨군요. 굵게 되어있는것이 실제로 인용을 통해 연결된 논문이구요. 두 경우 모두 RTM 쪽의 결과가 실제 인용과 잘 일치하는 것을 확인할 수 있습니다.


RTM의 확장 : gRTM

2013년에 Chang의 RTM을 조금 더 일반화하여 확장한 모델 Generalized RTM이 등장하였습니다. ( Chen, N., Zhu, J., Xia, F., & Zhang, B. (2013). Generalized relational topic models with data augmentation. learning17, 36-6. )

위에서 설명한 RTM은 두 문헌 d와 d'의 연결 확률을 계산하기 위해 Avg_z(d)와 Avg_z(d')을 요소별로 곱하여 사용했습니다. 즉 토픽이 3개라고 할때, 두 문헌의 1번-1번, 2번-2번, 3번-3번 토픽끼리의 관계만을 사용하는 것이죠. 이는 크게 2가지 한계가 있습니다.

  1. 서로 다른 토픽끼리의 관계는 고려하지 않는다
  2. 연결이 항상 대칭적이다(비대칭적 관계를 모델링할 수 없다)
이를 해결하기 위해 gRTM에서는 계수로 사용하는 η를 주제 개수인 K차원이 아니라 K*K차원으로 정의하였습니다. 그리고 

두 문헌의 주제 간의 관계를 가 아니라

로 계산하여 d의 K개의 토픽이 d`의 K개의 토픽과 가지는 관계를 모두 고려하도록 하였습니다.

이렇게 K개의 요소 간 곱을 K*K 행렬의 계산으로 확장하여 (추정해야할 파라미터는 제곱으로 늘어났지만) 서로 다른 토픽 간의 관계도 고려하면서, 방향성까지 확보하였죠. 


앞서 설명했듯이 RTM은 문헌으로부터 링크를 예측할 수 있으므로, 텍스트 데이터가 포함된 네트워크를 분석하는데 굉장히 유용하게 사용될 수 있습니다. 대표적인 것이 인용관계 네트워크지만, 이 밖에도 SNS, 웹 페이지 등등 사실 상 네트워크 구조를 이루는 모든 대상에 사용할 수 있겠죠. 아주 흥미롭네요!

이 댓글을 비밀 댓글로
    • 2018.04.13 06:28
    비밀댓글입니다
    • jkim
    • 2018.06.06 18:09 신고
    글 감사합니다. 좀 다른 주제입니다만, 토픽 모델링 후, 단어들이 제대로 토픽을 반영하지 못하는 (단어들의 토픽 중복 등) 문제와, 프리퀀시가 높은 단어들 중심으로 출력이 되는 문제에 대한 대안으로 lda2vec 모델을 이야기 하는 사람도 있는데, lda2vec 모델은 어떻게 보시는지 궁금합니다.
    • 좋은 의견 감사합니다. lda2vec의 경우 제가 정확하게 알지 못하여 답변드리기가 조심스러우나, 저는 딥러닝 기반이 아닌 토픽 모델링도 그 자체로 충분히 유용하다고 판단하고 있습니다.
      단어의 토픽 중복이나 고빈도 단어가 출력이 되는건 단점이라기 보다는 토픽 모델링의 특징이라고 볼수 있을것 같고, 그 특성이 유용할 때도 있구요.