본문 바로가기
AI

자연어처리 : 언어모델 : Perplexity

by 월곡동로봇팔 2020. 3. 6.

정의

번역하면 "혼란도"의 의미이다. 즉, Language Model이 실제로 관측되는 값을 얼마나 잘 예측하는지를 평가할 때 사용.

  • 외부 평가 (extrinsic Evaluation) : 비교해야하는 모델이 너무 많아서 test data에 대해서 빠르게 식으로 계산되는 간단한 평가 방법
  • 내부 평가 : 모델 내에서 자신의 성능을 수치화화여 결과를 내놓는 내부 평가 방법

Perplexity는 수치가 높을수록 혼잡도가 높고 낮은 성능을 의미하며, 수치가 낮을수록 높은 성능을 의미한다.


1. 언어 모델의 평가 방법 : PPL

PPL formulation

https://wikidocs.net/21697

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

문장의 확률이 커질수록 1을 향해 가므로 PPL의 값은 작아지고,

문장의 확률이 작아질수록 분모가 0을 수렴해가므로 PPL의 값은 커질 것 이다.

 

그리고 보통 n-gram을 많이 하기 때문에, 밑에 식은 bigram일 때를 나타낸 것이고, n-gram이면 p(wi|w(i-4)~w(i-1)) 이다.


2. 분기계수 (Branching Factor)

분기계수

PPL은 선택할 수 있는 가능한 경우의 수를 의미하는 분기계수다. == PPL은 우리가 뻗어나갈 수 있는 가지 branch의 개수를 의미하기도 한다.

PPL은 이 언어 모델이 특정 시점에서 평균적으로 몇 개의 선택지를 가지고 고민을 하는지를 의미한다고 한다.

-> (1/10)N제곱은 평균적으로 보면 w1, w2, w3 --- wN 은 각각 평균적으로 1/10 확률로 채택된다는 의미, 즉, 하나의 w당 평균적으로 10개 중에서 고민한다는 의미이다. 따라서 문장을 선택할 때, 평균적으로 10개의 branch의 갯수를 고민한다는 의미이다.

따라서 PPL의 값이 높으면 많은 선택지를 가지고 고민을 하기 때문에, 혼잡도가 높다는 의미다.

 

즉, 위의 PPL이 10이라는 것은 10개의 단어들을 가지고 어떤 것이 정답인지를 고민한다는 의미이다.

예시 - 1

ex) 20,000개의 어휘로 이루어진 뉴스 기사에 대해 PPL을 측정할 때, 단어의 출현 확률이 모두 같다면 PPL은 20,000.

하지만 만약 3-gram을 사용한 언어 모델을 만들어 측정한 PPL이 30이 나왔다면, 해당 신문기사에서 이 언어 모델을 기반으로 매번 기사의 앞 부분을 통해 다음 단어를 예측할 때 마다 평균적으로 30개의 후보 단어 중에 (헷갈리고 있으므로) 선택할 수 있다는 이야기가 된다.

이처럼 PPL을 통해 단순히 언어 모델의 성능을 측정할 수 있을 뿐 아니라, 실제 그 값의 의미도 가늠해볼 수도 있다.

 

즉, PPL은 1) model의 성능을 보여준다.

2) PPL의 의미는 평균적으로 몇 개의 선택지를 갖고 고민하는지에 대한 수치를 보여준다


3. PPL과 Entropy와의 관계

https://kh-kim.gitbook.io/natural-language-processing-with-pytorch/00-cover-8/03-perpexity

 

언어 모델의 평가 방법

 

kh-kim.gitbook.io

이 부분에 관해서는 이 블로그의 posting을 공부하는게 좋을 듯 싶다.


4. 기존 언어 모델 vs NN을 이용한 언어 모델

facebook에서 발표한 지표

인공 신경망을 이용한 언어 모델이 실제로 PPL 값이 제일 낮게 나옴으로써, 기존의 n-gram model이나 SLM model 보다 성능이 올라갔다는 것을 증명해냈다.

 

따라서 우리는 자연어 처리에서 만큼은 인공 신경망, Neural Network를 써야한다.

댓글