N-gram은 단어 앞에 놓은 단어구들을 모두 사용하는게 아니라, 앞 단어 중에 임의의 개수만 포함해서 카운트해서 근사시키는 방법이다.
이렇게 되면, 통계적 언어 모델에서 일어났던 문제( = 다시 설명하자면, 확률을 계산하고 싶은 문장이 길어질수록 갖고 있는 훈련문장에서 그 문장이 존재하지 않을 가능성이 높아짐)를 해결할 수 있고, 앞 단어들을 적게 사용해서 최대한 근사할 수 있을 정도로 적게 사용한다.
그래서 이때 임의의 개수를 정하기 위한 기준으로 사용하는 것이 n-gram이고, n-gram은 n개의 연속적인 단어 나열, 그래서 n개의 단위로 끊어서 하나의 토큰으로 간주한다.
종류로는 unigram, bigram,trigram, 4-gram등 이고, 최대로 5개까지 사용하는게 보편이라고 한다.
예를 들어서 n이4라고 할 때 4-gram을 이용해보면, 전체 앞문장을 다 사용하는게 아니라 boy is spreading 3개만 써서 총 4개의 연속적인 단어 나열을 예측해보는 것이다.
하지만 이때 당연히 숲을 안보고 앞뒤에 있는 나무들만 보다보니까 문맥이 전혀 연결이 안되는 경우가 생길 수가 있다!!
위의 예시에서도 원래 사랑스러운 boy가 앞에 있었는데 이 맥락은 다 무시를 해버리고 웃는다가 아니라, 모욕을 준다는 동사의 확률을 더 높게 쳐주고 있다.
N-gram 모델의 trade-off 문제
이를 통해 우리는 근사의 정확도와 희소 문제 사이에 trade off가 발생한다는 점을 눈치 챌 수 있다.
n이 한 두개로 되게 작을 때는 근사의 정확도가 현실의 확률분포랑은 꽤나 멀어진다.
그치만 단어를 적게 사용하고 있다는 점에서는, 단어가 앞뒤로 같이 나올 확률이 크니까 희소문제를 해결이 된다.
그래서 n이 클수록 전체 맥락을 파악할 수 있어서 근사 정확도는 높지만, 문장의 희소성 문제는 커진다는 trade-off가 발생하게 된다. 결국에는 통계 기반으로 가다보면 희소문제를 해결하기 어렵다는 점에서, 우리는 딥러닝으로 건너가게 되는겁니다.
Perplexity
이때 모델을 성능을 측정하는 방법으로 펄플렉서티를 사용해준다.
펄플렉시티는 발생할 수 있는 문장의 가짓수라고 생각하시면 된다. 이 지표가 높다고 하면, 발생할 수 있는 문장의 가짓수가 많다, 즉 혼란스럽다, 원하는 결과를 얻지 못할 가능성이 크다라고 이해하면 된다.
이를 n-gram에 적용시켜보면, n을 1에서 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 |