상세 컨텐츠

본문 제목

[토픽모델링] sLDA와 L-LDA

그냥 공부

by ∫2tdt=t²+c 2017. 10. 19. 03:20

본문

이번에 살펴볼 토픽 모델은 지도학습 버전의 LDA입니다. 기존의 LDA는 토픽을 비지도 방법으로 형성합니다. 즉 사람이 라벨을 붙여주지 않아도 알아서 적당히 유사한 것끼리 묶어서 주제로 묶어주는 것이죠. 당연히 비지도학습이 편하게 좋아보이겠지만, 컴퓨터가 자동으로 분류한 주제가 사람이 생각하는 주제와 일치하지 않을 수 있다는 커다란 난점이 있습니다. 그래서 라벨이 붙은 데이터가 있을때는 지도학습을 사용하는게 정확도를 높일 수 있는 방법인데요, LDA에도 이러한 지도학습용 아종이 있습니다. 대표적으로 sLDA[각주:1], L-LDA[각주:2], discLDA, medLDA 등이 있는데, 이들은 서로 성격이 꽤나 다릅니다. 이번 포스팅에서는 L-LDA와 sLDA에 대해서 살펴보도록 하겠습니다.


Labeled LDA(L-LDA)

Ramage가 고안한 Labeled LDA는 LDA의 대표적인 지도학습 버전입니다. LDA가 문헌 집합 내에서 K개의 주제를 자동으로 찾아준다면, L-LDA는 복수 개의 주제가 라벨된 문헌들의 집합을 분석하여 주제별 단어 분포를 학습합니다. 이미 주제가 다 붙어있는 데이터를 다시 분석해서 어디에 쓰겠느냐만, 텍스트 자동 분류나 자동 태깅, 키워드 추출 등에 유용하게 쓰일수 있습니다. 학습이 잘 끝나면, 주제분포를 모르는 새로운 문헌이 입력되어도, 해당 문헌에 어떤 주제가 얼만큼 속해있는지를 계산할 수 있기 때문이죠.

자동 태깅을 예로 들자면, 문헌 A에는 {형태소, 자연언어처리}, 문헌 B에는 {자연언어처리, 컴퓨터}, 문헌 C에는 {컴퓨터, 그래픽} 처럼 데이터셋의 각 문헌에 적절한 태그가 달려있다고 합시다. 그러면 각각의 태그 {형태소, 자연언어처리, 컴퓨터, 그래픽}가 주제가 되는것이죠. 토픽 모데링 학습이 끝난뒤 어떤 문헌 D가 들어오면 이 문헌에 {형태소, 자연언어처리, 컴퓨터, 그래픽} 중 어떤 주제가 얼만큼 있는지를 계산 가능합니다. 예를 들어 {형태소=0.7, 컴퓨터=0.2, 그래픽=0.1}이라면 이 문헌에는 {형태소, 컴퓨터, 그래픽}이라고 태그를 붙일수 있겠죠. 이처럼 여러 개의 라벨로 분류가 가능한 작업에서 L-LDA는 꽤나 유용하게 쓰일 수 있습니다.


그렇다면 실제 모델을 살펴보도록 하죠. L-LDA의 생성 모델은 다음과 같습니다.



각각의 토픽에 대해

  • β를 파라미터로 하는 디리클레 분포를 따라 V개의 단어 분포를 뽑아낸다.
    (φ ~ Dir(β))

각각의 문헌에 대해

  1. 문헌의 주제 포함여부 Λ를 뽑는다. Λ는 K개의 0 또는 1의 값을 가지는 벡터이고, 이 벡터는 이 문헌이 특정 주제를 포함하는지 아닌지를 나타낸다.
    (Λ_k ~ B(1, Φ))
  2. αΛ를 파라미터로 하는 디리클레 분포를 따라 T개의 주제 분포를 뽑아낸다.
    (θ ~ Dir(αΛ))
  3. 모든 단어에 대해, 주제 분포에서 주제 하나를 뽑고, 그 주제의 단어 분포에서 단어 하나를 뽑아낸다.
    (z ~ Mult(θ), w ~ Mult(φ_z))

(K는 주제 개수, V는 서로 다른 단어 개수, T는 주제 개수입니다. α는 문헌별 주제분포를 결정하는 하이퍼 파라미터, β는 주제별 단어분포를 결정하는 하이퍼 파라미터이구요.)


LDA와 비교해보면 1번이 추가되었고, 2번이 조금 바뀌었다는 것을 알 수 있습니다. 원래 LDA에서는 기본적으로 대칭적인 디리클레 분포를 사용하여 문헌의 주제분포를 모델링합니다. 즉 어떤 문헌에서 기본적으로 주제k의 등장 비중이 모두 동일하다는 것이죠. 그러나 L-LDA에서는 Λ를 곱함으로써 Λ의 성분 중 값이 0인 부분은 아예 등장하지 않도록 지워줬습니다. 즉 어떤 문헌에서 등장할 주제를 한정해주는 역할을 한 것이죠. 거꾸로 얘기하면 L-LDA에서 모든 문헌의 Λ가 모두 1인 경우(모든 문헌이 모든 주제를 고르게 포함할 수 있는 가능성이 있음)에는 LDA와 동일한 모델이 되겠구요.


위에서 예를 든것처럼 문헌집합에 총 4개의 주제 {형태소, 자연언어처리, 컴퓨터, 그래픽}이 있다고 하면, K=4가 되고, 이때 {자연언어처리, 컴퓨터}라고 라벨된 문헌의 Λ는 {0, 1, 1, 0}이 됩니다. {형태소, 그래픽}라고 라벨된 문헌의 Λ는 {1, 0, 0, 1}이 되는 식이구요. K를 문헌 집합에서 등장하는 서로 다른 라벨의 수로 잡고, 각 문헌별 주제 분포 하이퍼 파라미터를 α 대신에 αΛ로 두면 L-LDA 구현이 끝납니다. 매우 간단한 바꿔치기지만 좋은 아이디어입니다.


얼마나 쓸모 있을까요? 저자의 논문에 따르면 L-LDA를 사용하여 다중 라벨 텍스트 분류작업을 수행했을 경우, SVM과 비교해서 Macro F1 점수는 약 0.85%p, Micro F1 점수는 약 13%p 정도 향상했다고 합니다.


+ DMR과는 어떻게 다를까요?

어떻게 보면 결국 텍스트에 붙은 라벨이라는 것도 메타데이터의 일종으로 볼 수 있습니다. 이렇게 보면, L-LDA는 메타데이터가 포함된 문헌 집합을 분석하는데 사용하는 DMR 토픽 모델과 비슷하게 느껴질 수 있는데요, 헷갈리지 않도록 비교 정리를 해보았습니다.


L-LDADMR
방식지도학습비지도학습

라벨

K개의 이항 범주1개의 다항 범주
주제분포문헌별 주제분포는 문헌의 주제포함 여부를 나타내는 벡터 Λ가 곱해진, αΛ를 따름문헌별 주제분포는 메타데이터에 따라 표준편차가 σ인 로그정규분포를 따르며 퍼져있음
특징문헌의 주제 포함 여부에 따라 문헌 내에서 특정 주제가 삭제되며, 포함된 주제 간의 등장확률은 기본적으로 동일함메타데이터가 다르면 주제 분포가 달라지는데, 이 달라지는 정도는 로그정규분포를 따름
학습 결과

문헌별 주제 분포 행렬(하지만 이 값에는 관심없음)
주제별 단어 분포 행렬

문헌별 주제 분포 행렬
주제별 단어 분포 행렬
메타데이터별 하이퍼파라미터 행렬

주 용도새로운 문헌에 자동으로 라벨 부여메타데이터별 주제 비중 변화 추출



Supervised LDA(sLDA)

LDA 모델을 고안했던 Blei아저씨가 만들어낸 sDA 모델은 L-LDA와는 조금 다릅니다. 사실 Supervised LDA라고 이름붙였지만, 실제로 LDA가 특정 문헌을 어떤 주제로 분류해야하는지 가르쳐주면서 학습을 진행하지는 않아요. 더 정확히는 문헌에 붙은 응답 변수(response variable)이 이 문헌을 어떤 주제로 분류해야할지 힌트를 제공한다는 정도로 여기는게 더 적절합니다. 텍스트를 입력하면와 입력된 텍스트에 해당하는 응답변수를 출력으로 내보내는 것이라고 생각하면, 응답변수를 지도 학습을 통해 예측하는 것이 맞으니 이렇게 이해하는게 좋으실듯 합니다.

예를 들면 영화 평론에 평점이 붙어있는 경우를 생각해봅시다. 이런 영화 평론들의 집합이 있다고 생각해볼때, 영화 평점은 해당 평론이 어떤 주제를 담고 있는지 명확하게 알려주지는 않습니다. 다만 평점이 낮은 평론들끼리는 뭔가 포함하는 주제도 유사할것고, 마찬가지로 평점이 높은 평론들끼리도 겹치는 주제가 많을 것입니다. 이렇게 어떤 문헌(여기서는 영화 평론)에 대한 힌트를 제공하는 값을 저자는 응답 변수(여기서는 평점)라고 부릅니다. 응답 변수의 값이 서로 유사할 수록 그 문헌들은 유사한 주제를 포함할 확률이 높고, 응답 변수끼리의 차이가 클수록 서로 다른 주제를 포함할 확률이 높겠죠. S-LDA는 이 응답변수를 활용하여 LDA를 수행하는 방법을 제시합니다.


즉 S-LDA의 차별점은 응답 변수의 모델링이라고 할 수 있는데요, 실제 모델을 살펴보도록 하겠습니다.


각각의 토픽에 대해

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

3번이 LDA에서 추가된 부분이죠. 앞의 L-LDA와는 다르게 여기서는 메타데이터의 값이 주제에 영향을 미치는것이 아니라 주제가 메터데이터의 값에 영향을 미칩니다. 응답 변수 y는 주제 비중에 특정한 값을 내적해 구하므로, 결국 그 문헌에 속한 주제들과 선형 관계를 가지게 된다는 것을 알 수 있습니다.

이를 어디에 쓸수 있을까요? 저자는 감성 분석에 이를 적용한 예를 들었습니다. 앞서 예시를 든것처럼 영화 평론과 그 평점이 담긴 문헌 집합이 있다고 할때, 이를 sLDA로 학습할 경우 문헌별 주제분포와 주제별 단어분포, 게다가 주제별 응답변수 영향력을 알아낼 수 있습니다. 그렇기 때문에 평점을 모르는 평론이 입력될 경우 여기서 주제를 추론할 수 있고, 이를 바탕으로 평점을 예측할 수 있게 됩니다. 즉 좀더 일반적으로 설명하면 sLDA는 독립변수(원인, 입력)가 텍스트이고, 이에 대한 종속변수(결과, 출력)가 수치인 경우 유용하게 쓰일 수 있습니다. 텍스트 분류 같은 임무에도 잘 쓰일수 있겠죠.


위에서 예시로 든 응답 변수는 연속하는 실수값(정규분포를 따르는)이었습니다. 하지만 이진값이나 범주형 값을 응답변수로도 쓸 수 있습니다. 이때는 y의 분포로 N 대신에 GLM(Generalized Linear Model, 일반화 선형 모형)을 사용합니다. 이에 대한 수식을 전개하는 것은 어려우므로, 자세한 내용은 논문을 직접 살펴보시면 되겠습니다..!

  1. Mcauliffe, J. D., & Blei, D. M. (2008). Supervised topic models. In Advances in neural information processing systems (pp. 121-128). [본문으로]
  2. Ramage, D., Hall, D., Nallapati, R., & Manning, C. D. (2009, August). Labeled LDA: A supervised topic model for credit attribution in multi-labeled corpora. In Proceedings of the 2009 Conference on Empirical Methods in Natural Language Processing: Volume 1-Volume 1 (pp. 248-256). Association for Computational Linguistics. [본문으로]

관련글 더보기

댓글 영역