상세 컨텐츠

본문 제목

[토픽 모델링] Generalized DMR 토픽 모델

그냥 공부

by 적분 ∫2tdt=t²+c 2020. 6. 6. 16:31

본문

Dirichlet Multinomial Regression(DMR)이라는 토픽 모델이 있습니다. 예전 포스팅에서 간단하게 다뤘던 적이 있는데요, 간단하게 정리해보자면, 단순 LDA 모델의 경우 문헌별 주제 분포만을 살펴볼 수 있는 반면, DMR은 메타데이터별 주제 분포를 추정할 수 있는 강점이 있습니다. 여기서 메타데이터는 문헌이 가지는 실제 데이터를 제외한 부가적인 변수들을 가리킨다고 생각하시면 쉽습니다. 예를 들어 저자명이나 저널명, 작성 연도 같은 데이터가 있겠습니다. 즉, DMR을 이용하면 작성자별 주제분포나 작성 연도별 주제 분포 등을 계산하는게 가능해진다는 것이지요. 단순하게 문헌별 주제분포를 추정하는것보다 훨씬 유용하게 쓰일 수 있을 것이라고 짐작이 가지요?

그런데 DMR 모델에는 치명적인 약점이 하나 있습니다. 모델이 가질 수 있는 메타데이터 변수가 범주형(categorical variable)으로 한정된다는 것입니다. 범주형 변수는 값들 간의 순서도 없고 연속성도 없는 변수를 말합니다. 예를 들어 책의 장르이라는 변수는 '소설', '수필', '비문학' 등의 값을 가질 수 있지만, 각 값들 사이에는 어떠한 순서도 없고 서로 연산도 불가능합니다. 그리고 소설과 수필 사이의 어딘가를 나타내는 값을 찾을 수도 없지요. 즉 각각의 값들이 서로 완전 독립적인 범주인 경우라고 할 수 있습니다. 저자명이나 저널명, 주제 분야 등은 범주형 변수로 충분히 표현할 수 있는 메타데이터입니다. 반면 피인용수나 출판연도 같은 데이터는 순서가 있고 연속성이 있는 연속형 메타데이터이지요. 따라서 DMR 모델에서는 이런 메타데이터를 기준으로 주제 분포를 계산해내는 것이 불가능하고, 이는 이 모델의 약점 중 하나입니다.

이를 개선한 것이 Generalized DMR(g-DMR) 모델인데요, 본 포스팅에서는 이에 대해 간단하게 살펴보도록 하겠습니다. 

Lee, M., & Song, M. (2020). Incorporating citation impact into analysis of research trends. Scientometrics, 1-34.

DMR은 어떻게 메타데이터와 주제 분포를 연결했나

g-DMR의 원리를 살펴보기에 앞서 DMR의 원리를 살펴봅시다. 과연 DMR에서는 어떻게 메타데이터와 주제 분포를 연결하여 모델을 설계했을까요?

$\lambda_t ~ \sim ~ N(0, \sigma^2)$

$\alpha_{d,t} = \exp( \lambda_t \cdot x_d )$

$\theta_d ~ \sim ~ Dir(\alpha_d)$

위 식은 특정 문헌 d에 대해 문헌의 주제분포 $\theta_d$가 어떻게 산출되는지를 표현하고 있습니다. 여기서 $x_d$는 문헌의 메타데이터를 나타내는 변수입니다. 이 변수는 소위 말하는 One-hot으로 인코딩되어 입력됩니다. 즉, 메타데이터가 총 {소설, 수필, 비문학} 3가지 중 1개의 값을 가질 수 있다면, '소설'인 경우는 $[1, 0, 0]$, '수필'인 경우는 $[0, 1, 0]$, '비문학'인 경우는 $[0, 0, 1]$처럼 벡터로 표현하는 것입니다. N개의 성분 중에서 오직 1개만 1이되고 나머지는 다 0이 되며, 1인 성분의 위치에 따라 어떤 범주를 가리키는지 나타내는 것이죠.

$\lambda$는 메타데이터별 주제 분포를 결정하는 파라미터입니다. 이 값은 기본적으로 평균이 0, 표준편차가 $\sigma$인 분포에서 뽑아옵니다. $\lambda_t$는 주제 t에 대한 메타데이터 정보를 표현하는 벡터지요. 이 값은 문헌 d의 메타데이터인 $x_d$와 내적하여 $\alpha$를 결정하는 데에 쓰입니다.

예를 들어 $\lambda_t = [1, 2, 3]$이고 $x_d = [0, 0, 1]$이라면 $\lambda_t \cdot x_d = 3$이 됩니다. $\lambda_t \cdot x_d$값은 동일한 문헌 d에 대해서도 주제 t가 바뀌면 그 값이 달라집니다. 따라서 $\alpha_{d,t}$도 t값에 따라서 달라지겠지요. 이 $\alpha$값은 최종적으로 문헌 d의 주제분포인 $\theta_d$를 결정하는 사전 분포가 됩니다.  즉, $\alpha_d$의 값이 특정 주제 t1에 대해서 크고, t2에 대해서는 작다면 그 문헌은 기본적으로 t1 주제를 가질 확률이 t2 주제를 가질 확률보다 높게 책정되는 식이죠. 이렇게 $x_d$를 $\lambda_t$중 실제로 \exp에 들어갈 값을 고르는데 씀으로써 문헌d의 메타데이터가 주제 분포 $\theta_d$와 연결되게 하였습니다. 나쁘지 않은 방법이지요?

단, 여기서 $x_d$를 one-hot 인코딩된 벡터로 제한했기 때문에, 입력할 수 있는 메타데이터가 범주형으로 제한된 셈입니다. 이 제한을 풀면 연속형 데이터를 모델에 입력할 수 있습니다.

g-DMR의 아이디어

그래서 g-DMR에서는 위 식을 일반화하여 TDF(Topic Distribution Function, 주제 분포 함수)이라는 걸 제안했습니다.

$\alpha_{d,t} = \exp( f_t(x_d) )$

$\theta_d ~ \sim ~ Dir(\alpha_d)$

잘 보시면 exp 안에 f라는 함수가 들어가 있습니다. 이것이 TDF가 되구요, TDF를 상황에 따라 바꿔가면서 사용함으로써 다양한 메타데이터에 대응하겠다는게 g-DMR의 기본 요지입니다. 메타데이터가 범주형이라면 DMR에서처럼 $f_t(x_d) = \lambda_t \cdot x_d$로 두면 되겠습니다. 연속형이라면 어떻게 하면 좋을까요? 우리는 입력값 $x_d$에 따른 출력값이 어떤 모양이 될지 알 수 없습니다. 그렇다고 마음대로 $f(x) = ax + b$처럼 정할 수도 없습니다. 주제 분포의 모양을 특정 함수의 형태로 결정해버리면 입력데이터에 맞지 않는 주제 분포를 가정하게 되어버려 잘못된 모델을 산출할 수 있으니깐요.

즉, 최대한 다양한 모양을 나타낼 수 있는 범용적인 함수를 선택해야 입력데이터에 맞춰 유연하게 결과값을 계산해낼 수가 있습니다. 이럴때 수학자(및 공학자)들이 사용하는 방법을 찾아보니, 다항식 근사(Polynomial Approximation)라는게 있다고 합니다. 임의의 함수 f(x)를 차수가 충분히 큰 n차 다항식이라고 가정하고 n+1 개의 계수들을 최대한 정밀하게 추정하여 원본과의 오차가 최소가 되게하는 방법입니다. 

그 중에서도 유용한게 르장드르 다항식 근사(Legendre Polynomial Approximation)입니다. $f(x) \approx \sum_n a_n L_n(x)$ ($L_n(x)$는 르장드르 n차 다항식)로 가정하면 $-1 \le x \le 1$ 범위에서 $f(x)$를 아주 작은 오차로 근사할 수 있다고 합니다. 다음 그림은 르장드르 다항식으로 임의의 곡선을 근사할 때의 오차를 나타낸 그림입니다. 진한 검정선이 원본 함수이고 빨간 점선이 근사 결과인데, Legendre Polynomial의 결과가 원본과 거의 동일하다는 걸 알 수 있습니다.

(그림 출처: https://www.semanticscholar.org/paper/A-polynomial-approximation-for-arbitrary-functions-Cohen-Tan/f13c6ff1c5290a13f44393a69d95c76065118aa7)

갑자기 복잡한 수학 이야기가 나왔는데 정리해보자면, 정확한 모양을 예상할 수 없는 주제 분포 함수 $f_t(x_d)$를 르장드르 다항식이라 가정하면 작은 오차로 원본 모양을 잘 근사할 수 있다는 것입니다. 따라서 연속형 메타데이터에 대해서는 주제 분포 함수를 다음과 같이 설정하도록 하겠습니다.

$f_t(x_d) = \sum_n \lambda_{t,n} L_n(x_d)$

여기서 르장드르 다항식의 근사 차수를 설정하는게 중요합니다. 차수를 무한히 키우면 실제 원본 모양과 완전히 동일한 함수가 되겠지만 그러려면 무한한 연산력이 필요하겠죠. 따라서 적당히 큰 수를 설정하여 계산량이 너무 많아지지 않으면서도 표현할 수 있는 모양이 단순해지지 않도록 해야겠습니다.

또한 르장드르 다항식을 사용하면 입력 변수가 2개 이상인 경우에도 대응하기 용이하다는 장점도 있습니다. 변수가 2개인 경우에는 다음과 같은 주제 분포 함수를 사용하면 됩니다.

$f_t(x_d, y_d) = \sum_{n,m} \lambda_{t,n,m} L_n(x_d) L_m(y_d)$

이 경우에는 변수 x를 근사하는 차수와 y를 근사하는 차수를 모두 결정해줘야 합니다. 2개 이상으로도 쉽게 확장이 가능합니다.

g-DMR로는 어떤 결과를 얻을 수 있을까

g-DMR을 소개한 논문에서는 2변수 르장드르 다항식 근사를 사용하여 연속형 메타데이터가 2개인 경우의 토픽 모델링 결과를 보여주었습니다. x축으로는 논문의 작성연도, y축으로는 논문의 피인용수를 사용했습니다. 즉, 작성연도와 피인용수에 따른 주제분포의 변화를 살펴볼 수 있게 한 것이지요. 따라서 특정 연도에 인용이 많이된 주제, 특정 연도에 인용이 적게된 주제 등을 파악하는데에 유용하게 사용할 수 있겠습니다.

저자들은 텍스트 마이닝 분야의 논문들과 문헌정보학 주제의 논문들에 대해서 분석을 수행했다고 합니다. 피인용수의 경우 작성 연도에 따른 편차가 큰 편이기 때문에(오래된 논문일 수록 피인용수가 높은 경향이 있겠지요?) 피인용수를 그대로 사용하지 않고, 동일한 시기에 작성된 논문들과 비교하여 피인용수의 퍼센트 랭킹을 사용했다고 합니다. 즉, 동일한 시기에 작성된 논문들 중 피인용수 상위 10%에 들 경우 0.9, 상위 50%에 들 경우 0.5, 상위 90%에 들 경우 0.1을 부여하는 식으로요.

그래서 g-DMR에서 어떤 결과가 나왔는지 한 번 살펴볼까요? 다음은 텍스트 마이닝 분야 논문에 대해서 수행된 결과입니다. DMR은 LDA와는 다르게 주제별 단어분포에 추가적으로 범주형 메타데이터별 주제 분포도 계산할 수 있습니다. g-DMR에서는 단순히 범주형 메타데이터별 주제분포가 아니라 2개 이상의 연속형 메타데이터별 주제분포도 계산할 수 있습니다. 여기에서는 작성연도와 피인용수를 메타데이터로 사용했으니, x축에는 작성연도, y축에는 피인용수를 표현하여 지도를 그려보았습니다. X축의 르장드르 근사차수는 4차, Y축의 르장드르 근사차수는 3차로 하였다고 합니다.

먼저 sentiment analysis와 관련된 주제입니다. #22는 주제 번호구요, 그 아래의 단어는 해당 주제의 단어 분포의 top 5를 표시한 것입니다. X축은 작성연도이고, Y축은 상대적 피인용수로써 1이면 인용이 가장 많이 된 것이고, 0이면 인용이 가장 적게 된 것입니다. 붉은 부분이 해당 주제의 문헌들이 많이 모여있는, 비중이 높은 곳인데 주로 2015년 이후에 몰려 있는걸 확인할 수 있습니다. 그리고 이 부분은 평균보다 더 많이 인용되고 있네요. sentiment analysis는 인용도 많이 받고 최근 연구가 많이 수행되고 있는 텍스트 마이닝 분야의 최신 핫 토픽이라고 볼 수 있겠습니다.


이 주제는 상위 단어가 pattern, rule, association인걸로보아 패턴이나 룰 기반의 알고리즘에 대한 것 같습니다. 2000년대 초반에 주로 몰려있고, 피인용수 기준으로는 중하위권에 몰려 있네요. 상대적으로 한 물간 주제에 인용도 비교적 적게되는 비인기 분야라고 볼 수 있겠습니다.


이 주제는 SNS와 관련된 주제로 보이는데요, 2010년대 이후로 굉장히 빨간 빛을 보이고 있습니다. 즉, 2010년 이후부터 텍스트 마이닝 분야의 연구주제로 급부상했고, 인용수는 굉장히 고르게 퍼져있습니다. 인용을 많이 받기도 하고 적게 받기도 한다, 즉 SNS 관련 주제라고 다 인용을 많이 받는게 아니라는 걸 알 수 있지요. 대부분 피인용 상위권에 모여있던 sentiment analysis와는 사뭇 다르죠. 즉, SNS는 인용을 많이 받는 주제라기보다는 다들 관심을 가지고 논문을 많이 써내는, 일종의 유행과 가까운 주제라고 볼 수 있겠습니다.

본 포스팅에 포함된 결과들은 https://github.com/bab2min/g-dmr 에서 재현해볼 수 있습니다. (레포지토리의 run_using_tomotopy.py 코드를 실행하면 됩니다.) 친절하게도 저자분이 실험에 사용한 소스코드와 데이터를 공개했기 때문에 위 레포지토리에서 데이터와 코드를 받아서 실행만 하면 됩니다. 

g-DMR의 한계와 가능성

르장드르 다항식 근사를 사용하는 g-DMR은 결국 르장드르 근사의 차수를 결정하는게 전체 분석 결과를 좌지우지하는 제일 중요한 문제가 됩니다. 이론상 차수가 높을수록 정밀한 근사가 되지만, 현실은 차수가 높아지는 만큼 학습해야할 변수가 늘어나기 때문에 왜곡이 발생할 가능성도 커지죠. 그리고 우리의 목표는 노이즈한 입력 데이터를 그대로 근사하는게 아니라, 그 속에서 전체적인 경향성을 발견하는 것이기 때문에 꼭 높은 차수가 유용한 것도 아닙니다. 차수까지 스스로 결정할 수 있는 근사 모형이 있다면 완벽하겠지만, 아직까지는 뾰족한 방법이 없습니다.

따라서 g-DMR 분석을 수행할때는 토픽의 개수, 각 메타데이터별 르장드르 근사 차수를 잘 선택해야 합니다. 선택지가 많아진다는 것은 결국 수행해봐야하는 실험의 종류가 늘어난다는 것이기 때문에 마냥 반길 일이 아니죠. 이게 g-DMR이 가지는 근본적인 한계라고 할 수 있습니다.

이런 한계를 감안하더라도 g-DMR 모델 자체는 충분히 유용한 걸로 보입니다. 위와 같이 출판연도와 피인용수를 가지고 주제 분포를 추정하는 작업은 물론, 다양한 메타데이터가 붙은 문헌을 분석하는데에 유용할 것으로 보입니다. 예를 들어 텍스트와 함께 각 항목별로(맛, 서비스, 교통 등) 점수를 매겨놓은 음식점 리뷰 데이터를 분석한다던지, 좋아요/싫어요/화나요 개수가 달린 페이스북 글의 주제를 분석하는 작업 등에 쓰일 수 있겠습니다.

P.S.

만약 주제 분포 함수로 르장드르 근사 대신 신경망을 사용하면 어떨까요? 르장드르 근사 자체의 한계가 명확한지라 이를 극복하기가 쉽지 않은데, 신경망을 적당히 끼워넣고 잘 학습시키면 그 자체로 충분히 다양한 모양의 함수를 근사할 수 있으니깐요. 아마 여기서 소개한 g-DMR보다 더 정교한 근사가 가능한 모델이 나오지 않을까 싶습니다. (사실 토픽 모델링 자체가 워낙 클래식한 베이즈 통계 기반 모델이라 딥러닝이 대세인 요즘 트렌드와는 잘 안 맞죠... 주제 분포 함수로 신경망을 쓰느니 그냥 신경망 기반 토픽 모델링을 쓰는게 더 나을지도 모릅니다.)

사실 논문의 저자는 저입니다. 2018년에 DMR 토픽 모델링을 공부하면서 떠올렸던 아이디어를 가지고 대충 실험을 진행해서 논문을 써봤는데, 여러 번 탈락하면서 구천을 떠돌다가 2020년이 되어서 간신히 자기 자리를 찾았네요. 열심히 새 모델을 개발해보았지만, 사실 이 모델이 그렇게까지 범용적이지 않아서 "왜 굳이 이 방법을 사용하여 문헌 집합을 분석해야하는가"라는 근본적인 주제에 막혀 여러 번 좌절하다가, 가까스로 그 쓸모를 인정받았습니다. 유용하게, 또 편하게 널리 쓰였으면 하는 마음에 레포지토리를 파서 소스 코드도 공개하고 또한 tomotopy에 GDMRModel이라는 이름으로 모델도 추가하였습니다. 토픽 모델링을 이용해 학술 문헌의 트렌드를 분석하시려는 분들에게 도움이 되길 바랍니다. 감사합니다!

관련글 더보기

댓글 영역

  • 프로필 사진
    2020.06.10 10:10
    비밀댓글입니다
    • 프로필 사진
      2020.06.10 14:30 신고
      넵 좋아요가 많은 게시물들의 주제, 혹은 싫어요가 많은 게시물들의 주제 등을 분석해볼 수 있을 듯합니다. (데이터를 수집하는 과정이 까다롭겠지만요)