언어 모델


언어 모델(Language Model) 은 단어 순서나 문장이 적합한지를 판단하고 확률을 할당한다. 


  • 통계 기반 언어 모델(SLM: Statistical Languagel Model) : n-gram
  • 인공신경망 기반 언어 모델 : Perceptron, 피드 포워드 신경망 언어 모델 (NNLM: Neural Network Language Model), GPT, Bert


현재는 GPT 나 Bert 같은 인공신경망 기반의 언어 모델이 주로 쓰이나 n-gram 도 꾸준히 자연어 처리에 사용된다.



카운터 기반의 통계적 접근


카운터 기반의 통계학적 언어 모델(SLM) 은 문서에서 이전 단어와 다음 단어의 출현 수를 계산한다. An adorable little boy 가 문서에서 100번 등장하고 다음에 is 가 30번 등장했다면, An adorable little boy 다음에 is 가 나타날 확률은 다음과 같이 나타낼 수 있다.


P(is|An adorable little boy) = count(An adorable little boy is) / count(An adorable little boy) = 30%


카운터에 기반한 확률은 코퍼스 데이터에 위 문장이 존재하지 않는다면 확률은 0 이 되므로 희소 문제(sparsity problem)가 발생하는 단점이 있지만 n-gram 이나 스무딩, 백오프 같은 일반화(generalization) 기법을 사용하여 희소 문제를 완화할 수 있다.



N-gram 언어 모델


코퍼스에서 긴 문장의 확률을 구하려 할 때 발생하는 희소 문제에서, 긴 문장을 줄이면 희소 문제 발생률을 낮출 수 있다. N-gram 은  N  개의 연속적인 단어 나열을 의미한다. "An adorable little boy is spreading smiles" 문장으로 n-gram 을 만들어 보면 아래와 같이 나눌 수 있다.


  • unigrams (N : 1)  an, adorable, little, boy, is, spreading, smiles
  • bigrams (N : 2) an adorable, adorable little, little boy, boy is, is spreading, spreading smiles
  • trigrams (N : 3) an adorable little, adorable little boy, little boy is, boy is spreading, is spreading smiles
  • 4-grams (N : 4) an adorable little boy, adorable little boy is, little boy is spreading, boy is spreading smiles
  • ...


예를 들어 'An adorable little boy is spreading _____' 처럼 spreading 다음의 단어를 예측하고 싶을 때 4-gram 을 사용하면 밑줄을 포함한 앞 단어들의 카운팅 작업을 하게 되며,  다음과 같은 식으로 표현할 수 있다.


P(w|boy is spreading) = count(boy is spreading w) / count(boy is spreading)


boy is spreading 이 문서에서 1,000번 등장하고, boy is spreading 다음에 insults가 500번, smiles 가 200번 등장했다면, insults 의 확률이 50% 로 높은 확률을 가지게 된다. 전체 문장을 고려한 언어 모델보다 카운터는 늘릴 수 있지만, 정확도가 떨어질 수 있다는 것을 알았다.


N-gram 의 n 을 어떻게 설정하느냐에 따라 카운터/성능/정확도가 달라질 수 있다. 

- n 이 커질수록, 카운트 수는 적어지고, 모델 사이즈가 커진다.

- n 이 작을수록, 카운트 수는 많아지지만, 정확도가 현실의 확률분포와 멀어진다. 


언어나 코퍼스에 따라 달라지겠지만 펄플렉서티 지표에 의하면, 일반적으로 가장 효율적인 n 은 4 로 측정되고 있다.


펄플렉서티(PPL: perplexity) 는 언어 모델의 성능을 평가하기 위한 내부 평가 지표로 perplexity(헷갈림) 의 수치가 낮을수록 성능이 좋음을 나타낸다.




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,