Recent Posts
Recent Comments
Archives
반응형
250x250
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
Yesterday

Total
05-08 16:06
관리 메뉴

Hey Tech

[NLP] 언어모델의 평가지표 'Perplexity' 개념 및 계산방법 본문

AI & 빅데이터/자연어처리(NLP)

[NLP] 언어모델의 평가지표 'Perplexity' 개념 및 계산방법

Tony Park 2022. 4. 5. 20:38
728x90
반응형

📚 목차

1.  Perplexity 개념
2.  Perplexity 값의 의미
3.  Perplexity 계산방법

1.  Perplexity 개념

1.1.  개요

Perplexity(PPL)는 텍스트 생성(Text Generation) 언어 모델성능 평가지표 중 하나입니다. Perplexity는 '펄플렉서티'라고 읽으며, '(무언가를 이해할 수 없어) 당혹스러운 정도' 또는 '헷갈리는 정도'로 이해하시면 됩니다(cf., 네이버 영어사전). 일반적으로 테스트 데이터셋이 충분히 신뢰할 만할 때 Perplexity 값이 낮을수록 언어 모델이 우수하다고 평가합니다. 이에 대한 내용은 이어지는 '2. Perplexity 값의 의미' 섹션에서 더욱 자세히 다룹니다.

1.2.  분기계수

Perplexity는 곧 언어 모델의 분기계수(Branching Factor)입니다. 여기서 분기계수란 Tree 자료구조에서 branch의 개수를 의미하고(아래 그림 1 참고), 한 가지 경우를 골라야 하는 Task에서 선택지의 개수를 뜻합니다. 예를 들어, 체스에서 게임 턴마다 말을 움직일 수 있는 경우가 평균적으로 31~35가지이고, 바둑에서는 바둑돌을 둘 수 있는 곳이 평균 250가지로 알려져 있습니다(참고). 즉, 체스와 바둑의 경우 평균 branching factor가 각각 31~35, 250인 것이고, 값이 클수록 경우의 수가 많으니 복잡한 문제라는 것을 뜻합니다.

그림 1. 트리 자료구조 예시

언어 모델에서 Perplexity, 즉 분기계수는 이전 단어로 다음 단어를 예측할 때 몇 개의 단어 후보를 고려하는지를 의미합니다. 여기서 고려해야 할 단어 후보가 많다는 것은 그 만큼 언어 모델이 쉽게 정답을 못 내고 있다고 해석할 수 있습니다. 즉, Perplexity 값이 낮을수록 언어 모델이 쉽게 정답을 찾아내는 것이므로 성능이 우수하다고 평가합니다. 단, 이때 모델 평가에서 활용한 테스트 데이터셋의 신뢰도가 높은 경우에만 이렇게 말할 수 있습니다. 이에 대한 부연 설명은 이어지는 2번째 섹션에서 자세히 다룹니다.

2.  Perplexity 값의 의미

일반적으로 Perplexity는 값이 낮을수록 언어 모델의 성능이 우수하다고 평가합니다. 단, 이는 모델 평가 시 활용한 테스트 데이터셋이 충분히 신뢰도가 높을 때만 적용됩니다. 테스트 데이터셋이 신뢰도가 높다는 것은 테스트 데이터가 충분히 많고, 언어 모델을 활용할 도메인에 적합한 테스트 데이터셋으로 구성된 경우를 의미합니다. 즉, 단순히 Perplexity가 낮다는 것은 모델 평가 시 활용한 테스트 데이터에서 해당 언어 모델이 높은 정확도를 보였다는 것을 의미합니다. 따라서 Perplexity 값이 낮을 뿐만 아니라 테스트 데이터셋의 신뢰도가 높아야 사람이 직접 언어 모델이 예측한 문장 또는 단어를 봤을 때 정확도가 높다고 느낄 수 있습니다.

3.  Perplexity 계산방법

수학에서 시퀀스(Sequence)는 순서를 고려하여 나열된 여러 객체들의 묵음을 의미한다는 점에서, 문장은 어순을 고려하여 여러 단어로 이루어진 단어 시퀀스(Word Sequence)라고도 부릅니다. 단어의 개수가 \(N\)인 문장 \(W\)의 Perplexity(PPL)의 수식은 아래와 같습니다.

 

$$ PPL(W) = P(w_1, w_2, w_3, ...., w_{N})^{-\frac{1}{N}} = \sqrt[N]{\frac{1}{P(w_1, w_2, w_3, ...., w_N)}} $$

 

문장의 확률에 체인 룰(Chain Rule)을 적용하여 Perplexity(PPL)를 계산하면 아래와 같습니다.

 

$$ PPL(W) = \sqrt[N]{\frac{1}{P(w_1, w_2, w_3, ...., w_N)}} = \sqrt[N]{\frac{1}{\displaystyle \prod_{i=1}^{N} P(w_i | w_1, w_2, w_3, ...., w_{i-1})}} $$

 

위 수식은 언어 모델이 성능 평가를 위한 테스트 데이터셋에서 이전 단어들을 기반으로 다음 단어를 예측할 때마다 평균적으로 \(N\)개의 단어 후보 중 정답을 찾는다고 해석할 수 있습니다. 따라서 같은 테스트 데이터셋에서 언어 모델 간의 PPL 값을 비교하면 어떤 언어 모델이 우수한 성능을 보이는지 알 수 있습니다. 단, 앞선 '2.  Perplexity 값의 의미' 섹션에서 언급했듯이, 테스트 데이터셋이 높은 신뢰도를 가질 때 말이죠. 여기서 테스트 데이터셋의 높은 신뢰도란 테스트 데이터 개수가 많고, 테스트 데이터가 언어 모델이 활용할 도메인에 적합한 경우를 의미합니다.

📚 참고할 만한 포스팅

1. [NLP] Bag of Words(BoW) 개념 및 실습
2. [NLP] 문서 단어 행렬(DTM) 개념 이해
3. [NLP] TF-IDF 개념 및 계산 방법
4. [NLP] Word Embedding의 이해: (1) 희소표현 및 밀집표현
5. [NLP] 언어모델(Language Model)의 개념 및 특징
6. [NLP] N-gram 언어 모델의 개념, 종류, 한계점
7. [NLP] 언어모델의 평가지표 'Perplexity' 개념 및 계산방법
8. [NLP] Word2Vec: (1) 개념
9. [NLP] Word2Vec: (2) CBOW 개념 및 원리
10. [NLP] Word2Vec: (3) Skip-gram
11. [NLP] Word2Vec: (4) Negative Sampling
12. [NLP] 문서 유사도 분석: (1) 코사인 유사도(Cosine Similarity)
13. [NLP] 문서 유사도 분석: (2) 유클리디안 거리(Euclidean Distance)
14. [NLP] 문서 유사도 분석: (3) 자카드 유사도(Jaccard Similarity)

 

오늘은 언어 모델의 평가지표인 Perplexity에 대해 알아봤습니다.
포스팅 내용에 오류가 있거나 보완할 점이 있다면 아래에 👇👇👇 댓글 남겨주시면 감사드리겠습니다 :)
그럼 오늘도 즐겁고 건강한 하루 보내시길 바랍니다.
고맙습니다😊

728x90
반응형
Comments