데이터 스터디/DL

N-gram 언어 모델

케이와이엠 2022. 7. 16. 19:57

 N-gram은 단어 앞에 놓은 단어구들을 모두 사용하는게 아니라, 앞 단어 중에 임의의 개수만 포함해서 카운트해서 근사시키는 방법이다.

이렇게 되면, 통계적 언어 모델에서 일어났던 문제( = 다시 설명하자면, 확률을 계산하고 싶은 문장이 길어질수록 갖고 있는 훈련문장에서 그 문장이 존재하지 않을 가능성이 높아짐)를 해결할 수 있고, 앞 단어들을 적게 사용해서 최대한 근사할 수 있을 정도로 적게 사용한다. 

 

그래서 이때 임의의 개수를 정하기 위한 기준으로 사용하는 것이 n-gram이고, n-gramn개의 연속적인 단어 나열, 그래서 n개의 단위로 끊어서 하나의 토큰으로 간주한다.

 

종류로는 unigram, bigram,trigram, 4-gram등 이고, 최대로 5개까지 사용하는게 보편이라고 한다.

예를 들어서 n4라고 할 때 4-gram을 이용해보면, 전체 앞문장을 다 사용하는게 아니라 boy is spreading 3개만 써서 총 4개의 연속적인 단어 나열을 예측해보는 것이다.

 

하지만 이때 당연히 숲을 안보고 앞뒤에 있는 나무들만 보다보니까 문맥이 전혀 연결이 안되는 경우가 생길 수가 있다!!

위의 예시에서도 원래 사랑스러운 boy가 앞에 있었는데 이 맥락은 다 무시를 해버리고 웃는다가 아니라, 모욕을 준다는 동사의 확률을 더 높게 쳐주고 있다. 

 

N-gram 모델의 trade-off 문제

이를 통해 우리는 근사의 정확도와 희소 문제 사이에 trade off가 발생한다는 점을 눈치 챌 수 있다.

n이 한 두개로 되게 작을 때는 근사의 정확도가 현실의 확률분포랑은 꽤나 멀어진다.

그치만 단어를 적게 사용하고 있다는 점에서는, 단어가 앞뒤로 같이 나올 확률이 크니까 희소문제를 해결이 된다.

 

그래서 n 클수록 전체 맥락을 파악할 있어서 근사 정확도는 높지만, 문장의 희소성 문제는 커진다는 trade-off 발생하게 된다. 결국에는 통계 기반으로 가다보면 희소문제를 해결하기 어렵다는 점에서, 우리는 딥러닝으로 건너가게 되는겁니다.

 

Perplexity

이때 모델을 성능을 측정하는 방법으로 펄플렉서티를 사용해준다.

펄플렉시티는 발생할 수 있는 문장의 가짓수라고 생각하시면 된다. 이 지표가 높다고 하면, 발생할 수 있는 문장의 가짓수가 많다, 즉 혼란스럽다, 원하는 결과를 얻지 못할 가능성이 크다라고 이해하면 된다.

 

이를 n-gram에 적용시켜보면, n1에서 2,3으로 올릴 때마다 성능은 좋아지고 있는걸 확인할 수 있다.

 

'데이터 스터디 > DL' 카테고리의 다른 글

[코드 분석] Bag of Words for IMDB movie review  (1) 2023.02.01
TF-IDF  (0) 2022.07.17
언어 모델 - 통계 기반 언어모델  (0) 2022.07.16
자연어 처리 - 통계 기반 기법  (0) 2022.07.16
자연어처리 입문  (0) 2022.07.16