언어 모델의 평가 방법
Last updated
Last updated
좋은 언어 모델이란 실제 우리가 쓰는 언어와 최대한 비슷하게 확률 분포를 근사하는 모델(또는 파라미터, $\theta$ )일 것입니다. 많이 쓰이는 문장이나 표현일수록 확률을 높게 예측해야 하며, 적게 쓰이는 문장(이나 이상한 문장 또는 표현)일수록 확률을 낮게 예측해야 합니다. 즉, 공들여 준비한 테스트 문장에 대해 높은 확률값을 예측해낸다면 좋은 언어 모델이라 할 수 있습니다.
문장의 앞부분이 주어지고, 다음에 나타나는 단어의 확률 분포가 실제 테스트 문장의 다음 단어에 대해 높은 확률을 갖는다면 더 좋은 언어 모델이라고 할 수 있습니다. 이번 절은 언어 모델의 성능을 평가하는 방법을 다룹니다.
언어 모델의 성능을 평가하는 척도인 퍼블렉서티perplexity(PPL)를 측정하는 방법은 정량 평가extrinsic evaluation 방법의 하나입니다. PPL은 문장의 길이를 반영하여 확률값을 정규화한 값이라고 할 수 있습니다. PPL을 이용하여 언어 모델에서 테스트 문장들의 점수를 구하고, 이를 기반으로 언어 모델의 성능을 측정합니다.
문장이 길어지면 문장의 확률은 굉장히 작아집니다. 이는 연쇄법칙에 따라 조건부 확률들의 곱으로 바꿔 표현해보면 알 수 있습니다. 따라서 문장의 길이 n으로 제곱근을 취해 기하평균을 구하고, 문장 길이에 대해 정규화를 수행합니다. 문장의 확률값이 분모에 들어가 있으므로, 확률값이 높을수록 PPL은 작아집니다.
테스트 문장에 대해 확률을 높게 예측할수록 좋은 언어 모델이기 때문에, 수식에 따르면 해당 테스트 문장에 대한 PPL이 작을수록 좋은 언어 모델입니다. 즉, PPL은 수치가 낮을수록 좋습니다. 보통 n-gram의 n이 클수록 더 낮은 PPL을 보여줍니다.
앞에서 본 PPL의 수식은 연쇄법칙에 의해 다음과 같이 표현됩니다.
여기에 n-gram이 적용될 경우 다음과 같이 표현할 수 있습니다.
로 표현 될 수 있습니다.
PPL의 개념을 더 짚어보겠습니다. 예를 들어 6면 주사위를 던져서 나오는 값을 통해 수열을 만들어낸다고 해보겠습니다. 1부터 6까지 숫자의 출현 확률은 균등 분포를 따르므로 모두 같다고 가정합니다. 이때 N번 주사위를 던져 얻어내는 수열에 대한 PPL은 다음과 같습니다.
매 time-step 가능한 경우의 수인 6이 PPL로 나왔습니다. 즉, PPL은 우리가 뻗어나갈 수 있는 가지branch의 숫자를 의미하기도 합니다. 다른 예를 들어 만약 20,000개의 어휘로 이루어진 뉴스 기사에 대해 PPL을 측정할 때, 단어의 출현 확률이 모두 같다면 PPL은 20,000이 될 것 입니다. 하지만 만약 3-gram을 사용한 언어 모델을 만들어 측정한 PPL이 30이 나왔다면, 해당 신문기사에서 이 언어 모델을 기반으로 매번 기사의 앞 부분을 통해 다음 단어를 예측할 때 마다 평균적으로 30개의 후보 단어 중에 (헷갈리고 있으므로) 선택할 수 있다는 이야기가 됩니다. 이처럼 PPL을 통해 단순히 언어 모델의 성능을 측정할 수 있을 뿐만 아니라, 실제 그 값의 의미도 가늠해볼 수도 있습니다.
앞서 책 도입부에서 정보량의 평균을 의미하는 엔트로피에 대해 다룬 바 있습니다. 정보량이 낮으면 확률 분포는 뾰족한sharp 모양이 되고, 반대로 정보량이 높으면 확률 분포는 납작flat해진 다고 했습니다.
그리고 정보량은 놀람의 정도를 나타내는 수치라고 했습니다. PPL 또한 사전의 정의에 따르면 '곤혹' 또는 '당혹' 이라는 뜻을 나타낸다고 되어 있습니다. 이처럼 당장 명칭부터 정보량과 관련 있어 보이는 엔트로피와 PPL의 관계를 살펴보겠습니다.
먼저 실제 실제 언어 모델의 분포 $P(\text{x})$ 또는 출현 가능한 문장들의 집합 $\mathcal{W}$ 에서 길이 n의 문장 $w{1:n}$ 을 샘플링했을 때, 우리의 언어 모델 분포 $P\theta(\text{x})$ 의 엔트로피를 나타내면 다음과 같습니다.
여기서 몬테카를로 샘플링을 통해 앞의 수식을 근사할 수 있습니다. 그리고 샘플링 횟수 $k=1$ 일 때도 생각해볼 수 있습니다.
앞서와 같이 $Hn(P, P\theta)$ 을 근사할 수 있지만, 사실 문장은 시퀀셜 데이터이므로 엔트로피 레이트entropy rate라는 개념을 사용하여 다음과 같이 단어당 평균 엔트로피로 나타낼 수 있습니다. 그리고 마찬가지로 몬테카를로 샘플링을 적용할 수도 있습니다.
엔트로피 레이트(entropy rate): (https://en.wikipedia.org/wiki/Entropy_rate
이 수식을 조금만 더 바꿔보겠습니다.
여기에 PPL 수식을 다시 떠올려보겠습니다.
앞서 교차 엔트로피로부터 이끌어냈던 수식과 비슷한 형태임을 알 수 있습니다. 따라서 PPL과 교차 엔트로피의 관계는 다음과 같습니다.
따라서, MLE를 통해 파라미터 $\theta$ 를 학습할 때, 교차 엔트로피를 통해 얻은 손실값( $P_\theta$ 의 로그 확률값)에 $\exp$ 를 취함으로써 PPL을 얻어 언어 모델의 성능을 나타낼 수 있습니다.