[토픽 모델링] 토픽 모델링 결과 평가법 : Perplexity와 Topic Coherence

Posted by 적분 ∫2tdt=t²+c
2017.11.14 21:27 그냥 공부

토픽 모델링은 문헌들의 집합에서 용어들이 동시에 출현하는 것을 바탕으로 같은 의미 부류에 속하는 용어들을 주제로 묶어줍니다. 이 과정은 수작업 필요 없이 이뤄지기에 방대한 문헌을 대상도 문제없이 처리할 수 있습니다. 그런데 흔히 비지도 학습으로 수행되는 과정이 그렇듯, 이렇게 자동으로 처리된 결과가 과연 사람이 바라는 결과와 얼마나 일치할지는 모르는 것입니다. 그리고 이것이 비지도 학습인 토픽 모델링 기법이 가지는 가장 중요한 한계 중 하나구요. 따라서 토픽 모델링 결과가 잘 나왔는지, 그 성능을 평가하는 작업이 중요하게 떠오릅니다. 


클러스터링 기법를 평가하는 방법은 크게 내재적인 것(Intrinsic)과 외재적인 것(Extrinsic)으로 나뉘어지는데요, 내재적 평가는 해당 기법의 결과 자체가 실제로 잘 분류하는지, 분류된 결과가 사람이 판단하기에 적합한지 등등 기법을 내부적인 관점에서 평가하는 것이고, 외재적 평가는 해당 기법이 어디어디에 쓰일수 있는지를 바탕으로 외부적인 관점에서 평가를 내리는 것이라고 간단히 정리해볼 수 있겠습니다. 

본 포스팅에서는 토픽 모델링을 내재적으로 평가하는 고전적인 기법인 Perplexity와 이 Perplexity의 한계를 극복하기 위해 제시된 Topic Coherence에 대해서 설명합니다. (외재적 평가는 다루지 않습니다)


Perplexity

Perplexity는 사전적 의미로는 "당혹, 혼란, 곤혹" 등의 의미인데요, 정보학에서 쓰일때는 혼란도(혼란한 정도)의 의미로 쓰인다고 보시면 됩니다. (아마 대응하는 한국어 번역이 아직 없는듯합니다. 조심스레 번역어를 제안해보자면 "뒤죽박죽도"는 어떨까 싶네요...) 이 수치는 특정 확률모델이 실제로 관측되는 값을 얼마나 잘 예측하는지를 평가할 때 사용합니다. 잘 아시다시피 토픽 모델링도 (LDA를 예로 들자면) 문헌 집합 내 용어 출현횟수를 바탕으로, 문헌 내 주제 출현 확률과, 주제 내 용어 출현 확률을 계산하는 확률모델이므로, 확률모델을 평가할 때 사용하는 척도를 사용하는 것은 자연스러운 일이겠지요. 그래서 토픽 모델링을 평가하는데에 있어서 Perplexity는 오랫동안 널리 쓰여왔습니다. 어떻게 계산하는지 살펴봅시다.


Perplexity는 일반적으로 다음과 같이 정의됩니다.

여기서 H(p)는 p의 정보 엔트로피 값입니다. 토픽 모델링 과정에서는 흔히 다음과 같은 식으로 바꿔서 계산하죠.

LL(w)은 로그 가능도로써, 토픽 모델 내에서 특정 단어가 해당 주제로 부여될 확률값에 로그를 취한값이고, 그 값들을 모두 합쳐서 전체 단어의 개수인 N으로 나누었으니, 로그 가능도의 평균에 -를 붙이고 지수화한것이라고 보면 되겠습니다.



대게 깁스샘플링 과정에서 반복횟수가 증가할수록 Perplexity는 감소하는 경향을 띕니다. 그러다가 특정 시점을 지나면 더 이상 Perplexity는 감소하지 않고 증가, 감소를 반복하며 요동치는 지점이 등장하는데요, 이때를 해당 깁스 샘플링의 수렴 지점으로 보고 샘플링을 멈추는 경우가 많습니다. 그리고 이때의 Perplexity가 해당 모델의 최종 Perplexity가 되겠죠. 이 값이 작으면 작을수록 해당 토픽 모델은 실제 문헌 결과를 잘 반영한다는 뜻이므로 학습이 잘 되었다고 평가를 할 수 있겠습니다. 이 값은 LDA 등에서 적절한 주제 개수를 정하기 어려울때 유용하게 쓰입니다. 다양한 주제 개수로 학습을 진행해보면 주제 개수가 몇일때 Perplexity가 최소가 되는지 알 수 있기 때문이죠.


문제는 Perplexity 값이 낮다는게 학습이 잘되었다는거지, 그 결과가 사람이 해석하기에 좋다는 것이 아니라는 겁니다. Chang의 논문에 따르면 낮은 Perplexity 값이 늘 해석에 적절한 결과를 보이지는 않는다고 합니다.[각주:1] 따라서 사람이 해석하기에 적합한지를 확인하기 위해 다른 척도가 필요했는데, 이렇게 해서 제시된 척도가 Topic Coherence입니다.


Topic Coherence

Topic Coherence('주제 일관성' 정도로 번역하면 좋겠군요)는 실제로 사람이 해석하기에 적합한 평가 척도를 만들기 위해서 제시된 여러 척도들 중 D Newman에 의해 2010년에 제시된 것입니다.[각주:2] Newman과 동료 연구진들은 이를 위해 뉴스와 책 데이터를 수집하여 토픽 모델링을 실시하고, 코더들을 통해 그 결과로 나온 토픽들이 유의미한지 수작업으로 점수를 매기게 했습니다. 그리고 이렇게 매겨진 점수와 가장 유사한 결과를 낼 수 있는 척도를 찾았죠. 그의 주제 평가방법은 다음과 같습니다.


토픽 모델링 결과로 나온 주제들에 대해 각각의 주제에서 상위 N개의 단어를 뽑습니다. 모델링이 잘 되었을수록 한 주제 안에는 의미론적으로 유사한 단어가 많이 모여있게 마련입니다. 따라서 상위 단어 간의 유사도를 계산하면 실제로 해당 주제가 의미론적으로 일치하는 단어들끼리 모여있는지 알 수 있습니다.

단어들간의 유사도를 어떻게 계산할까요? 유사도 계산을 위해 WordNet을 이용한 방법, Wikipedia를 이용한 방법, Google 검색을 이용한 방법을 제안했습니다. 각각의 자세한 방법에 대해서는 논문을 참조하시고 여기서는 제일 성능이 괜찮게 나온 WordNet에서 Lesk를 이용한 방법, Wikipedia에서 PMI를 이용한 방법, 그리고 Google 검색에서 제목 일치를 이용한 방법을 설명하도록 하겠습니다.


WordNet를 바탕으로 하는 Lesk 알고리즘

레스크 알고리즘은 예전 포스팅에서 이미 설명한 바 있습니다. 본래 이 알고리즘은 단어 의미 중의성 해소를 위한 것이었지만, 그와 동시에 두 단어가 얼마나 유사한지를 평가하는 데에도 사용될 수 있습니다. 레스크 알고리즘을 간략히 설명하자면, 두 단어 A와 B가 있을때 두 단어의 유사성을 단어의 뜻풀이에서 겹치는 단어의 개수로 평가하는 방법입니다. 이때 동철이의어(A1, A2..., B1, B2...)가 있을수 있는데, 겹치는 단어 개수가 최대가 되는 동철이의어 쌍을 골라내는 것이죠. 자세한 알고리즘 설명은 예전 게시물을 참조하시길 바랍니다.


주제 일관성을 계산하기 위해서 토픽 내 상위 N개 단어를 뽑고, N개 단어 간(N개에서 가능한 모든 단어 쌍을 뽑으면 N(N-1)/2 가지입니다. )의 Lesk 유사도 평균을 구합니다. Newman의 논문에서는 N=10으로 두었을때, 사람이 평가한 토픽 적합성과 37%(뉴스), 53%(책)로 일치했다고 합니다.


Wikipedia를 바탕으로 하는 PMI 기법

PMI(Pointwise Mutual Information, 점별 상호정보량)은 언어학에서 연어추출 등에 유용한 지수로 사용되는 척도입니다. (이 역시 예전 포스팅에서 다룬 바 있습니다.) 두 단어가 얼마나 연관있는지를 보여주는 수치라고 할 수 있는데, 이를 위키백과의 본문을 이용해서 학습한 것이죠. 단어 A와 B의 점별 상호정보량을 계산하기 위해서는 전체 텍스트에서 A가 등장하는 횟수와 B가 등장하는 횟수를 각각 세고, A의 주변에 B가 등장하는 횟수를 셉니다. 그리고

를 계산합니다. 이 값이 0이면 둘은 전혀 관계가 없는 것이고, 값이 커질수록 같이 등장하는 경향이 높고, 값이 낮을수록 서로 배척하는 경향(A가 등장하는 문맥에서는 B가 등장 안함)이 높아집니다.

Lesk를 적용할때와 마찬가지로 상위 N개 단어를 뽑고, N개 단어 간의 PMI값 평균을 구하여 주제 일관성을 산출할 수 있습니다. Newman의 논문에서 N=10으로 두었을때, 사람이 평가한 토픽 적합성과 약 77%(뉴스와 책 모두)의 일치도를 보였다고 합니다.


Google 검색을 바탕으로 하는 제목 일치수 기법

두 단어가 서로 유사한지를 살필 수 있는 가장 간단하면서도 21세기스러운 방법은 검색엔진에 같이 입력해보는 것일 겁니다. 같이 입력했을 때 결과가 많으면 두 단어는 관계가 있는 것이고, 결과가 적으면 관계가 적다고 볼수 있겠죠. 따라서 이를 바탕으로 단어의 관련성을 살펴볼 수 있습니다. Newman의 논문에서는 상위 N개의 단어를 모두 AND 조건으로 완전일치하도록 검색한 뒤, 검색 결과 상위 100개의 제목에서 상위 N개의 단어들과 일치하는 단어의 수를 세어서 합쳤습니다. 

이렇게 주제 일관성을 계산했을 경우 사람이 직접 평가한 토픽 적합성과 80%(뉴스), 51%(책)로 일치했다고 하네요.


Newman 등은 위의 결과를 정리하며, PMI 기법이 데이터셋에 구애받지 않고 가장 안정적으로 높은 성능을 보인다고 평가하며, 주제 일관성으로 Wikipedia를 기반한 PMI 기법을 사용하는 것을 추천했습니다. 따라서 이렇게 주제 일관성을 계산할 경우 해당 토픽 모델링이 얼마나 사람이 평가하기에 적합하게 결과가 나왔는지를 비교하는데 사용할 수 있겠죠.


간단 비교

PerplexityTopic Coherence
의미확률 모델이 결과를 얼마나 정확하게 예측하는지.
낮을수록 정확하게 예측.
토픽이 얼마나 의미론적으로 일관성 있는지.
높을수록 의미론적 일관성 높음
주 용도토픽 모델링 기법이 얼마나 빠르게 수렴하는지 확인할 때,
확률 모델이 다른 모델에 비해 얼마나 개선되었는지 평가할 때,
동일 모델 내 파라미터에 따른 성능 평가할 때 주로 사용
해당 모델이 얼마나 실제로 의미있는 결과를 내는지 확인하기 위해 사용
한계Perplexity가 낮다고 해서, 결과가 해석 용이하다는 의미가 아님 평가를 진행하기 위해 다른 외부 데이터(코퍼스, 시소러스 등)가 필요



다행히도 Newman의 방법 중 Wikipedia나 Google 검색 등은 한국어에도 바로 응용이 가능합니다. 따라서 한국어 버전으로 Topic Coherence를 개발한다고 해도 큰 어려움을 없을듯합니다.

  1. Chang, J., Gerrish, S., Wang, C., Boyd-Graber, J. L., & Blei, D. M. (2009). Reading tea leaves: How humans interpret topic models. In Advances in neural information processing systems (pp. 288-296). [본문으로]
  2. Newman, D., Lau, J. H., Grieser, K., & Baldwin, T. (2010, June). Automatic evaluation of topic coherence. In Human Language Technologies: The 2010 Annual Conference of the North American Chapter of the Association for Computational Linguistics (pp. 100-108). Association for Computational Linguistics. [본문으로]
이 댓글을 비밀 댓글로