Pytorch로 시작하는 딥러닝 입문(10-05. 펄플렉서티: perplexity, PPL)

2024. 4. 6. 08:59딥러닝 모델: 파이토치

두 개의 모델 A, B가 있을 때 모델의 성능을 어떻게 비교할 수 있을까? 두 모델을 오타 교정, 기계 번역 등의 평가에 투입한 후, 해당 업무를 어느 모델이 잘 수행했는지를 비교할 수 있다. 그런데 두 모델의 성능을 비교하기 위해 일일히 모델들에 대해서 실제 작업을 시키고 정확도를 비교하는 것은 품이 많이 든다. 비교해야 하는 모델이 두 개가 아니라 그 이상의 수라면 시간은 훨씬 크게 늘어난다. 

 

이런 방법보다 조금 부정확할 수 있어도 테스트 데이터에 대해 빠르게 식으로 계산되는 보다 간단한 평가 방법이 있다. 바로 모델 내에서 자신의 성능을 수치화하여 결과로 내놓은 펄플렉서티이다. 

 

♣ 언어 모델의 평가 방법(Evaluation metric): PPL

 

펄플렉서티는 언어 모델을 평가하는 평가 지표이다. PPL은 수치가 낮을수록 언어 모델의 성능이 좋다는 것을 의미한다. 

PPL은 문장의 길이로 정규화된 문장 확률의 역수이다. 문장 W의 길이가 N이라고 했을 때의 PPL은 다음과 같다. 

문장의 확률에 체인룰(chain rule)을 적용하면 아래와 같다. 

 

여기에 n-gram을 적용할 수도 있다. 예를 들어 bigram 언어 모델의 경우에는 식이 아래와 같다. 

 

♣ 분기 계수(branching factor)

PPL은 선택 가능한 경우의 수를 의미하는 분기계수이다. PPL은 언어 모델이 특정 시점에서 평균적으로 몇 개의 선택지를 가지고 고민하고 있는지를 의미한다. 언어 모델에 어떤 테스트 데이터를 주고 측정했더니 PPL이 10이 나왔다고 해보자. 해당 언어 모델은 테스트 데이터에 대해 다음 단어를 예측하는 모든 시점(time step)마다 평균 10개의 단어를 가지고 어떤 것이 정답인지 고민한다고 볼 수 있다. 같은 테스트 데이터에 대해 두 언어 모델의 PPL을 각각 계산한 후에 PPL 값을 비교하면 두 언어 모델 중 PPL이 더 낮은 언어 모델의 성능이 더 좋다고 판단할 수 있다. 

 

단, 평가 방법에서 주의할 점은 PPL의 값이 낮다는 것은 테스트 데이터 상에서 높은 정확도를 보인다는 것이지 반드시 사람이 직접 느끼기에 좋은 언어 모델이라는 것은 아니다. 또한 언어 모델의 PPL은 테스트 데이터에 의존하므로 두 개 이상의 언어 모델을 비교할 때는 정량적으로 양이 많고, 도메인에 알맞은 동일한 테스트 데이터를 사용해야 신뢰도가 높다. 

 

♣ 기존 언어 모델 vs 인공신경망을 이용한 언어 모델

 

페이스북 AI 연구팀은 앞서 배운 m-gram 언어 모델과 이후에 배우게 될 딥러닝을 이용한 언어 모델에 대해서 PPL로 성능 테스트한 표를 공개한 바 있다. 

 

표에서 맨 위의 언어 모델이 n-gram을 이용한 언어 모델이며 PPL이 67.6으로 측정되었다. 5-gram을 사용하였으며 일반화 방법을 사용한 모델이다. 그 아래의 모델들은 인공신경망을 이용한 언어 모델들이다. 인공신경망을 이용한 언어 모델들이 대부분 n-gram을 이용한 언어 모델보다 좋은 평가를 받았음을 확인할 수 있다.